mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-11-23 19:03:59 +08:00
cp-demangle.c (d_abi_tags): Preserve di->last_name across any ABI tags.
* cp-demangle.c (d_abi_tags): Preserve di->last_name across any ABI tags. From-SVN: r226910
This commit is contained in:
parent
60349f15cc
commit
68bac64063
@ -1,3 +1,8 @@
|
|||||||
|
2015-08-15 Ian Lance Taylor <iant@google.com>
|
||||||
|
|
||||||
|
* cp-demangle.c (d_abi_tags): Preserve di->last_name across any
|
||||||
|
ABI tags.
|
||||||
|
|
||||||
2015-08-11 Iain Buclaw <ibuclaw@gdcproject.org>
|
2015-08-11 Iain Buclaw <ibuclaw@gdcproject.org>
|
||||||
|
|
||||||
* d-demangle.c (dlang_parse_real): Remove call to strtod.
|
* d-demangle.c (dlang_parse_real): Remove call to strtod.
|
||||||
|
@ -1306,7 +1306,12 @@ d_encoding (struct d_info *di, int top_level)
|
|||||||
static struct demangle_component *
|
static struct demangle_component *
|
||||||
d_abi_tags (struct d_info *di, struct demangle_component *dc)
|
d_abi_tags (struct d_info *di, struct demangle_component *dc)
|
||||||
{
|
{
|
||||||
|
struct demangle_component *hold_last_name;
|
||||||
char peek;
|
char peek;
|
||||||
|
|
||||||
|
/* Preserve the last name, so the ABI tag doesn't clobber it. */
|
||||||
|
hold_last_name = di->last_name;
|
||||||
|
|
||||||
while (peek = d_peek_char (di),
|
while (peek = d_peek_char (di),
|
||||||
peek == 'B')
|
peek == 'B')
|
||||||
{
|
{
|
||||||
@ -1315,6 +1320,9 @@ d_abi_tags (struct d_info *di, struct demangle_component *dc)
|
|||||||
tag = d_source_name (di);
|
tag = d_source_name (di);
|
||||||
dc = d_make_comp (di, DEMANGLE_COMPONENT_TAGGED_NAME, dc, tag);
|
dc = d_make_comp (di, DEMANGLE_COMPONENT_TAGGED_NAME, dc, tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
di->last_name = hold_last_name;
|
||||||
|
|
||||||
return dc;
|
return dc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4389,3 +4389,9 @@ f(std::string[abi:foo], std::string[abi:foo])
|
|||||||
--format=gnu-v3
|
--format=gnu-v3
|
||||||
_Z18IndirectExternCallIPU7stdcallU7regparmILi3EEFviiEiEvT_T0_S3_
|
_Z18IndirectExternCallIPU7stdcallU7regparmILi3EEFviiEiEvT_T0_S3_
|
||||||
void IndirectExternCall<void ( regparm<3> stdcall*)(int, int), int>(void ( regparm<3> stdcall*)(int, int), int, void ( regparm<3> stdcall*)(int, int))
|
void IndirectExternCall<void ( regparm<3> stdcall*)(int, int), int>(void ( regparm<3> stdcall*)(int, int), int, void ( regparm<3> stdcall*)(int, int))
|
||||||
|
#
|
||||||
|
# ABI tags used to confuse the constructor name calculation.
|
||||||
|
--format=gnu-v3 --no-params
|
||||||
|
_ZNSt8ios_base7failureB5cxx11C1EPKcRKSt10error_code
|
||||||
|
std::ios_base::failure[abi:cxx11]::failure(char const*, std::error_code const&)
|
||||||
|
std::ios_base::failure[abi:cxx11]::failure
|
||||||
|
Loading…
Reference in New Issue
Block a user