re PR c++/54538 (Getting assembler messages when compiling)
PR c++/54538 PR c++/53783 * pt.c (tsubst_copy_and_build) [LAMBDA_EXPR]: Go back to using RECUR for LAMBDA_EXPR_EXTRA_SCOPE except for function scope. From-SVN: r191164
This commit is contained in:
parent
05279bcd52
commit
da4c5b2465
4 changed files with 35 additions and 2 deletions
|
@ -1,5 +1,10 @@
|
|||
2012-09-10 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/54538
|
||||
PR c++/53783
|
||||
* pt.c (tsubst_copy_and_build) [LAMBDA_EXPR]: Go back to using RECUR
|
||||
for LAMBDA_EXPR_EXTRA_SCOPE except for function scope.
|
||||
|
||||
PR c++/54506
|
||||
* decl.c (move_signature_fn_p): Split out from move_fn_p.
|
||||
* method.c (process_subob_fn): Use it.
|
||||
|
|
14
gcc/cp/pt.c
14
gcc/cp/pt.c
|
@ -14199,8 +14199,18 @@ tsubst_copy_and_build (tree t,
|
|||
LAMBDA_EXPR_MUTABLE_P (r) = LAMBDA_EXPR_MUTABLE_P (t);
|
||||
LAMBDA_EXPR_DISCRIMINATOR (r)
|
||||
= (LAMBDA_EXPR_DISCRIMINATOR (t));
|
||||
LAMBDA_EXPR_EXTRA_SCOPE (r)
|
||||
= tsubst (LAMBDA_EXPR_EXTRA_SCOPE (t), args, complain, in_decl);
|
||||
/* For a function scope, we want to use tsubst so that we don't
|
||||
complain about referring to an auto function before its return
|
||||
type has been deduced. Otherwise, we want to use tsubst_copy so
|
||||
that we look up the existing field/parameter/variable rather
|
||||
than build a new one. */
|
||||
tree scope = LAMBDA_EXPR_EXTRA_SCOPE (t);
|
||||
if (scope && TREE_CODE (scope) == FUNCTION_DECL)
|
||||
scope = tsubst (LAMBDA_EXPR_EXTRA_SCOPE (t), args,
|
||||
complain, in_decl);
|
||||
else
|
||||
scope = RECUR (scope);
|
||||
LAMBDA_EXPR_EXTRA_SCOPE (r) = scope;
|
||||
LAMBDA_EXPR_RETURN_TYPE (r)
|
||||
= tsubst (LAMBDA_EXPR_RETURN_TYPE (t), args, complain, in_decl);
|
||||
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2012-09-10 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/54538
|
||||
* g++.dg/cpp0x/lambda/lambda-mangle4.C: New.
|
||||
|
||||
2012-09-10 Oleg Endo <olegendo@gcc.gnu.org>
|
||||
|
||||
PR target/54089
|
||||
|
|
13
gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mangle4.C
Normal file
13
gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mangle4.C
Normal file
|
@ -0,0 +1,13 @@
|
|||
// PR c++/54538
|
||||
// { dg-do compile { target c++11 } }
|
||||
|
||||
template <class T>
|
||||
struct A
|
||||
{
|
||||
// { dg-final { scan-assembler "_ZNK1AIcE1pMUlvE_cvPFvvEEv" } }
|
||||
// { dg-final { scan-assembler "_ZNK1AIiE1pMUlvE_cvPFvvEEv" } }
|
||||
void (*p)() = []{};
|
||||
};
|
||||
|
||||
A<int> a1;
|
||||
A<char> a2;
|
Loading…
Add table
Reference in a new issue