(TREE_CODE (PACK_EXPANSION_CHECK (NODE)) == TYPE_PACK_EXPANSION \
? TREE_TYPE (NODE) : TREE_OPERAND (NODE, 0))
-/* Sets the type or expression pattern for a TYPE_PACK_EXPANSION or
- EXPR_PACK_EXPANSION. */
-#define SET_PACK_EXPANSION_PATTERN(NODE,VALUE) \
- if (TREE_CODE (PACK_EXPANSION_CHECK (NODE)) == TYPE_PACK_EXPANSION) \
- TREE_TYPE (NODE) = VALUE; \
- else \
- TREE_OPERAND (NODE, 0) = VALUE
-
/* The list of parameter packs used in the PACK_EXPANSION_* node. The
TREE_VALUE of each TREE_LIST contains the parameter packs. */
#define PACK_EXPANSION_PARAMETER_PACKS(NODE) \
(TREE_CODE (ARGUMENT_PACK_CHECK (NODE)) == TYPE_ARGUMENT_PACK \
? TREE_TYPE (NODE) : TREE_OPERAND (NODE, 0))
-/* Set the arguments stored in an argument pack. VALUE must be a
- TREE_VEC. */
-#define SET_ARGUMENT_PACK_ARGS(NODE,VALUE) \
- if (TREE_CODE (ARGUMENT_PACK_CHECK (NODE)) == TYPE_ARGUMENT_PACK) \
- TREE_TYPE (NODE) = VALUE; \
- else \
- TREE_OPERAND (NODE, 0) = VALUE
-
/* Whether the argument pack is "incomplete", meaning that more
arguments can still be deduced. Incomplete argument packs are only
used when the user has provided an explicit template argument list
/* Create the pack expansion type for the base type. */
purpose = cxx_make_type (TYPE_PACK_EXPANSION);
- SET_PACK_EXPANSION_PATTERN (purpose, TREE_PURPOSE (arg));
+ PACK_EXPANSION_PATTERN (purpose) = TREE_PURPOSE (arg);
PACK_EXPANSION_PARAMETER_PACKS (purpose) = parameter_packs;
PACK_EXPANSION_LOCAL_P (purpose) = at_function_scope_p ();
result = for_types
? cxx_make_type (TYPE_PACK_EXPANSION)
: make_node (EXPR_PACK_EXPANSION);
- SET_PACK_EXPANSION_PATTERN (result, arg);
+ PACK_EXPANSION_PATTERN (result) = arg;
if (TREE_CODE (result) == EXPR_PACK_EXPANSION)
{
/* Propagate type and const-expression information. */
TREE_VEC_ELT (vec, 0) = make_pack_expansion (t);
t = cxx_make_type (TYPE_ARGUMENT_PACK);
- SET_ARGUMENT_PACK_ARGS (t, vec);
+ ARGUMENT_PACK_ARGS (t) = vec;
}
}
else
TREE_VEC_ELT (vec, 0) = make_pack_expansion (t);
t = make_node (NONTYPE_ARGUMENT_PACK);
- SET_ARGUMENT_PACK_ARGS (t, vec);
+ ARGUMENT_PACK_ARGS (t) = vec;
}
else
t = convert_from_reference (t);
_DECL as a use rather than a declaration. */
tree decl = TREE_VALUE (parm);
tree exp = cxx_make_type (TYPE_PACK_EXPANSION);
- SET_PACK_EXPANSION_PATTERN (exp, decl);
+ PACK_EXPANSION_PATTERN (exp) = decl;
PACK_EXPANSION_PARAMETER_PACKS (exp) = packs;
SET_TYPE_STRUCTURAL_EQUALITY (exp);
TREE_CONSTANT (argument_pack) = 1;
}
- SET_ARGUMENT_PACK_ARGS (argument_pack, packed_args);
+ ARGUMENT_PACK_ARGS (argument_pack) = packed_args;
if (CHECKING_P)
SET_NON_DEFAULT_TEMPLATE_ARGS_COUNT (packed_args,
TREE_VEC_LENGTH (packed_args));
}
/* Build the argument packs. */
- SET_ARGUMENT_PACK_ARGS (argpack, parmvec);
+ ARGUMENT_PACK_ARGS (argpack) = parmvec;
}
*spec_p = spec_parm;
{
spec = copy_node (spec);
args = copy_node (args);
- SET_ARGUMENT_PACK_ARGS (spec, args);
+ ARGUMENT_PACK_ARGS (spec) = args;
register_local_specialization (spec, *tp);
}
TREE_VEC_ELT (args, i) = carg;
pack = make_node (NONTYPE_ARGUMENT_PACK);
TREE_CONSTANT (pack) = 1;
}
- SET_ARGUMENT_PACK_ARGS (pack, vec);
+ ARGUMENT_PACK_ARGS (pack) = vec;
return pack;
}
TREE_CONSTANT (new_arg) = TREE_CONSTANT (orig_arg);
}
- SET_ARGUMENT_PACK_ARGS (new_arg, pack_args);
+ ARGUMENT_PACK_ARGS (new_arg) = pack_args;
}
return new_arg;
len = TREE_VEC_LENGTH (fpack);
vec = make_tree_vec (len);
r = make_node (NONTYPE_ARGUMENT_PACK);
- SET_ARGUMENT_PACK_ARGS (r, vec);
+ ARGUMENT_PACK_ARGS (r) = vec;
}
for (int i = 0; i < len; ++i)
{
else
arg = cxx_make_type (TYPE_ARGUMENT_PACK);
- SET_ARGUMENT_PACK_ARGS (arg, make_tree_vec (0));
+ ARGUMENT_PACK_ARGS (arg) = make_tree_vec (0);
TREE_VEC_ELT (targs, i) = arg;
continue;
else
result = cxx_make_type (TYPE_ARGUMENT_PACK);
- SET_ARGUMENT_PACK_ARGS (result, new_args);
+ ARGUMENT_PACK_ARGS (result) = new_args;
/* Note the deduced argument packs for this parameter
pack. */
now we have a complete set of arguments. */
tree explicit_args = ARGUMENT_PACK_EXPLICIT_ARGS (old_pack);
- SET_ARGUMENT_PACK_ARGS (old_pack, new_args);
+ ARGUMENT_PACK_ARGS (old_pack) = new_args;
ARGUMENT_PACK_INCOMPLETE_P (old_pack) = 1;
ARGUMENT_PACK_EXPLICIT_ARGS (old_pack) = explicit_args;
}
else
{
value = expr;
- SET_PACK_EXPANSION_PATTERN (value, TREE_VALUE (arg));
+ PACK_EXPANSION_PATTERN (value) = TREE_VALUE (arg);
}
expanded_exprs
= tsubst_pack_expansion (value, argvec,