re PR other/28797 (Problems with demangling (__cxa_demangle()))
PR other/28797 * cp-demangle.c (d_pointer_to_member_type): Do add a substitution for a qualified member which is not a function. * testsuite/demangle-expected: Add test case. From-SVN: r116493
This commit is contained in:
parent
99f4234aa7
commit
022d41663d
3 changed files with 23 additions and 1 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
2006-08-27 Ian Lance Taylor <ian@airs.com>
|
||||||
|
|
||||||
|
PR other/28797
|
||||||
|
* cp-demangle.c (d_pointer_to_member_type): Do add a substitution
|
||||||
|
for a qualified member which is not a function.
|
||||||
|
* testsuite/demangle-expected: Add test case.
|
||||||
|
|
||||||
2006-07-27 Jan Hubicka <jh@suse.cz>
|
2006-07-27 Jan Hubicka <jh@suse.cz>
|
||||||
|
|
||||||
PR rtl-optimization/28071
|
PR rtl-optimization/28071
|
||||||
|
|
|
@ -2081,13 +2081,22 @@ d_pointer_to_member_type (struct d_info *di)
|
||||||
g++ does not work that way. g++ treats only the CV-qualified
|
g++ does not work that way. g++ treats only the CV-qualified
|
||||||
member function as a substitution source. FIXME. So to work
|
member function as a substitution source. FIXME. So to work
|
||||||
with g++, we need to pull off the CV-qualifiers here, in order to
|
with g++, we need to pull off the CV-qualifiers here, in order to
|
||||||
avoid calling add_substitution() in cplus_demangle_type(). */
|
avoid calling add_substitution() in cplus_demangle_type(). But
|
||||||
|
for a CV-qualified member which is not a function, g++ does
|
||||||
|
follow the ABI, so we need to handle that case here by calling
|
||||||
|
d_add_substitution ourselves. */
|
||||||
|
|
||||||
pmem = d_cv_qualifiers (di, &mem, 1);
|
pmem = d_cv_qualifiers (di, &mem, 1);
|
||||||
if (pmem == NULL)
|
if (pmem == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
*pmem = cplus_demangle_type (di);
|
*pmem = cplus_demangle_type (di);
|
||||||
|
|
||||||
|
if (pmem != &mem && (*pmem)->type != DEMANGLE_COMPONENT_FUNCTION_TYPE)
|
||||||
|
{
|
||||||
|
if (! d_add_substitution (di, mem))
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
return d_make_comp (di, DEMANGLE_COMPONENT_PTRMEM_TYPE, cl, mem);
|
return d_make_comp (di, DEMANGLE_COMPONENT_PTRMEM_TYPE, cl, mem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3805,3 +3805,9 @@ java::lang::Math::acos(double)double
|
||||||
_Z4makeI7FactoryiET_IT0_Ev
|
_Z4makeI7FactoryiET_IT0_Ev
|
||||||
make<Factory, int>()Factory<int>
|
make<Factory, int>()Factory<int>
|
||||||
make<Factory, int>
|
make<Factory, int>
|
||||||
|
#
|
||||||
|
# From PR 28797
|
||||||
|
--format=auto --no-params
|
||||||
|
_Z1fM1AKiPKS1_
|
||||||
|
f(int const A::*, int const A::* const*)
|
||||||
|
f
|
||||||
|
|
Loading…
Add table
Reference in a new issue