summaryrefslogtreecommitdiff
path: root/gcc/cp/pt.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/cp/pt.c')
-rw-r--r--gcc/cp/pt.c19
1 files changed, 8 insertions, 11 deletions
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index e2ffe7314c4..3847a1d6154 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -12464,6 +12464,7 @@ tsubst_copy (tree t, tree args, tsubst_flags_t complain, tree in_decl)
case COND_EXPR:
case MODOP_EXPR:
case PSEUDO_DTOR_EXPR:
+ case VEC_PERM_EXPR:
{
r = build_nt
(code, tsubst_copy (TREE_OPERAND (t, 0), args, complain, in_decl),
@@ -13761,9 +13762,6 @@ tsubst_copy_and_build (tree t,
start_index = RECUR (ARRAY_NOTATION_START (t));
length = RECUR (ARRAY_NOTATION_LENGTH (t));
stride = RECUR (ARRAY_NOTATION_STRIDE (t));
- if (!cilkplus_an_triplet_types_ok_p (loc, start_index, length, stride,
- TREE_TYPE (op1)))
- RETURN (error_mark_node);
RETURN (build_array_notation_ref (EXPR_LOCATION (t), op1, start_index,
length, stride, TREE_TYPE (op1)));
}
@@ -14628,6 +14626,13 @@ tsubst_copy_and_build (tree t,
case PAREN_EXPR:
RETURN (finish_parenthesized_expr (RECUR (TREE_OPERAND (t, 0))));
+ case VEC_PERM_EXPR:
+ RETURN (build_x_vec_perm_expr (input_location,
+ RECUR (TREE_OPERAND (t, 0)),
+ RECUR (TREE_OPERAND (t, 1)),
+ RECUR (TREE_OPERAND (t, 2)),
+ complain));
+
default:
/* Handle Objective-C++ constructs, if appropriate. */
{
@@ -15739,9 +15744,6 @@ type_unification_real (tree tparms,
arg = args[ia];
++ia;
- if (flag_enable_cilkplus && TREE_CODE (arg) == ARRAY_NOTATION_REF)
- return 1;
-
if (unify_one_argument (tparms, targs, parm, arg, subr, strict,
flags, explain_p))
return 1;
@@ -19162,11 +19164,6 @@ instantiate_decl (tree d, int defer_ok,
pointer_map_destroy (local_specializations);
local_specializations = saved_local_specializations;
- /* We expand all the array notation expressions here. */
- if (flag_enable_cilkplus
- && contains_array_notation_expr (DECL_SAVED_TREE (d)))
- DECL_SAVED_TREE (d) = expand_array_notation_exprs (DECL_SAVED_TREE (d));
-
/* Finish the function. */
d = finish_function (0);
expand_or_defer_fn (d);