* fold-const.c (fold) <PLUS_EXPR>: Guard (-A)+B -> B-A transformation
authorsayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 3 Apr 2004 20:05:40 +0000 (20:05 +0000)
committersayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 3 Apr 2004 20:05:40 +0000 (20:05 +0000)
with reorder_operands_p.

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

gcc/ChangeLog
gcc/fold-const.c

index 1654721..2575996 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 3fc6dd2..e0d2adc 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));