https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82084
--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> --- Hmm, we could simply reject STRING_CSTs in vectorizable_store: Index: gcc/tree-vect-stmts.c =================================================================== --- gcc/tree-vect-stmts.c (revision 251559) +++ gcc/tree-vect-stmts.c (working copy) @@ -5733,6 +5733,16 @@ vectorizable_store (gimple *stmt, gimple op = gimple_assign_rhs1 (stmt); + /* In the case this is a store from a STRING_CST make sure + native_encode_expr can handle it. */ + if (TREE_CODE (op) == STRING_CST + && (TREE_CODE (TREE_TYPE (op)) != ARRAY_TYPE + || TREE_CODE (TREE_TYPE (TREE_TYPE (op))) != INTEGER_TYPE + || (GET_MODE_BITSIZE + (SCALAR_INT_TYPE_MODE (TREE_TYPE (TREE_TYPE (op)))) + != BITS_PER_UNIT))) + return false; + if (!vect_is_simple_use (op, vinfo, &def_stmt, &dt, &rhs_vectype)) { if (dump_enabled_p ()) probably best for branches.