https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55422
cookevillain at yahoo dot com changed: What |Removed |Added ---------------------------------------------------------------------------- Version|4.4.3 |5.4.0 --- Comment #6 from cookevillain at yahoo dot com --- I still believe (although it has been almost six years since the original report) that gcc's diagnostics are inconsistent in this case. Here is a slightly different version of the input above: static void ff(int a) { return; } int f(void) { { int ff = 0; { extern void ff(int); } return ff; } ff(0); } gcc is silent about this file in every mode (c89, c11, etc.) although the only difference between this code and the other example above is that ff is declared as a function. I understand that gcc does not have to produce a diagnostic for every undefined behavior (such as ff having both external and internal linkage as above) but since it already diagnoses it for ordinary variables, why not functions?