My fix to bug 13801 caused some cases of incompatible declarations with external linkage (in different scopes) not to be diagnosed. pushdecl fails to update the type in the external scope with the new information from the new declaration if there was already a declaration in the current scope, or to check for consistency with the type in the external scope in those circumstances.
Test 1: int f(int (*)[]); int g() { int f(int (*)[2]); } int f(int (*)[3]); Test 2: extern int a[]; void f(void) { extern int a[]; extern int a[10]; } extern int a[5]; Test 3: extern int a[]; void f(void) { extern int a[10]; } extern int a[5]; -- Summary: [4.0/4.1 Regression] some incompatible external declarations not diagnosed Product: gcc Version: 4.1.0 Status: UNCONFIRMED Severity: normal Priority: P2 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: jsm28 at gcc dot gnu dot org CC: gcc-bugs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21342