http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53094
--- Comment #13 from Marc Glisse <glisse at gcc dot gnu.org> 2012-12-03 22:30:53 UTC --- typedef float __attribute__( ( vector_size( 4*sizeof(float) ) ) ) V4; constexpr V4 v = {1,1,1,0}; constexpr V4 r = v[0]+v; is enough to reproduce your latest ICE. cxx_eval_bare_aggregate doesn't check that ce->index is not NULL for the constructor elements, and tests its TREE_CODE, which segfaults. Easiest workaround is to test if ce->index is zero and in that case skip the COMPONENT_REF and NOP_EXPR tests. Which brings you back to a regular "not a constant expression" error message.