[Bug c/13801] [3.4/3.5 Regression] Decls should regain old type at end of scope

cvs-commit at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Thu Aug 26 21:30:00 GMT 2004


------- Additional Comments From cvs-commit at gcc dot gnu dot org  2004-08-26 21:30 -------
Subject: Bug 13801

CVSROOT:	/cvs/gcc
Module name:	gcc
Changes by:	jsm28@gcc.gnu.org	2004-08-26 21:30:26

Modified files:
	gcc            : ChangeLog c-decl.c 
	gcc/testsuite  : ChangeLog 
Added files:
	gcc/testsuite/gcc.dg/debug: redecl-1.c redecl-2.c redecl-3.c 
	                            redecl-4.c redecl-5.c 
	gcc/testsuite/gcc.dg: redecl-3.c redecl-4.c redecl-6.c 
	                      redecl-7.c redecl-8.c redecl-9.c 
	                      redecl-10.c 

Log message:
	PR c/13801
	* c-decl.c (struct c_binding): Add type and inner_comp fields.
	(bind): Set type and inner_comp fields.
	(pop_scope): Restore type of decl to the correct type from an
	outer scope.  Give error when popping file scope for incomplete
	arrays completed incompatibly with default initialization in an
	inner scope.
	(diagnose_mismatched_decls): Handle externs with initializers at
	block scope.
	(pushdecl): Set type of external declaration at block scope based
	only on the visible declarations.  Save type when changing the
	type of a declaration.  Merge an external declaration at block
	scope with a visible static declaration at file scope.
	(implicitly_declare): Give recycled old declaration the new type
	except for incompatible declarations of built-in functions, saving
	the old type.
	
	testsuite:
	* gcc.dg/redecl-3.c, gcc.dg/redecl-4.c, gcc.dg/redecl-6.c,
	gcc.dg/redecl-7.c, gcc.dg/redecl-8.c, gcc.dg/redecl-9.c,
	gcc.dg/redecl-10.c, gcc.dg/debug/redecl-1.c,
	gcc.dg/debug/redecl-2.c, gcc.dg/debug/redecl-3.c,
	gcc.dg/debug/redecl-4.c, gcc.dg/debug/redecl-5.c: New tests.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&r1=2.5110&r2=2.5111
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/c-decl.c.diff?cvsroot=gcc&r1=1.563&r2=1.564
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&r1=1.4200&r2=1.4201
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.dg/debug/redecl-1.c.diff?cvsroot=gcc&r1=NONE&r2=1.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.dg/debug/redecl-2.c.diff?cvsroot=gcc&r1=NONE&r2=1.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.dg/debug/redecl-3.c.diff?cvsroot=gcc&r1=NONE&r2=1.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.dg/debug/redecl-4.c.diff?cvsroot=gcc&r1=NONE&r2=1.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.dg/debug/redecl-5.c.diff?cvsroot=gcc&r1=NONE&r2=1.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.dg/redecl-3.c.diff?cvsroot=gcc&r1=NONE&r2=1.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.dg/redecl-4.c.diff?cvsroot=gcc&r1=NONE&r2=1.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.dg/redecl-6.c.diff?cvsroot=gcc&r1=NONE&r2=1.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.dg/redecl-7.c.diff?cvsroot=gcc&r1=NONE&r2=1.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.dg/redecl-8.c.diff?cvsroot=gcc&r1=NONE&r2=1.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.dg/redecl-9.c.diff?cvsroot=gcc&r1=NONE&r2=1.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/gcc.dg/redecl-10.c.diff?cvsroot=gcc&r1=NONE&r2=1.1



-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13801



More information about the Gcc-bugs mailing list