https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70053
Michael Clark <michaeljclark at mac dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |michaeljclark at mac dot com
--- Comment #10 from Michael Clark <michaeljclark at mac dot com> ---
another data point. I am seeing something similar on x86-64.
SysV x86-64 ABI specifies that _Decimal128 is to be passed in
xmm regs so I believe the stack stores here are redundant.
; cat > dec1.c << EOF
_Decimal128 add_d(_Decimal128 a, _Decimal128 b) { return a + b; }
EOF
; gcc -O2 -S -masm=intel dec1.c
; cat dec1.s
add_d:
.LFB0:
.cfi_startproc
endbr64
sub rsp, 40
.cfi_def_cfa_offset 48
movaps XMMWORD PTR [rsp], xmm0
movaps XMMWORD PTR 16[rsp], xmm1
call __bid_addtd3@PLT
movaps XMMWORD PTR [rsp], xmm0
add rsp, 40
.cfi_def_cfa_offset 8
ret
.cfi_endproc