From: Andrew Pinski Date: Tue, 22 Nov 2005 19:22:21 +0000 (+0000) Subject: re PR middle-end/23606 (fold does not fold (type)(a == b) into a == b (with type... X-Git-Tag: releases/gcc-4.2.0~5808 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d998dd65ec93baa138c10fe1bd11da1ba19b439e;p=thirdparty%2Fgcc.git 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 PR middle-end/23606 * fold-const.c (fold_unary) : For COMPARISON_CLASS_P and an integral types create create a new expression with the new type and fold that. From-SVN: r107370 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3a81593ac53d..f16711a73099 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2005-11-22 Andrew Pinski + + PR middle-end/23606 + * fold-const.c (fold_unary) : 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 PR target/24988 diff --git a/gcc/fold-const.c b/gcc/fold-const.c index e7f550b2038a..2d750f6c94c1 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -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