http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57509
Marc Glisse <glisse at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2013-06-08 Ever confirmed|0 |1 --- Comment #2 from Marc Glisse <glisse at gcc dot gnu.org> --- (In reply to Paolo Carlini from comment #1) > Maybe Marc is interested in this. ChangeLog says this is probably my fault... c_build_vec_perm_expr is missing some code like we can find in build_x_unary_op for instance: if (processing_template_decl) { if (type_dependent_expression_p (xarg)) return build_min_nt_loc (loc, code, xarg, NULL_TREE); xarg = build_non_dependent_expr (xarg); } RID_BUILTIN_SHUFFLE is handled very early in parser.c which directly calls c_build_vec_perm_expr. I guess we could use build_min_nt(VEC_PERM_EXPR,...) to store the template version, and make sure that c_build_vec_perm_expr is called once the types are instantiated (in tsubst_copy(_and_build)?).