fold-const.c (fold): Guard (-A)+B -> B-A transformation with reorder_operands_p.
authorRoger Sayle <roger@eyesopen.com>
Sat, 3 Apr 2004 20:05:40 +0000 (20:05 +0000)
committerRoger Sayle <sayle@gcc.gnu.org>
Sat, 3 Apr 2004 20:05:40 +0000 (20:05 +0000)
* fold-const.c (fold) <PLUS_EXPR>: Guard (-A)+B -> B-A transformation
with reorder_operands_p.

From-SVN: r80381

gcc/ChangeLog
gcc/fold-const.c

index 165472102343544916802d013042b532722ec0a1..2575996bca5e5c5d2efc32b02ad5d715d0602d2c 100644 (file)
@@ -1,3 +1,8 @@
+2004-04-03  Roger Sayle  <roger@eyesopen.com>
+
+       * fold-const.c (fold) <PLUS_EXPR>: Guard (-A)+B -> B-A transformation
+       with reorder_operands_p.
+
 2004-04-03  Jan Hubicka  <jh@suse.cz>
 
        * md.texi (vec_set, vec_extract, vec_init): Document.
index 3fc6dd27d0b204b022175b9220f6f566bb306a40..e0d2adc09d646f373f32000c8a206edb79a63ffd 100644 (file)
@@ -5861,9 +5861,10 @@ fold (tree expr)
       if (TREE_CODE (arg1) == NEGATE_EXPR)
        return fold (build (MINUS_EXPR, type, arg0, TREE_OPERAND (arg1, 0)));
       /* (-A) + B -> B - A */
-      if (TREE_CODE (arg0) == NEGATE_EXPR)
+      if (TREE_CODE (arg0) == NEGATE_EXPR
+         && reorder_operands_p (TREE_OPERAND (arg0, 0), arg1))
        return fold (build (MINUS_EXPR, type, arg1, TREE_OPERAND (arg0, 0)));
-      else if (! FLOAT_TYPE_P (type))
+      if (! FLOAT_TYPE_P (type))
        {
          if (integer_zerop (arg1))
            return non_lvalue (fold_convert (type, arg0));