diff options
author | Paolo Carlini <paolo.carlini@oracle.com> | 2013-09-20 21:04:09 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2013-09-20 21:04:09 +0000 |
commit | 950e6107f0241343dec402a6c80f3a28db6a6242 (patch) | |
tree | 154b18d2738785309be0fc42e1f93a3baaccb69d /gcc | |
parent | 7691132c9150044474afd3634f69a48bd558ea42 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/pt.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this17.C | 21 |
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; +} |