https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95839
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |marxin at gcc dot gnu.org --- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- (In reply to Richard Biener from comment #1) > GCC does not yet vectorize stmts without loads (and explicitely rejects > vector types somewhere). But this particular case might be easy since we already vectorize from CTORs, we likely just disregard the BB because it doesn't contain any datarefs: _1 = BIT_FIELD_REF <a_7(D), 32, 0>; _2 = BIT_FIELD_REF <b_8(D), 32, 0>; _3 = _1 + _2; _4 = BIT_FIELD_REF <a_7(D), 32, 32>; _5 = BIT_FIELD_REF <b_8(D), 32, 32>; _6 = _4 + _5; _9 = {_3, _6}; vectorization might turn this into _10 = {_1, _4 }; _11 = {_2, _5 }; _9 = _10 + _11; and then forwprop CTOR "folding" will get rid of the _10 and _11 CTORs (until the vectorizer handles BIT_FIELD_REFs of existing vectors). So kind-of "easy hack" - Martin, your branch might already do this (not give up on <= 1 datarefs).