Commit 098eae00 by Nathan Sidwell Committed by Nathan Sidwell

pt.c (tsubst <{NON,}TYPE_ARGUMENT_PACK>): Simplify control flow and avoid re-tsubsting type.

	* pt.c (tsubst <{NON,}TYPE_ARGUMENT_PACK>: Simplify control flow
	and avoid re-tsubsting type.

From-SVN: r243343
parent b3235e97
2016-12-07 Nathan Sidwell <nathan@acm.org>
* pt.c (tsubst <{NON,}TYPE_ARGUMENT_PACK>: Simplify control flow
and avoid re-tsubsting type.
* cp-tree.h (enum cp_tree_index): Add CPTI_AUTO_IDENTIFIER &
CPTI_DECLTYPE_AUTO_IDENTIFIER.
(auto_identifier, decltype_auto_identifier): New.
......
......@@ -13795,22 +13795,23 @@ tsubst (tree t, tree args, tsubst_flags_t complain, tree in_decl)
case TYPE_ARGUMENT_PACK:
case NONTYPE_ARGUMENT_PACK:
{
tree r = TYPE_P (t) ? cxx_make_type (code) : make_node (code);
tree packed_out =
tsubst_template_args (ARGUMENT_PACK_ARGS (t),
args,
complain,
in_decl);
SET_ARGUMENT_PACK_ARGS (r, packed_out);
/* For template nontype argument packs, also substitute into
the type. */
if (code == NONTYPE_ARGUMENT_PACK)
TREE_TYPE (r) = tsubst (TREE_TYPE (t), args, complain, in_decl);
return r;
tree r;
if (code == NONTYPE_ARGUMENT_PACK)
{
r = make_node (code);
/* Set the already-substituted type. */
TREE_TYPE (r) = type;
}
else
r = cxx_make_type (code);
tree pack_args = ARGUMENT_PACK_ARGS (t);
pack_args = tsubst_template_args (pack_args, args, complain, in_decl);
SET_ARGUMENT_PACK_ARGS (r, pack_args);
return r;
}
break;
case VOID_CST:
case INTEGER_CST:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment