re PR middle-end/18299 (ICE in gimple-lower)
authorAndrew Pinski <pinskia@physics.uc.edu>
Mon, 8 Nov 2004 20:10:46 +0000 (20:10 +0000)
committerAndrew Pinski <pinskia@gcc.gnu.org>
Mon, 8 Nov 2004 20:10:46 +0000 (12:10 -0800)
2004-11-08  Andrew Pinski  <pinskia@physics.uc.edu>

        PR tree-opt/18299
        * gcc.c-torture/pr18299-1.c: New test.

2004-11-08  Andrew Pinski  <pinskia@physics.uc.edu>

        PR tree-opt/18299
        * tree-inline.c (copy_body_r): Change "t = t" to empty
        statement instead of "t".

From-SVN: r90295

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/pr18299-1.c [new file with mode: 0644]
gcc/tree-inline.c

index 9b778ff0a80d16ffe333a2857ee6f2967d5b68be..18fab2c50b06c24e85e93c18c784ad8dc8a16f3c 100644 (file)
@@ -1,3 +1,9 @@
+2004-11-08  Andrew Pinski  <pinskia@physics.uc.edu>
+
+       PR tree-opt/18299
+       * tree-inline.c (copy_body_r): Change "t = t" to empty
+       statement instead of "t".
+
 2004-11-08  Kazu Hirata  <kazu@cs.umass.edu>
 
        * modulo-sched.c (create_partial_schedule,
index 9a7f6672d01832689886cfe94fda35f5053f580b..3a11ae4d3655afb7abbf2132aa9d1735a1142e2b 100644 (file)
@@ -1,3 +1,8 @@
+2004-11-08  Andrew Pinski  <pinskia@physics.uc.edu>
+
+       PR tree-opt/18299
+       * gcc.c-torture/pr18299-1.c: New test.
+
 2004-11-06  Andreas Schwab  <schwab@suse.de>
 
        * gcc.dg/pr16286.c: Also test for bool and pixel.
diff --git a/gcc/testsuite/gcc.c-torture/pr18299-1.c b/gcc/testsuite/gcc.c-torture/pr18299-1.c
new file mode 100644 (file)
index 0000000..7dc1157
--- /dev/null
@@ -0,0 +1,12 @@
+/* We used to ICE in gimple-lower because we
+   would produce __t (VAR_DECL) as a statement in the
+   instruction stream which is not valid. */
+
+static inline int f(int i)
+{
+  const int __t = (__t);
+}
+int g(void)
+{
+  return f(0);
+}
index 17f3937e162d7aafe563e0a5fb0c294b470d9c39..afba090bca7f8e8663d065636f07b0c990d1b784 100644 (file)
@@ -558,7 +558,7 @@ copy_body_r (tree *tp, int *walk_subtrees, void *data)
              STRIP_TYPE_NOPS (value);
              if (TREE_CONSTANT (value) || TREE_READONLY_DECL_P (value))
                {
-                 *tp = value;
+                 *tp = build_empty_stmt ();
                  return copy_body_r (tp, walk_subtrees, data);
                }
            }