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?