aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAdam Butcher <adam@jessamine.co.uk>2014-01-06 18:22:19 +0000
committerAdam Butcher <abutcher@gcc.gnu.org>2014-01-06 18:22:19 +0000
commit2c8c627389238b024de53401676139ffc6010b4e (patch)
treea86bf4b8a0d5e365b5b59510260bc02e5aebc430 /gcc
parent0225cc0f1fe37a4aa0e67c2ca1806a082e8953cd (diff)
downloadgcc-2c8c627389238b024de53401676139ffc6010b4e.zip
gcc-2c8c627389238b024de53401676139ffc6010b4e.tar.gz
gcc-2c8c627389238b024de53401676139ffc6010b4e.tar.bz2
re PR c++/59635 ([c++1y] ICE with auto and ... as lambda parameter)
Fix PR c++/59635 PR c++/59635 * cp/lambda.c (maybe_add_lambda_conv_op): Handle marking conversion function as unimplemented for generic lambdas with varargs. * g++.dg/cpp1y/pr59635.C: New testcase. From-SVN: r206368
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/lambda.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/cpp1y/pr59635.C9
4 files changed, 21 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 1f5ddb5..3bc68fc 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2014-01-06 Adam Butcher <adam@jessamine.co.uk>
+
+ PR c++/59635
+ * cp/lambda.c (maybe_add_lambda_conv_op): Handle marking conversion
+ function as unimplemented for generic lambdas with varargs.
+
2014-01-03 Marc Glisse <marc.glisse@inria.fr>
PR c++/58950
diff --git a/gcc/cp/lambda.c b/gcc/cp/lambda.c
index 1855716..8bb820d 100644
--- a/gcc/cp/lambda.c
+++ b/gcc/cp/lambda.c
@@ -970,7 +970,7 @@ maybe_add_lambda_conv_op (tree type)
the conversion op is used. */
if (varargs_function_p (callop))
{
- DECL_DELETED_FN (fn) = 1;
+ DECL_DELETED_FN (STRIP_TEMPLATE (fn)) = 1;
return;
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 7b7e558..f0c4804 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2014-01-06 Adam Butcher <adam@jessamine.co.uk>
+
+ PR c++/59635
+ * g++.dg/cpp1y/pr59635.C: New testcase.
+
2014-01-06 Martin Jambor <mjambor@suse.cz>
PR ipa/59008
diff --git a/gcc/testsuite/g++.dg/cpp1y/pr59635.C b/gcc/testsuite/g++.dg/cpp1y/pr59635.C
new file mode 100644
index 0000000..0f06cc8
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp1y/pr59635.C
@@ -0,0 +1,9 @@
+// { dg-do compile }
+// { dg-options "-std=c++1y" }
+
+// PR c++/59635
+
+auto f = [] (auto, ...) { return 0; };
+
+int (*p) (int, ...) = f; // { dg-message "unimplemented" }
+