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).