]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR tree-optimization/37207 (ice at tree-ssa-ifcombine.c:222 for -Os)
authorRichard Guenther <rguenther@suse.de>
Thu, 28 Aug 2008 15:26:13 +0000 (15:26 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Thu, 28 Aug 2008 15:26:13 +0000 (15:26 +0000)
2008-08-28  Richard Guenther  <rguenther@suse.de>

PR tree-optimization/37207
* tree-ssa-ifcombine.c (recognize_single_bit_test): Fix
tuplification bug.

* gcc.c-torture/compile/pr37207.c: New testcase.

From-SVN: r139714

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/compile/pr37207.c [new file with mode: 0644]
gcc/tree-ssa-ifcombine.c

index 4af737ee94c610921fb5d523cf204fd5257ac67e..2759095adbf9475928c2b0160efc239f7f75b67f 100644 (file)
@@ -1,3 +1,9 @@
+2008-08-28  Richard Guenther  <rguenther@suse.de>
+
+       PR tree-optimization/37207
+       * tree-ssa-ifcombine.c (recognize_single_bit_test): Fix
+       tuplification bug.
+
 2008-08-28  Dodji Seketeli  <dodji@redhat.com>
 
        PR c++/36741
index 96b49b61aeadb26ec09aac12e52e02aca41a3481..4befcbb5dbec99df2d648bdd3fff872550729b16 100644 (file)
@@ -1,3 +1,8 @@
+2008-08-28  Richard Guenther  <rguenther@suse.de>
+
+       PR tree-optimization/37207
+       * gcc.c-torture/compile/pr37207.c: New testcase.
+
 2008-08-28  Janus Weil  <janus@gcc.gnu.org>
 
        PR fortran/37253
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr37207.c b/gcc/testsuite/gcc.c-torture/compile/pr37207.c
new file mode 100644 (file)
index 0000000..72333d2
--- /dev/null
@@ -0,0 +1,21 @@
+void
+func_18 ( int t )
+{
+  unsigned l_889;
+  int l_895 = 1;
+  for (0; 1; ++l_889)
+    {
+      int t1 = 0;
+      if (func_81 (1))
+        {
+          int rhs = l_895;
+          if (rhs == 0)
+            rhs = 1;
+          if (1 & (t % rhs))
+            t1 = 1;
+        }
+      func_98 (t1);
+      l_895 = 0;
+    }
+}
+
index 143608e28eb75b2c05f424b0bfcde64e82881bd1..a4a74ee6be40f4d221056a5a3b15db7c4bb5bad3 100644 (file)
@@ -212,7 +212,7 @@ recognize_single_bit_test (gimple cond, tree *name, tree *bit)
       stmt = SSA_NAME_DEF_STMT (orig_name);
 
       while (is_gimple_assign (stmt)
-            && (gimple_assign_copy_p (stmt)
+            && (gimple_assign_ssa_name_copy_p (stmt)
                 || (gimple_assign_cast_p (stmt)
                     && integral_operand_p (gimple_assign_lhs (stmt))
                     && integral_operand_p (gimple_assign_rhs1 (stmt))