[gcc(refs/users/rguenth/heads/slp-reorg)] c++: Fix template parm with dependent type in concepts.
Richard Biener
rguenth@gcc.gnu.org
Wed Mar 25 14:20:33 GMT 2020
https://gcc.gnu.org/g:5c1617418432466f3f91d282d356bdec91e9dbd2
commit 5c1617418432466f3f91d282d356bdec91e9dbd2
Author: Jason Merrill <jason@redhat.com>
Date: Tue Mar 24 18:25:17 2020 -0400
c++: Fix template parm with dependent type in concepts.
While looking at PR94186 I also noticed this regression; if a non-type
template parameter uses a type parameter in its type, we need to map both
template parameters.
gcc/cp/ChangeLog
2020-03-24 Jason Merrill <jason@redhat.com>
* pt.c (any_template_parm_r): Look into the type of a non-type
template parm.
Diff:
---
gcc/cp/ChangeLog | 5 +++++
gcc/cp/pt.c | 1 +
gcc/testsuite/g++.dg/cpp2a/concepts-nonbool2.C | 11 +++++++++++
3 files changed, 17 insertions(+)
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 7ae4128a3a8..a4b132d6961 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2020-03-24 Jason Merrill <jason@redhat.com>
+
+ * pt.c (any_template_parm_r): Look into the type of a non-type
+ template parm.
+
2020-03-24 Jason Merrill <jason@redhat.com>
* cp-tree.h (cp_expr): When constructing from an expr and a
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 03a8dfbd37c..3c96eeca191 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -10431,6 +10431,7 @@ any_template_parm_r (tree t, void *data)
WALK_SUBTREE (TREE_OPERAND (t, 1));
break;
+ case TEMPLATE_PARM_INDEX:
case PARM_DECL:
/* A parameter or constraint variable may also depend on a template
parameter without explicitly naming it. */
diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-nonbool2.C b/gcc/testsuite/g++.dg/cpp2a/concepts-nonbool2.C
new file mode 100644
index 00000000000..ebede46b368
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp2a/concepts-nonbool2.C
@@ -0,0 +1,11 @@
+// { dg-do compile { target concepts } }
+
+template<class X, X x>
+concept C = requires {
+ requires x; // { dg-error "bool" }
+ };
+
+int main() {
+ C<int, 0>;
+ return 0;
+}
More information about the Gcc-cvs
mailing list