combine.c (simplify_comparison): Reduce (OP (MINUS A B) 0) to (OP A B).
authorRichard Henderson <rth@cygnus.com>
Thu, 16 Dec 1999 09:42:57 +0000 (01:42 -0800)
committerJeff Law <law@gcc.gnu.org>
Thu, 16 Dec 1999 09:42:57 +0000 (02:42 -0700)
        * combine.c (simplify_comparison): Reduce (OP (MINUS A B) 0)
        to (OP A B).

From-SVN: r30970

gcc/ChangeLog
gcc/combine.c

index acce2bf876cf278b202078293a8573fec1959fc0..35343e3bb33feeca98ba8c93ab531a94f3e59ad4 100644 (file)
@@ -1,3 +1,8 @@
+Thu Dec 16 02:41:26 1999  Richard Henderson (rth@cygnus.com)
+
+       * combine.c (simplify_comparison): Reduce (OP (MINUS A B) 0)
+       to (OP A B).
+
 Thu Dec 16 02:26:11 1999  Jeffrey A Law  (law@cygnus.com)
 
        * h8300.md (HImode preinc peephole): Fix typo.
index 5dc4fc8879b7e506aeafb0249a84299b9b5c49ee..3599168769f0d70da86bb032ba20d2e17bc359d9 100644 (file)
@@ -10320,6 +10320,14 @@ simplify_comparison (code, pop0, pop1)
          break;
 
        case MINUS:
+         /* (op (minus A B) 0) -> (op A B) */
+         if (op1 == const0_rtx)
+           {
+             op1 = XEXP (op0, 1);
+             op0 = XEXP (op0, 0);
+             continue;
+           }
+
          /* (eq (minus A B) C) -> (eq A (plus B C)) or
             (eq B (minus A C)), whichever simplifies.  We can only do
             this for equality comparisons due to pathological cases involving