------- Comment #3 from rguenth at gcc dot gnu dot org 2008-01-21 13:42 -------
Confirmed. In the latter case we const-propped the initializer into the
V_C_E:
VIEW_CONVERT_EXPR<vector signed char>({(unsigned int) &g[16]})
which is of course neither CONSTANT_CLASS_P nor a gimple lvalue (but it is
is_gimple_min_invariant, which is why we propagate it in the first place):
/* Vector constant constructors are gimple invariant. */
case CONSTRUCTOR:
if (TREE_TYPE (t) && TREE_CODE (TREE_TYPE (t)) == VECTOR_TYPE)
return TREE_CONSTANT (t);
else
return false;
The point is, that we do allow V_C_E expressions on rvalues, so the
verification is simply bogus.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34856