https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88584
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- > extern int a[]; Is already have the completed type in the global scope and the declaration merged with it: int a[1] = { 0 }; So I think GCC is correct here.