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

--- Comment #6 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
So the reason why the patch for PR111422 used to work is because before we had:
  _43 = _42 + 18446744073709551615;
  _44 = &g + _43;
  *_44 = 8;

But with the change here we get:
  _9 = (unsigned long) &g;
  _84 = _9 + 18446744073709551615;
  _11 = _42 + _84;
  _44 = (signed char *) _11;

Before we walked to _44 but not back further so in the new case we don't look
at _9. I wonder if we could get a case which failed before; though maybe we
don't since we canonicalize `(a ptr+ b) ptr+ c` into `a ptr+ (b + c)`.

Reply via email to