aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2018-02-15 18:05:40 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2018-02-15 18:05:40 +0000
commit4779063140d6dc06de57d489923c91df7513f374 (patch)
tree94f235097de8e000d7242084733fddf09bb25f14
parent60887f8c2df851fd14988578dfe23126e2e8b9b5 (diff)
downloadgcc-4779063140d6dc06de57d489923c91df7513f374.zip
gcc-4779063140d6dc06de57d489923c91df7513f374.tar.gz
gcc-4779063140d6dc06de57d489923c91df7513f374.tar.bz2
re PR c++/84330 ([concepts] ICE with broken constraint)
/cp 2018-02-15 Paolo Carlini <paolo.carlini@oracle.com> PR c++/84330 * constraint.cc (tsubst_constraint_info): Handle an error_mark_node as first argument. /testsuite 2018-02-15 Paolo Carlini <paolo.carlini@oracle.com> PR c++/84330 * g++.dg/concepts/pr84330.C: New. From-SVN: r257698
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/constraint.cc2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/concepts/pr84330.C12
4 files changed, 24 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 6c95dfe..f7fd4e3 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2018-02-15 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/84330
+ * constraint.cc (tsubst_constraint_info): Handle an error_mark_node
+ as first argument.
+
2018-02-14 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/84350
diff --git a/gcc/cp/constraint.cc b/gcc/cp/constraint.cc
index 622c9fe..37eded1 100644
--- a/gcc/cp/constraint.cc
+++ b/gcc/cp/constraint.cc
@@ -1918,7 +1918,7 @@ tsubst_constraint_info (tree t, tree args,
tree
tsubst_constraint (tree t, tree args, tsubst_flags_t complain, tree in_decl)
{
- if (t == NULL_TREE)
+ if (t == NULL_TREE || t == error_mark_node)
return t;
switch (TREE_CODE (t))
{
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 3d6da2a..91e14ce 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2018-02-15 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/84330
+ * g++.dg/concepts/pr84330.C: New.
+
2018-02-15 Tom de Vries <tom@codesourcery.com>
* gcc.dg/Wstringop-overflow-3.c: Require effective target alloca.
diff --git a/gcc/testsuite/g++.dg/concepts/pr84330.C b/gcc/testsuite/g++.dg/concepts/pr84330.C
new file mode 100644
index 0000000..975ee89
--- /dev/null
+++ b/gcc/testsuite/g++.dg/concepts/pr84330.C
@@ -0,0 +1,12 @@
+// PR c++/84330
+// { dg-options "-fconcepts" }
+
+struct A
+{
+ template<typename T> requires sizeof(T) >> 0 void foo(T); // { dg-error "predicate constraint" }
+
+ void bar()
+ {
+ foo(0); // { dg-error "no matching" }
+ }
+};