https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122526
Bug ID: 122526
Summary: -flto -ffat-lto-objects erroneously discards
references
Product: gcc
Version: 15.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: lto
Assignee: unassigned at gcc dot gnu.org
Reporter: tmb99 at gmx dot net
Target Milestone: ---
>common.h:
#include "stdio.h"
class Foo {
public:
static Foo& get_instance() { static Foo foo_instance;
return(foo_instance); }
private:
Foo();
};
class Bar {
public:
static Bar& get_instance() { static Bar bar_instance;
return(bar_instance); }
private:
Bar();
};
>foo.cpp:
#include "common.h"
Foo::Foo() { Bar* bar = &Bar::get_instance(); }
>g++ -flto -ffat-lto-objects -O3 -nostdlib -Wl,-r foo.cpp -o foo.o
`_ZGVZN3Bar12get_instanceEvE12bar_instance' referenced in section `.text' of
G:\Users\abc\AppData\Local\Temp\ccgIij2j.lto.o: defined in discarded section
`.gnu.linkonce.t._ZGVZN3Bar12get_instanceEvE12bar_instance' of
G:\Users\abc\AppData\Local\Temp\cceGE2Lf.o (symbol from plugin)
`_ZGVZN3Bar12get_instanceEvE12bar_instance' referenced in section `.text' of
G:\Users\abc\AppData\Local\Temp\ccgIij2j.lto.o: defined in discarded section
`.gnu.linkonce.t._ZGVZN3Bar12get_instanceEvE12bar_instance' of
G:\Users\abc\AppData\Local\Temp\cceGE2Lf.o (symbol from plugin)
`_ZZN3Bar12get_instanceEvE12bar_instance' referenced in section `.text' of
G:\Users\abc\AppData\Local\Temp\ccgIij2j.lto.o: defined in discarded section
`.gnu.linkonce.t._ZZN3Bar12get_instanceEvE12bar_instance' of
G:\Users\abc\AppData\Local\Temp\cceGE2Lf.o (symbol from plugin)
collect2.exe: error: ld returned 1 exit status
>g++ --version
g++ (MinGW-W64 x86_64-ucrt-posix-seh, built by Brecht Sanders, r1) 15.2.0
Looks like bug 51205
Works fine with Ubuntu gcc 13/14 (with -no-pie)