https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69368
--- Comment #37 from alalaw01 at gcc dot gnu.org --- (In reply to Jakub Jelinek from comment #36) > 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; Yes, this was what I meant in comment #33. The question is, do we care? (Or, do we only care in the FORTRAN case?) If so, then we presumably want a -fbroken-common-blocks (or something!) that is not FE-specific.