https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84907
--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> --- I've tried return { *reinterpret_cast <const V __attribute__((aligned (__alignof__(float))))*>(m) }; but that doesn't work either. The difference between r256653 and r256656 is e.g. in loadUWrapper: - lxvd2x 0,0,3 + lvx 0,0,3 addi 10,1,-16 li 9,32 - xxpermdi 0,0,0,2 - xxpermdi 0,0,0,2 + xxpermdi 0,32,32,2 stxvd2x 0,0,10 addi 10,1,-48 - lxvd2x 34,10,9 - xxpermdi 34,34,34,2 + lvx 2,10,9