PR target/64268
authorsegher <segher@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 19 Dec 2014 19:55:32 +0000 (19:55 +0000)
committersegher <segher@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 19 Dec 2014 19:55:32 +0000 (19:55 +0000)
* combine.c (try_combine): Immediately return if any of I0,I1,I2
are the same insn.

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

gcc/ChangeLog
gcc/combine.c

index e5733ae..a800fed 100644 (file)
@@ -1,3 +1,9 @@
+2014-12-19  Segher Boessenkool  <segher@kernel.crashing.org>
+
+       PR target/64268
+       * combine.c (try_combine): Immediately return if any of I0,I1,I2
+       are the same insn.
+
 2014-12-19  Alan Lawrence  <alan.lawrence@arm.com>
 
        * config/aarch64/aarch64.c (<LOGICAL:optab>_one_cmpl<mode>3):
index ee7b3f9..212da33 100644 (file)
@@ -2588,6 +2588,11 @@ try_combine (rtx_insn *i3, rtx_insn *i2, rtx_insn *i1, rtx_insn *i0,
   rtx new_other_notes;
   int i;
 
+  /* Immediately return if any of I0,I1,I2 are the same insn (I3 can
+     never be).  */
+  if (i1 == i2 || i0 == i2 || (i0 && i0 == i1))
+    return 0;
+
   /* Only try four-insn combinations when there's high likelihood of
      success.  Look for simple insns, such as loads of constants or
      binary operations involving a constant.  */