fold-const.c (operand_equal_for_comparison_p): Handle FMA_EXPR...
authorRichard Henderson <rth@redhat.com>
Tue, 16 Nov 2010 03:45:36 +0000 (19:45 -0800)
committerRichard Henderson <rth@gcc.gnu.org>
Tue, 16 Nov 2010 03:45:36 +0000 (19:45 -0800)
* fold-const.c (operand_equal_for_comparison_p): Handle FMA_EXPR,
WIDEN_MULT_PLUS_EXPR, WIDEN_MULT_MINUS_EXPR, VEC_COND_EXPR,
DOT_PROD_EXPR.

From-SVN: r166792

gcc/ChangeLog
gcc/fold-const.c

index 2d6dd4211eda6f38dd63551f8c7f1ee35d1e1846..3dd820383918f005e8e11428b3cfc1f3742ffabe 100644 (file)
@@ -1,3 +1,9 @@
+2010-11-15  Richard Henderson  <rth@redhat.com>
+
+       * fold-const.c (operand_equal_for_comparison_p): Handle FMA_EXPR,
+       WIDEN_MULT_PLUS_EXPR, WIDEN_MULT_MINUS_EXPR, VEC_COND_EXPR,
+       DOT_PROD_EXPR.
+
 2010-11-15  Richard Henderson  <rth@redhat.com>
 
        * config/mn10300/mn10300.md (fmasf4, fmssf4, fnmasf4, fnmssf4): Rename
index b6a9814fbe3ccdf79aab2d330b4536db2b543d26..9f1e0809a3cd224bc75f8ee7f8439e3d71161847 100644 (file)
@@ -2635,6 +2635,14 @@ operand_equal_p (const_tree arg0, const_tree arg1, unsigned int flags)
        case TRUTH_ORIF_EXPR:
          return OP_SAME (0) && OP_SAME (1);
 
+       case FMA_EXPR:
+       case WIDEN_MULT_PLUS_EXPR:
+       case WIDEN_MULT_MINUS_EXPR:
+         if (!OP_SAME (2))
+           return 0;
+         /* The multiplcation operands are commutative.  */
+         /* FALLTHRU */
+
        case TRUTH_AND_EXPR:
        case TRUTH_OR_EXPR:
        case TRUTH_XOR_EXPR:
@@ -2648,6 +2656,8 @@ operand_equal_p (const_tree arg0, const_tree arg1, unsigned int flags)
                                      TREE_OPERAND (arg1, 0), flags));
 
        case COND_EXPR:
+       case VEC_COND_EXPR:
+       case DOT_PROD_EXPR:
          return OP_SAME (0) && OP_SAME (1) && OP_SAME (2);
 
        default: