[Bug c++/77555] unused inline function in-function static variable accessed from outside leads to linker error
trippels at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Sun Sep 11 05:38:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77555
Markus Trippelsdorf <trippels at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2016-09-11
CC| |trippels at gcc dot gnu.org
Ever confirmed|0 |1
--- Comment #1 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
% cat test2.ii
extern "C" void printf(...);
struct A {
A(int, char *p2) { printf(p2); }
};
template <int, typename> struct B { static A static_var; };
template <int LINE, typename GETTER>
A B<LINE, GETTER>::static_var{0, GETTER::get()};
struct C {
void unused() {
static char function_static;
struct D {
static char *get() { return &function_static; }
};
auto addr = B<0, D>::static_var;
}
};
int main() {}
% clang++ -flto -O2 test2.ii
% clang++ -O2 test2.ii
% icpc -O2 test2.ii
% g++ -O2 test2.ii
/tmp/ccskrvWq.o:test2.ii:function _GLOBAL__sub_I_main: error: undefined
reference to 'C::unused()::function_static'
collect2: error: ld returned 1 exit status
(with -flto we get an ICE:)
% g++ -flto -O2 test2.ii
test2.ii:17:13: internal compiler error: in get_partitioning_class, at
symtab.c:1850
int main() {}
^
0x98fdd1 symtab_node::get_partitioning_class()
../../gcc/gcc/symtab.c:1850
0xc4ddb7 lto_output_varpool_node
../../gcc/gcc/lto-cgraph.c:614
0xc4ddb7 output_symtab()
../../gcc/gcc/lto-cgraph.c:1024
0xc60ba9 lto_output()
../../gcc/gcc/lto-streamer-out.c:2395
0xccb4ee write_lto
../../gcc/gcc/passes.c:2455
0xccefce ipa_write_summaries_1
../../gcc/gcc/passes.c:2519
0xccefce ipa_write_summaries()
../../gcc/gcc/passes.c:2579
0x9a8020 ipa_passes
../../gcc/gcc/cgraphunit.c:2330
0x9a8020 symbol_table::compile()
../../gcc/gcc/cgraphunit.c:2424
0x9aa8a1 symbol_table::compile()
../../gcc/gcc/cgraphunit.c:2557
0x9aa8a1 symbol_table::finalize_compilation_unit()
../../gcc/gcc/cgraphunit.c:2583
Please submit a full bug report,
More information about the Gcc-bugs
mailing list