http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48508
--- Comment #13 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-12-14 15:00:23 UTC --- Even more reduced: void __attribute__((externally_visible)) foo (int i) { } ----- static void bar (void) { extern void foo (int); foo (0); } int main() { bar (); } which also links ok when it works. Does not fail with C but only C++ but is valid source for both.