re PR c++/51818 ([C++0x] Name mangling error using lambda expressions in GCC47)
PR c++/51818 * mangle.c (find_substitution): A type is only a substitution match if we're looking for a type. (write_nested_name): Use decl_mangling_context. From-SVN: r183107
This commit is contained in:
parent
faf00d3c16
commit
b34e0e6fc8
|
@ -1,5 +1,10 @@
|
|||
2012-01-11 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/51818
|
||||
* mangle.c (find_substitution): A type is only a substitution
|
||||
match if we're looking for a type.
|
||||
(write_nested_name): Use decl_mangling_context.
|
||||
|
||||
* decl.c (decls_match): Assert that the arguments are decls.
|
||||
|
||||
PR c++/51613
|
||||
|
|
|
@ -615,7 +615,7 @@ find_substitution (tree node)
|
|||
/* NODE is a matched to a candidate if it's the same decl node or
|
||||
if it's the same type. */
|
||||
if (decl == candidate
|
||||
|| (TYPE_P (candidate) && type && TYPE_P (type)
|
||||
|| (TYPE_P (candidate) && type && TYPE_P (node)
|
||||
&& same_type_p (type, candidate))
|
||||
|| NESTED_TEMPLATE_MATCH (node, candidate))
|
||||
{
|
||||
|
@ -949,7 +949,7 @@ write_nested_name (const tree decl)
|
|||
else
|
||||
{
|
||||
/* No, just use <prefix> */
|
||||
write_prefix (CP_DECL_CONTEXT (decl));
|
||||
write_prefix (decl_mangling_context (decl));
|
||||
write_unqualified_name (decl);
|
||||
}
|
||||
write_char ('E');
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2012-01-11 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/51818
|
||||
* g++.dg/cpp0x/lambda/lambda-mangle3.C: New.
|
||||
|
||||
2012-01-11 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* gnat.dg/array19.ad[sb]: New test.
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
// PR c++/51818
|
||||
// { dg-options -std=c++0x }
|
||||
// { dg-final { scan-assembler "_ZN1AC1IN3foo3barMUlvE_EEET_" } }
|
||||
|
||||
struct A
|
||||
{
|
||||
template <class T> A(T) { }
|
||||
};
|
||||
|
||||
struct foo
|
||||
{
|
||||
A bar = []{};
|
||||
};
|
||||
|
||||
foo f;
|
Loading…
Reference in New Issue