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