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)

Reply via email to