aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp
diff options
context:
space:
mode:
authorPatrick Palka <ppalka@redhat.com>2023-07-19 16:11:38 -0400
committerPatrick Palka <ppalka@redhat.com>2023-07-19 16:11:38 -0400
commit74477d25a2c9e6790f3bc1e8b908fc32013614ca (patch)
tree78cb111fc63ab1275d2115040b25a8b936714359 /gcc/cp
parent92d1425ca7804000cfe8aa635cf363a87d362d75 (diff)
downloadgcc-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.cc4
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;