re PR middle-end/23606 (fold does not fold (type)(a == b) into a == b (with type as the type))

2005-11-22  Andrew Pinski  <pinskia@physics.uc.edu>

        PR middle-end/23606
        * fold-const.c (fold_unary) <case NOP_EXPR, CONVERT_EXPR>: For
        COMPARISON_CLASS_P and an integral types create create a new
        expression with the new type and fold that.

From-SVN: r107370
This commit is contained in:
Andrew Pinski 2005-11-22 19:22:21 +00:00 committed by Andrew Pinski
parent 1c99189191
commit d998dd65ec
2 changed files with 13 additions and 0 deletions

View File

@ -1,3 +1,10 @@
2005-11-22 Andrew Pinski <pinskia@physics.uc.edu>
PR middle-end/23606
* fold-const.c (fold_unary) <case NOP_EXPR, CONVERT_EXPR>: For
COMPARISON_CLASS_P and an integral types create create a new
expression with the new type and fold that.
2005-11-22 Andrew Pinski <pinskia@physics.uc.edu>
PR target/24988

View File

@ -6771,6 +6771,12 @@ fold_unary (enum tree_code code, tree type, tree op0)
case FIX_ROUND_EXPR:
if (TREE_TYPE (op0) == type)
return op0;
/* If we have (type) (a CMP b) and type is an integal type, return
new expression involving the new type. */
if (COMPARISON_CLASS_P (op0) && INTEGRAL_TYPE_P (type))
return fold_build2 (TREE_CODE (op0), type, TREE_OPERAND (op0, 0),
TREE_OPERAND (op0, 1));
/* Handle cases of two conversions in a row. */
if (TREE_CODE (op0) == NOP_EXPR