http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57949

--- Comment #4 from Bill Schmidt <wschmidt at gcc dot gnu.org> ---
Enabling the code used for MachO/Darwin64 when targeting ABI_AIX/linux produces
much better code:

    li 9,144
    addis 8,2,.LC1@toc@ha
    lvx 0,1,9
    ld 10,.LC1@toc@l(8)
    addis 8,2,.LC2@toc@ha
    ld 9,.LC2@toc@l(8)
    ld 8,128(1)
    stvx 0,0,9
    std 8,0(10)
    blr

A properly aligned vector load is used from the parameter save area without a
copy through the local variable area.

David/Peter, two questions:

(1) Would it be reasonable to make this the new default behavior, but add a
target-specific flag (-munaligned-vect-struct-parms or something) to allow
compatibility with the existing behavior?  I doubt this comes up often, but it
probably occurs somewhere in an existing library interface.

(2) If we make a change, should it be just for Linux, or should we change code
for AIX as well?

Reply via email to