https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99872
Bug ID: 99872 Summary: [11 Regression] optimizations sometimes lead to missing asm prefixes Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: critical Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: jyong at gcc dot gnu.org Target Milestone: --- Host: x86_64-pc-linux-gnu Target: x86_64-w64-mingw32 Build: x86_64-pc-linux-gnu Created attachment 50497 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=50497&action=edit lib32_libmingwex_a-pow.c test case Compiling with the following command line: x86_64-w64-mingw32-gcc -O2 -c lib32_libmingwex_a-pow.c -std=gnu99 -m32 Causes an undefined symbols with the wrong asm prefixes to be emitted: 00000000 T ___attribute__pow 00000010 B ___attribute__pow_d 00000008 B ___attribute__pow_x 00000000 B ___attribute__pow_y 00000000 b .bss 00000000 d .data U ___fpclassify U _internal_modf U LC5 U _LC6 00000000 r .rdata 00000000 r .rdata$zzz U ___signbit 00000000 t .text Adding -fno-leading-underscore makes the symbols resolved, 32bit Windows code is supposed to have a leading underscore.