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