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

--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> ---
Ok, on trunk we now lower addresses somewhat but that doesn't help as we are
still faced with

  i.0_3 = i;
  _4 = (sizetype) i.0_3;
  _5 = _4 + 1;
  _6 = _5 * 4;
  _7 = &a[1] + _6;
  _8 = i.0_3 + 2;
  _12 = (sizetype) _8;
  _13 = _12 * 4;
  _9 = &a + _13;
  if (_7 != _9)

where FRE/PRE cannot see any equivalences, reassoc doesn't do anything and
SLSR does

-  _13 = _12 * 4;
+  _13 = _6 + 4;

but that's too late or rather DOM doesn't figure out the equivalence
of &a + _6 + 4 and &a[1] + _6 (not that I see how it could).

Reply via email to