]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
combine.c (simplify_compare_const): Use GET_MODE_MASK to filter out unnecessary bits...
authorChung-Ju Wu <jasonwucj@gmail.com>
Wed, 10 Apr 2013 09:12:30 +0000 (09:12 +0000)
committerChung-Ju Wu <jasonwucj@gcc.gnu.org>
Wed, 10 Apr 2013 09:12:30 +0000 (09:12 +0000)
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

gcc/ChangeLog
gcc/combine.c

index 5878fe94ffd417ce4b9b6be88a76dc3b902a06bc..3e3e3b7243f7f061550ed39857e1f2111a31053c 100644 (file)
@@ -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
index feb6267b49024e1e008ad794384597710ae14a6e..667b7b43c70ba1c7a53eb7f251f5a721cfaec582 100644 (file)
@@ -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;