OSDN Git Service

2012-06-14 Tobias Burnus <burnus@net-b.de>
authorburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 14 Jun 2012 13:04:43 +0000 (13:04 +0000)
committerburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 14 Jun 2012 13:04:43 +0000 (13:04 +0000)
        Backport from mainline
        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-14  Tobias Burnus  <burnus@net-b.de>

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

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

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@188617 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/fortran/ChangeLog
gcc/fortran/resolve.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/init_flag_10.f90 [new file with mode: 0644]

index 145238b..8ba78ef 100644 (file)
@@ -1,5 +1,14 @@
 2012-06-14  Tobias Burnus  <burnus@net-b.de>
 
+       Backport from mainline
+       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-14  Tobias Burnus  <burnus@net-b.de>
+
        PR fortran/53597
        * decl.c (match_attr_spec): Only mark module variables
        as SAVE_IMPLICIT for Fortran 2008 and later.
index 9f34ce0..9cca281 100644 (file)
@@ -10027,7 +10027,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.  */
index 97db862..b5434b9 100644 (file)
@@ -1,3 +1,11 @@
+2012-06-14  Tobias Burnus  <burnus@net-b.de>
+
+       Backport from mainline
+       2012-06-04  Tobias Burnus  <burnus@net-b.de>
+
+       PR fortran/50619
+       * gfortran.dg/init_flag_10.f90: New.
+
 2012-06-14  Richard Guenther  <rguenther@suse.de>
 
        Backport from mainline
diff --git a/gcc/testsuite/gfortran.dg/init_flag_10.f90 b/gcc/testsuite/gfortran.dg/init_flag_10.f90
new file mode 100644 (file)
index 0000000..826a34b
--- /dev/null
@@ -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