[2/2] c++: Remove SET_PACK_EXPANSION_PATTERN / SET_ARGUMENT_PACK_ARGS
Commit Message
Unlike in C, in C++ the conditional operator yields an lvalue if both
branches are lvalues, so we can just assign to PACK_EXPANSION_PATTERN
and ARGUMENT_PACK_ARGS directly.
Bootstrapped and regtested on x86_64-pc-linux-gnu, does this look OK for
trunk?
gcc/cp/ChangeLog:
* coroutines.cc (instantiate_coro_traits): Adjust accordingly.
* cp-tree.h (SET_PACK_EXPANSION_PATTERN): Remove.
(SET_ARGUMENT_PACK_ARGS): Remove.
* module.cc (trees_in::tree_node): Adjust accordingly.
* parser.cc (make_char_string_pack): Likewise.
(make_string_pack): Likewise.
* pt.cc (make_pack_expansion): Likewise.
(template_parm_to_arg): Likewise.
(coerce_template_parameter_pack): Likewise.
(extract_fnparm_pack): Likewise.
(extract_locals_r): Likewise.
(make_argument_pack): Likewise.
(tsubst_argument_pack): Likewise.
(lookup_init_capture_pack): Likewise.
(type_unification_real): Likewise.
(unify_pack_expansion): Likewise.
(tsubst_initializer_list): Likewise.
---
gcc/cp/coroutines.cc | 2 +-
gcc/cp/cp-tree.h | 16 ----------------
gcc/cp/module.cc | 4 ++--
gcc/cp/parser.cc | 4 ++--
gcc/cp/pt.cc | 30 +++++++++++++++---------------
5 files changed, 20 insertions(+), 36 deletions(-)
Comments
On 5/10/22 09:40, Patrick Palka wrote:
> Unlike in C, in C++ the conditional operator yields an lvalue if both
> branches are lvalues, so we can just assign to PACK_EXPANSION_PATTERN
> and ARGUMENT_PACK_ARGS directly.
>
> Bootstrapped and regtested on x86_64-pc-linux-gnu, does this look OK for
> trunk?
OK.
> gcc/cp/ChangeLog:
>
> * coroutines.cc (instantiate_coro_traits): Adjust accordingly.
> * cp-tree.h (SET_PACK_EXPANSION_PATTERN): Remove.
> (SET_ARGUMENT_PACK_ARGS): Remove.
> * module.cc (trees_in::tree_node): Adjust accordingly.
> * parser.cc (make_char_string_pack): Likewise.
> (make_string_pack): Likewise.
> * pt.cc (make_pack_expansion): Likewise.
> (template_parm_to_arg): Likewise.
> (coerce_template_parameter_pack): Likewise.
> (extract_fnparm_pack): Likewise.
> (extract_locals_r): Likewise.
> (make_argument_pack): Likewise.
> (tsubst_argument_pack): Likewise.
> (lookup_init_capture_pack): Likewise.
> (type_unification_real): Likewise.
> (unify_pack_expansion): Likewise.
> (tsubst_initializer_list): Likewise.
> ---
> gcc/cp/coroutines.cc | 2 +-
> gcc/cp/cp-tree.h | 16 ----------------
> gcc/cp/module.cc | 4 ++--
> gcc/cp/parser.cc | 4 ++--
> gcc/cp/pt.cc | 30 +++++++++++++++---------------
> 5 files changed, 20 insertions(+), 36 deletions(-)
>
> diff --git a/gcc/cp/coroutines.cc b/gcc/cp/coroutines.cc
> index 1d886b31c77..edb3b706ddc 100644
> --- a/gcc/cp/coroutines.cc
> +++ b/gcc/cp/coroutines.cc
> @@ -344,7 +344,7 @@ instantiate_coro_traits (tree fndecl, location_t kw)
> }
>
> tree argtypepack = cxx_make_type (TYPE_ARGUMENT_PACK);
> - SET_ARGUMENT_PACK_ARGS (argtypepack, argtypes);
> + ARGUMENT_PACK_ARGS (argtypepack) = argtypes;
>
> tree targ = make_tree_vec (2);
> TREE_VEC_ELT (targ, 0) = TREE_TYPE (functyp);
> diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h
> index 29fc0e5f829..cfda8337ad8 100644
> --- a/gcc/cp/cp-tree.h
> +++ b/gcc/cp/cp-tree.h
> @@ -3903,14 +3903,6 @@ struct GTY(()) lang_decl {
> (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) \
> @@ -3963,14 +3955,6 @@ struct GTY(()) lang_decl {
> (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
> diff --git a/gcc/cp/module.cc b/gcc/cp/module.cc
> index bd4771bef72..27b8f64ce75 100644
> --- a/gcc/cp/module.cc
> +++ b/gcc/cp/module.cc
> @@ -9338,7 +9338,7 @@ trees_in::tree_node (bool is_use)
> if (!get_overrun ())
> {
> tree pack = cxx_make_type (TYPE_ARGUMENT_PACK);
> - SET_ARGUMENT_PACK_ARGS (pack, res);
> + ARGUMENT_PACK_ARGS (pack) = res;
> res = pack;
> }
> break;
> @@ -9351,7 +9351,7 @@ trees_in::tree_node (bool is_use)
> {
> tree expn = cxx_make_type (TYPE_PACK_EXPANSION);
> SET_TYPE_STRUCTURAL_EQUALITY (expn);
> - SET_PACK_EXPANSION_PATTERN (expn, res);
> + PACK_EXPANSION_PATTERN (expn) = res;
> PACK_EXPANSION_PARAMETER_PACKS (expn) = param_packs;
> PACK_EXPANSION_LOCAL_P (expn) = local;
> res = expn;
> diff --git a/gcc/cp/parser.cc b/gcc/cp/parser.cc
> index 5071c030f53..4ed9feaa427 100644
> --- a/gcc/cp/parser.cc
> +++ b/gcc/cp/parser.cc
> @@ -4649,7 +4649,7 @@ make_char_string_pack (tree value)
> }
>
> /* Build the argument packs. */
> - SET_ARGUMENT_PACK_ARGS (argpack, charvec);
> + ARGUMENT_PACK_ARGS (argpack) = charvec;
>
> TREE_VEC_ELT (argvec, 0) = argpack;
>
> @@ -4684,7 +4684,7 @@ make_string_pack (tree value)
> double_int::from_buffer (str + i * sz, sz));
>
> /* Build the argument packs. */
> - SET_ARGUMENT_PACK_ARGS (argpack, charvec);
> + ARGUMENT_PACK_ARGS (argpack) = charvec;
>
> TREE_VEC_ELT (argvec, 1) = argpack;
>
> diff --git a/gcc/cp/pt.cc b/gcc/cp/pt.cc
> index 6e666c2cde3..9932d861af6 100644
> --- a/gcc/cp/pt.cc
> +++ b/gcc/cp/pt.cc
> @@ -4219,7 +4219,7 @@ make_pack_expansion (tree arg, tsubst_flags_t complain)
>
> /* 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 ();
>
> @@ -4237,7 +4237,7 @@ make_pack_expansion (tree arg, tsubst_flags_t complain)
> 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. */
> @@ -4852,7 +4852,7 @@ template_parm_to_arg (tree t)
> 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
> @@ -4869,7 +4869,7 @@ template_parm_to_arg (tree t)
> 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);
> @@ -8718,7 +8718,7 @@ coerce_template_parameter_pack (tree parms,
> _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);
>
> @@ -8818,7 +8818,7 @@ coerce_template_parameter_pack (tree parms,
> 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));
> @@ -12460,7 +12460,7 @@ extract_fnparm_pack (tree tmpl_parm, tree *spec_p)
> }
>
> /* Build the argument packs. */
> - SET_ARGUMENT_PACK_ARGS (argpack, parmvec);
> + ARGUMENT_PACK_ARGS (argpack) = parmvec;
> }
> *spec_p = spec_parm;
>
> @@ -13023,7 +13023,7 @@ extract_locals_r (tree *tp, int */*walk_subtrees*/, void *data_)
> {
> 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;
> @@ -13410,7 +13410,7 @@ make_argument_pack (tree vec)
> pack = make_node (NONTYPE_ARGUMENT_PACK);
> TREE_CONSTANT (pack) = 1;
> }
> - SET_ARGUMENT_PACK_ARGS (pack, vec);
> + ARGUMENT_PACK_ARGS (pack) = vec;
> return pack;
> }
>
> @@ -13463,7 +13463,7 @@ tsubst_argument_pack (tree orig_arg, tree args, tsubst_flags_t complain,
> 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;
> @@ -18442,7 +18442,7 @@ lookup_init_capture_pack (tree decl)
> 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)
> {
> @@ -22911,7 +22911,7 @@ type_unification_real (tree tparms,
> 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;
> @@ -23771,7 +23771,7 @@ unify_pack_expansion (tree tparms, tree targs, tree packed_parms,
> 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. */
> @@ -23785,7 +23785,7 @@ unify_pack_expansion (tree tparms, tree targs, tree packed_parms,
> 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;
> }
> @@ -26899,7 +26899,7 @@ tsubst_initializer_list (tree t, tree argvec)
> 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,
@@ -344,7 +344,7 @@ instantiate_coro_traits (tree fndecl, location_t kw)
}
tree argtypepack = cxx_make_type (TYPE_ARGUMENT_PACK);
- SET_ARGUMENT_PACK_ARGS (argtypepack, argtypes);
+ ARGUMENT_PACK_ARGS (argtypepack) = argtypes;
tree targ = make_tree_vec (2);
TREE_VEC_ELT (targ, 0) = TREE_TYPE (functyp);
@@ -3903,14 +3903,6 @@ struct GTY(()) lang_decl {
(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) \
@@ -3963,14 +3955,6 @@ struct GTY(()) lang_decl {
(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
@@ -9338,7 +9338,7 @@ trees_in::tree_node (bool is_use)
if (!get_overrun ())
{
tree pack = cxx_make_type (TYPE_ARGUMENT_PACK);
- SET_ARGUMENT_PACK_ARGS (pack, res);
+ ARGUMENT_PACK_ARGS (pack) = res;
res = pack;
}
break;
@@ -9351,7 +9351,7 @@ trees_in::tree_node (bool is_use)
{
tree expn = cxx_make_type (TYPE_PACK_EXPANSION);
SET_TYPE_STRUCTURAL_EQUALITY (expn);
- SET_PACK_EXPANSION_PATTERN (expn, res);
+ PACK_EXPANSION_PATTERN (expn) = res;
PACK_EXPANSION_PARAMETER_PACKS (expn) = param_packs;
PACK_EXPANSION_LOCAL_P (expn) = local;
res = expn;
@@ -4649,7 +4649,7 @@ make_char_string_pack (tree value)
}
/* Build the argument packs. */
- SET_ARGUMENT_PACK_ARGS (argpack, charvec);
+ ARGUMENT_PACK_ARGS (argpack) = charvec;
TREE_VEC_ELT (argvec, 0) = argpack;
@@ -4684,7 +4684,7 @@ make_string_pack (tree value)
double_int::from_buffer (str + i * sz, sz));
/* Build the argument packs. */
- SET_ARGUMENT_PACK_ARGS (argpack, charvec);
+ ARGUMENT_PACK_ARGS (argpack) = charvec;
TREE_VEC_ELT (argvec, 1) = argpack;
@@ -4219,7 +4219,7 @@ make_pack_expansion (tree arg, tsubst_flags_t complain)
/* 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 ();
@@ -4237,7 +4237,7 @@ make_pack_expansion (tree arg, tsubst_flags_t complain)
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. */
@@ -4852,7 +4852,7 @@ template_parm_to_arg (tree t)
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
@@ -4869,7 +4869,7 @@ template_parm_to_arg (tree t)
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);
@@ -8718,7 +8718,7 @@ coerce_template_parameter_pack (tree parms,
_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);
@@ -8818,7 +8818,7 @@ coerce_template_parameter_pack (tree parms,
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));
@@ -12460,7 +12460,7 @@ extract_fnparm_pack (tree tmpl_parm, tree *spec_p)
}
/* Build the argument packs. */
- SET_ARGUMENT_PACK_ARGS (argpack, parmvec);
+ ARGUMENT_PACK_ARGS (argpack) = parmvec;
}
*spec_p = spec_parm;
@@ -13023,7 +13023,7 @@ extract_locals_r (tree *tp, int */*walk_subtrees*/, void *data_)
{
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;
@@ -13410,7 +13410,7 @@ make_argument_pack (tree vec)
pack = make_node (NONTYPE_ARGUMENT_PACK);
TREE_CONSTANT (pack) = 1;
}
- SET_ARGUMENT_PACK_ARGS (pack, vec);
+ ARGUMENT_PACK_ARGS (pack) = vec;
return pack;
}
@@ -13463,7 +13463,7 @@ tsubst_argument_pack (tree orig_arg, tree args, tsubst_flags_t complain,
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;
@@ -18442,7 +18442,7 @@ lookup_init_capture_pack (tree decl)
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)
{
@@ -22911,7 +22911,7 @@ type_unification_real (tree tparms,
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;
@@ -23771,7 +23771,7 @@ unify_pack_expansion (tree tparms, tree targs, tree packed_parms,
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. */
@@ -23785,7 +23785,7 @@ unify_pack_expansion (tree tparms, tree targs, tree packed_parms,
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;
}
@@ -26899,7 +26899,7 @@ tsubst_initializer_list (tree t, tree argvec)
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,