diff options
author | Jeff Law <law@redhat.com> | 2003-07-04 16:00:19 -0600 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 2003-07-04 16:00:19 -0600 |
commit | 60cd4daea2a58e4be6f9c91cbca66f63a033182f (patch) | |
tree | 3a9bd21e507ddfde6621f5d3a0295642f5e56dd1 | |
parent | 5e14ae7e269c0ae1206b62237f7b6cbdd68f6fec (diff) | |
download | gcc-60cd4daea2a58e4be6f9c91cbca66f63a033182f.zip gcc-60cd4daea2a58e4be6f9c91cbca66f63a033182f.tar.gz gcc-60cd4daea2a58e4be6f9c91cbca66f63a033182f.tar.bz2 |
expr.c (do_store_flag): Pass in the correct result type when calling fold_single_bit_test.
* expr.c (do_store_flag): Pass in the correct result type
when calling fold_single_bit_test.
* fold-const.c (fold_single_bit_test): Use result_type for the
result when folding a sign bit test.
From-SVN: r68940
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/expr.c | 9 | ||||
-rw-r--r-- | gcc/fold-const.c | 2 |
3 files changed, 14 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a4c7909..970b60a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2003-07-04 Jeff Law <law@redhat.com> + + * expr.c (do_store_flag): Pass in the correct result type + when calling fold_single_bit_test. + * fold-const.c (fold_single_bit_test): Use result_type for the + result when folding a sign bit test. + 2003-07-04 Neil Booth <neil@daikokuya.co.uk> * opts.c (common_handle_options): Negate sense of -falign- switches. @@ -9998,9 +9998,12 @@ do_store_flag (tree exp, rtx target, enum machine_mode mode, int only_cheap) if ((code == NE || code == EQ) && TREE_CODE (arg0) == BIT_AND_EXPR && integer_zerop (arg1) && integer_pow2p (TREE_OPERAND (arg0, 1))) - return expand_expr (fold_single_bit_test (code == NE ? NE_EXPR : EQ_EXPR, - arg0, arg1, type), - target, VOIDmode, EXPAND_NORMAL); + { + tree type = (*lang_hooks.types.type_for_mode) (mode, unsignedp); + return expand_expr (fold_single_bit_test (code == NE ? NE_EXPR : EQ_EXPR, + arg0, arg1, type), + target, VOIDmode, EXPAND_NORMAL); + } /* Now see if we are likely to be able to do this. Return if not. */ if (! can_compare_p (code, operand_mode, ccp_store_flag)) diff --git a/gcc/fold-const.c b/gcc/fold-const.c index 0524e1d..64a30f4 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -4825,7 +4825,7 @@ fold_single_bit_test (code, arg0, arg1, result_type) if (arg00 != NULL_TREE) { tree stype = (*lang_hooks.types.signed_type) (TREE_TYPE (arg00)); - return fold (build (code == EQ_EXPR ? GE_EXPR : LT_EXPR, type, + return fold (build (code == EQ_EXPR ? GE_EXPR : LT_EXPR, result_type, convert (stype, arg00), convert (stype, integer_zero_node))); } |