From a8355e51785ca09eadc0e56afd0778c4ce076e2f Mon Sep 17 00:00:00 2001 From: Bin Cheng Date: Thu, 13 Jun 2013 08:44:38 +0000 Subject: [PATCH] fold-const.c (operand_equal_p): Consider NOP_EXPR and CONVERT_EXPR as equal nodes. * fold-const.c (operand_equal_p): Consider NOP_EXPR and CONVERT_EXPR as equal nodes. From-SVN: r200062 --- gcc/ChangeLog | 5 +++++ gcc/fold-const.c | 10 +++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1d498f8a745..587c9b1e479 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2013-06-13 Bin Cheng + + * fold-const.c (operand_equal_p): Consider NOP_EXPR and + CONVERT_EXPR as equal nodes. + 2013-06-13 Bin Cheng * rtlanal.c (noop_move_p): Check the code to be executed for diff --git a/gcc/fold-const.c b/gcc/fold-const.c index 66e565ced90..998948b0e6d 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -2473,9 +2473,13 @@ operand_equal_p (const_tree arg0, const_tree arg1, unsigned int flags) } if (TREE_CODE (arg0) != TREE_CODE (arg1) - /* This is needed for conversions and for COMPONENT_REF. - Might as well play it safe and always test this. */ - || TREE_CODE (TREE_TYPE (arg0)) == ERROR_MARK + /* NOP_EXPR and CONVERT_EXPR are considered equal. */ + && !(CONVERT_EXPR_P (arg0) && CONVERT_EXPR_P (arg1))) + return 0; + + /* This is needed for conversions and for COMPONENT_REF. + Might as well play it safe and always test this. */ + if (TREE_CODE (TREE_TYPE (arg0)) == ERROR_MARK || TREE_CODE (TREE_TYPE (arg1)) == ERROR_MARK || TYPE_MODE (TREE_TYPE (arg0)) != TYPE_MODE (TREE_TYPE (arg1))) return 0; -- 2.30.2