[Bug middle-end/112740] [14 Regression] wrong code with vector compare on riscv64 at -O0

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri Dec 1 11:46:33 GMT 2023


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.


More information about the Gcc-bugs mailing list