aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2018-04-18 08:03:45 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2018-04-18 08:03:45 +0000
commitc18a88c50a0d65cb230644755a9d8bc25a34810e (patch)
treeff5bed45b74dff0de0a0efd9c52ebf00f4ceccf9
parent19ddb884ebb2f39535d8e527c02c576fb768333b (diff)
downloadgcc-c18a88c50a0d65cb230644755a9d8bc25a34810e.zip
gcc-c18a88c50a0d65cb230644755a9d8bc25a34810e.tar.gz
gcc-c18a88c50a0d65cb230644755a9d8bc25a34810e.tar.bz2
re PR c++/84630 (ICE: TYPE_NAME() used on error_mark_node in tsubst_lambda_expr, at cp/pt.c:17141)
/cp 2018-04-18 Paolo Carlini <paolo.carlini@oracle.com> PR c++/84630 * pt.c (tsubst_lambda_expr): Check begin_lambda_type return value for error_mark_node. /testsuite 2018-04-18 Paolo Carlini <paolo.carlini@oracle.com> PR c++/84630 * g++.dg/cpp0x/pr84630.C: New. From-SVN: r259460
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/pt.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/pr84630.C7
4 files changed, 20 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index c80b281..7cd714b 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2018-04-18 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/84630
+ * pt.c (tsubst_lambda_expr): Check begin_lambda_type return value
+ for error_mark_node.
+
2018-04-18 Jakub Jelinek <jakub@redhat.com>
PR c++/84463
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 79563df..5d70608 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -17570,6 +17570,8 @@ tsubst_lambda_expr (tree t, tree args, tsubst_flags_t complain, tree in_decl)
}
tree type = begin_lambda_type (r);
+ if (type == error_mark_node)
+ return error_mark_node;
/* Do this again now that LAMBDA_EXPR_EXTRA_SCOPE is set. */
determine_visibility (TYPE_NAME (type));
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 658b52d..8e2a015 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2018-04-18 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/84630
+ * g++.dg/cpp0x/pr84630.C: New.
+
2018-04-18 Jakub Jelinek <jakub@redhat.com>
PR c++/84463
diff --git a/gcc/testsuite/g++.dg/cpp0x/pr84630.C b/gcc/testsuite/g++.dg/cpp0x/pr84630.C
new file mode 100644
index 0000000..3c2b4e4
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/pr84630.C
@@ -0,0 +1,7 @@
+// PR c++/84630
+// { dg-do compile { target c++11 } }
+
+template <typename...> struct c {
+ template <int> __attribute__((noinline([] {}))) int b(); // { dg-error "wrong number of arguments" }
+};
+c<> a;