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

Segher Boessenkool <segher at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2015-03-14
                 CC|                            |segher at gcc dot gnu.org
           Assignee|unassigned at gcc dot gnu.org      |segher at gcc dot 
gnu.org
   Target Milestone|---                         |6.0
            Summary|inefficient code returning  |inefficient code returning
                   |aggregates on powepc64le    |aggregates on powerpc64le
     Ever confirmed|0                           |1

--- Comment #2 from Segher Boessenkool <segher at gcc dot gnu.org> ---
This is first expanded to a copy of the arg to a struct on stack; then
CSE etc. keep everything in regs, and DSE removes the stores completely.

We are left with copying 0 to a reg, and then copying parts of the arg
to a zero_extract of that.  Which combine will not handle (see
combinable_i3pat, the "inner_dest != dest" branch).

This will get better when we no longer write rl*imi as a zero_extract,
hopefully completely solved even.  We'll see.  Mine.

Reply via email to