re PR fortran/29982 ([4.1 only] ICE in write() with gfortran 4.1.2 (and 4.2 and 4...
authorAndrew Pinski <pinskia@gmail.com>
Sun, 26 Nov 2006 04:42:00 +0000 (20:42 -0800)
committerAndrew Pinski <pinskia@gcc.gnu.org>
Sun, 26 Nov 2006 04:42:00 +0000 (20:42 -0800)
2006-11-25  Andrew Pinski  <pinskia@gmail.com>

        PR fortran/29982
        * trans-expr.c (gfc_conv_expr_reference): Strip off NOP_EXPRs.

2006-11-25  Andrew Pinski  <pinskia@gmail.com>

        PR fortran/29982
        * gfortran.fortran-torture/compile/parameter_3.f90: New
        testcase.

From-SVN: r119218

gcc/fortran/ChangeLog
gcc/fortran/trans-expr.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.fortran-torture/compile/parameter_3.f90 [new file with mode: 0644]

index cf7879758c6312d05f89324a59195d70b41d03a5..a6a2962e365585aab4044e2dec47fd259c028600 100644 (file)
@@ -1,3 +1,8 @@
+2006-11-25  Andrew Pinski  <pinskia@gmail.com>
+
+       PR fortran/29982
+       * trans-expr.c (gfc_conv_expr_reference): Strip off NOP_EXPRs.
+
 2006-11-25  Andrew Pinski  <pinskia@gmail.com>
 
        PR fortran/29951
index 984c6d34c5b3d99b695bada724026a00b26aca55..8e1dcc13f3fe81207df9922c391b60ed7ef9b401 100644 (file)
@@ -3133,8 +3133,10 @@ gfc_conv_expr_reference (gfc_se * se, gfc_expr * expr)
   /* Create a temporary var to hold the value.  */
   if (TREE_CONSTANT (se->expr))
     {
-      var = build_decl (CONST_DECL, NULL, TREE_TYPE (se->expr));
-      DECL_INITIAL (var) = se->expr;
+      tree tmp = se->expr;
+      STRIP_TYPE_NOPS (tmp);
+      var = build_decl (CONST_DECL, NULL, TREE_TYPE (tmp));
+      DECL_INITIAL (var) = tmp;
       TREE_STATIC (var) = 1;
       pushdecl (var);
     }
index ccb37744d5a9d8e48ad42d54a68eb3d65db0a37f..71752094394a7b17e3780f55995a0a45a072eaa3 100644 (file)
@@ -1,3 +1,9 @@
+2006-11-25  Andrew Pinski  <pinskia@gmail.com>
+
+       PR fortran/29982
+       * gfortran.fortran-torture/compile/parameter_3.f90: New
+       testcase.
+
 2006-11-25  Andrew Pinski  <pinskia@gmail.com>
 
        PR fortran/29951
diff --git a/gcc/testsuite/gfortran.fortran-torture/compile/parameter_3.f90 b/gcc/testsuite/gfortran.fortran-torture/compile/parameter_3.f90
new file mode 100644 (file)
index 0000000..4f5b0d9
--- /dev/null
@@ -0,0 +1,4 @@
+program tst
+   write (6,"(a,es15.8)") "2.0**(-0.0) = ",2.0**(-0.0)
+end program tst
+