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

--- Comment #36 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
As Richard said, you can do similar (invalid too) stuff in C too, say:
struct S { int a[10000]; } s;
in one TU and
struct S { int a[1]; } s;

int
foo (int x)
{
  return s.a[x];
}

int
bar (int x)
{
  return s.a[1 + x] + s.a[0] + s.a[x];
}

GCC 5 would compile it to what the author might have meant, while GCC 6 will
optimize bar into s.a[0] * 3;

Reply via email to