OSDN Git Service

PR rtl-optimization/38281
authorebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 3 Dec 2008 08:40:50 +0000 (08:40 +0000)
committerebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 3 Dec 2008 08:40:50 +0000 (08:40 +0000)
* combine.c (distribute_notes): When invoking SET_INSN_DELETED on i2,
set it to NULL_RTX afterwards.

* emit-rtl.c (set_insn_deleted): Fix formatting.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@142388 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/combine.c
gcc/emit-rtl.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/compile/20081203-1.c [new file with mode: 0644]

index 6ee8dd8..a4afc7e 100644 (file)
@@ -1,3 +1,13 @@
+2008-12-03  Eric Botcazou  <ebotcazou@adacore.com>
+            Jakub Jelinek  <jakub@redhat.com>
+            Andrew Pinski  <andrew_pinski@playstation.sony.com>
+
+       PR rtl-optimization/38281
+       * combine.c (distribute_notes): When invoking SET_INSN_DELETED on i2,
+       set it to NULL_RTX afterwards.
+
+       * emit-rtl.c (set_insn_deleted): Fix formatting.
+
 2008-12-02  Richard Sandiford  <rdsandiford@googlemail.com>
 
        * config/mips/mips.c (mips_expand_builtin): Fix the mode of the
index b8a4335..d6f7480 100644 (file)
@@ -12653,6 +12653,8 @@ distribute_notes (rtx notes, rtx from_insn, rtx i3, rtx i2, rtx elim_i2,
                          distribute_links (LOG_LINKS (tem));
 
                          SET_INSN_DELETED (tem);
+                         if (tem == i2)
+                           i2 = NULL_RTX;
 
 #ifdef HAVE_cc0
                          /* Delete the setter too.  */
@@ -12668,6 +12670,8 @@ distribute_notes (rtx notes, rtx from_insn, rtx i3, rtx i2, rtx elim_i2,
                              distribute_links (LOG_LINKS (cc0_setter));
 
                              SET_INSN_DELETED (cc0_setter);
+                             if (cc0_setter == i2)
+                               i2 = NULL_RTX;
                            }
 #endif
                        }
index ced4e58..0738f38 100644 (file)
@@ -3620,7 +3620,8 @@ add_insn_before (rtx insn, rtx before, basic_block bb)
 
 /* Replace insn with an deleted instruction note.  */
 
-void set_insn_deleted (rtx insn)
+void
+set_insn_deleted (rtx insn)
 {
   df_insn_delete (BLOCK_FOR_INSN (insn), INSN_UID (insn));
   PUT_CODE (insn, NOTE);
index 6d585a6..a1623c9 100644 (file)
@@ -1,3 +1,7 @@
+2008-12-03  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gcc.c-torture/compile/20081203-1.c: New test.
+
 2008-12-02  Jason Merrill  <jason@redhat.com>
 
        PR c++/35782, c++/37860
diff --git a/gcc/testsuite/gcc.c-torture/compile/20081203-1.c b/gcc/testsuite/gcc.c-torture/compile/20081203-1.c
new file mode 100644 (file)
index 0000000..713235f
--- /dev/null
@@ -0,0 +1,24 @@
+/* PR rtl-optimization/38281 */
+/* Reporter: John Regehr <regehr@cs.utah.edu> */
+/* Testcase by Jakub Jelinek <jakub@redhat.com> */
+
+inline unsigned short
+foo (unsigned short x, unsigned short y)
+{
+  if (y == 0)
+    return x;
+  return x / y;
+}
+
+unsigned short a, b, c;
+
+extern int baz (int, int);
+
+void
+bar (void)
+{
+  int d = 0x3D75D162;
+  a = foo (b > d, baz (0, 1));
+  for (c = 0; c; c = 1)
+    ;
+}