]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR tree-optimization/55111 (ICE: tree check: expected ssa_name, have integer_cst...
authorRichard Biener <rguenther@suse.de>
Tue, 30 Oct 2012 12:02:39 +0000 (12:02 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Tue, 30 Oct 2012 12:02:39 +0000 (12:02 +0000)
2012-10-30  Richard Biener  <rguenther@suse.de>

PR tree-optimization/55111
* tree-ssa-pre.c (eliminate_insert): Properly fold the built
stmt.

* gcc.dg/torture/pr55111.c: New testcase.

From-SVN: r192984

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/torture/pr55111.c [new file with mode: 0644]
gcc/tree-ssa-pre.c

index 137e6a3b3732f153d50e2ba3aea1e303d745abbe..6cfacde346f54f5facc0349c15526e7a19bc40b7 100644 (file)
@@ -1,3 +1,9 @@
+2012-10-30  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/55111
+       * tree-ssa-pre.c (eliminate_insert): Properly fold the built
+       stmt.
+
 2012-10-30  Oleg Endo  <olegendo@gcc.gnu.org>
 
        PR target/54963
index 7acc07a7533e1d68b7181ad3ca395ee0b3794292..87520a3dd405eb5f18418d0e4af190d00bb7ffcf 100644 (file)
@@ -1,3 +1,8 @@
+2012-10-30  Richard Biener  <rguenther@suse.de>
+
+       PR tree-optimization/55111
+       * gcc.dg/torture/pr55111.c: New testcase.
+
 2012-10-30  Oleg Endo  <olegendo@gcc.gnu.org>
 
        PR target/54988
diff --git a/gcc/testsuite/gcc.dg/torture/pr55111.c b/gcc/testsuite/gcc.dg/torture/pr55111.c
new file mode 100644 (file)
index 0000000..f5b0692
--- /dev/null
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+
+int a, b, c;
+long d;
+unsigned long *e;
+
+int f(void)
+{
+  for(;; a++)
+    {
+      if(c)
+       {
+         for(b = d = 0; b < 1; b++)
+           e = &d;
+
+         --*e;
+
+         if(d > 0)
+           a = 0;
+
+         return d;
+       }
+    }
+}
index 7f9ab8bfb6c4faa23ce1f3352104d4f9cffe5972..13b3433bb046ec5fdc3c32b7441bbe25f6b2313f 100644 (file)
@@ -3996,8 +3996,8 @@ eliminate_insert (gimple_stmt_iterator *gsi, tree val)
 
   tree res = make_temp_ssa_name (TREE_TYPE (val), NULL, "pretmp");
   gimple tem = gimple_build_assign (res,
-                                   build1 (TREE_CODE (expr),
-                                           TREE_TYPE (expr), leader));
+                                   fold_build1 (TREE_CODE (expr),
+                                                TREE_TYPE (expr), leader));
   gsi_insert_before (gsi, tem, GSI_SAME_STMT);
   VN_INFO_GET (res)->valnum = val;