On Thu, Jan 14, 2016 at 12:38:52AM -0700, Jeff Law wrote:
> + /* An integral type with more precision, but the object
> + only takes on values [0..1] as determined by VRP
> + analysis. */
> + wide_int min, max;
> + if (INTEGRAL_TYPE_P (TREE_TYPE (op))
> + && get_range_info (op, &min, &max) == VR_RANGE
> + && wi::eq_p (min, 0)
> + && wi::eq_p (max, 1))
> + return true;
You could use and/or:
if (INTEGRAL_TYPE_P (TREE_TYPE (op)) && wi::eq_p (get_nonzero_bits (op), 1))
set_range_info for VR_RANGE should usually update also the non-zero bits, but
set_nonzero_bits does not update the recorded range.
Jakub