aboutsummaryrefslogtreecommitdiff
path: root/gcc/combine.c
diff options
context:
space:
mode:
authorChung-Ju Wu <jasonwucj@gmail.com>2013-04-10 09:12:30 +0000
committerChung-Ju Wu <jasonwucj@gcc.gnu.org>2013-04-10 09:12:30 +0000
commit34ab4a5b70675e801d0cd5a68b50e770d1fe864e (patch)
tree74c6d194cd2df933596856be52c93e6ba5e63003 /gcc/combine.c
parentabf9bfbc31e7d9d8f0b189dd17b59f5e96006456 (diff)
downloadgcc-34ab4a5b70675e801d0cd5a68b50e770d1fe864e.zip
gcc-34ab4a5b70675e801d0cd5a68b50e770d1fe864e.tar.gz
gcc-34ab4a5b70675e801d0cd5a68b50e770d1fe864e.tar.bz2
combine.c (simplify_compare_const): Use GET_MODE_MASK to filter out unnecessary bits in the constant power of two case.
2013-04-10 Chung-Ju Wu <jasonwucj@gmail.com> * combine.c (simplify_compare_const): Use GET_MODE_MASK to filter out unnecessary bits in the constant power of two case. From-SVN: r197666
Diffstat (limited to 'gcc/combine.c')
-rw-r--r--gcc/combine.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/combine.c b/gcc/combine.c
index feb6267..667b7b4 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -10759,8 +10759,9 @@ simplify_compare_const (enum rtx_code code, rtx op0, rtx *pop1)
&& (code == EQ || code == NE || code == GE || code == GEU
|| code == LT || code == LTU)
&& mode_width <= HOST_BITS_PER_WIDE_INT
- && exact_log2 (const_op) >= 0
- && nonzero_bits (op0, mode) == (unsigned HOST_WIDE_INT) const_op)
+ && exact_log2 (const_op & GET_MODE_MASK (mode)) >= 0
+ && (nonzero_bits (op0, mode)
+ == (unsigned HOST_WIDE_INT) (const_op & GET_MODE_MASK (mode))))
{
code = (code == EQ || code == GE || code == GEU ? NE : EQ);
const_op = 0;