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?