Dave Korn wrote: > Dave Korn wrote: >> I've read http://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html about six >> times and can't see anywhere it even hints that you can use this syntax >> anywhere except as the trailing member of a struct. > > Andrew Haley wrote: >> But zero-length arrays are a gcc extension. There's nothing that limits >> them to the last member of a struct. zero-length arrays must be rejected >> with -pedantic, but not otherwise. > >> Because it's a documented gcc extension. > > Obviously I can't see for looking; can you please point me to the precise > chapter/page/paragraph/line that I should have found earlier?
(I honestly mean that, no sarcasm intended; it was late at night and I was tired, I could easily have misread or overlooked something.) I did find this comment in varasm.c:assemble_noswitch_variable() that says we need to handle this case: /* Don't allocate zero bytes of common, since that means "undefined external" in the linker. */ if (size == 0) rounded = 1; ... so I guess it counts as a backend bug if the backend still emits a zero in the .comm directive, and that the documentation of ASM_OUTPUT.*COMMON should probably be improved to warn of the danger that size may be zero. cheers, DaveK