http://gcc.gnu.org/bugzilla/show_bug.cgi?id=49413
--- Comment #6 from Andrew Pinski <pinskia at gcc dot gnu.org> 2011-06-15 01:13:14 UTC --- The problem is: double *v = (qp == &(t->q)) ? t->xyz->va : t->xyz->vb; the pointer v is a pointer to a 8 byte aligned data but you supply it with something which is only 4 byte aligned.