https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80491
--- Comment #23 from Paul Zimmermann <zimmerma+gcc at loria dot fr> ---
for the record here is what I get with the code from comment 20 with gcc 11.3.0
from Debian on a x86_64:
$ gcc -S -O1 test.cc -o-
.file "test.cc"
.text
.globl _Z3addR4pairS0_
.type _Z3addR4pairS0_, @function
_Z3addR4pairS0_:
.LFB0:
.cfi_startproc
movq (%rdi), %rax
movq 8(%rdi), %rdx
addq (%rsi), %rax
adcq 8(%rsi), %rdx
ret
.cfi_endproc
.LFE0:
.size _Z3addR4pairS0_, .-_Z3addR4pairS0_
.globl _Z4add1R4pairS0_
.type _Z4add1R4pairS0_, @function
_Z4add1R4pairS0_:
.LFB1:
.cfi_startproc
movq (%rsi), %rax
addq (%rdi), %rax
setc %cl
movzbl %cl, %ecx
movq 8(%rdi), %rdx
addq 8(%rsi), %rdx
addq %rcx, %rdx
ret
.cfi_endproc
.LFE1:
.size _Z4add1R4pairS0_, .-_Z4add1R4pairS0_
.ident "GCC: (Debian 11.3.0-3) 11.3.0"
.section .note.GNU-stack,"",@progbits
$ gcc -S -O3 test.cc -o-
.file "test.cc"
.text
.p2align 4
.globl _Z3addR4pairS0_
.type _Z3addR4pairS0_, @function
_Z3addR4pairS0_:
.LFB0:
.cfi_startproc
movq (%rsi), %rax
xorl %ecx, %ecx
addq (%rdi), %rax
setc %cl
movq 8(%rdi), %rdx
addq 8(%rsi), %rdx
addq %rcx, %rdx
ret
.cfi_endproc
.LFE0:
.size _Z3addR4pairS0_, .-_Z3addR4pairS0_
.p2align 4
.globl _Z4add1R4pairS0_
.type _Z4add1R4pairS0_, @function
_Z4add1R4pairS0_:
.LFB1:
.cfi_startproc
movq (%rsi), %rax
xorl %ecx, %ecx
addq (%rdi), %rax
setc %cl
movq 8(%rdi), %rdx
addq 8(%rsi), %rdx
addq %rcx, %rdx
ret
.cfi_endproc
.LFE1:
.size _Z4add1R4pairS0_, .-_Z4add1R4pairS0_
.ident "GCC: (Debian 11.3.0-3) 11.3.0"
.section .note.GNU-stack,"",@progbits