re PR middle-end/41713 (-O -flto -g: ICE in lto_output_tree_ref, at lto-streamer...
authorRichard Guenther <rguenther@suse.de>
Fri, 16 Oct 2009 14:21:05 +0000 (14:21 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Fri, 16 Oct 2009 14:21:05 +0000 (14:21 +0000)
2009-10-16  Richard Guenther  <rguenther@suse.de>

PR lto/41713
* lto-streamer-out.c (lto_output_tree_ref): Handle DEBUG_EXPR_DECL
the same as VAR_DECL.

* gfortran.dg/lto/20091016-1_0.f90: New testcase.

From-SVN: r152902

gcc/ChangeLog
gcc/lto-streamer-out.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/lto/20091016-1_0.f90 [new file with mode: 0644]

index 3c80308..13e3e2f 100644 (file)
@@ -1,5 +1,11 @@
 2009-10-16  Richard Guenther  <rguenther@suse.de>
 
+       PR lto/41713
+       * lto-streamer-out.c (lto_output_tree_ref): Handle DEBUG_EXPR_DECL
+       the same as VAR_DECL.
+
+2009-10-16  Richard Guenther  <rguenther@suse.de>
+
        * gimple.c (iterative_hash_gimple_type): For integer types
        also hash their minimum and maximum values and the string flag.
        For array types hash their domain and the string flag.
index 9d097f0..737206c 100644 (file)
@@ -690,6 +690,7 @@ lto_output_tree_ref (struct output_block *ob, tree expr)
       break;
 
     case VAR_DECL:
+    case DEBUG_EXPR_DECL:
       gcc_assert (decl_function_context (expr) == NULL);
       output_record_start (ob, LTO_global_decl_ref);
       lto_output_var_decl_index (ob->decl_state, ob->main_stream, expr);
index 587f153..d55be03 100644 (file)
@@ -1,3 +1,8 @@
+2009-10-16  Richard Guenther  <rguenther@suse.de>
+
+       PR lto/41713
+       * gfortran.dg/lto/20091016-1_0.f90: New testcase.
+
 2009-10-15  Jakub Jelinek  <jakub@redhat.com>
 
        PR debug/41717
diff --git a/gcc/testsuite/gfortran.dg/lto/20091016-1_0.f90 b/gcc/testsuite/gfortran.dg/lto/20091016-1_0.f90
new file mode 100644 (file)
index 0000000..c26ad90
--- /dev/null
@@ -0,0 +1,12 @@
+! { dg-lto-do link }
+! { dg-lto-options {{-flto -g -fPIC -shared} {-O -flto -g -fPIC -shared}} }
+
+      FUNCTION makenumberstring(x)
+      IMPLICIT NONE
+      REAL, INTENT(IN)     :: x
+      CHARACTER(len=20)      :: makenumberstring
+      INTEGER             :: xx
+      xx = x**2  ! << ICE
+      makenumberstring = ''
+      END FUNCTION
+