simplify-rtx.c (simplify_relational_operation_1): For recent canonicalization, don...
authorHans-Peter Nilsson <hp@axis.com>
Mon, 10 Sep 2007 07:30:16 +0000 (07:30 +0000)
committerHans-Peter Nilsson <hp@gcc.gnu.org>
Mon, 10 Sep 2007 07:30:16 +0000 (07:30 +0000)
* simplify-rtx.c (simplify_relational_operation_1): For recent
canonicalization, don't recurse if op1 equals both PLUS arguments.

From-SVN: r128323

gcc/ChangeLog
gcc/simplify-rtx.c

index 0a493c19e41fca19507b1a0325da684a69909538..a16c4140c16f90272efe8199dffeb8053de594ad 100644 (file)
@@ -1,3 +1,8 @@
+2007-09-10  Hans-Peter Nilsson  <hp@axis.com>
+
+       * simplify-rtx.c (simplify_relational_operation_1): For recent
+       canonicalization, don't recurse if op1 equals both PLUS arguments.
+
 2007-09-09  David Daney  <ddaney@avtrex.com>
 
        * optabs.c (expand_sync_operation):  Use plus insn if minus
index 02f9e2b4c36e7bc47470c22433d6196a8dfd3eab..329a0ff383961d3e5c5d793c5c8dd82470d88e63 100644 (file)
@@ -3816,7 +3816,9 @@ simplify_relational_operation_1 (enum rtx_code code, enum machine_mode mode,
   /* Canonicalize (LTU/GEU (PLUS a b) b) as (LTU/GEU (PLUS a b) a).  */
   if ((code == LTU || code == GEU)
       && GET_CODE (op0) == PLUS
-      && rtx_equal_p (op1, XEXP (op0, 1)))
+      && rtx_equal_p (op1, XEXP (op0, 1))
+      /* Don't recurse "infinitely" for (LTU/GEU (PLUS b b) b).  */
+      && !rtx_equal_p (op1, XEXP (op0, 0)))
     return simplify_gen_relational (code, mode, cmp_mode, op0, XEXP (op0, 0));
 
   if (op1 == const0_rtx)