* combine.c (try_widen_shift_mode) <LSHIFTRT>: Allow widening if the
high-order bits are zero.
From-SVN: r149779
+2009-07-18 Adam Nemet <anemet@caviumnetworks.com>
+
+ * combine.c (try_widen_shift_mode) <LSHIFTRT>: Allow widening if the
+ high-order bits are zero.
+
2009-07-18 Adam Nemet <anemet@caviumnetworks.com>
* combine.c (simplify_shift_const_1): Split code to determine
> (unsigned) (GET_MODE_BITSIZE (mode)
- GET_MODE_BITSIZE (orig_mode)))
return mode;
- /* fall through */
+ return orig_mode;
+
case LSHIFTRT:
+ /* Similarly here but with zero bits. */
+ if (GET_MODE_BITSIZE (mode) <= HOST_BITS_PER_WIDE_INT
+ && (nonzero_bits (op, mode) & ~GET_MODE_MASK (orig_mode)) == 0)
+ return mode;
+ /* fall through */
+
case ROTATE:
return orig_mode;