mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-16 13:30:54 +08:00
re PR c/7741 (ICE on conflicting types (make_decl_rtl at varasm.c:834))
PR c/7741 * c-decl.c (duplicate_decls): Discard the initializer of the new decl when the types are conflicting. Co-Authored-By: Christian Ehrhardt <ehrhardt@mathematik.uni-ulm.de> From-SVN: r62631
This commit is contained in:
parent
ac5e69da56
commit
ecf92f8227
@ -1,3 +1,10 @@
|
||||
2003-02-10 Eric Botcazou <ebotcazou@libertysurf.fr>
|
||||
Christian Ehrhardt <ehrhardt@mathematik.uni-ulm.de>
|
||||
|
||||
PR c/7741
|
||||
* c-decl.c (duplicate_decls): Discard the initializer of the
|
||||
new decl when the types are conflicting.
|
||||
|
||||
2003-02-10 Josef Zlomek <zlomekj@suse.cz>
|
||||
|
||||
* Makefile.in (sreal.o): Added.
|
||||
|
@ -1140,6 +1140,12 @@ duplicate_decls (newdecl, olddecl, different_binding_level)
|
||||
}
|
||||
}
|
||||
error_with_decl (olddecl, "previous declaration of `%s'");
|
||||
|
||||
/* This is safer because the initializer might contain references
|
||||
to variables that were declared between olddecl and newdecl. This
|
||||
will make the initializer invalid for olddecl in case it gets
|
||||
assigned to olddecl below. */
|
||||
DECL_INITIAL (newdecl) = 0;
|
||||
}
|
||||
/* TLS cannot follow non-TLS declaration. */
|
||||
else if (TREE_CODE (olddecl) == VAR_DECL && TREE_CODE (newdecl) == VAR_DECL
|
||||
|
@ -1,3 +1,8 @@
|
||||
2003-02-10 Eric Botcazou <ebotcazou@libertysurf.fr>
|
||||
Christian Ehrhardt <ehrhardt@mathematik.uni-ulm.de>
|
||||
|
||||
* gcc.dg/decl-2.c: New test.
|
||||
|
||||
Mon Feb 10 11:41:20 CET 2003 Jan Hubicka <jh@suse.cz>
|
||||
|
||||
* gcc.dg/i386-fpcvt-1.c: New test.
|
||||
|
10
gcc/testsuite/gcc.dg/decl-2.c
Normal file
10
gcc/testsuite/gcc.dg/decl-2.c
Normal file
@ -0,0 +1,10 @@
|
||||
/* PR c/7411 */
|
||||
/* Contributed by Christian Ehrhardt */
|
||||
/* { dg-do compile } */
|
||||
|
||||
void foo(void)
|
||||
{
|
||||
char c; /* { dg-error "previous declaration" } */
|
||||
int i;
|
||||
int c = i; /* { dg-error "conflicting types" } */
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user