On Wed, 26 Jun 2013, Jason Merrill wrote: > On 06/09/2013 07:09 AM, Marc Glisse wrote: >> + arg0 = build_non_dependent_expr (arg0); >> + arg1 = build_non_dependent_expr (arg1); >> + arg2 = build_non_dependent_expr (arg2); >> + } >> + return c_build_vec_perm_expr (loc, arg0, arg1, arg2, complain & >> tf_error); > > This is wrong; the places in the compiler that currently use > build_non_dependent_expr only use the result temporarily for determining the > type of the expression, but then use the original arguments for building the > return value. Oups, you are right, my copy-paste was incomplete. Attached is a version (same ChangeLog) that uses build_min_non_dep to fix it, as in the various build_x_* functions. Is it the right way? (it passes bootstrap+testsuite, but then so did the previous patch) I assume I can't call directly c_build_vec_perm_expr on the original arguments without build_non_dependent_expr? By the way, should I rename cp_build_vec_perm_expr as build_x_vec_perm_expr, since most of its code is copied from build_x_binary_op and not cp_build_binary_op? -- Marc Glisse