mirror of git://gcc.gnu.org/git/gcc.git
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
This commit is contained in:
parent
cfce90ac4a
commit
68a2304438
|
|
@ -1,3 +1,9 @@
|
||||||
|
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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 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;
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,15 @@
|
||||||
|
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)
|
||||||
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 @@
|
||||||
!
|
!
|
||||||
! 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
|
||||||
.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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
! { 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 @@
|
||||||
! 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
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
! { 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 @@
|
||||||
! { 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 @@
|
||||||
! { 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
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue