Simple bitop reassoc in match.pd
Marc Glisse
marc.glisse@inria.fr
Wed May 11 17:56:00 GMT 2016
On Wed, 11 May 2016, Jeff Law wrote:
>> We could also simplify (int)(_Bool)x to x using VRP information that x
>> is in [0, 1], but apparently when VRP replaces x==0 with y=x^1,(_Bool)y,
>> it does not compute a range for the new variable y, and by the time the
>> next VRP pass comes, it is too late.
> Seems like a clear oversight.
In get_value_range, there is:
/* If we query the range for a new SSA name return an unmodifiable VARYING.
We should get here at most from the substitute-and-fold stage which
will never try to change values. */
so this is a known limitation.
We could try to change that (XRESIZEVEC, memset(0) on the new elements,
update num_vr_values to the new num_ssa_names, at this point vr_value
should be replaced with a vector).
We could also use set_range_info and make simplify_conversion_using_ranges
use get_range_info instead of get_value_range. Might even move the whole
function to match.pd then ;-)
--
Marc Glisse
More information about the Gcc-patches
mailing list