https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110377
--- Comment #3 from Jan Hubicka <hubicka at gcc dot gnu.org> ---
IPA code takes value ranges from jump functions that are computed by
ipa-prop::ipa_compute_jump_functions_for_edge which seems to do:
if (TREE_CODE (arg) == SSA_NAME
&& param_type
/* Limit the ranger query to integral types as the rest
of this file uses value_range's, which only hold
integers and pointers. */
&& irange::supports_p (TREE_TYPE (arg))
&& irange::supports_p (param_type)
&& get_range_query (cfun)->range_of_expr (vr, arg)
&& !vr.undefined_p ())
Which looks like a ragner query. I wonder why it does not return the limited
range?