http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55573
--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> 2012-12-03 13:06:14 UTC --- --- semantics.c.jj1 2012-11-23 00:14:40.000000000 +0100 +++ semantics.c 2012-12-03 14:02:54.407690163 +0100 @@ -6451,6 +6451,14 @@ adjust_temp_type (tree type, tree temp) /* Avoid wrapping an aggregate value in a NOP_EXPR. */ if (TREE_CODE (temp) == CONSTRUCTOR) return build_constructor (type, CONSTRUCTOR_ELTS (temp)); + if (TREE_CODE (temp) == VECTOR_CST) + { + int i, count = TYPE_VECTOR_SUBPARTS (type); + tree *vec = XALLOCAVEC (tree, count); + for (i = 0; i < count; i++) + vec[i] = cp_fold_convert (TREE_TYPE (type), VECTOR_CST_ELT (temp, i)); + return build_vector (type, vec); + } gcc_assert (SCALAR_TYPE_P (type)); return cp_fold_convert (type, temp); } fixes this, type_traits doesn't seem to be needed in the testcase fortunately.