https://gcc.gnu.org/bugzilla/show_bug.cgi?id=43565
--- Comment #14 from Richard Biener <rguenth at gcc dot gnu.org> --- I think implementation-wise GCC outrules aliases that are not visible but takes care of symbols resolving to NULL. For optimizations of actual accesses it can assume the symbols do not resolve to NULL since the accesses would trap. So the question is whether we should follow suit and declare non-visible weak declarations similarly undefined as non-visible alias declarations (for externs and commons).