https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110495
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- OK, that's a reasonable stance give we have VL vectors. I'll note that previously build_vector looked like the following, so TREE_OVERFLOW was set according to the encoded elements. Now that's no longer the case. I'll post a patch for comments. /* Return a new VECTOR_CST node whose type is TYPE and whose values are in a list pointed to by VALS. */ tree build_vector_stat (tree type, tree *vals MEM_STAT_DECL) { int over = 0; unsigned cnt = 0; tree v = make_vector (TYPE_VECTOR_SUBPARTS (type)); TREE_TYPE (v) = type; /* Iterate through elements and check for overflow. */ for (cnt = 0; cnt < TYPE_VECTOR_SUBPARTS (type); ++cnt) { tree value = vals[cnt]; VECTOR_CST_ELT (v, cnt) = value; /* Don't crash if we get an address constant. */ if (!CONSTANT_CLASS_P (value)) continue; over |= TREE_OVERFLOW (value); } TREE_OVERFLOW (v) = over; return v;