http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56147
Bug #: 56147
Summary: [4.8 Regression] ICE on invalid code in
lto_symtab_merge_decls_1
Classification: Unclassified
Product: gcc
Version: 4.8.0
Status: UNCONFIRMED
Severity: minor
Priority: P3
Component: lto
AssignedTo: [email protected]
ReportedBy: [email protected]
$ cat > foo.c
extern void baz(void);
void foo(void)
{
baz();
}
^D
$ cat > bar.c
extern int baz;
void bar(void)
{
++baz;
}
^D
$ gcc -flto foo.c bar.c
lto1: internal compiler error: tree check: expected function_decl, have
var_decl in lto_symtab_merge_decls_1, at lto-symtab.c:446
0x872a772 tree_check_failed(tree_node const*, char const*, int, char const*,
...)
../../gcc-4.8/gcc/tree.c:8946
0x83ec6f2 tree_check
../../gcc-4.8/gcc/tree.h:3669
0x83ec6f2 lto_symtab_merge_decls_1
../../gcc-4.8/gcc/lto-symtab.c:446
0x83ec947 lto_symtab_merge_decls()
../../gcc-4.8/gcc/lto-symtab.c:522
0x811af10 read_cgraph_and_symbols
../../gcc-4.8/gcc/lto/lto.c:3037
0x811b228 lto_main()
../../gcc-4.8/gcc/lto/lto.c:3370
[...]
GCC 4.7 gives:
In file included from :0:0:
foo.c:1:13: error: variable 'baz' redeclared as function
In file included from foo.c:1:0,
from :0:
bar.c:1:12: note: previously declared here
lto1: fatal error: errors during merging of translation units
compilation terminated.
[...]
GCC 4.6 is even more concise:
foo.c:1:13: error: variable 'baz' redeclared as function
bar.c:1:12: note: previously declared here
lto1: fatal error: errors during merging of translation units
compilation terminated.
[...]