https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86265
--- Comment #8 from Martin Sebor <msebor at gcc dot gnu.org> --- I would expect the additional detail (about the structure of data) to only help improve things, not ever make them worse, or introduce bugs into correct code. But relying on the structure of data is not novel -- the ability is an important part of the language, and GCC already takes advantage of it in some cases. For instance, it eliminates the test below: struct S { char a[4]; int b; char c[1]; }; void f (struct S *s, int i) { int c = s->c[0]; s->a[i] = 'a'; if (c != s->c[0]) __builtin_abort (); } even though calling f() with i set to offsetof (struct S, c) writes 'a' into s->c. GCC doesn't yet eliminate the test when the write is by a built-in like memcpy() or strcpy() but there is no reason for it not to.