aboutsummaryrefslogtreecommitdiff
path: root/gcc
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
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')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/combine.c5
2 files changed, 8 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 5878fe9..3e3e3b7 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+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.
+
2013-04-10 Richard Biener <rguenther@suse.de>
* tree-vect-slp.c (vect_get_and_check_slp_defs): Remove
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;