https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95620
Martin Liška <marxin at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |REOPENED Last reconfirmed| |2020-06-10 Resolution|INVALID |--- Ever confirmed|0 |1 --- Comment #2 from Martin Liška <marxin at gcc dot gnu.org> --- So it's really problem as with LTO we don't put the large array into .lbss section: LTO: .file "<artificial>" .text .local a .comm a,2830270464,32 .local b .comm b,4,4 non-LTO mode: .globl a .section .lbss,"aw" .align 32 .type a, @object .size a, 2830270464 a: .zero 2830270464 So the symbol goes from .lbss section to .data section as LTO makes the symbol local.