diff options
author | Patrick Palka <ppalka@redhat.com> | 2023-07-19 16:11:38 -0400 |
---|---|---|
committer | Patrick Palka <ppalka@redhat.com> | 2023-07-19 16:11:38 -0400 |
commit | 74477d25a2c9e6790f3bc1e8b908fc32013614ca (patch) | |
tree | 78cb111fc63ab1275d2115040b25a8b936714359 /gcc/cp | |
parent | 92d1425ca7804000cfe8aa635cf363a87d362d75 (diff) | |
download | gcc-74477d25a2c9e6790f3bc1e8b908fc32013614ca.zip gcc-74477d25a2c9e6790f3bc1e8b908fc32013614ca.tar.gz gcc-74477d25a2c9e6790f3bc1e8b908fc32013614ca.tar.bz2 |
c++: deducing empty type vs non-type argument pack
Within a template parameter list, a non-type template parameter pack is
represented as a PARM_DECL. But in a couple of spots where we need to
deduce and create an empty argument pack, we test for TEMPLATE_PARM_INDEX
(within a template parameter list) instead of for PARM_DECL, and so we
end up creating a TYPE_ARGUMENT_PACK even in the non-type case. This
patch fixes this (seemingly harmless) bug.
gcc/cp/ChangeLog:
* pt.cc (type_unification_real): Test for PARM_DECL instead
of TEMPLATE_PARM_INDEX to distinguish a type vs non-type
template parameter pack.
(type_targs_deducible_from): Likewise.
Diffstat (limited to 'gcc/cp')
-rw-r--r-- | gcc/cp/pt.cc | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/gcc/cp/pt.cc b/gcc/cp/pt.cc index d882e9d..21b08a6 100644 --- a/gcc/cp/pt.cc +++ b/gcc/cp/pt.cc @@ -23367,7 +23367,7 @@ type_unification_real (tree tparms, { tree arg; - if (TREE_CODE (tparm) == TEMPLATE_PARM_INDEX) + if (TREE_CODE (tparm) == PARM_DECL) { arg = make_node (NONTYPE_ARGUMENT_PACK); TREE_CONSTANT (arg) = 1; @@ -30398,7 +30398,7 @@ type_targs_deducible_from (tree tmpl, tree type) if (template_parameter_pack_p (tparm)) { tree arg; - if (TREE_CODE (tparm) == TEMPLATE_PARM_INDEX) + if (TREE_CODE (tparm) == PARM_DECL) { arg = make_node (NONTYPE_ARGUMENT_PACK); TREE_CONSTANT (arg) = 1; |