https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112740
--- Comment #11 from Richard Biener <rguenth at gcc dot gnu.org> --- The only thing that's maybe suspicious is that machine_mode mode = GET_MODE (target); but we test /* Use sign-extension for uniform boolean vectors with integer modes. Effectively "vec_duplicate" for bitmasks. */ if (!TREE_SIDE_EFFECTS (exp) && VECTOR_BOOLEAN_TYPE_P (type) && SCALAR_INT_MODE_P (mode) where we might want to test SCALAR_INT_MODE_P (TYPE_MODE (type)) instead. Not sure if we ever call store_constructor with target not having the same mode as 'exp' though ... Or we should check that mode == TYPE_MODE (type) since we're moving to target anyway.