This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c/21342] New: [4.0/4.1 Regression] some incompatible external declarations not diagnosed
- From: "jsm28 at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 2 May 2005 19:55:35 -0000
- Subject: [Bug c/21342] New: [4.0/4.1 Regression] some incompatible external declarations not diagnosed
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
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