On Mon, Mar 31, 2025 at 9:15 PM Eric Botcazou <botca...@adacore.com> wrote: > > > You can see what -fuse-linker-plugin says, what gcc/auto-host.h contains > > for HAVE_LTO_PLUGIN. I don't know whether the BFD linker (or mold) > > supports linker plugins on windows. I do know that libiberty simple-object > > does not support PE, that is, at _least_ (DWARF) debuginfo will be subpar. > > Here's an excerpt of a LTO compilation with -Wl,--verbose=2 on native Windows: > > C:/GNATPRO/25.1/bin/../lib/gcc/x86_64-w64-mingw32/13.3.1/../../../../x86_64- > w64-mingw32/bin/ld.exe: C:\tmp\ccCnskmU.o (symbol from plugin): symbol `fma'
OK, so I infer from '(symbol from plugin)' that linker plugin support is there and enabled by default. That should rule out inlining differences from that end. There is of course still the thing that PE and ELF have different visibility rules and handling of what is COMDAT in ELF, dependent on the programming language (C vs. C++) this would be also expected to produce different inlining. More details can always be gathered from comparing -fopt-info-inline or in even more detail from looking at the -fdump-ipa-inline[-details] dump (both from WPA stage, so make sure to specify those options at link time). Richard. > definition: DEF, visibility: DEFAULT, resolution: PREVAILING_DEF_IRONLY > C:/GNATPRO/25.1/bin/../lib/gcc/x86_64-w64-mingw32/13.3.1/../../../../x86_64- > w64-mingw32/bin/ld.exe: C:\tmp\ccCnskmU.o (symbol from plugin): symbol `main' > definition: DEF, visibility: DEFAULT, resolution: PREVAILING_DEF > C:/GNATPRO/25.1/bin/../lib/gcc/x86_64-w64-mingw32/13.3.1/../../../../x86_64- > w64-mingw32/bin/ld.exe: C:\tmp\ccCnskmU.o (symbol from plugin): symbol > `__fpclassify' definition: UNDEF, visibility: DEFAULT, resolution: > RESOLVED_EXEC > attempt to open C:\tmp\ccbENa6D.ltrans0.ltrans.o succeeded > C:\tmp\ccbENa6D.ltrans0.ltrans.o > > This is with GNU ld. > > -- > Eric Botcazou > >