http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54855
--- Comment #5 from Marc Glisse <glisse at gcc dot gnu.org> 2012-10-12 18:08:45 UTC --- Doing the optimization that late is a bit fragile though. For instance: v[0] += 3.0; v[0] -= 1.0; is back to decomposing the vector, doing the operations and reconstructing it (I didn't use -fassociative-math so it couldn't turn that into += 2.0). But doing more looks too complicated.