https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107772
--- Comment #2 from Avi Kivity <avi at scylladb dot com> ---
I expect something like this:
f(int*, int*):
cmp rdi, rsi
je .L10
.L4:
cmp DWORD PTR [rsi], 0
jne .L14
.L3
add rsi, 4
cmp rsi, rdi
jne .L4
.L10
ret
.section .text.cold
.L14:
push rsi
push rdi
mov rax, DWORD PTR [rsi]
call g(int)
pop rdi
pop rsi
mov DWORD PTR [rsi], eax
jmp .L3
