On Mon, May 5, 2025 at 9:55 PM Andrew MacLeod <amacl...@redhat.com> wrote:
>
>
> On 5/3/25 07:41, Richard Biener wrote:
> > On Sat, May 3, 2025 at 12:39 AM Andrew MacLeod <amacl...@redhat.com> wrote:
> >> On trunk I'll eventually do something different.. but it will be more
> >> invasive than I think is reasonable for a backport.
> >>
> >> The problem in the PR is that there is a variable with a range and has a
> >> bitmask attached to it.   We often defer bitmask processing, the the
> >> change which triggers this problem "improves" the range by applying the
> >> bitmask when  we call update_bitmask. (PR 119712)
> >>
> >> The case in point is a range of 0, combined with a bitmask that says the
> >> '1' bit must be on.   This results in an UNDEFINED range since its
> >> impossible.   this is rarely a problem but this particular snippet of
> >> code in IPA is tripping over it because it has checked for undefined,
> >> and then created a new range by combining the [0, 0] and the bitmask,
> >> which we turn into an UNDEFINED.. which it isn't expected.    and then
> >> it asks for the type of the range.
> >>
> >> As Jakub points out in the PR, this is effectively unreachable code that
> >> is being propagated. A harmless fix would be to check if the result of
> >> applying the bitmask results in an UNDEFINED value and  to simply
> >> replace it with a VARYING value.
> >>
> >> WE still reduce the testcase to "return 0" and no more failure.
> >>
> >> bootstraps on -x86_64-pc-linux-gnu  with no regressions.
> >>
> >> If this is acceptable, I will push it to trunk, then also test/verify
> >> for the GCC15 and 14(?) branches and check it in there.
> > LGTM.  IPA CP might want to either avoid looking at the type
> > for UNDEFINED or track it separate from the value-range, not
> > sure where it looks at the type of a range.
> >
> > Richard.
>
> This is the patch applied to GCC 15.
>
> Bootstraps on x86_64-pc-linux-gnu with no regressions.  OK for the GCC
> 15 release branch?

OK.

>
> Andrew

Reply via email to