Commit 68a23044 by Janus Weil

re PR fortran/55207 ([F08] Variables declared in the main program should…

re PR fortran/55207 ([F08] Variables declared in the main program should implicitly get the SAVE attribute)

2014-03-15  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/55207
	* decl.c (match_attr_spec): Variables in the main program implicitly
	get the SAVE attribute in Fortran 2008.


2014-03-15  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/55207
	* gfortran.dg/assumed_rank_7.f90: Explicitly deallocate variables.
	* gfortran.dg/c_ptr_tests_16.f90: Put into subroutine.
	* gfortran.dg/inline_sum_bounds_check_1.f90: Add
	-Wno-aggressive-loop-optimizations and remove an unused variable.
	* gfortran.dg/intent_optimize_1.f90: Put into subroutine.
	* gfortran.dg/pointer_init_9.f90: New.
	* gfortran.dg/volatile4.f90: Put into subroutine.
	* gfortran.dg/volatile6.f90: Ditto.

From-SVN: r208590
parent cfce90ac
2014-03-15 Janus Weil <janus@gcc.gnu.org>
PR fortran/55207
* decl.c (match_attr_spec): Variables in the main program implicitly
get the SAVE attribute in Fortran 2008.
2014-03-14 Mikael Morin <mikael@gcc.gnu.org> 2014-03-14 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/60392 PR fortran/60392
......
...@@ -3827,9 +3827,11 @@ match_attr_spec (void) ...@@ -3827,9 +3827,11 @@ match_attr_spec (void)
} }
} }
/* Since Fortran 2008 module variables implicitly have the SAVE attribute. */ /* Since Fortran 2008, variables declared in a MODULE or PROGRAM
if (gfc_current_state () == COMP_MODULE && !current_attr.save implicitly have the SAVE attribute. */
&& (gfc_option.allow_std & GFC_STD_F2008) != 0) if ((gfc_current_state () == COMP_MODULE
|| gfc_current_state () == COMP_PROGRAM)
&& !current_attr.save && (gfc_option.allow_std & GFC_STD_F2008) != 0)
current_attr.save = SAVE_IMPLICIT; current_attr.save = SAVE_IMPLICIT;
colon_seen = 1; colon_seen = 1;
......
2014-03-15 Janus Weil <janus@gcc.gnu.org>
PR fortran/55207
* gfortran.dg/assumed_rank_7.f90: Explicitly deallocate variables.
* gfortran.dg/c_ptr_tests_16.f90: Put into subroutine.
* gfortran.dg/inline_sum_bounds_check_1.f90: Add
-Wno-aggressive-loop-optimizations and remove an unused variable.
* gfortran.dg/intent_optimize_1.f90: Put into subroutine.
* gfortran.dg/pointer_init_9.f90: New.
* gfortran.dg/volatile4.f90: Put into subroutine.
* gfortran.dg/volatile6.f90: Ditto.
2014-03-14 Mikael Morin <mikael@gcc.gnu.org> 2014-03-14 Mikael Morin <mikael@gcc.gnu.org>
PR fortran/60392 PR fortran/60392
......
...@@ -24,6 +24,8 @@ call bar(ac) ...@@ -24,6 +24,8 @@ call bar(ac)
call bar(at) call bar(at)
if (i /= 12) call abort() if (i /= 12) call abort()
deallocate(ac,at)
contains contains
subroutine bar(x) subroutine bar(x)
type(t) :: x(..) type(t) :: x(..)
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
! !
! PR fortran/46974 ! PR fortran/46974
program test subroutine test
use ISO_C_BINDING use ISO_C_BINDING
implicit none implicit none
type(c_ptr) :: m type(c_ptr) :: m
...@@ -15,7 +15,7 @@ program test ...@@ -15,7 +15,7 @@ program test
.and. int(z'41424345') /= a & .and. int(z'41424345') /= a &
.and. int(z'4142434500000000',kind=8) /= a) & .and. int(z'4142434500000000',kind=8) /= a) &
call i_do_not_exist() call i_do_not_exist()
end program test end subroutine
! Examples contributed by Steve Kargl and James Van Buskirk ! Examples contributed by Steve Kargl and James Van Buskirk
......
! { dg-do run } ! { dg-do run }
! { dg-options "-fbounds-check" } ! { dg-options "-fbounds-check -Wno-aggressive-loop-optimizations" }
integer, parameter :: nx = 3, ny = 4 integer, parameter :: nx = 3, ny = 4
integer :: i, j, too_big integer :: i, too_big
integer, parameter, dimension(nx,ny) :: p = & integer, parameter, dimension(nx,ny) :: p = &
reshape((/ (i*i, i=1,size(p)) /), shape(p)) reshape((/ (i*i, i=1,size(p)) /), shape(p))
......
...@@ -6,7 +6,10 @@ ...@@ -6,7 +6,10 @@
! honoured. ! honoured.
! !
! PR fortran/43665 ! PR fortran/43665
!
subroutine test
interface interface
subroutine foo(x) subroutine foo(x)
integer, intent(in) :: x integer, intent(in) :: x
......
! { dg-do run }
!
! PR 55207: [F08] Variables declared in the main program should implicitly get the SAVE attribute
!
! Contributed by Tobias Burnus <burnus@gcc.gnu.org>
type :: c
end type c
type(c), target :: x
class(c), pointer :: px => x
if (.not. associated(px)) call abort()
end
...@@ -2,6 +2,8 @@ ...@@ -2,6 +2,8 @@
! { dg-options "-O2 -fdump-tree-optimized" } ! { dg-options "-O2 -fdump-tree-optimized" }
! Tests whether volatile really works ! Tests whether volatile really works
! PR fortran/29601 ! PR fortran/29601
subroutine sub
logical, volatile :: t1 logical, volatile :: t1
logical :: t2 logical :: t2
integer :: i integer :: i
......
...@@ -2,6 +2,8 @@ ...@@ -2,6 +2,8 @@
! { dg-options "-O2 -fdump-tree-optimized" } ! { dg-options "-O2 -fdump-tree-optimized" }
! Tests whether volatile really works for arrays ! Tests whether volatile really works for arrays
! PR fortran/29601 ! PR fortran/29601
subroutine sub
logical, allocatable, volatile :: t1(:) logical, allocatable, volatile :: t1(:)
logical, allocatable :: t2(:) logical, allocatable :: t2(:)
integer :: i integer :: i
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment