From 180ed1b2bd57ce7f8d537db11242c18703121c78 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Mon, 15 Nov 2010 19:45:36 -0800 Subject: [PATCH] fold-const.c (operand_equal_for_comparison_p): Handle FMA_EXPR... * 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 | 6 ++++++ gcc/fold-const.c | 10 ++++++++++ 2 files changed, 16 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2d6dd4211ed..3dd82038391 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2010-11-15 Richard Henderson + + * 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 * config/mn10300/mn10300.md (fmasf4, fmssf4, fnmasf4, fnmssf4): Rename diff --git a/gcc/fold-const.c b/gcc/fold-const.c index b6a9814fbe3..9f1e0809a3c 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -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: -- 2.30.2