re PR fortran/50619 (Surprising interaction between -finit-real=NAN and the associate construct)

2012-06-04  Tobias Burnus  <burnus@net-b.de>

        PR fortran/50619
        * resolve.c (build_default_init_expr): Don't initialize
        ASSOCIATE names.

2012-06-04  Tobias Burnus  <burnus@net-b.de>

        PR fortran/50619
        * gfortran.dg/init_flag_10.f90: New.

From-SVN: r188208
This commit is contained in:
Tobias Burnus 2012-06-04 23:01:02 +02:00 committed by Tobias Burnus
parent 0e1dd874f8
commit a67cfde819
4 changed files with 56 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2012-06-04 Tobias Burnus <burnus@net-b.de>
PR fortran/50619
* resolve.c (build_default_init_expr): Don't initialize
ASSOCIATE names.
2012-06-03 Alessandro Fanfarillo <fanfarillo.gcc@gmail.com>
Tobias Burnus <burnus@net-b.de>

View File

@ -10103,7 +10103,8 @@ build_default_init_expr (gfc_symbol *sym)
|| sym->attr.data
|| sym->module
|| sym->attr.cray_pointee
|| sym->attr.cray_pointer)
|| sym->attr.cray_pointer
|| sym->assoc)
return NULL;
/* Now we'll try to build an initializer expression. */

View File

@ -1,3 +1,8 @@
2012-06-04 Tobias Burnus <burnus@net-b.de>
PR fortran/50619
* gfortran.dg/init_flag_10.f90: New.
2012-06-04 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/53524

View File

@ -0,0 +1,43 @@
! { dg-do run }
! { dg-options "-finit-real=NAN" }
! { dg-add-options ieee }
! { dg-skip-if "NaN not supported" { spu-*-* } { "*" } { "" } }
!
! PR fortran/50619
!
! Contributed by Fred Krogh
!
! The NaN initialization used to set the associate name to NaN!
!
module testa2
type, public :: test_ty
real :: rmult = 1.0e0
end type test_ty
contains
subroutine test(e, var1)
type(test_ty) :: e
real :: var1, var2 ! Should get NaN initialized
! Should be the default value
if (e%rmult /= 1.0) call abort ()
! Check that NaN initialization is really turned on
if (var1 == var1) call abort ()
if (var2 == var2) call abort ()
! The following was failing:
associate (rmult=>e%rmult)
if (e%rmult /= 1.0) call abort ()
end associate
end subroutine test
end module testa2
program testa1
use testa2
type(test_ty) :: e
real :: var1 ! Should get NaN initialized
call test(e, var1)
stop
end program testa1