https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88250
Bug ID: 88250 Summary: -flto doesn't preserve -Wa options Product: gcc Version: 9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: lto Assignee: unassigned at gcc dot gnu.org Reporter: hjl.tools at gmail dot com CC: marxin at gcc dot gnu.org Target Milestone: --- [hjl@gnu-cfl-1 pr23929]$ cat y.c float foo (float x, float y) { return y; } [hjl@gnu-cfl-1 pr23929]$ gcc -c y.c -Wa,-msse2avx [hjl@gnu-cfl-1 pr23929]$ gcc -shared y.o [hjl@gnu-cfl-1 pr23929]$ objdump --disassemble=foo a.out a.out: file format elf64-x86-64 Disassembly of section .init: Disassembly of section .plt: Disassembly of section .plt.got: Disassembly of section .text: 00000000000010f9 <foo>: 10f9: 55 push %rbp 10fa: 48 89 e5 mov %rsp,%rbp 10fd: c5 fa 11 45 fc vmovss %xmm0,-0x4(%rbp) 1102: c5 fa 11 4d f8 vmovss %xmm1,-0x8(%rbp) 1107: c5 fa 10 45 f8 vmovss -0x8(%rbp),%xmm0 110c: 5d pop %rbp 110d: c3 retq Disassembly of section .fini: [hjl@gnu-cfl-1 pr23929]$ gcc -c y.c -Wa,-msse2avx -flto [hjl@gnu-cfl-1 pr23929]$ gcc -shared y.o -Wa,-msse2avx [hjl@gnu-cfl-1 pr23929]$ objdump --disassemble=foo a.out a.out: file format elf64-x86-64 Disassembly of section .init: Disassembly of section .plt: Disassembly of section .plt.got: Disassembly of section .text: 00000000000010f9 <foo>: 10f9: 55 push %rbp 10fa: 48 89 e5 mov %rsp,%rbp 10fd: f3 0f 11 45 fc movss %xmm0,-0x4(%rbp) 1102: f3 0f 11 4d f8 movss %xmm1,-0x8(%rbp) 1107: f3 0f 10 45 f8 movss -0x8(%rbp),%xmm0 110c: 5d pop %rbp 110d: c3 retq Disassembly of section .fini: [hjl@gnu-cfl-1 pr23929]$ -msse2avx is never passed to assembler with -flto.