Hi Michael, I'm on gcc 13.1 compiling for Windows x64, with the MinGW UCRT64 runtime library best regards, Julian On Thu, Jun 29, 2023 at 9:27 PM Michael Matz wrote: > Hello, > > On Thu, 29 Jun 2023, Julian Waters via Gcc wrote: > > > int main() { > > asm ("nop" "\n" > > "\t" "nop" "\n" > > "\t" "nop"); > > > > asm volatile ("nop" "\n" > > "\t" "nop" "\n" > > "\t" "nop"); > > } > > > > objdump --disassemble-all -M intel -M intel-mnemonic a.exe > > disassembly.txt > > > > 00000001400028c0
: > > 1400028c0: 48 83 ec 28 sub rsp,0x28 > > 1400028c4: e8 37 ec ff ff call 140001500 <__main> > > 1400028c9: 90 nop > > 1400028ca: 90 nop > > 1400028cb: 90 nop > > 1400028cc: 31 c0 xor eax,eax > > 1400028cd: 48 83 c4 28 add rsp,0x28 > > 1400028ce: c3 ret > > > > Note how there are only 3 nops above when there should be 6, as the > first 3 > > have been deleted by the compiler. With the patch, the correct 6 nops > > instead of 3 are compiled into the final code. > > > > Of course, the above was compiled with the most extreme optimizations > > available to stress test the possible bug, -O3, -ffunction-sections > > -fdata-sections -Wl,--gc-sections -flto=auto. Compiled as C++17 and intel > > assembly syntax > > Works just fine here: > > % cat xx.c > int main() { > asm ("nop" "\n" > "\t" "nop" "\n" > "\t" "nop"); > > asm volatile ("nop" "\n" > "\t" "nop" "\n" > "\t" "nop"); > } > > % g++ -v > ... > gcc version 12.2.1 20230124 [revision > 193f7e62815b4089dfaed4c2bd34fd4f10209e27] (SUSE Linux) > > % g++ -std=c++17 -flto=auto -O3 -ffunction-sections -fdata-sections xx.c > % objdump --disassemble-all -M intel -M intel-mnemonic a.out > ... > 0000000000401020
: > 401020: 90 nop > 401021: 90 nop > 401022: 90 nop > 401023: 90 nop > 401024: 90 nop > 401025: 90 nop > 401026: 31 c0 xor eax,eax > 401028: c3 ret > 401029: 0f 1f 80 00 00 00 00 nop DWORD PTR [rax+0x0] > ... > > Testing with recent trunk works as well with no differences in output. > This is for x86_64-linux. > > So, as suspected, something else is broken for you. Which compiler > version are you using? (And we need to check if it's something in the > mingw target) > > > Ciao, > Michael. >