https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79000
Bug ID: 79000
Summary: ICE: in gen_member_die, at dwarf2out.c:23995
Product: gcc
Version: 7.0
Status: UNCONFIRMED
Keywords: lto
Severity: normal
Priority: P3
Component: debug
Assignee: unassigned at gcc dot gnu.org
Reporter: trippels at gcc dot gnu.org
Target Milestone: ---
A Gentoo users emailed me the following mixed C/C++ LTO testcase:
markus@x4 /tmp % cat 1.ii
struct a {
a();
} b;
markus@x4 /tmp % cat 2.i
typedef struct a b;
typedef struct a {
} b;
struct {
b c;
} d;
markus@x4 /tmp % gcc -g -flto -r -nostdlib 1.ii 2.i
lto1: internal compiler error: in gen_member_die, at dwarf2out.c:23995
0x6fa800 gen_member_die
/home/markus/gcc/gcc/dwarf2out.c:23995
0x6fa800 gen_struct_or_union_type_die
/home/markus/gcc/gcc/dwarf2out.c:24096
0x6fa800 gen_tagged_type_die
/home/markus/gcc/gcc/dwarf2out.c:24306
0x712040 gen_typedef_die
/home/markus/gcc/gcc/dwarf2out.c:24213
0x6f787a gen_decl_die
/home/markus/gcc/gcc/dwarf2out.c:25155
0x6f84ae dwarf2out_decl
/home/markus/gcc/gcc/dwarf2out.c:25636
0x6f887c dwarf2out_type_decl
/home/markus/gcc/gcc/dwarf2out.c:25344
0x5eaf33 lto_read_decls
/home/markus/gcc/gcc/lto/lto.c:1756
0x5ed8e3 lto_file_finalize
/home/markus/gcc/gcc/lto/lto.c:2038
0x5ed8e3 lto_create_files_from_ids
/home/markus/gcc/gcc/lto/lto.c:2048
0x5ed8e3 lto_file_read
/home/markus/gcc/gcc/lto/lto.c:2089
0x5ed8e3 read_cgraph_and_symbols
/home/markus/gcc/gcc/lto/lto.c:2799
0x5ed8e3 lto_main()
/home/markus/gcc/gcc/lto/lto.c:3304
Breakpoint 1, gen_member_die (context_die=<optimized out>, type=0x0) at
/home/markus/gcc/gcc/dwarf2out.c:23995
23995 gcc_assert (TYPE_MAIN_VARIANT (type) == type);
(gdb) p type
$1 = (tree) 0x0
All supported gcc versions are affected.