(simplify_and_const_int): Never consider bits outside of MODE.
authorRichard Kenner <kenner@gcc.gnu.org>
Sun, 31 Jan 1993 22:44:48 +0000 (17:44 -0500)
committerRichard Kenner <kenner@gcc.gnu.org>
Sun, 31 Jan 1993 22:44:48 +0000 (17:44 -0500)
From-SVN: r3398

gcc/combine.c

index 8be5a05..1bf0405 100644 (file)
@@ -5899,8 +5899,11 @@ simplify_and_const_int (x, mode, varop, constop)
   if (GET_CODE (varop) == CONST_INT)
     return GEN_INT (constop & INTVAL (varop));
 
-  /* See what bits may be nonzero in VAROP.  */
-  nonzero = nonzero_bits (varop, mode);
+  /* See what bits may be nonzero in VAROP.  Unlike the general case of
+     a call to nonzero_bits, here we don't care about bits outside
+     MODE.  */
+
+  nonzero = nonzero_bits (varop, mode) & GET_MODE_MASK (mode);
 
   /* Turn off all bits in the constant that are known to already be zero.
      Thus, if the AND isn't needed at all, we will have CONSTOP == NONZERO_BITS