https://gcc.gnu.org/bugzilla/show_bug.cgi?id=48609

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Last reconfirmed|                            |2021-08-02
           Keywords|                            |missed-optimization
             Status|UNCONFIRMED                 |NEW
            Summary|Inefficient complex float   |Inefficient complex float
                   |load/store                  |argument passing/return
     Ever confirmed|0                           |1
          Component|target                      |middle-end

--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Confirmed, In this case, it is a middle-end issue, I suspect if we used
V2SFmode for the incoming argument, it might work better.  Right now we
produce:
(insn 2 9 3 2 (set (reg:DI 86)
        (reg:DI 20 xmm0 [ x ])) "/app/example.cpp":5:1 -1
     (nil))
(insn 3 2 4 2 (set (mem/c:DI (plus:DI (reg/f:DI 77 virtual-stack-vars)
                (const_int -8 [0xfffffffffffffff8])) [0  S8 A64])
        (reg:DI 86)) "/app/example.cpp":5:1 -1
     (nil))
(insn 4 3 5 2 (set (reg:SF 84)
        (mem/c:SF (plus:DI (reg/f:DI 77 virtual-stack-vars)
                (const_int -8 [0xfffffffffffffff8])) [0  S4 A64]))
"/app/example.cpp":5:1 -1
     (nil))
(insn 5 4 6 2 (set (reg:SF 85)
        (mem/c:SF (plus:DI (reg/f:DI 77 virtual-stack-vars)
                (const_int -4 [0xfffffffffffffffc])) [0  S4 A32]))
"/app/example.cpp":5:1 -1
     (nil))

----- CUT ----
Return has the same issue:
(insn 13 12 14 2 (set (mem/c:SF (plus:DI (reg/f:DI 77 virtual-stack-vars)
                (const_int -8 [0xfffffffffffffff8])) [0  S4 A32])
        (reg:SF 84)) "/app/example.cpp":7:1 -1
     (nil))
(insn 14 13 15 2 (set (mem/c:SF (plus:DI (reg/f:DI 77 virtual-stack-vars)
                (const_int -4 [0xfffffffffffffffc])) [0  S4 A32])
        (reg:SF 85)) "/app/example.cpp":7:1 -1
     (nil))
(insn 15 14 16 2 (set (reg:DI 20 xmm0)
        (mem/c:DI (plus:DI (reg/f:DI 77 virtual-stack-vars)
                (const_int -8 [0xfffffffffffffff8])) [0  S8 A32]))
"/app/example.cpp":7:1 -1
     (nil))

Reply via email to