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

Reply via email to