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

--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Certainly.
If you do
struct S { char a[4]; char b[4]; };
extern void foo (struct S *);
static struct S s[] = { { "abc", "def" }, { "ghi", "jkl" } };
void
bar (void)
{
  foo (&s[1]);
}
i.e. if the address escapes to something you can't analyze, then such
transformation would be invalid.
The foo definition validly can
void
foo (struct S *s)
{
  s[-1].b[2] = ' ';
  s->a[0] = '1';
}
etc.

Reply via email to