diff options
author | Waldek Hebisch <hebisch@math.uni.wroc.pl> | 2004-04-02 00:30:09 +0200 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2004-04-01 14:30:09 -0800 |
commit | af5bdf6ad76dec71b64412212300e7eb1033c829 (patch) | |
tree | baed5283e106a0930dc3d836569e989ea0e9d651 /gcc | |
parent | 354d4c68c6e258ffa3341febb7e54ca51685a0e5 (diff) | |
download | gcc-af5bdf6ad76dec71b64412212300e7eb1033c829.zip gcc-af5bdf6ad76dec71b64412212300e7eb1033c829.tar.gz gcc-af5bdf6ad76dec71b64412212300e7eb1033c829.tar.bz2 |
* fold-const.c (folda): Preserve types of comparisons.
From-SVN: r80327
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/fold-const.c | 14 |
2 files changed, 11 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index abe6a304..0d3b02b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2004-04-01 Waldek Hebisch <hebisch@math.uni.wroc.pl> + + * fold-const.c (folda): Preserve types of comparisons. + 2004-04-01 Richard Henderson <rth@redhat.com> * toplev.c (backend_init): Move init_optimization_passes call ... diff --git a/gcc/fold-const.c b/gcc/fold-const.c index 772e64e..3fc6dd2 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -5366,7 +5366,7 @@ tree_swap_operands_p (tree arg0, tree arg1, bool reorder) The related simplifications include x*1 => x, x*0 => 0, etc., and application of the associative law. NOP_EXPR conversions may be removed freely (as long as we - are careful not to change the C type of the overall expression) + are careful not to change the type of the overall expression). We cannot simplify through a CONVERT_EXPR, FIX_EXPR or FLOAT_EXPR, but we can constant-fold them if they have constant operands. */ @@ -7173,9 +7173,9 @@ fold (tree expr) && integer_zerop (arg1)) { if (code == EQ_EXPR) - return integer_zero_node; + return fold_convert (type, integer_zero_node); else - return integer_one_node; + return fold_convert (type, integer_one_node); } /* If this is an equality comparison of the address of two non-weak, @@ -7196,11 +7196,11 @@ fold (tree expr) && ! DECL_EXTERNAL (TREE_OPERAND (arg1, 0))) { if (code == EQ_EXPR) - return (operand_equal_p (arg0, arg1, 0) - ? integer_one_node : integer_zero_node); + return fold_convert (type, (operand_equal_p (arg0, arg1, 0) + ? integer_one_node : integer_zero_node)); else - return (operand_equal_p (arg0, arg1, 0) - ? integer_zero_node : integer_one_node); + return fold_convert (type, (operand_equal_p (arg0, arg1, 0) + ? integer_zero_node : integer_one_node)); } if (FLOAT_TYPE_P (TREE_TYPE (arg0))) |