https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94516
--- Comment #2 from Martin Liška <marxin at gcc dot gnu.org> --- Created attachment 48228 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=48228&action=edit pre-processed source file It's compiled with: $ gcc -fdiagnostics-show-option -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -Werror=return-type -g -fPIE -MT psk-file.o psk-file.i -c The assembly diff is quite small (it's doit function): $ diff -u /tmp/psk-file.good.s /tmp/psk-file.bad.s --- /tmp/psk-file.good.s 2020-04-07 13:40:35.985428368 +0200 +++ /tmp/psk-file.bad.s 2020-04-07 13:38:27.658722637 +0200 @@ -1036,37 +1036,33 @@ pushq $0 .cfi_def_cfa_offset 80 call run_test3 - addq $24, %rsp - .cfi_def_cfa_offset 56 + pushq $0 + .cfi_def_cfa_offset 64 xorl %r9d, %r9d xorl %r8d, %r8d pushq $0 - .cfi_def_cfa_offset 64 + .cfi_def_cfa_offset 72 movq %r12, %rcx leaq .LC42(%rip), %rdx leaq .LC43(%rip), %rsi - pushq $0 - .cfi_def_cfa_offset 72 - leaq .LC44(%rip), %rdi pushq $9 .cfi_def_cfa_offset 80 + leaq .LC44(%rip), %rdi call run_test3 - addq $24, %rsp - .cfi_def_cfa_offset 56 - xorl %r9d, %r9d - movq %r12, %rcx pushq $-32 .cfi_def_cfa_offset 64 + xorl %r9d, %r9d movl $1, %r8d - leaq .LC42(%rip), %rdx - xorl %esi, %esi pushq $-12 .cfi_def_cfa_offset 72 - leaq .LC45(%rip), %rdi + movq %r12, %rcx + leaq .LC42(%rip), %rdx + xorl %esi, %esi pushq $0 .cfi_def_cfa_offset 80 + leaq .LC45(%rip), %rdi call run_test3 - addq $32, %rsp + movq %r12, %rsp .cfi_def_cfa_offset 48 movq 24(%rsp), %rax subq %fs:40, %rax