http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49413
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> 2011-06-15 00:34:37 UTC --- I think this code is undefined as the alignment requirements of double is 8 bytes but the original (t->xyz->va/t->xyz->vb) is packed so it has a alignment of 4 bytes.