aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2013-09-20 21:04:09 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2013-09-20 21:04:09 +0000
commit950e6107f0241343dec402a6c80f3a28db6a6242 (patch)
tree154b18d2738785309be0fc42e1f93a3baaccb69d /gcc
parent7691132c9150044474afd3634f69a48bd558ea42 (diff)
downloadgcc-950e6107f0241343dec402a6c80f3a28db6a6242.zip
gcc-950e6107f0241343dec402a6c80f3a28db6a6242.tar.gz
gcc-950e6107f0241343dec402a6c80f3a28db6a6242.tar.bz2
re PR c++/58481 (Internal compiler error when passing argument packs to base class method inside a lambda)
/cp 2013-09-20 Paolo Carlini <paolo.carlini@oracle.com> PR c++/58481 * pt.c (tsubst_copy): Use current_nonlambda_class_type to call tsubst_baselink. /testsuite 2013-09-20 Paolo Carlini <paolo.carlini@oracle.com> PR c++/58481 * g++.dg/cpp0x/lambda/lambda-this17.C: New. From-SVN: r202797
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/pt.c3
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this17.C21
4 files changed, 34 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 5ee1f91..a542ab1 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2013-09-20 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/58481
+ * pt.c (tsubst_copy): Use current_nonlambda_class_type to
+ call tsubst_baselink.
+
2013-09-18 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/58457
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index e0b7110..b330b78 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -12434,7 +12434,8 @@ tsubst_copy (tree t, tree args, tsubst_flags_t complain, tree in_decl)
return t;
case BASELINK:
- return tsubst_baselink (t, current_class_type, args, complain, in_decl);
+ return tsubst_baselink (t, current_nonlambda_class_type (),
+ args, complain, in_decl);
case TEMPLATE_DECL:
if (DECL_TEMPLATE_TEMPLATE_PARM_P (t))
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index cef626a..2fc781a 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2013-09-20 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/58481
+ * g++.dg/cpp0x/lambda/lambda-this17.C: New.
+
2013-09-20 Jan-Benedict Glaw <jbglaw@lug-owl.de>
PR target/56875
diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this17.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this17.C
new file mode 100644
index 0000000..2386e6b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this17.C
@@ -0,0 +1,21 @@
+// PR c++/58481
+// { dg-require-effective-target c++11 }
+
+struct Test {
+ template<typename... Args> inline void triggerTest (Args&&... fargs) { }
+};
+
+struct TestPickled : Test {
+ template<typename... Args> void triggerTest (Args&&... fargs) {
+ [=](Args... as) {
+ Test::triggerTest (as...);
+ } ();
+ }
+};
+
+int main()
+{
+ TestPickled test;
+ test.triggerTest ();
+ return 0;
+}