https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111697
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- We have quite some code doing vector CTOR stuff in tree-ssa-forwprop.cc and this should be optimized to v_2 = { x_6(D), x_6(D), x_6(D), x_6(D) }; note SLP vectorization can do this but it fails because it doesn't handle a default def insert - it handles a group of BIT_INSERT_EXPRs as vector CTOR and SLP discovery doesn't know how to start from external defs (it needs actual definition stmts). A more general approach would be to try to track vector construction through symbolic execution like we form bswap in the bswap pass.