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.

Reply via email to