https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61502
--- Comment #7 from joseph at codesourcery dot com <joseph at codesourcery dot com> --- On Tue, 21 Oct 2014, Keith.S.Thompson at gmail dot com wrote: > their last-stored values. Furthermore, even if relocating objects so > they're no long adjacent is permitted by the language, I don't believe > gcc (or the code that it generates) is actually doing so in this case. Really, it's a bad idea to apply concepts such as "actually doing so" to understanding the semantics of C, specified as a high-level language. "happens to immediately follow the first array object in the address space" in the high-level language need not satisfy any particular rules you might expect from thinking of C as relating to particular hardware, only the rules that can be deduced from the C standard (which as far as I can tell, do not say that "follows" is constant just because the addresses of the two objects in question are constant - or anything else such as that you can't have x + 1 == y and y + 1 == x, which you might expect from relating things to hardware rather than to standard requirements).