https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118867

--- Comment #12 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Andrew Pinski from comment #8)
> (In reply to Patrick Palka from comment #7)
> > > Would be useful to have a bisect on where the original testcase in comment
> > > #0 started to warn.
> > GCC 14 compiling GCC 15 preprocessed sources also emits the warning, while
> > GCC 15 compiling GCC 14 preprocessed sources doesn't emit the warning, which
> > suggests it started with a libstdc++ commit.  AFAICT it started with
> > r15-5909-gf29d1b5836790e "libstdc++: Add fancy pointer support to std::list
> > [PR57272]".
> 
> oh, that makes even more sense here. We still have a missed optmization on
> the gimple level. that is related to my reduced testcase.

Just to clarify here, the reason why it works in GCC 14 is that we got:
```
  _30 = listJets.D.31591._M_impl._M_node.D.14392._M_next;
  if (&listJets.D.31591._M_impl._M_node.D.14392 == _30)
    goto <bb 19>; [5.50%]
  else
    goto <bb 9>; [94.50%]

  <bb 9> [local count: 118111600]:
  if (&listJets.D.31591._M_impl._M_node.D.14392 != _30)
    goto <bb 10>; [89.00%]
  else
    goto <bb 22>; [11.00%]
```

Which DOM could look up the eq version of the conditional in bb 9 and get the
expected answer. While in GCC 15, there are 2 different representations used
for the `&listJets.D.31591._M_impl._M_node.D.14392` so we end up with a lookup
that missed that out.

I wonder if we could canonical to the MEM_REF form to do the lookup then.

Reply via email to