https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112683
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Component|target |middle-end
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
# RANGE [irange] long unsigned int [1, 16] MASK 0x1f VALUE 0x0
_2 = _1 + 1;
# PT = nonlocal
_3 = &__str_5(D)->_M_local_bufD.4676;
# .MEM_7 = VDEF <.MEM_6>
memcpyD.1403 (&<retval>._M_local_bufD.4676, _3, _2);
The range information is there already for _2.
Note the hugely expanded out instructions is a target issue though.