# This file holds test cases for the demangler.
# Each test case looks like this:
#  options
#  input to be demangled
#  expected output
#
#  Supported options:
#    --format=<name>     Sets the demangling style.
#    --no-params         There are two lines of expected output; the first
#                        is with DMGL_PARAMS, the second is without it.
#    --is-v3-ctor        Calls is_gnu_v3_mangled_ctor on input; expected
#                        output is an integer representing ctor_kind.
#    --is-v3-dtor        Likewise, but for dtors.
#    --ret-postfix       Passes the DMGL_RET_POSTFIX option
#
#  For compatibility, just in case it matters, the options line may be
#  empty, to mean --format=auto.  If it doesn't start with --, then it
#  may contain only a format name.
#
# A line starting with `#' is ignored.
# However, blank lines in this file are NOT ignored.
#
--format=gnu --no-params
AddAlignment__9ivTSolverUiP12ivInteractorP7ivTGlue
ivTSolver::AddAlignment(unsigned int, ivInteractor *, ivTGlue *)
ivTSolver::AddAlignment
#
--format=gnu --no-params
ArrowheadIntersects__9ArrowLineP9ArrowheadR6BoxObjP7Graphic
ArrowLine::ArrowheadIntersects(Arrowhead *, BoxObj &, Graphic *)
ArrowLine::ArrowheadIntersects
#
--format=gnu --no-params
AtEnd__13ivRubberGroup
ivRubberGroup::AtEnd(void)
ivRubberGroup::AtEnd
#
--format=gnu --no-params
BgFilter__9ivTSolverP12ivInteractor
ivTSolver::BgFilter(ivInteractor *)
ivTSolver::BgFilter
#
--format=gnu --no-params
Check__6UArrayi
UArray::Check(int)
UArray::Check
#
--format=gnu --no-params
CoreConstDecls__8TextCodeR7ostream
TextCode::CoreConstDecls(ostream &)
TextCode::CoreConstDecls
#
--format=gnu --no-params
Detach__8StateVarP12StateVarView
StateVar::Detach(StateVarView *)
StateVar::Detach
#
--format=gnu --no-params
Done__9ComponentG8Iterator
Component::Done(Iterator)
Component::Done
#
--format=gnu --no-params
Effect__11RelateManipR7ivEvent
RelateManip::Effect(ivEvent &)
RelateManip::Effect
#
--format=gnu --no-params
FindFixed__FRP4CNetP4CNet
FindFixed(CNet *&, CNet *)
FindFixed
#
--format=gnu --no-params
Fix48_abort__FR8twolongs
Fix48_abort(twolongs &)
Fix48_abort
#
--format=gnu --no-params
GetBarInfo__15iv2_6_VScrollerP13ivPerspectiveRiT2
iv2_6_VScroller::GetBarInfo(ivPerspective *, int &, int &)
iv2_6_VScroller::GetBarInfo
#
--format=gnu --no-params
GetBgColor__C9ivPainter
ivPainter::GetBgColor(void) const
ivPainter::GetBgColor
#
--format=gnu --no-params
InsertBody__15H_PullrightMenuii
H_PullrightMenu::InsertBody(int, int)
H_PullrightMenu::InsertBody
#
--format=gnu --no-params
InsertCharacter__9TextManipc
TextManip::InsertCharacter(char)
TextManip::InsertCharacter
#
--format=gnu --no-params
InsertToplevel__7ivWorldP12ivInteractorT1
ivWorld::InsertToplevel(ivInteractor *, ivInteractor *)
ivWorld::InsertToplevel
#
--format=gnu --no-params
InsertToplevel__7ivWorldP12ivInteractorT1iiUi
ivWorld::InsertToplevel(ivInteractor *, ivInteractor *, int, int, unsigned int)
ivWorld::InsertToplevel
#
--format=gnu --no-params
IsAGroup__FP11GraphicViewP11GraphicComp
IsAGroup(GraphicView *, GraphicComp *)
IsAGroup
#
--format=gnu --no-params
IsA__10ButtonCodeUl
ButtonCode::IsA(unsigned long)
ButtonCode::IsA
#
--format=gnu --no-params
ReadName__FR7istreamPc
ReadName(istream &, char *)
ReadName
#
--format=gnu --no-params
Redraw__13StringBrowseriiii
StringBrowser::Redraw(int, int, int, int)
StringBrowser::Redraw
#
--format=gnu --no-params
Rotate__13ivTransformerf
ivTransformer::Rotate(float)
ivTransformer::Rotate
#
--format=gnu --no-params
Rotated__C13ivTransformerf
ivTransformer::Rotated(float) const
ivTransformer::Rotated
#
--format=gnu --no-params
Round__Ff
Round(float)
Round
#
--format=gnu --no-params
SetExport__16MemberSharedNameUi
MemberSharedName::SetExport(unsigned int)
MemberSharedName::SetExport
#
--format=gnu --no-params
Set__14ivControlState13ControlStatusUi
ivControlState::Set(ControlStatus, unsigned int)
ivControlState::Set
#
--format=gnu --no-params
Set__5DFacePcii
DFace::Set(char *, int, int)
DFace::Set
#
--format=gnu --no-params
VConvert__9ivTSolverP12ivInteractorRP8TElementT2
ivTSolver::VConvert(ivInteractor *, TElement *&, TElement *&)
ivTSolver::VConvert
#
--format=gnu --no-params
VConvert__9ivTSolverP7ivTGlueRP8TElement
ivTSolver::VConvert(ivTGlue *, TElement *&)
ivTSolver::VConvert
#
--format=gnu --no-params
VOrder__9ivTSolverUiRP12ivInteractorT2
ivTSolver::VOrder(unsigned int, ivInteractor *&, ivInteractor *&)
ivTSolver::VOrder
#
--format=gnu --no-params
_10PageButton$__both
PageButton::__both
PageButton::__both
#
--format=gnu --no-params
_3RNG$singleMantissa
RNG::singleMantissa
RNG::singleMantissa
#
--format=gnu --no-params
_5IComp$_release
IComp::_release
IComp::_release
#
--format=gnu --no-params
_$_10BitmapComp
BitmapComp::~BitmapComp(void)
BitmapComp::~BitmapComp
#
--format=gnu --no-params
_$_9__io_defs
__io_defs::~__io_defs(void)
__io_defs::~__io_defs
#
--format=gnu --no-params
_$_Q23foo3bar
foo::bar::~bar(void)
foo::bar::~bar
#
--format=gnu --no-params
_$_Q33foo3bar4bell
foo::bar::bell::~bell(void)
foo::bar::bell::~bell
#
--format=gnu --no-params
__10ivTelltaleiP7ivGlyph
ivTelltale::ivTelltale(int, ivGlyph *)
ivTelltale::ivTelltale
#
--format=gnu --no-params
__10ivViewportiP12ivInteractorUi
ivViewport::ivViewport(int, ivInteractor *, unsigned int)
ivViewport::ivViewport
#
--format=gnu --no-params
__10ostrstream
ostrstream::ostrstream(void)
ostrstream::ostrstream
#
--format=gnu --no-params
__10ostrstreamPcii
ostrstream::ostrstream(char *, int, int)
ostrstream::ostrstream
#
--format=gnu --no-params
__11BitmapTablei
BitmapTable::BitmapTable(int)
BitmapTable::BitmapTable
#
--format=gnu --no-params
__12ViewportCodeP12ViewportComp
ViewportCode::ViewportCode(ViewportComp *)
ViewportCode::ViewportCode
#
--format=gnu --no-params
__12iv2_6_Borderii
iv2_6_Border::iv2_6_Border(int, int)
iv2_6_Border::iv2_6_Border
#
--format=gnu --no-params
__12ivBreak_Listl
ivBreak_List::ivBreak_List(long)
ivBreak_List::ivBreak_List
#
--format=gnu --no-params
__14iv2_6_MenuItemiP12ivInteractor
iv2_6_MenuItem::iv2_6_MenuItem(int, ivInteractor *)
iv2_6_MenuItem::iv2_6_MenuItem
#
--format=gnu --no-params
__20DisplayList_IteratorR11DisplayList
DisplayList_Iterator::DisplayList_Iterator(DisplayList &)
DisplayList_Iterator::DisplayList_Iterator
#
--format=gnu --no-params
__3fooRT0
foo::foo(foo &)
foo::foo
#
--format=gnu --no-params
__3fooiN31
foo::foo(int, int, int, int)
foo::foo
#
--format=gnu --no-params
__3fooiRT0iT2iT2
foo::foo(int, foo &, int, foo &, int, foo &)
foo::foo
#
--format=gnu --no-params
__6KeyMapPT0
KeyMap::KeyMap(KeyMap *)
KeyMap::KeyMap
#
--format=gnu --no-params
__8ArrowCmdP6EditorUiUi
ArrowCmd::ArrowCmd(Editor *, unsigned int, unsigned int)
ArrowCmd::ArrowCmd
#
--format=gnu --no-params
__9F_EllipseiiiiP7Graphic
F_Ellipse::F_Ellipse(int, int, int, int, Graphic *)
F_Ellipse::F_Ellipse
#
--format=gnu --no-params
__9FrameDataP9FrameCompi
FrameData::FrameData(FrameComp *, int)
FrameData::FrameData
#
--format=gnu --no-params
__9HVGraphicP9CanvasVarP7Graphic
HVGraphic::HVGraphic(CanvasVar *, Graphic *)
HVGraphic::HVGraphic
#
--format=gnu --no-params
__Q23foo3bar
foo::bar::bar(void)
foo::bar::bar
#
--format=gnu --no-params
__Q33foo3bar4bell
foo::bar::bell::bell(void)
foo::bar::bell::bell
#
--format=gnu --no-params
__aa__3fooRT0
foo::operator&&(foo &)
foo::operator&&
#
--format=gnu --no-params
__aad__3fooRT0
foo::operator&=(foo &)
foo::operator&=
#
--format=gnu --no-params
__ad__3fooRT0
foo::operator&(foo &)
foo::operator&
#
--format=gnu --no-params
__adv__3fooRT0
foo::operator/=(foo &)
foo::operator/=
#
--format=gnu --no-params
__aer__3fooRT0
foo::operator^=(foo &)
foo::operator^=
#
--format=gnu --no-params
__als__3fooRT0
foo::operator<<=(foo &)
foo::operator<<=
#
--format=gnu --no-params
__amd__3fooRT0
foo::operator%=(foo &)
foo::operator%=
#
--format=gnu --no-params
__ami__3fooRT0
foo::operator-=(foo &)
foo::operator-=
#
--format=gnu --no-params
__aml__3FixRT0
Fix::operator*=(Fix &)
Fix::operator*=
#
--format=gnu --no-params
__aml__5Fix16i
Fix16::operator*=(int)
Fix16::operator*=
#
--format=gnu --no-params
__aml__5Fix32RT0
Fix32::operator*=(Fix32 &)
Fix32::operator*=
#
--format=gnu --no-params
__aor__3fooRT0
foo::operator|=(foo &)
foo::operator|=
#
--format=gnu --no-params
__apl__3fooRT0
foo::operator+=(foo &)
foo::operator+=
#
--format=gnu --no-params
__ars__3fooRT0
foo::operator>>=(foo &)
foo::operator>>=
#
--format=gnu --no-params
__as__3fooRT0
foo::operator=(foo &)
foo::operator=
#
--format=gnu --no-params
__cl__3fooRT0
foo::operator()(foo &)
foo::operator()
#
--format=gnu --no-params
__cl__6Normal
Normal::operator()(void)
Normal::operator()
#
--format=gnu --no-params
__cl__6Stringii
String::operator()(int, int)
String::operator()
#
--format=gnu --no-params
__cm__3fooRT0
foo::operator, (foo &)
foo::operator, 
#
--format=gnu --no-params
__co__3foo
foo::operator~(void)
foo::operator~
#
--format=gnu --no-params
__dl__3fooPv
foo::operator delete(void *)
foo::operator delete
#
--format=gnu --no-params
__dv__3fooRT0
foo::operator/(foo &)
foo::operator/
#
--format=gnu --no-params
__eq__3fooRT0
foo::operator==(foo &)
foo::operator==
#
--format=gnu --no-params
__er__3fooRT0
foo::operator^(foo &)
foo::operator^
#
--format=gnu --no-params
__ge__3fooRT0
foo::operator>=(foo &)
foo::operator>=
#
--format=gnu --no-params
__gt__3fooRT0
foo::operator>(foo &)
foo::operator>
#
--format=gnu --no-params
__le__3fooRT0
foo::operator<=(foo &)
foo::operator<=
#
--format=gnu --no-params
__ls__3fooRT0
foo::operator<<(foo &)
foo::operator<<
#
--format=gnu --no-params
__ls__FR7ostreamPFR3ios_R3ios
operator<<(ostream &, ios &(*)(ios &))
operator<<
#
--format=gnu --no-params
__ls__FR7ostreamR3Fix
operator<<(ostream &, Fix &)
operator<<
#
--format=gnu --no-params
__lt__3fooRT0
foo::operator<(foo &)
foo::operator<
#
--format=gnu --no-params
__md__3fooRT0
foo::operator%(foo &)
foo::operator%
#
--format=gnu --no-params
__mi__3fooRT0
foo::operator-(foo &)
foo::operator-
#
--format=gnu --no-params
__ml__3fooRT0
foo::operator*(foo &)
foo::operator*
#
--format=gnu --no-params
__mm__3fooi
foo::operator--(int)
foo::operator--
#
--format=gnu --no-params
__ne__3fooRT0
foo::operator!=(foo &)
foo::operator!=
#
--format=gnu --no-params
__nt__3foo
foo::operator!(void)
foo::operator!
#
--format=gnu --no-params
__nw__3fooi
foo::operator new(int)
foo::operator new
#
--format=gnu --no-params
__oo__3fooRT0
foo::operator||(foo &)
foo::operator||
#
--format=gnu --no-params
__opPc__3foo
foo::operator char *(void)
foo::operator char *
#
--format=gnu --no-params
__opi__3foo
foo::operator int(void)
foo::operator int
#
--format=gnu --no-params
__or__3fooRT0
foo::operator|(foo &)
foo::operator|
#
--format=gnu --no-params
__pl__3fooRT0
foo::operator+(foo &)
foo::operator+
#
--format=gnu --no-params
__pp__3fooi
foo::operator++(int)
foo::operator++
#
--format=gnu --no-params
__rf__3foo
foo::operator->(void)
foo::operator->
#
--format=gnu --no-params
__rm__3fooRT0
foo::operator->*(foo &)
foo::operator->*
#
--format=gnu --no-params
__rs__3fooRT0
foo::operator>>(foo &)
foo::operator>>
#
--format=gnu --no-params
_new_Fix__FUs
_new_Fix(unsigned short)
_new_Fix
#
--format=gnu --no-params
_vt.foo
foo virtual table
foo virtual table
#
--format=gnu --no-params
_vt.foo.bar
foo::bar virtual table
foo::bar virtual table
#
--format=gnu --no-params
_vt$foo
foo virtual table
foo virtual table
#
--format=gnu --no-params
_vt$foo$bar
foo::bar virtual table
foo::bar virtual table
#
--format=gnu --no-params
append__7ivGlyphPT0
ivGlyph::append(ivGlyph *)
ivGlyph::append
#
--format=gnu --no-params
clearok__FP7_win_sti
clearok(_win_st *, int)
clearok
#
--format=gnu --no-params
complexfunc2__FPFPc_i
complexfunc2(int (*)(char *))
complexfunc2
#
--format=gnu --no-params
complexfunc3__FPFPFPl_s_i
complexfunc3(int (*)(short (*)(long *)))
complexfunc3
#
--format=gnu --no-params
complexfunc4__FPFPFPc_s_i
complexfunc4(int (*)(short (*)(char *)))
complexfunc4
#
--format=gnu --no-params
complexfunc5__FPFPc_PFl_i
complexfunc5(int (*(*)(char *))(long))
complexfunc5
#
--format=gnu --no-params
complexfunc6__FPFPi_PFl_i
complexfunc6(int (*(*)(int *))(long))
complexfunc6
#
--format=gnu --no-params
complexfunc7__FPFPFPc_i_PFl_i
complexfunc7(int (*(*)(int (*)(char *)))(long))
complexfunc7
#
--format=gnu --no-params
foo__FiN30
foo(int, int, int, int)
foo
#
--format=gnu --no-params
foo__FiR3fooiT1iT1
foo(int, foo &, int, foo &, int, foo &)
foo
#
--format=gnu --no-params
foo___3barl
bar::foo_(long)
bar::foo_
#
--format=gnu --no-params
insert__15ivClippingStacklRP8_XRegion
ivClippingStack::insert(long, _XRegion *&)
ivClippingStack::insert
#
--format=gnu --no-params
insert__16ChooserInfo_ListlR11ChooserInfo
ChooserInfo_List::insert(long, ChooserInfo &)
ChooserInfo_List::insert
#
--format=gnu --no-params
insert__17FontFamilyRepListlRP15ivFontFamilyRep
FontFamilyRepList::insert(long, ivFontFamilyRep *&)
FontFamilyRepList::insert
#
--format=gnu --no-params
leaveok__FP7_win_stc
leaveok(_win_st *, char)
leaveok
#
--format=gnu --no-params
left_mover__C7ivMFKitP12ivAdjustableP7ivStyle
ivMFKit::left_mover(ivAdjustable *, ivStyle *) const
ivMFKit::left_mover
#
--format=gnu --no-params
overload1arg__FSc
overload1arg(signed char)
overload1arg
#
--format=gnu --no-params
overload1arg__FUc
overload1arg(unsigned char)
overload1arg
#
--format=gnu --no-params
overload1arg__FUi
overload1arg(unsigned int)
overload1arg
#
--format=gnu --no-params
overload1arg__FUl
overload1arg(unsigned long)
overload1arg
#
--format=gnu --no-params
overload1arg__FUs
overload1arg(unsigned short)
overload1arg
#
--format=gnu --no-params
overload1arg__Fc
overload1arg(char)
overload1arg
#
--format=gnu --no-params
overload1arg__Fd
overload1arg(double)
overload1arg
#
--format=gnu --no-params
overload1arg__Ff
overload1arg(float)
overload1arg
#
--format=gnu --no-params
overload1arg__Fi
overload1arg(int)
overload1arg
#
--format=gnu --no-params
overload1arg__Fl
overload1arg(long)
overload1arg
#
--format=gnu --no-params
overload1arg__Fs
overload1arg(short)
overload1arg
#
--format=gnu --no-params
overload1arg__Fv
overload1arg(void)
overload1arg
#
--format=gnu --no-params
overloadargs__Fi
overloadargs(int)
overloadargs
#
--format=gnu --no-params
overloadargs__Fii
overloadargs(int, int)
overloadargs
#
--format=gnu --no-params
overloadargs__Fiii
overloadargs(int, int, int)
overloadargs
#
--format=gnu --no-params
overloadargs__Fiiii
overloadargs(int, int, int, int)
overloadargs
#
--format=gnu --no-params
overloadargs__Fiiiii
overloadargs(int, int, int, int, int)
overloadargs
#
--format=gnu --no-params
overloadargs__Fiiiiii
overloadargs(int, int, int, int, int, int)
overloadargs
#
--format=gnu --no-params
overloadargs__Fiiiiiii
overloadargs(int, int, int, int, int, int, int)
overloadargs
#
--format=gnu --no-params
overloadargs__Fiiiiiiii
overloadargs(int, int, int, int, int, int, int, int)
overloadargs
#
--format=gnu --no-params
overloadargs__Fiiiiiiiii
overloadargs(int, int, int, int, int, int, int, int, int)
overloadargs
#
--format=gnu --no-params
overloadargs__Fiiiiiiiiii
overloadargs(int, int, int, int, int, int, int, int, int, int)
overloadargs
#
--format=gnu --no-params
overloadargs__Fiiiiiiiiiii
overloadargs(int, int, int, int, int, int, int, int, int, int, int)
overloadargs
#
--format=gnu --no-params
poke__8ivRasterUlUlffff
ivRaster::poke(unsigned long, unsigned long, float, float, float, float)
ivRaster::poke
#
--format=gnu --no-params
polar__Fdd
polar(double, double)
polar
#
--format=gnu --no-params
scale__13ivTransformerff
ivTransformer::scale(float, float)
ivTransformer::scale
#
--format=gnu --no-params
sgetn__7filebufPci
filebuf::sgetn(char *, int)
filebuf::sgetn
#
--format=gnu --no-params
shift__FP5_FrepiT0
shift(_Frep *, int, _Frep *)
shift
#
--format=gnu --no-params
test__C6BitSeti
BitSet::test(int) const
BitSet::test
#
--format=gnu --no-params
test__C6BitSetii
BitSet::test(int, int) const
BitSet::test
#
--format=gnu --no-params
text_source__8Documentl
Document::text_source(long)
Document::text_source
#
--format=gnu --no-params
variance__6Erlangd
Erlang::variance(double)
Erlang::variance
#
--format=gnu --no-params
view__14DocumentViewerP8ItemViewP11TabularItem
DocumentViewer::view(ItemView *, TabularItem *)
DocumentViewer::view
#
--format=gnu --no-params
xy_extents__11ivExtensionffff
ivExtension::xy_extents(float, float, float, float)
ivExtension::xy_extents
#
--format=gnu --no-params
zero__8osMemoryPvUi
osMemory::zero(void *, unsigned int)
osMemory::zero
#
--format=gnu --no-params
_2T4$N
T4::N
T4::N
#
--format=gnu --no-params
_Q22T42t1$N
T4::t1::N
T4::t1::N
#
--format=gnu --no-params
get__2T1
T1::get(void)
T1::get
#
--format=gnu --no-params
get__Q22T11a
T1::a::get(void)
T1::a::get
#
--format=gnu --no-params
get__Q32T11a1b
T1::a::b::get(void)
T1::a::b::get
#
--format=gnu --no-params
get__Q42T11a1b1c
T1::a::b::c::get(void)
T1::a::b::c::get
#
--format=gnu --no-params
get__Q52T11a1b1c1d
T1::a::b::c::d::get(void)
T1::a::b::c::d::get
#
--format=gnu --no-params
put__2T1i
T1::put(int)
T1::put
#
--format=gnu --no-params
put__Q22T11ai
T1::a::put(int)
T1::a::put
#
--format=gnu --no-params
put__Q32T11a1bi
T1::a::b::put(int)
T1::a::b::put
#
--format=gnu --no-params
put__Q42T11a1b1ci
T1::a::b::c::put(int)
T1::a::b::c::put
#
--format=gnu --no-params
put__Q52T11a1b1c1di
T1::a::b::c::d::put(int)
T1::a::b::c::d::put
#
--format=gnu --no-params
bar__3fooPv
foo::bar(void *)
foo::bar
#
--format=gnu --no-params
bar__C3fooPv
foo::bar(void *) const
foo::bar
#
--format=gnu --no-params
__eq__3fooRT0
foo::operator==(foo &)
foo::operator==
#
--format=gnu --no-params
__eq__C3fooR3foo
foo::operator==(foo &) const
foo::operator==
#
--format=gnu --no-params
elem__t6vector1Zdi
vector<double>::elem(int)
vector<double>::elem
#
--format=gnu --no-params
elem__t6vector1Zii
vector<int>::elem(int)
vector<int>::elem
#
--format=gnu --no-params
__t6vector1Zdi
vector<double>::vector(int)
vector<double>::vector
#
--format=gnu --no-params
__t6vector1Zii
vector<int>::vector(int)
vector<int>::vector
#
--format=gnu --no-params
_$_t6vector1Zdi
vector<double>::~vector(int)
vector<double>::~vector
#
--format=gnu --no-params
_$_t6vector1Zii
vector<int>::~vector(int)
vector<int>::~vector
#
--format=gnu --no-params
__nw__t2T11ZcUi
T1<char>::operator new(unsigned int)
T1<char>::operator new
#
--format=gnu --no-params
__nw__t2T11Z1tUi
T1<t>::operator new(unsigned int)
T1<t>::operator new
#
--format=gnu --no-params
__dl__t2T11ZcPv
T1<char>::operator delete(void *)
T1<char>::operator delete
#
--format=gnu --no-params
__dl__t2T11Z1tPv
T1<t>::operator delete(void *)
T1<t>::operator delete
#
--format=gnu --no-params
__t2T11Zci
T1<char>::T1(int)
T1<char>::T1
#
--format=gnu --no-params
__t2T11Zc
T1<char>::T1(void)
T1<char>::T1
#
--format=gnu --no-params
__t2T11Z1ti
T1<t>::T1(int)
T1<t>::T1
#
--format=gnu --no-params
__t2T11Z1t
T1<t>::T1(void)
T1<t>::T1
#
--format=gnu --no-params
__Q2t4List1Z10VHDLEntity3Pix
List<VHDLEntity>::Pix::Pix(void)
List<VHDLEntity>::Pix::Pix
#
--format=gnu --no-params
__Q2t4List1Z10VHDLEntity3PixPQ2t4List1Z10VHDLEntity7element
List<VHDLEntity>::Pix::Pix(List<VHDLEntity>::element *)
List<VHDLEntity>::Pix::Pix
#
--format=gnu --no-params
__Q2t4List1Z10VHDLEntity3PixRCQ2t4List1Z10VHDLEntity3Pix
List<VHDLEntity>::Pix::Pix(List<VHDLEntity>::Pix const &)
List<VHDLEntity>::Pix::Pix
#
--format=gnu --no-params
__Q2t4List1Z10VHDLEntity7elementRC10VHDLEntityPT0
List<VHDLEntity>::element::element(VHDLEntity const &, List<VHDLEntity>::element *)
List<VHDLEntity>::element::element
#
--format=gnu --no-params
__Q2t4List1Z10VHDLEntity7elementRCQ2t4List1Z10VHDLEntity7element
List<VHDLEntity>::element::element(List<VHDLEntity>::element const &)
List<VHDLEntity>::element::element
#
--format=gnu --no-params
__cl__C11VHDLLibraryGt4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity
VHDLLibrary::operator()(PixX<VHDLLibrary, VHDLLibraryRep, List<VHDLEntity> >) const
VHDLLibrary::operator()
#
--format=gnu --no-params
__cl__Ct4List1Z10VHDLEntityRCQ2t4List1Z10VHDLEntity3Pix
List<VHDLEntity>::operator()(List<VHDLEntity>::Pix const &) const
List<VHDLEntity>::operator()
#
--format=gnu --no-params
__ne__FPvRCQ2t4List1Z10VHDLEntity3Pix
operator!=(void *, List<VHDLEntity>::Pix const &)
operator!=
#
--format=gnu --no-params
__ne__FPvRCt4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity
operator!=(void *, PixX<VHDLLibrary, VHDLLibraryRep, List<VHDLEntity> > const &)
operator!=
#
--format=gnu --no-params
__t4List1Z10VHDLEntityRCt4List1Z10VHDLEntity
List<VHDLEntity>::List(List<VHDLEntity> const &)
List<VHDLEntity>::List
#
--format=gnu --no-params
__t4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity
PixX<VHDLLibrary, VHDLLibraryRep, List<VHDLEntity> >::PixX(void)
PixX<VHDLLibrary, VHDLLibraryRep, List<VHDLEntity> >::PixX
#
--format=gnu --no-params
__t4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntityP14VHDLLibraryRepGQ2t4List1Z10VHDLEntity3Pix
PixX<VHDLLibrary, VHDLLibraryRep, List<VHDLEntity> >::PixX(VHDLLibraryRep *, List<VHDLEntity>::Pix)
PixX<VHDLLibrary, VHDLLibraryRep, List<VHDLEntity> >::PixX
#
--format=gnu --no-params
__t4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntityRCt4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity
PixX<VHDLLibrary, VHDLLibraryRep, List<VHDLEntity> >::PixX(PixX<VHDLLibrary, VHDLLibraryRep, List<VHDLEntity> > const &)
PixX<VHDLLibrary, VHDLLibraryRep, List<VHDLEntity> >::PixX
#
--format=gnu --no-params
nextE__C11VHDLLibraryRt4PixX3Z11VHDLLibraryZ14VHDLLibraryRepZt4List1Z10VHDLEntity
VHDLLibrary::nextE(PixX<VHDLLibrary, VHDLLibraryRep, List<VHDLEntity> > &) const
VHDLLibrary::nextE
#
--format=gnu --no-params
next__Ct4List1Z10VHDLEntityRQ2t4List1Z10VHDLEntity3Pix
List<VHDLEntity>::next(List<VHDLEntity>::Pix &) const
List<VHDLEntity>::next
#
--format=gnu --no-params
_GLOBAL_$D$set
global destructors keyed to set
global destructors keyed to set
#
--format=gnu --no-params
_GLOBAL_$I$set
global constructors keyed to set
global constructors keyed to set
#
--format=gnu --no-params
__as__t5ListS1ZUiRCt5ListS1ZUi
ListS<unsigned int>::operator=(ListS<unsigned int> const &)
ListS<unsigned int>::operator=
#
--format=gnu --no-params
__cl__Ct5ListS1ZUiRCQ2t5ListS1ZUi3Vix
ListS<unsigned int>::operator()(ListS<unsigned int>::Vix const &) const
ListS<unsigned int>::operator()
#
--format=gnu --no-params
__cl__Ct5SetLS1ZUiRCQ2t5SetLS1ZUi3Vix
SetLS<unsigned int>::operator()(SetLS<unsigned int>::Vix const &) const
SetLS<unsigned int>::operator()
#
--format=gnu --no-params
__t10ListS_link1ZUiRCUiPT0
ListS_link<unsigned int>::ListS_link(unsigned int const &, ListS_link<unsigned int> *)
ListS_link<unsigned int>::ListS_link
#
--format=gnu --no-params
__t10ListS_link1ZUiRCt10ListS_link1ZUi
ListS_link<unsigned int>::ListS_link(ListS_link<unsigned int> const &)
ListS_link<unsigned int>::ListS_link
#
--format=gnu --no-params
__t5ListS1ZUiRCt5ListS1ZUi
ListS<unsigned int>::ListS(ListS<unsigned int> const &)
ListS<unsigned int>::ListS
#
--format=gnu --no-params
next__Ct5ListS1ZUiRQ2t5ListS1ZUi3Vix
ListS<unsigned int>::next(ListS<unsigned int>::Vix &) const
ListS<unsigned int>::next
#
--format=gnu --no-params
__ne__FPvRCQ2t5SetLS1ZUi3Vix
operator!=(void *, SetLS<unsigned int>::Vix const &)
operator!=
#
--format=gnu --no-params
__t8ListElem1Z5LabelRt4List1Z5Label
ListElem<Label>::ListElem(List<Label> &)
ListElem<Label>::ListElem
#
--format=gnu --no-params
__t8BDDHookV1ZPcRCPc
BDDHookV<char *>::BDDHookV(char *const &)
BDDHookV<char *>::BDDHookV
#
--format=gnu --no-params
_vt$t8BDDHookV1ZPc
BDDHookV<char *> virtual table
BDDHookV<char *> virtual table
#
--format=gnu --no-params
__ne__FPvRCQ211BDDFunction4VixB
operator!=(void *, BDDFunction::VixB const &)
operator!=
#
--format=gnu --no-params
__eq__FPvRCQ211BDDFunction4VixB
operator==(void *, BDDFunction::VixB const &)
operator==
#
--format=gnu --no-params
relativeId__CQ36T_phi210T_preserve8FPC_nextRCQ26T_phi210T_preserveRC10Parameters
T_phi2::T_preserve::FPC_next::relativeId(T_phi2::T_preserve const &, Parameters const &) const
T_phi2::T_preserve::FPC_next::relativeId
#
--format=lucid --no-params
WS__FR7istream
WS(istream &)
WS
#
--format=lucid --no-params
__aa__3fooFR3foo
foo::operator&&(foo &)
foo::operator&&
#
--format=lucid --no-params
__aad__3fooFR3foo
foo::operator&=(foo &)
foo::operator&=
#
--format=lucid --no-params
__ad__3fooFR3foo
foo::operator&(foo &)
foo::operator&
#
--format=lucid --no-params
__adv__3fooFR3foo
foo::operator/=(foo &)
foo::operator/=
#
--format=lucid --no-params
__adv__7complexF7complex
complex::operator/=(complex)
complex::operator/=
#
--format=lucid --no-params
__aer__3fooFR3foo
foo::operator^=(foo &)
foo::operator^=
#
--format=lucid --no-params
__als__3fooFR3foo
foo::operator<<=(foo &)
foo::operator<<=
#
--format=lucid --no-params
__amd__3fooFR3foo
foo::operator%=(foo &)
foo::operator%=
#
--format=lucid --no-params
__ami__3fooFR3foo
foo::operator-=(foo &)
foo::operator-=
#
--format=lucid --no-params
__amu__3fooFR3foo
foo::operator*=(foo &)
foo::operator*=
#
--format=lucid --no-params
__amu__7complexF7complex
complex::operator*=(complex)
complex::operator*=
#
--format=lucid --no-params
__aor__3fooFR3foo
foo::operator|=(foo &)
foo::operator|=
#
--format=lucid --no-params
__apl__3fooFR3foo
foo::operator+=(foo &)
foo::operator+=
#
--format=lucid --no-params
__ars__3fooFR3foo
foo::operator>>=(foo &)
foo::operator>>=
#
--format=lucid --no-params
__as__18istream_withassignFP9streambuf
istream_withassign::operator=(streambuf *)
istream_withassign::operator=
#
--format=lucid --no-params
__as__18istream_withassignFR7istream
istream_withassign::operator=(istream &)
istream_withassign::operator=
#
--format=lucid --no-params
__as__3fooFR3foo
foo::operator=(foo &)
foo::operator=
#
--format=lucid --no-params
__as__3iosFR3ios
ios::operator=(ios &)
ios::operator=
#
--format=lucid --no-params
__cl__3fooFR3foo
foo::operator()(foo &)
foo::operator()
#
--format=lucid --no-params
__cm__3fooFR3foo
foo::operator, (foo &)
foo::operator, 
#
--format=lucid --no-params
__co__3fooFv
foo::operator~(void)
foo::operator~
#
--format=lucid --no-params
__ct__10istrstreamFPc
istrstream::istrstream(char *)
istrstream::istrstream
#
--format=lucid --no-params
__ct__10istrstreamFPci
istrstream::istrstream(char *, int)
istrstream::istrstream
#
--format=lucid --no-params
__ct__10ostrstreamFPciT2
ostrstream::ostrstream(char *, int, int)
ostrstream::ostrstream
#
--format=lucid --no-params
__ct__10ostrstreamFv
ostrstream::ostrstream(void)
ostrstream::ostrstream
#
--format=lucid --no-params
__ct__10smanip_intFPFR3iosi_R3iosi
smanip_int::smanip_int(ios &(*)(ios &, int), int)
smanip_int::smanip_int
#
--format=lucid --no-params
__ct__11fstreambaseFi
fstreambase::fstreambase(int)
fstreambase::fstreambase
#
--format=lucid --no-params
__ct__11fstreambaseFiPcT1
fstreambase::fstreambase(int, char *, int)
fstreambase::fstreambase
#
--format=lucid --no-params
__ct__11fstreambaseFv
fstreambase::fstreambase(void)
fstreambase::fstreambase
#
--format=lucid --no-params
__ct__11smanip_longFPFR3iosl_R3iosl
smanip_long::smanip_long(ios &(*)(ios &, long), long)
smanip_long::smanip_long
#
--format=lucid --no-params
__ct__11stdiostreamFP4FILE
stdiostream::stdiostream(FILE *)
stdiostream::stdiostream
#
--format=lucid --no-params
__ct__12strstreambufFPFl_PvPFPv_v
strstreambuf::strstreambuf(void *(*)(long), void (*)(void *))
strstreambuf::strstreambuf
#
--format=lucid --no-params
__ct__12strstreambufFPUciT1
strstreambuf::strstreambuf(unsigned char *, int, unsigned char *)
strstreambuf::strstreambuf
#
--format=lucid --no-params
__ct__12strstreambufFPciT1
strstreambuf::strstreambuf(char *, int, char *)
strstreambuf::strstreambuf
#
--format=lucid --no-params
__ct__12strstreambufFi
strstreambuf::strstreambuf(int)
strstreambuf::strstreambuf
#
--format=lucid --no-params
__ct__12strstreambufFv
strstreambuf::strstreambuf(void)
strstreambuf::strstreambuf
#
--format=lucid --no-params
__ct__13strstreambaseFPciT1
strstreambase::strstreambase(char *, int, char *)
strstreambase::strstreambase
#
--format=lucid --no-params
__ct__3fooFR3foo
foo::foo(foo &)
foo::foo
#
--format=lucid --no-params
__ct__3fooFi
foo::foo(int)
foo::foo
#
--format=lucid --no-params
__ct__3fooFiN31
foo::foo(int, int, int, int)
foo::foo
#
--format=lucid --no-params
__ct__3fooFiR3fooT1T2T1T2
foo::foo(int, foo &, int, foo &, int, foo &)
foo::foo
#
--format=lucid --no-params
__ct__3iosFP9streambuf
ios::ios(streambuf *)
ios::ios
#
--format=lucid --no-params
__ct__7filebufFiPcT1
filebuf::filebuf(int, char *, int)
filebuf::filebuf
#
--format=lucid --no-params
__ct__7fstreamFiPcT1
fstream::fstream(int, char *, int)
fstream::fstream
#
--format=lucid --no-params
__ct__7istreamFP9streambuf
istream::istream(streambuf *)
istream::istream
#
--format=lucid --no-params
__ct__7istreamFP9streambufiP7ostream
istream::istream(streambuf *, int, ostream *)
istream::istream
#
--format=lucid --no-params
__ct__7istreamFiPcT1
istream::istream(int, char *, int)
istream::istream
#
--format=lucid --no-params
__ct__7istreamFiT1P7ostream
istream::istream(int, int, ostream *)
istream::istream
#
--format=lucid --no-params
__ct__7ostreamFP9streambuf
ostream::ostream(streambuf *)
ostream::ostream
#
--format=lucid --no-params
__ct__7ostreamFiPc
ostream::ostream(int, char *)
ostream::ostream
#
--format=lucid --no-params
__ct__8ifstreamFiPcT1
ifstream::ifstream(int, char *, int)
ifstream::ifstream
#
--format=lucid --no-params
__ct__Q23foo3barFv
foo::bar::bar(void)
foo::bar::bar
#
--format=lucid --no-params
__ct__Q33foo3bar4bellFv
foo::bar::bell::bell(void)
foo::bar::bell::bell
#
--format=lucid --no-params
__dl__3fooSFPv
foo::operator delete(void *) static
foo::operator delete
#
--format=lucid --no-params
__dl__FPv
operator delete(void *)
operator delete
#
--format=lucid --no-params
__dt__10istrstreamFv
istrstream::~istrstream(void)
istrstream::~istrstream
#
--format=lucid --no-params
__dt__Q23foo3barFv
foo::bar::~bar(void)
foo::bar::~bar
#
--format=lucid --no-params
__dt__Q33foo3bar4bellFv
foo::bar::bell::~bell(void)
foo::bar::bell::~bell
#
--format=lucid --no-params
__dv__3fooFR3foo
foo::operator/(foo &)
foo::operator/
#
--format=lucid --no-params
__dv__F7complexT1
operator/(complex, complex)
operator/
#
--format=lucid --no-params
__eq__3fooFR3foo
foo::operator==(foo &)
foo::operator==
#
--format=lucid --no-params
__er__3fooFR3foo
foo::operator^(foo &)
foo::operator^
#
--format=lucid --no-params
__ge__3fooFR3foo
foo::operator>=(foo &)
foo::operator>=
#
--format=lucid --no-params
__gt__3fooFR3foo
foo::operator>(foo &)
foo::operator>
#
--format=lucid --no-params
__le__3fooFR3foo
foo::operator<=(foo &)
foo::operator<=
#
--format=lucid --no-params
__ls__3fooFR3foo
foo::operator<<(foo &)
foo::operator<<
#
--format=lucid --no-params
__ls__7ostreamFP9streambuf
ostream::operator<<(streambuf *)
ostream::operator<<
#
--format=lucid --no-params
__ls__7ostreamFPFR3ios_R3ios
ostream::operator<<(ios &(*)(ios &))
ostream::operator<<
#
--format=lucid --no-params
__ls__7ostreamFPv
ostream::operator<<(void *)
ostream::operator<<
#
--format=lucid --no-params
__ls__7ostreamFUi
ostream::operator<<(unsigned int)
ostream::operator<<
#
--format=lucid --no-params
__ls__7ostreamFUl
ostream::operator<<(unsigned long)
ostream::operator<<
#
--format=lucid --no-params
__ls__7ostreamFd
ostream::operator<<(double)
ostream::operator<<
#
--format=lucid --no-params
__ls__7ostreamFf
ostream::operator<<(float)
ostream::operator<<
#
--format=lucid --no-params
__ls__7ostreamFi
ostream::operator<<(int)
ostream::operator<<
#
--format=lucid --no-params
__ls__7ostreamFl
ostream::operator<<(long)
ostream::operator<<
#
--format=lucid --no-params
__ls__FR7ostream7complex
operator<<(ostream &, complex)
operator<<
#
--format=lucid --no-params
__lt__3fooFR3foo
foo::operator<(foo &)
foo::operator<
#
--format=lucid --no-params
__md__3fooFR3foo
foo::operator%(foo &)
foo::operator%
#
--format=lucid --no-params
__mi__3fooFR3foo
foo::operator-(foo &)
foo::operator-
#
--format=lucid --no-params
__ml__3fooFR3foo
foo::operator*(foo &)
foo::operator*
#
--format=lucid --no-params
__ml__F7complexT1
operator*(complex, complex)
operator*
#
--format=lucid --no-params
__mm__3fooFi
foo::operator--(int)
foo::operator--
#
--format=lucid --no-params
__ne__3fooFR3foo
foo::operator!=(foo &)
foo::operator!=
#
--format=lucid --no-params
__nt__3fooFv
foo::operator!(void)
foo::operator!
#
--format=lucid --no-params
__nw__3fooSFi
foo::operator new(int) static
foo::operator new
#
--format=lucid --no-params
__nw__FUi
operator new(unsigned int)
operator new
#
--format=lucid --no-params
__nw__FUiPv
operator new(unsigned int, void *)
operator new
#
--format=lucid --no-params
__oo__3fooFR3foo
foo::operator||(foo &)
foo::operator||
#
--format=lucid --no-params
__opPc__3fooFv
foo::operator char *(void)
foo::operator char *
#
--format=lucid --no-params
__opi__3fooFv
foo::operator int(void)
foo::operator int
#
--format=lucid --no-params
__or__3fooFR3foo
foo::operator|(foo &)
foo::operator|
#
--format=lucid --no-params
__pl__3fooFR3foo
foo::operator+(foo &)
foo::operator+
#
--format=lucid --no-params
__pp__3fooFi
foo::operator++(int)
foo::operator++
#
--format=lucid --no-params
__pt__3fooFv
foo::operator->(void)
foo::operator->
#
--format=lucid --no-params
__rm__3fooFR3foo
foo::operator->*(foo &)
foo::operator->*
#
--format=lucid --no-params
__rs__3fooFR3foo
foo::operator>>(foo &)
foo::operator>>
#
--format=lucid --no-params
__rs__7istreamFP9streambuf
istream::operator>>(streambuf *)
istream::operator>>
#
--format=lucid --no-params
__rs__7istreamFPFR3ios_R3ios
istream::operator>>(ios &(*)(ios &))
istream::operator>>
#
--format=lucid --no-params
__rs__7istreamFPFR7istream_R7istream
istream::operator>>(istream &(*)(istream &))
istream::operator>>
#
--format=lucid --no-params
__rs__7istreamFPUc
istream::operator>>(unsigned char *)
istream::operator>>
#
--format=lucid --no-params
__rs__7istreamFPc
istream::operator>>(char *)
istream::operator>>
#
--format=lucid --no-params
__rs__7istreamFRUi
istream::operator>>(unsigned int &)
istream::operator>>
#
--format=lucid --no-params
__rs__7istreamFRUl
istream::operator>>(unsigned long &)
istream::operator>>
#
--format=lucid --no-params
__rs__7istreamFRUs
istream::operator>>(unsigned short &)
istream::operator>>
#
--format=lucid --no-params
__rs__7istreamFRd
istream::operator>>(double &)
istream::operator>>
#
--format=lucid --no-params
__rs__7istreamFRf
istream::operator>>(float &)
istream::operator>>
#
--format=lucid --no-params
__rs__7istreamFRi
istream::operator>>(int &)
istream::operator>>
#
--format=lucid --no-params
__rs__7istreamFRl
istream::operator>>(long &)
istream::operator>>
#
--format=lucid --no-params
__rs__7istreamFRs
istream::operator>>(short &)
istream::operator>>
#
--format=lucid --no-params
__rs__FR7istreamR7complex
operator>>(istream &, complex &)
operator>>
#
--format=lucid --no-params
__vtbl__10istrstream
istrstream virtual table
istrstream virtual table
#
--format=lucid --no-params
__vtbl__17ostream__iostream__19iostream_withassign
iostream_withassign::ostream__iostream virtual table
iostream_withassign::ostream__iostream virtual table
#
--format=lucid --no-params
__vtbl__3ios
ios virtual table
ios virtual table
#
--format=lucid --no-params
__vtbl__3ios__13strstreambase
strstreambase::ios virtual table
strstreambase::ios virtual table
#
--format=lucid --no-params
abs__F7complex
abs(complex)
abs
#
--format=lucid --no-params
allocate__9streambufFv
streambuf::allocate(void)
streambuf::allocate
#
--format=lucid --no-params
attach__11fstreambaseFi
fstreambase::attach(int)
fstreambase::attach
#
--format=lucid --no-params
bitalloc__3iosSFv
ios::bitalloc(void) static
ios::bitalloc
#
--format=lucid --no-params
chr__FiT1
chr(int, int)
chr
#
--format=lucid --no-params
complex_error__FR11c_exception
complex_error(c_exception &)
complex_error
#
--format=lucid --no-params
complexfunc2__FPFPc_i
complexfunc2(int (*)(char *))
complexfunc2
#
--format=lucid --no-params
complexfunc3__FPFPFPl_s_i
complexfunc3(int (*)(short (*)(long *)))
complexfunc3
#
--format=lucid --no-params
complexfunc4__FPFPFPc_s_i
complexfunc4(int (*)(short (*)(char *)))
complexfunc4
#
--format=lucid --no-params
complexfunc5__FPFPc_PFl_i
complexfunc5(int (*(*)(char *))(long))
complexfunc5
#
--format=lucid --no-params
complexfunc6__FPFPi_PFl_i
complexfunc6(int (*(*)(int *))(long))
complexfunc6
#
--format=lucid --no-params
complexfunc7__FPFPFPc_i_PFl_i
complexfunc7(int (*(*)(int (*)(char *)))(long))
complexfunc7
#
--format=lucid --no-params
complicated_put__7ostreamFc
ostream::complicated_put(char)
ostream::complicated_put
#
--format=lucid --no-params
conv10__FlPc
conv10(long, char *)
conv10
#
--format=lucid --no-params
conv16__FUlPc
conv16(unsigned long, char *)
conv16
#
--format=lucid --no-params
dec__FR3ios
dec(ios &)
dec
#
--format=lucid --no-params
dec__Fli
dec(long, int)
dec
#
--format=lucid --no-params
dofield__FP7ostreamPciT2T3
dofield(ostream *, char *, int, char *, int)
dofield
#
--format=lucid --no-params
flags__3iosFl
ios::flags(long)
ios::flags
#
--format=lucid --no-params
flags__3iosFv
ios::flags(void)
ios::flags
#
--format=lucid --no-params
foo__FiN31
foo(int, int, int, int)
foo
#
--format=lucid --no-params
foo__FiR3fooT1T2T1T2
foo(int, foo &, int, foo &, int, foo &)
foo
#
--format=lucid --no-params
foo___3barFl
bar::foo_(long)
bar::foo_
#
--format=lucid --no-params
get__7istreamFPcic
istream::get(char *, int, char)
istream::get
#
--format=lucid --no-params
get__7istreamFR9streambufc
istream::get(streambuf &, char)
istream::get
#
--format=lucid --no-params
get_complicated__7istreamFRUc
istream::get_complicated(unsigned char &)
istream::get_complicated
#
--format=lucid --no-params
get_complicated__7istreamFRc
istream::get_complicated(char &)
istream::get_complicated
#
--format=lucid --no-params
getline__7istreamFPUcic
istream::getline(unsigned char *, int, char)
istream::getline
#
--format=lucid --no-params
getline__7istreamFPcic
istream::getline(char *, int, char)
istream::getline
#
--format=lucid --no-params
ignore__7istreamFiT1
istream::ignore(int, int)
istream::ignore
#
--format=lucid --no-params
init__12strstreambufFPciT1
strstreambuf::init(char *, int, char *)
strstreambuf::init
#
--format=lucid --no-params
init__3iosFP9streambuf
ios::init(streambuf *)
ios::init
#
--format=lucid --no-params
initcount__13Iostream_init
Iostream_init::initcount
Iostream_init::initcount
#
--format=lucid --no-params
ipfx__7istreamFi
istream::ipfx(int)
istream::ipfx
#
--format=lucid --no-params
ls_complicated__7ostreamFUc
ostream::ls_complicated(unsigned char)
ostream::ls_complicated
#
--format=lucid --no-params
ls_complicated__7ostreamFc
ostream::ls_complicated(char)
ostream::ls_complicated
#
--format=lucid --no-params
overload1arg__FSc
overload1arg(signed char)
overload1arg
#
--format=lucid --no-params
overload1arg__FUc
overload1arg(unsigned char)
overload1arg
#
--format=lucid --no-params
overload1arg__FUi
overload1arg(unsigned int)
overload1arg
#
--format=lucid --no-params
overload1arg__FUl
overload1arg(unsigned long)
overload1arg
#
--format=lucid --no-params
overload1arg__FUs
overload1arg(unsigned short)
overload1arg
#
--format=lucid --no-params
overload1arg__Fc
overload1arg(char)
overload1arg
#
--format=lucid --no-params
overload1arg__Fd
overload1arg(double)
overload1arg
#
--format=lucid --no-params
overload1arg__Ff
overload1arg(float)
overload1arg
#
--format=lucid --no-params
overload1arg__Fi
overload1arg(int)
overload1arg
#
--format=lucid --no-params
overload1arg__Fl
overload1arg(long)
overload1arg
#
--format=lucid --no-params
overload1arg__Fs
overload1arg(short)
overload1arg
#
--format=lucid --no-params
overload1arg__Fv
overload1arg(void)
overload1arg
#
--format=lucid --no-params
overloadargs__FiN21
overloadargs(int, int, int)
overloadargs
#
--format=lucid --no-params
overloadargs__FiN31
overloadargs(int, int, int, int)
overloadargs
#
--format=lucid --no-params
overloadargs__FiN41
overloadargs(int, int, int, int, int)
overloadargs
#
--format=lucid --no-params
overloadargs__FiN51
overloadargs(int, int, int, int, int, int)
overloadargs
#
--format=lucid --no-params
overloadargs__FiN61
overloadargs(int, int, int, int, int, int, int)
overloadargs
#
--format=lucid --no-params
overloadargs__FiN71
overloadargs(int, int, int, int, int, int, int, int)
overloadargs
#
--format=lucid --no-params
overloadargs__FiN81
overloadargs(int, int, int, int, int, int, int, int, int)
overloadargs
#
--format=lucid --no-params
overloadargs__FiN91
overloadargs(int, int, int, int, int, int, int, int, int, int)
overloadargs
#
--format=lucid --no-params
overloadargs__FiN91N11
overloadargs(int, int, int, int, int, int, int, int, int, int, int)
overloadargs
#
--format=lucid --no-params
overloadargs__FiT1
overloadargs(int, int)
overloadargs
#
--format=lucid --no-params
polar__FdT1
polar(double, double)
polar
#
--format=lucid --no-params
pow__F7complexT1
pow(complex, complex)
pow
#
--format=lucid --no-params
pow__F7complexd
pow(complex, double)
pow
#
--format=lucid --no-params
pow__F7complexi
pow(complex, int)
pow
#
--format=lucid --no-params
pow__Fd7complex
pow(double, complex)
pow
#
--format=lucid --no-params
pstart__FPciT2
pstart(char *, int, int)
pstart
#
--format=lucid --no-params
put__7ostreamFc
ostream::put(char)
ostream::put
#
--format=lucid --no-params
read__7istreamFPci
istream::read(char *, int)
istream::read
#
--format=lucid --no-params
resetiosflags__FR3iosl
resetiosflags(ios &, long)
resetiosflags
#
--format=lucid --no-params
restore_errno__FRi
restore_errno(int &)
restore_errno
#
--format=lucid --no-params
rs_complicated__7istreamFRUc
istream::rs_complicated(unsigned char &)
istream::rs_complicated
#
--format=lucid --no-params
rs_complicated__7istreamFRc
istream::rs_complicated(char &)
istream::rs_complicated
#
--format=lucid --no-params
seekg__7istreamFl8seek_dir
istream::seekg(long, seek_dir)
istream::seekg
#
--format=lucid --no-params
seekoff__12strstreambufFl8seek_diri
strstreambuf::seekoff(long, seek_dir, int)
strstreambuf::seekoff
#
--format=lucid --no-params
seekoff__9streambufFlQ2_3ios12ios_seek_diri
streambuf::seekoff(long, ios::ios_seek_dir, int)
streambuf::seekoff
#
--format=lucid --no-params
seekpos__9streambufFli
streambuf::seekpos(long, int)
streambuf::seekpos
#
--format=lucid --no-params
set_new_handler__FPFv_v
set_new_handler(void (*)(void))
set_new_handler
#
--format=lucid --no-params
setb__9streambufFPcT1i
streambuf::setb(char *, char *, int)
streambuf::setb
#
--format=lucid --no-params
setb__FR3iosi
setb(ios &, int)
setb
#
--format=lucid --no-params
setbuf__11fstreambaseFPci
fstreambase::setbuf(char *, int)
fstreambase::setbuf
#
--format=lucid --no-params
setbuf__9streambufFPUci
streambuf::setbuf(unsigned char *, int)
streambuf::setbuf
#
--format=lucid --no-params
setbuf__9streambufFPciT2
streambuf::setbuf(char *, int, int)
streambuf::setbuf
#
--format=lucid --no-params
setf__3iosFlT1
ios::setf(long, long)
ios::setf
#
--format=lucid --no-params
setfill__FR3iosi
setfill(ios &, int)
setfill
#
--format=lucid --no-params
setg__9streambufFPcN21
streambuf::setg(char *, char *, char *)
streambuf::setg
#
--format=lucid --no-params
setp__9streambufFPcT1
streambuf::setp(char *, char *)
streambuf::setp
#
--format=lucid --no-params
tie__3iosFP7ostream
ios::tie(ostream *)
ios::tie
#
--format=lucid --no-params
uconv10__FUlPc
uconv10(unsigned long, char *)
uconv10
#
--format=lucid --no-params
xget__7istreamFPc
istream::xget(char *)
istream::xget
#
--format=lucid --no-params
xsgetn__9streambufFPci
streambuf::xsgetn(char *, int)
streambuf::xsgetn
#
--format=arm --no-params
__dt__21T5__pt__11_PFiPPdPv_iFv
T5<int (*)(int, double **, void *)>::~T5(void)
T5<int (*)(int, double **, void *)>::~T5
#
--format=arm --no-params
__ct__1cFi
c::c(int)
c::c
#
--format=arm --no-params
__dt__11T5__pt__2_iFv
T5<int>::~T5(void)
T5<int>::~T5
#
--format=arm --no-params
__dt__11T5__pt__2_cFv
T5<char>::~T5(void)
T5<char>::~T5
#
--format=arm --no-params
__ct__2T2Fi
T2::T2(int)
T2::T2
#
--format=arm --no-params
__dt__2T1Fv
T1::~T1(void)
T1::~T1
#
--format=arm --no-params
__dt__12T5__pt__3_1xFv
T5<x>::~T5(void)
T5<x>::~T5
#
--format=arm --no-params
__dt__17T5__pt__8_PFcPv_iFv
T5<int (*)(char, void *)>::~T5(void)
T5<int (*)(char, void *)>::~T5
#
--format=arm --no-params
__ct__21T5__pt__11_PFiPPdPv_iFi
T5<int (*)(int, double **, void *)>::T5(int)
T5<int (*)(int, double **, void *)>::T5
#
--format=arm --no-params
__amd__FR2T2i
operator%=(T2 &, int)
operator%=
#
--format=arm --no-params
__adv__FR2T2i
operator/=(T2 &, int)
operator/=
#
--format=arm --no-params
__amu__FR2T2i
operator*=(T2 &, int)
operator*=
#
--format=arm --no-params
__ami__FR2T2i
operator-=(T2 &, int)
operator-=
#
--format=arm --no-params
__apl__FR2T2i
operator+=(T2 &, int)
operator+=
#
--format=arm --no-params
__nw__2T1SFUi
T1::operator new(unsigned int) static
T1::operator new
#
--format=arm --no-params
__dl__2T1SFPv
T1::operator delete(void *) static
T1::operator delete
#
--format=arm --no-params
put__2T7SFi
T7::put(int) static
T7::put
#
--format=arm --no-params
__dl__12T5__pt__3_1xSFPv
T5<x>::operator delete(void *) static
T5<x>::operator delete
#
--format=arm --no-params
h__FUc
h(unsigned char)
h
#
--format=arm --no-params
f__Fic
f(int, char)
f
#
--format=arm --no-params
h__FUi
h(unsigned int)
h
#
--format=arm --no-params
h__Fci
h(char, int)
h
#
--format=arm --no-params
h__FUl
h(unsigned long)
h
#
--format=arm --no-params
h__Fcl
h(char, long)
h
#
--format=arm --no-params
h__FUs
h(unsigned short)
h
#
--format=arm --no-params
h__Fcs
h(char, short)
h
#
--format=arm --no-params
X__12T5__pt__3_1x
T5<x>::X
T5<x>::X
#
--format=arm --no-params
__ct__11T5__pt__2_iFi
T5<int>::T5(int)
T5<int>::T5
#
--format=arm --no-params
__ct__11T5__pt__2_cFi
T5<char>::T5(int)
T5<char>::T5
#
--format=arm --no-params
h__FcT1
h(char, char)
h
#
--format=arm --no-params
f__Ficd
f(int, char, double)
f
#
--format=arm --no-params
__dl__17T5__pt__8_PFcPv_iSFPv
T5<int (*)(char, void *)>::operator delete(void *) static
T5<int (*)(char, void *)>::operator delete
#
--format=arm --no-params
X__17T5__pt__8_PFcPv_i
T5<int (*)(char, void *)>::X
T5<int (*)(char, void *)>::X
#
--format=arm --no-params
__ct__12T5__pt__3_1xFi
T5<x>::T5(int)
T5<x>::T5
#
--format=arm --no-params
__dl__21T5__pt__11_PFiPPdPv_iSFPv
T5<int (*)(int, double **, void *)>::operator delete(void *) static
T5<int (*)(int, double **, void *)>::operator delete
#
--format=arm --no-params
__std__foo
global destructors keyed to foo
global destructors keyed to foo
#
--format=arm --no-params
__sti__bar
global constructors keyed to bar
global constructors keyed to bar
#
--format=arm --no-params
f__FicdPcPFci_v
f(int, char, double, char *, void (*)(char, int))
f
#
--format=arm --no-params
f__FicdPcPFic_v
f(int, char, double, char *, void (*)(int, char))
f
#
--format=arm --no-params
get__2T7SFv
T7::get(void) static
T7::get
#
--format=arm --no-params
X__21T5__pt__11_PFiPPdPv_i
T5<int (*)(int, double **, void *)>::X
T5<int (*)(int, double **, void *)>::X
#
--format=arm --no-params
__dl__11T5__pt__2_iSFPv
T5<int>::operator delete(void *) static
T5<int>::operator delete
#
--format=arm --no-params
__dl__11T5__pt__2_cSFPv
T5<char>::operator delete(void *) static
T5<char>::operator delete
#
--format=arm --no-params
h__Fc
h(char)
h
#
--format=arm --no-params
h__Fd
h(double)
h
#
--format=arm --no-params
h__Ff
h(float)
h
#
--format=arm --no-params
h__Fi
h(int)
h
#
--format=arm --no-params
f__Fi
f(int)
f
#
--format=arm --no-params
h__Fl
h(long)
h
#
--format=arm --no-params
h__Fs
h(short)
h
#
--format=arm --no-params
X__11T5__pt__2_c
T5<char>::X
T5<char>::X
#
--format=arm --no-params
X__11T5__pt__2_i
T5<int>::X
T5<int>::X
#
--format=arm --no-params
__ct__17T5__pt__8_PFcPv_iFi
T5<int (*)(char, void *)>::T5(int)
T5<int (*)(char, void *)>::T5
#
--format=arm --no-params
f__FicdPc
f(int, char, double, char *)
f
#
--format=arm --no-params
__nw__FUi
operator new(unsigned int)
operator new
#
--format=arm --no-params
__ct__Q3_2T11a1bSFi
T1::a::b::b(int) static
T1::a::b::b
#
--format=arm --no-params
__dt__Q3_2T11a1bSFi
T1::a::b::~b(int) static
T1::a::b::~b
#
--format=arm --no-params
put__Q3_2T11a1bSFi
T1::a::b::put(int) static
T1::a::b::put
#
--format=arm --no-params
get__Q2_2T11aSFv
T1::a::get(void) static
T1::a::get
#
--format=arm --no-params
put__2T1SFi
T1::put(int) static
T1::put
#
--format=arm --no-params
put__Q5_2T11a1b1c1dSFi
T1::a::b::c::d::put(int) static
T1::a::b::c::d::put
#
--format=arm --no-params
get__Q4_2T11a1b1cSFv
T1::a::b::c::get(void) static
T1::a::b::c::get
#
--format=arm --no-params
put__Q2_2T11aSFi
T1::a::put(int) static
T1::a::put
#
--format=arm --no-params
put__Q4_2T11a1b1cSFi
T1::a::b::c::put(int) static
T1::a::b::c::put
#
--format=arm --no-params
get__Q3_2T11a1bSFv
T1::a::b::get(void) static
T1::a::b::get
#
--format=arm --no-params
get__2T1SFv
T1::get(void) static
T1::get
#
--format=arm --no-params
get__Q5_2T11a1b1c1dSFv
T1::a::b::c::d::get(void) static
T1::a::b::c::d::get
#
--format=arm --no-params
__dt__11T1__pt__2_cFv
T1<char>::~T1(void)
T1<char>::~T1
#
--format=arm --no-params
__dt__12T1__pt__3_1tFv
T1<t>::~T1(void)
T1<t>::~T1
#
--format=arm --no-params
__dl__12T1__pt__3_1tSFPv
T1<t>::operator delete(void *) static
T1<t>::operator delete
#
--format=arm --no-params
__ct__11T1__pt__2_cFi
T1<char>::T1(int)
T1<char>::T1
#
--format=arm --no-params
__ct__11T1__pt__2_cFv
T1<char>::T1(void)
T1<char>::T1
#
--format=arm --no-params
__ct__12T1__pt__3_1tFi
T1<t>::T1(int)
T1<t>::T1
#
--format=arm --no-params
__ct__12T1__pt__3_1tFv
T1<t>::T1(void)
T1<t>::T1
#
--format=arm --no-params
__dl__11T1__pt__2_cSFPv
T1<char>::operator delete(void *) static
T1<char>::operator delete
#
--format=arm --no-params
bar__3fooFPv
foo::bar(void *)
foo::bar
#
--format=arm --no-params
bar__3fooCFPv
foo::bar(void *) const
foo::bar
#
--format=arm --no-params
__eq__3fooFR3foo
foo::operator==(foo &)
foo::operator==
#
--format=arm --no-params
__eq__3fooCFR3foo
foo::operator==(foo &) const
foo::operator==
#
--format=arm --no-params
elem__15vector__pt__2_dFi
vector<double>::elem(int)
vector<double>::elem
#
--format=arm --no-params
elem__15vector__pt__2_iFi
vector<int>::elem(int)
vector<int>::elem
#
--format=arm --no-params
__ct__15vector__pt__2_dFi
vector<double>::vector(int)
vector<double>::vector
#
--format=arm --no-params
__ct__15vector__pt__2_iFi
vector<int>::vector(int)
vector<int>::vector
#
--format=arm --no-params
__ct__25DListNode__pt__9_R6RLabelFR6RLabelP25DListNode__pt__9_R6RLabelT2
DListNode<RLabel &>::DListNode(RLabel &, DListNode<RLabel &> *, DListNode<RLabel &> *)
DListNode<RLabel &>::DListNode
#
--format=arm --no-params
bar__3fooFiT16FooBar
foo::bar(int, int, FooBar)
foo::bar
#
--format=arm --no-params
bar__3fooFPiN51PdN37PcN211T1iN215
foo::bar(int *, int *, int *, int *, int *, int *, double *, double *, double *, double *, char *, char *, char *, int *, int, int, int)
foo::bar
#
--format=hp --no-params
__amd__FR2T2i
operator%=(T2 &, int)
operator%=
#
--format=hp --no-params
__adv__FR2T2i
operator/=(T2 &, int)
operator/=
#
--format=hp --no-params
__amu__FR2T2i
operator*=(T2 &, int)
operator*=
#
--format=hp --no-params
__ami__FR2T2i
operator-=(T2 &, int)
operator-=
#
--format=hp --no-params
__apl__FR2T2i
operator+=(T2 &, int)
operator+=
#
--format=hp --no-params
__nw__2T1SFUi
T1::operator new(unsigned int) static
T1::operator new
#
--format=hp --no-params
__dl__2T1SFPv
T1::operator delete(void *) static
T1::operator delete
#
--format=hp --no-params
put__2T7SFi
T7::put(int) static
T7::put
#
--format=hp --no-params
h__FUc
h(unsigned char)
h
#
--format=hp --no-params
f__Fic
f(int, char)
f
#
--format=hp --no-params
h__FUi
h(unsigned int)
h
#
--format=hp --no-params
h__Fci
h(char, int)
h
#
--format=hp --no-params
h__FUl
h(unsigned long)
h
#
--format=hp --no-params
h__Fcl
h(char, long)
h
#
--format=hp --no-params
h__FUs
h(unsigned short)
h
#
--format=hp --no-params
h__Fcs
h(char, short)
h
#
--format=hp --no-params
h__FcT1
h(char, char)
h
#
--format=hp --no-params
f__Ficd
f(int, char, double)
f
#
--format=hp --no-params
f__FicdPcPFci_v
f(int, char, double, char *, void (*)(char, int))
f
#
--format=hp --no-params
f__FicdPcPFic_v
f(int, char, double, char *, void (*)(int, char))
f
#
--format=hp --no-params
get__2T7SFv
T7::get(void) static
T7::get
#
--format=hp --no-params
h__Fc
h(char)
h
#
--format=hp --no-params
h__Fd
h(double)
h
#
--format=hp --no-params
h__Ff
h(float)
h
#
--format=hp --no-params
h__Fi
h(int)
h
#
--format=hp --no-params
f__Fi
f(int)
f
#
--format=hp --no-params
h__Fl
h(long)
h
#
--format=hp --no-params
h__Fs
h(short)
h
#
--format=hp --no-params
f__FicdPc
f(int, char, double, char *)
f
#
--format=hp --no-params
__nw__FUi
operator new(unsigned int)
operator new
#
--format=hp --no-params
__ct__Q3_2T11a1bSFi
T1::a::b::b(int) static
T1::a::b::b
#
--format=hp --no-params
__dt__Q3_2T11a1bSFi
T1::a::b::~b(int) static
T1::a::b::~b
#
--format=hp --no-params
put__Q3_2T11a1bSFi
T1::a::b::put(int) static
T1::a::b::put
#
--format=hp --no-params
get__Q2_2T11aSFv
T1::a::get(void) static
T1::a::get
#
--format=hp --no-params
put__2T1SFi
T1::put(int) static
T1::put
#
--format=hp --no-params
put__Q5_2T11a1b1c1dSFi
T1::a::b::c::d::put(int) static
T1::a::b::c::d::put
#
--format=hp --no-params
get__Q4_2T11a1b1cSFv
T1::a::b::c::get(void) static
T1::a::b::c::get
#
--format=hp --no-params
put__Q2_2T11aSFi
T1::a::put(int) static
T1::a::put
#
--format=hp --no-params
put__Q4_2T11a1b1cSFi
T1::a::b::c::put(int) static
T1::a::b::c::put
#
--format=hp --no-params
get__Q3_2T11a1bSFv
T1::a::b::get(void) static
T1::a::b::get
#
--format=hp --no-params
get__2T1SFv
T1::get(void) static
T1::get
#
--format=hp --no-params
get__Q5_2T11a1b1c1dSFv
T1::a::b::c::d::get(void) static
T1::a::b::c::d::get
#
--format=hp --no-params
bar__3fooFPv
foo::bar(void *)
foo::bar
#
--format=hp --no-params
bar__3fooCFPv
foo::bar(void *) const
foo::bar
#
--format=hp --no-params
__eq__3fooFR3foo
foo::operator==(foo &)
foo::operator==
#
--format=hp --no-params
__eq__3fooCFR3foo
foo::operator==(foo &) const
foo::operator==
#
--format=hp --no-params
bar__3fooFiT16FooBar
foo::bar(int, int, FooBar)
foo::bar
#
--format=hp --no-params
bar__3fooFPiN51PdN37PcN211T1iN215
foo::bar(int *, int *, int *, int *, int *, int *, double *, double *, double *, double *, char *, char *, char *, int *, int, int, int)
foo::bar
#
--format=hp --no-params
__dt__2T5XTPFiPPdPv_i__Fv
T5<int (*)(int, double **, void *)>::~T5(void)
T5<int (*)(int, double **, void *)>::~T5
#
--format=hp --no-params
__ct__1cFi
c::c(int)
c::c
#
--format=hp --no-params
__dt__2T5XTi__Fv
T5<int>::~T5(void)
T5<int>::~T5
#
--format=hp --no-params
__dt__2T5XTc__Fv
T5<char>::~T5(void)
T5<char>::~T5
#
--format=hp --no-params
__ct__2T2Fi
T2::T2(int)
T2::T2
#
--format=hp --no-params
__dt__2T1Fv
T1::~T1(void)
T1::~T1
#
--format=hp --no-params
__dt__2T5XT1x__Fv
T5<x>::~T5(void)
T5<x>::~T5
#
--format=hp --no-params
__dt__2T5XTPFcPv_i__Fv
T5<int (*)(char, void *)>::~T5(void)
T5<int (*)(char, void *)>::~T5
#
--format=hp --no-params
__ct__2T5XTPFiPPdPv_i__Fi
T5<int (*)(int, double **, void *)>::T5(int)
T5<int (*)(int, double **, void *)>::T5
#
--format=hp --no-params
__dl__2T5XT1x__SFPv
T5<x>::operator delete(void *) static
T5<x>::operator delete
#
--format=hp --no-params
X__2T5XT1x
T5<x>::X
T5<x>::X
#
--format=hp --no-params
__ct__2T5XTi__Fi
T5<int>::T5(int)
T5<int>::T5
#
--format=hp --no-params
__ct__2T5XTc__Fi
T5<char>::T5(int)
T5<char>::T5
#
--format=hp --no-params
__dl__2T5XTPFcPv_i__SFPv
T5<int (*)(char, void *)>::operator delete(void *) static
T5<int (*)(char, void *)>::operator delete
#
--format=hp --no-params
X__2T5XTPFcPv_i
T5<int (*)(char, void *)>::X
T5<int (*)(char, void *)>::X
#
--format=hp --no-params
__ct__2T5XT1x__Fi
T5<x>::T5(int)
T5<x>::T5
#
--format=hp --no-params
__dl__2T5XTPFiPPdPv_i__SFPv
T5<int (*)(int, double **, void *)>::operator delete(void *) static
T5<int (*)(int, double **, void *)>::operator delete
#
--format=hp --no-params
X__2T5XTPFiPPdPv_i
T5<int (*)(int, double **, void *)>::X
T5<int (*)(int, double **, void *)>::X
#
--format=hp --no-params
__dl__2T5XTi__SFPv
T5<int>::operator delete(void *) static
T5<int>::operator delete
#
--format=hp --no-params
__dl__2T5XTc__SFPv
T5<char>::operator delete(void *) static
T5<char>::operator delete
#
--format=hp --no-params
X__2T5XTc
T5<char>::X
T5<char>::X
#
--format=hp --no-params
X__2T5XTi
T5<int>::X
T5<int>::X
#
--format=hp --no-params
__ct__2T5XTPFcPv_i__Fi
T5<int (*)(char, void *)>::T5(int)
T5<int (*)(char, void *)>::T5
#
--format=hp --no-params
__dt__2T1XTc__Fv
T1<char>::~T1(void)
T1<char>::~T1
#
--format=hp --no-params
__dt__2T1XT1t__Fv
T1<t>::~T1(void)
T1<t>::~T1
#
--format=hp --no-params
__dl__2T1XT1t__SFPv
T1<t>::operator delete(void *) static
T1<t>::operator delete
#
--format=hp --no-params
__ct__2T1XTc__Fi
T1<char>::T1(int)
T1<char>::T1
#
--format=hp --no-params
__ct__2T1XTc__Fv
T1<char>::T1(void)
T1<char>::T1
#
--format=hp --no-params
__ct__2T1XT1t__Fi
T1<t>::T1(int)
T1<t>::T1
#
--format=hp --no-params
__ct__2T1XT1t__Fv
T1<t>::T1(void)
T1<t>::T1
#
--format=hp --no-params
__dl__2T1XTc__SFPv
T1<char>::operator delete(void *) static
T1<char>::operator delete
#
--format=hp --no-params
elem__6vectorXTd__Fi
vector<double>::elem(int)
vector<double>::elem
#
--format=hp --no-params
elem__6vectorXTi__Fi
vector<int>::elem(int)
vector<int>::elem
#
--format=hp --no-params
__ct__6vectorXTd__Fi
vector<double>::vector(int)
vector<double>::vector
#
--format=hp --no-params
__ct__6vectorXTi__Fi
vector<int>::vector(int)
vector<int>::vector
#
--format=hp --no-params
__ct__9DListNodeXTR6RLabel__FR6RLabelP9DListNodeXTR6RLabel_T2
DListNode<RLabel &>::DListNode(RLabel &, DListNode<RLabel &> *, DListNode<RLabel &> *)
DListNode<RLabel &>::DListNode
#
--format=hp --no-params
elem__6vectorXTiUP34__Fi
vector<int,34U>::elem(int)
vector<int,34U>::elem
#
--format=hp --no-params
elem__6vectorXUP2701Td__Fi
vector<2701U,double>::elem(int)
vector<2701U,double>::elem
#
--format=hp --no-params
elem__6vectorXTiSP334__Fi
vector<int,334>::elem(int)
vector<int,334>::elem
#
--format=hp --no-params
elem__6vectorXTiSN67__Fi
vector<int,-67>::elem(int)
vector<int,-67>::elem
#
--format=hp --no-params
elem__6vectorXTiSM__SCFPPd
vector<int,-2147483648>::elem(double **) static const
vector<int,-2147483648>::elem
#
--format=hp --no-params
elem__6vectorXTiSN67UP4000TRs__Fi
vector<int,-67,4000U,short &>::elem(int)
vector<int,-67,4000U,short &>::elem
#
--format=hp --no-params
elem__6vectorXTiSN67TRdTFPv_i__Fi
vector<int,-67,double &,int (void *)>::elem(int)
vector<int,-67,double &,int (void *)>::elem
#
--format=hp --no-params
X__6vectorXTiSN67TdTPvUP5TRs
vector<int,-67,double,void *,5U,short &>::X
vector<int,-67,double,void *,5U,short &>::X
#
--format=hp --no-params
elem__6vectorXTiA3foo__Fi
vector<int,&foo>::elem(int)
vector<int,&foo>::elem
#
--format=hp --no-params
elem__6vectorXTiA3fooTPvA5Label__FiPPvT2
vector<int,&foo,void *,&Label>::elem(int, void **, void **)
vector<int,&foo,void *,&Label>::elem
#
--format=hp --no-params
elem__6vectorXTiSN42A3foo__Fi
vector<int,-42,&foo>::elem(int)
vector<int,-42,&foo>::elem
#
--format=hp --no-params
__ct__2T5XTPFcPv_i__Fi_2
T5<int (*)(char, void *)>::T5(int)
T5<int (*)(char, void *)>::T5
#
--format=hp --no-params
__ct__2T5XTPFcPv_i__Fi_19
T5<int (*)(char, void *)>::T5(int)
T5<int (*)(char, void *)>::T5
#
--format=hp --no-params
f__FicdPcPFci_v_34
f(int, char, double, char *, void (*)(char, int))
f
#
--format=hp --no-params
spec__13Spec<#1,#1.*>XTiTPi_FPi
Spec<int,int *>::spec(int *)
Spec<int,int *>::spec
#
--format=hp --no-params
spec__16Spec<#1,#1.&,#1>XTiTRiTi_FPi
Spec<int,int &,int>::spec(int *)
Spec<int,int &,int>::spec
#
--format=hp --no-params
add__XTc_FcT1
add<char>(char, char)
add<char>
#
--format=hp --no-params
add__XTcSP9A5label_FcPPlT1
add<char,9,&label>(char, long **, char)
add<char,9,&label>
#
--format=hp --no-params
add__XTPfTFPd_f_FcT1
add<float *,float (double *)>(char, char)
add<float *,float (double *)>
#
--format=hp --no-params
unLink__12basic_stringXTcT18string_char_traitsXTc_T9allocator_Fv
basic_string<char,string_char_traits<char>,allocator>::unLink(void)
basic_string<char,string_char_traits<char>,allocator>::unLink
#
# A regression test with no args.  This used to cause a segv.

_Utf390_1__1_9223372036854775807__9223372036854775
_Utf390_1__1_9223372036854775807__9223372036854775
#
--format=gnu --no-params
call__H1Z4Test_RX01_t1C2ZX01PMX01FPX01i_vQ2X016output
C<Test, Test::output> call<Test>(Test &)
C<Test, Test::output> call<Test>
#
--format=gnu --no-params
fn__FPQ21n1cPMQ21n1cFPQ21n1c_i
fn(n::c *, int (n::c::*)(n::c *))
fn
#
--format=gnu --no-params
f__FGt3Bar1i2G1i
f(Bar<2>, i)
f
#
--format=gnu --no-params
f__FGt3Bar1i21i
f(Bar<21>, int)
f
#
--format=gnu --no-params
f__FGt3Bar1i2G4XY_t
f(Bar<2>, XY_t)
f
#
--format=gnu --no-params
foo__H1Zt2TA2ZRCiZt2NA1Ui9_X01_i
int foo<TA<int const &, NA<9> > >(TA<int const &, NA<9> >)
int foo<TA<int const &, NA<9> > >
#
--format=gnu --no-params
foo__H1Zt2TA2ZcZt2NA1Ui20_X01_i
int foo<TA<char, NA<20> > >(TA<char, NA<20> >)
int foo<TA<char, NA<20> > >
#
--format=gnu --no-params
foo__H1Zt2TA2ZiZt8N___A___1Ui99_X01_i
int foo<TA<int, N___A___<99> > >(TA<int, N___A___<99> >)
int foo<TA<int, N___A___<99> > >
#
--format=gnu --no-params
foo__H1Zt2TA2ZRCiZt2NA1im1_X01_i
int foo<TA<int const &, NA<-1> > >(TA<int const &, NA<-1> >)
int foo<TA<int const &, NA<-1> > >
#
--format=gnu --no-params
foo__H1Zt2TA2ZRCiZt2NA1im9_X01_i
int foo<TA<int const &, NA<-9> > >(TA<int const &, NA<-9> >)
int foo<TA<int const &, NA<-9> > >
#
--format=gnu --no-params
foo__H1Zt2TA2ZcZt2NA1i_m20__X01_i
int foo<TA<char, NA<-20> > >(TA<char, NA<-20> >)
int foo<TA<char, NA<-20> > >
#
--format=gnu --no-params
foo__H1Zt2TA2ZcZt2NA1im1_X01_i
int foo<TA<char, NA<-1> > >(TA<char, NA<-1> >)
int foo<TA<char, NA<-1> > >
#
--format=gnu --no-params
foo__H1Zt2TA2ZiZt4N__A1im9_X01_i
int foo<TA<int, N__A<-9> > >(TA<int, N__A<-9> >)
int foo<TA<int, N__A<-9> > >
#
--format=gnu --no-params
foo__H1Zt2TA2ZiZt4N__A1i_m99__X01_i
int foo<TA<int, N__A<-99> > >(TA<int, N__A<-99> >)
int foo<TA<int, N__A<-99> > >
#
--format=gnu --no-params
__opi__t2TA2ZiZt4N__A1i9
TA<int, N__A<9> >::operator int(void)
TA<int, N__A<9> >::operator int
#
--format=gnu --no-params
__opi__t2TA2ZiZt8N___A___1i_m99_
TA<int, N___A___<-99> >::operator int(void)
TA<int, N___A___<-99> >::operator int
#
--format=gnu --no-params
foo___bar__baz_____H1Zt2TA2ZiZt8N___A___1i99_X01_i
int foo___bar__baz___<TA<int, N___A___<99> > >(TA<int, N___A___<99> >)
int foo___bar__baz___<TA<int, N___A___<99> > >
#
--format=gnu --no-params
foo__bar___foobar_____t2TA2ZiZt8N___A___1i_m99_
TA<int, N___A___<-99> >::foo__bar___foobar___(void)
TA<int, N___A___<-99> >::foo__bar___foobar___
#
--format=gnu --no-params
foo__bar___foobar_____t2TA2ZiZt4N__A1i9
TA<int, N__A<9> >::foo__bar___foobar___(void)
TA<int, N__A<9> >::foo__bar___foobar___
#
--format=gnu --no-params
__tfP8sockaddr
sockaddr * type_info function
sockaddr * type_info function
#
--format=gnu --no-params
__tfPQ25libcwt16option_event_tct1Z12burst_app_ct
libcw::option_event_tct<burst_app_ct> * type_info function
libcw::option_event_tct<burst_app_ct> * type_info function
#
--format=gnu --no-params
__tiP8sockaddr
sockaddr * type_info node
sockaddr * type_info node
#
--format=gnu --no-params
__tiPQ25libcwt16option_event_tct1Z12burst_app_ct
libcw::option_event_tct<burst_app_ct> * type_info node
libcw::option_event_tct<burst_app_ct> * type_info node
#
--format=gnu --no-params
_27_GLOBAL_.N.__12burst_app_ct.app_instance
{anonymous}::app_instance
{anonymous}::app_instance
#
--format=gnu --no-params
_26_GLOBAL_$N$_tmp_n.iilg4Gya$app_instance
{anonymous}::app_instance
{anonymous}::app_instance
#
--format=gnu-v3 --no-params
_Z3fo5n
fo5(__int128)
fo5
#
--format=gnu-v3 --no-params
_Z3fo5o
fo5(unsigned __int128)
fo5
#
--format=java
_ZN4java3awt10ScrollPane7addImplEPNS0_9ComponentEPNS_4lang6ObjectEi
java.awt.ScrollPane.addImpl(java.awt.Component, java.lang.Object, int)
#
--format=java
_ZN4java3awt4geom15AffineTransform9getMatrixEP6JArrayIdE
java.awt.geom.AffineTransform.getMatrix(double[])
#
--format=java
_ZN23Mangle$Inner$InnerInner3fooEP6JArrayIPS0_IiEEdPS0_IPS0_IPS0_IPS0_IPN4java4lang6StringEEEEEPS0_IPS0_IPN6MangleEEE
Mangle$Inner$InnerInner.foo(int[][], double, java.lang.String[][][][], Mangle[][])
#
--format=java
_ZN6JArray1tEP6JArrayIPS_E
JArray.t(JArray[])
#
--format=java
_ZN4Prim1iEibcdfwPN4java4lang6StringEsx
Prim.i(int, boolean, byte, double, float, char, java.lang.String, short, long)
#
--format=java
_ZN4java4util14Map__U24_Entry11class__U24_E
java.util.Map$Entry.class$
#
--format=java
_ZN3org7eclipse3cdt5debug8internal4core5model9CVariable6sizeof$Ev
org.eclipse.cdt.debug.internal.core.model.CVariable.sizeof()
#
--format=hp --no-params
_Utf58_0_1__1_2147483647__2147483648
_Utf58_0_1__1_2147483647__2147483648
_Utf58_0_1__1_2147483647__2147483648
#
--format=gnu-v3 --no-params
St9bad_alloc
std::bad_alloc
std::bad_alloc
#
--format=gnu-v3 --no-params
_ZN1f1fE
f::f
f::f
#
--format=gnu-v3 --no-params
_Z1fv
f()
f
#
--format=gnu-v3 --no-params
_Z1fi
f(int)
f
#
--format=gnu-v3 --no-params
_Z3foo3bar
foo(bar)
foo
#
--format=gnu-v3 --no-params
_Zrm1XS_
operator%(X, X)
operator%
#
--format=gnu-v3 --no-params
_ZplR1XS0_
operator+(X&, X&)
operator+
#
--format=gnu-v3 --no-params
_ZlsRK1XS1_
operator<<(X const&, X const&)
operator<<
#
--format=gnu-v3 --no-params
_ZN3FooIA4_iE3barE
Foo<int [4]>::bar
Foo<int [4]>::bar
#
--format=gnu-v3 --no-params
_Z1fIiEvi
void f<int>(int)
f<int>
#
--format=gnu-v3 --no-params
_Z5firstI3DuoEvS0_
void first<Duo>(Duo)
first<Duo>
#
--format=gnu-v3 --no-params
_Z5firstI3DuoEvT_
void first<Duo>(Duo)
first<Duo>
#
--format=gnu-v3 --no-params
_Z3fooIiFvdEiEvv
void foo<int, void (double), int>()
foo<int, void (double), int>
#
--format=gnu-v3 --no-params
_Z1fIFvvEEvv
void f<void ()>()
f<void ()>
#
--format=gnu-v3 --no-params
_ZN1N1fE
N::f
N::f
#
--format=gnu-v3 --no-params
_ZN6System5Sound4beepEv
System::Sound::beep()
System::Sound::beep
#
--format=gnu-v3 --no-params
_ZN5Arena5levelE
Arena::level
Arena::level
#
--format=gnu-v3 --no-params
_ZN5StackIiiE5levelE
Stack<int, int>::level
Stack<int, int>::level
#
--format=gnu-v3 --no-params
_Z1fI1XEvPVN1AIT_E1TE
void f<X>(A<X>::T volatile*)
f<X>
#
--format=gnu-v3 --no-params
_ZngILi42EEvN1AIXplT_Li2EEE1TE
void operator-<42>(A<(42)+(2)>::T)
operator-<42>
#
--format=gnu-v3 --no-params
_Z4makeI7FactoryiET_IT0_Ev
Factory<int> make<Factory, int>()
make<Factory, int>
#
--format=gnu-v3 --no-params
_Z4makeI7FactoryiET_IT0_Ev
Factory<int> make<Factory, int>()
make<Factory, int>
#
--format=gnu-v3 --no-params
_Z3foo5Hello5WorldS0_S_
foo(Hello, World, World, Hello)
foo
#
--format=gnu-v3 --no-params
_Z3fooPM2ABi
foo(int AB::**)
foo
#
--format=gnu-v3 --no-params
_ZlsRSoRKSs
operator<<(std::ostream&, std::string const&)
operator<<
#
--format=gnu-v3 --no-params
_ZTI7a_class
typeinfo for a_class
typeinfo for a_class
#
--format=gnu-v3 --no-params
U4_farrVKPi
int* const volatile restrict _far
int* const volatile restrict _far
# 
--format=gnu-v3 --no-params
_Z3fooILi2EEvRAplT_Li1E_i
void foo<2>(int (&) [(2)+(1)])
foo<2>
# 
--format=gnu-v3 --no-params
_Z1fM1AKFvvE
f(void (A::*)() const)
f
#
--format=gnu-v3 --no-params
_Z3fooc
foo(char)
foo
#
--format=gnu-v3 --no-params
_Z2f0u8char16_t
f0(char16_t)
f0
#
--format=gnu-v3 --no-params
_Z2f0Pu8char16_t
f0(char16_t*)
f0
#
--format=gnu-v3 --no-params
_Z2f0u8char32_t
f0(char32_t)
f0
#
--format=gnu-v3 --no-params
_Z2f0Pu8char32_t
f0(char32_t*)
f0
#
--format=gnu-v3 --no-params
2CBIL_Z3foocEE
CB<foo(char)>
CB<foo(char)>
#
--format=gnu-v3 --no-params
2CBIL_Z7IsEmptyEE
CB<IsEmpty>
CB<IsEmpty>
#
--format=gnu-v3 --no-params
_ZZN1N1fEiE1p
N::f(int)::p
N::f(int)::p
#
--format=gnu-v3 --no-params
_ZZN1N1fEiEs
N::f(int)::string literal
N::f(int)::string literal
# 
--format=gnu-v3 --no-params
_Z1fPFvvEM1SFvvE
f(void (*)(), void (S::*)())
f
#
--format=gnu-v3 --no-params
_ZN1N1TIiiE2mfES0_IddE
N::T<int, int>::mf(N::T<double, double>)
N::T<int, int>::mf
# 
--format=gnu-v3 --no-params
_ZSt5state
std::state
std::state
# 
--format=gnu-v3 --no-params
_ZNSt3_In4wardE
std::_In::ward
std::_In::ward
#
--format=gnu-v3 --no-params
_Z1fKPFiiE
f(int (* const)(int))
f
#
--format=gnu-v3 --no-params
_Z1fAszL_ZZNK1N1A1fEvE3foo_0E_i
f(int [sizeof (N::A::f() const::foo)])
f
#
--format=gnu-v3 --no-params
_Z1fA37_iPS_
f(int [37], int (*) [37])
f
#
--format=gnu-v3 --no-params
_Z1fM1AFivEPS0_
f(int (A::*)(), int (*)())
f
#
--format=gnu-v3 --no-params
_Z1fPFPA1_ivE
f(int (*(*)()) [1])
f
#
--format=gnu-v3 --no-params
_Z1fPKM1AFivE
f(int (A::* const*)())
f
#
--format=gnu-v3 --no-params
_Z1jM1AFivEPS1_
j(int (A::*)(), int (A::**)())
j
#
--format=gnu-v3 --no-params
_Z1sPA37_iPS0_
s(int (*) [37], int (**) [37])
s
#
--format=gnu-v3 --no-params
_Z3fooA30_A_i
foo(int [30][])
foo
#
--format=gnu-v3 --no-params
_Z3kooPA28_A30_i
koo(int (*) [28][30])
koo
#
--format=gnu-v3 --no-params
_ZlsRKU3fooU4bart1XS0_
operator<<(X bart foo const&, X bart)
operator<<
#
--format=gnu-v3 --no-params
_ZlsRKU3fooU4bart1XS2_
operator<<(X bart foo const&, X bart foo const)
operator<<
#
--format=gnu-v3 --no-params
_Z1fM1AKFivE
f(int (A::*)() const)
f
#
--format=gnu-v3 --no-params
_Z3absILi11EEvv
void abs<11>()
abs<11>
#
--format=gnu-v3 --no-params
_ZN1AIfEcvT_IiEEv
A<float>::operator int<int>()
A<float>::operator int<int>
#
--format=gnu-v3 --no-params
_ZN12libcw_app_ct10add_optionIS_EEvMT_FvPKcES3_cS3_S3_
void libcw_app_ct::add_option<libcw_app_ct>(void (libcw_app_ct::*)(char const*), char const*, char, char const*, char const*)
libcw_app_ct::add_option<libcw_app_ct>
#
--format=gnu-v3 --no-params
_ZGVN5libcw24_GLOBAL__N_cbll.cc0ZhUKa23compiler_bug_workaroundISt6vectorINS_13omanip_id_tctINS_5debug32memblk_types_manipulator_data_ctEEESaIS6_EEE3idsE
guard variable for libcw::(anonymous namespace)::compiler_bug_workaround<std::vector<libcw::omanip_id_tct<libcw::debug::memblk_types_manipulator_data_ct>, std::allocator<libcw::omanip_id_tct<libcw::debug::memblk_types_manipulator_data_ct> > > >::ids
guard variable for libcw::(anonymous namespace)::compiler_bug_workaround<std::vector<libcw::omanip_id_tct<libcw::debug::memblk_types_manipulator_data_ct>, std::allocator<libcw::omanip_id_tct<libcw::debug::memblk_types_manipulator_data_ct> > > >::ids
#
--format=gnu-v3 --no-params
_ZN5libcw5debug13cwprint_usingINS_9_private_12GlobalObjectEEENS0_17cwprint_using_tctIT_EERKS5_MS5_KFvRSt7ostreamE
libcw::debug::cwprint_using_tct<libcw::_private_::GlobalObject> libcw::debug::cwprint_using<libcw::_private_::GlobalObject>(libcw::_private_::GlobalObject const&, void (libcw::_private_::GlobalObject::*)(std::ostream&) const)
libcw::debug::cwprint_using<libcw::_private_::GlobalObject>
#
--format=gnu-v3 --no-params
_ZNKSt14priority_queueIP27timer_event_request_base_ctSt5dequeIS1_SaIS1_EE13timer_greaterE3topEv
std::priority_queue<timer_event_request_base_ct*, std::deque<timer_event_request_base_ct*, std::allocator<timer_event_request_base_ct*> >, timer_greater>::top() const
std::priority_queue<timer_event_request_base_ct*, std::deque<timer_event_request_base_ct*, std::allocator<timer_event_request_base_ct*> >, timer_greater>::top
#
--format=gnu-v3 --no-params
_ZNKSt15_Deque_iteratorIP15memory_block_stRKS1_PS2_EeqERKS5_
std::_Deque_iterator<memory_block_st*, memory_block_st* const&, memory_block_st* const*>::operator==(std::_Deque_iterator<memory_block_st*, memory_block_st* const&, memory_block_st* const*> const&) const
std::_Deque_iterator<memory_block_st*, memory_block_st* const&, memory_block_st* const*>::operator==
#
--format=gnu-v3 --no-params
_ZNKSt17__normal_iteratorIPK6optionSt6vectorIS0_SaIS0_EEEmiERKS6_
std::__normal_iterator<option const*, std::vector<option, std::allocator<option> > >::operator-(std::__normal_iterator<option const*, std::vector<option, std::allocator<option> > > const&) const
std::__normal_iterator<option const*, std::vector<option, std::allocator<option> > >::operator-
#
--format=gnu-v3 --no-params
_ZNSbIcSt11char_traitsIcEN5libcw5debug27no_alloc_checking_allocatorEE12_S_constructIPcEES6_T_S7_RKS3_
char* std::basic_string<char, std::char_traits<char>, libcw::debug::no_alloc_checking_allocator>::_S_construct<char*>(char*, char*, libcw::debug::no_alloc_checking_allocator const&)
std::basic_string<char, std::char_traits<char>, libcw::debug::no_alloc_checking_allocator>::_S_construct<char*>
#
--format=gnu-v3 --no-params
_Z1fI1APS0_PKS0_EvT_T0_T1_PA4_S3_M1CS8_
void f<A, A*, A const*>(A, A*, A const*, A const* (*) [4], A const* (* C::*) [4])
f<A, A*, A const*>
#
--format=gnu-v3 --no-params
_Z3fooiPiPS_PS0_PS1_PS2_PS3_PS4_PS5_PS6_PS7_PS8_PS9_PSA_PSB_PSC_
foo(int, int*, int**, int***, int****, int*****, int******, int*******, int********, int*********, int**********, int***********, int************, int*************, int**************, int***************)
foo
#
--format=gnu-v3 --no-params
_ZSt1BISt1DIP1ARKS2_PS3_ES0_IS2_RS2_PS2_ES2_ET0_T_SB_SA_PT1_
std::D<A*, A*&, A**> std::B<std::D<A*, A* const&, A* const*>, std::D<A*, A*&, A**>, A*>(std::D<A*, A* const&, A* const*>, std::D<A*, A* const&, A* const*>, std::D<A*, A*&, A**>, A**)
std::B<std::D<A*, A* const&, A* const*>, std::D<A*, A*&, A**>, A*>
#
--format=gnu-v3 --no-params
_X11TransParseAddress
_X11TransParseAddress
_X11TransParseAddress
#
--format=gnu-v3 --no-params
_ZNSt13_Alloc_traitsISbIcSt18string_char_traitsIcEN5libcw5debug9_private_17allocator_adaptorIcSt24__default_alloc_templateILb0ELi327664EELb1EEEENS5_IS9_S7_Lb1EEEE15_S_instancelessE
std::_Alloc_traits<std::basic_string<char, std::string_char_traits<char>, libcw::debug::_private_::allocator_adaptor<char, std::__default_alloc_template<false, 327664>, true> >, libcw::debug::_private_::allocator_adaptor<std::basic_string<char, std::string_char_traits<char>, libcw::debug::_private_::allocator_adaptor<char, std::__default_alloc_template<false, 327664>, true> >, std::__default_alloc_template<false, 327664>, true> >::_S_instanceless
std::_Alloc_traits<std::basic_string<char, std::string_char_traits<char>, libcw::debug::_private_::allocator_adaptor<char, std::__default_alloc_template<false, 327664>, true> >, libcw::debug::_private_::allocator_adaptor<std::basic_string<char, std::string_char_traits<char>, libcw::debug::_private_::allocator_adaptor<char, std::__default_alloc_template<false, 327664>, true> >, std::__default_alloc_template<false, 327664>, true> >::_S_instanceless
#
--format=gnu-v3 --no-params
_GLOBAL__I__Z2fnv
global constructors keyed to fn()
global constructors keyed to fn()
#
--format=gnu-v3 --no-params
_Z1rM1GFivEMS_KFivES_M1HFivES1_4whatIKS_E5what2IS8_ES3_
r(int (G::*)(), int (G::*)() const, G, int (H::*)(), int (G::*)(), what<G const>, what2<G const>, int (G::*)() const)
r
#
# This is from the gdb testsuite gdb.cp/cplusfuncs.exp.
--format=gnu-v3 --no-params
_Z10hairyfunc5PFPFilEPcE
hairyfunc5(int (*(*)(char*))(long))
hairyfunc5
#
# This is from gcc PR 8861
--format=gnu-v3 --no-params
_Z1fILi1ELc120EEv1AIXplT_cviLd810000000000000000703DAD7A370C5EEE
void f<1, (char)120>(A<(1)+((int)((double)[810000000000000000703DAD7A370C5]))>)
f<1, (char)120>
#
# This is also from gcc PR 8861
--format=gnu-v3 --no-params
_Z1fILi1EEv1AIXplT_cvingLf3f800000EEE
void f<1>(A<(1)+((int)(-((float)[3f800000])))>)
f<1>
#
# This is from a libstdc++ debug mode patch.
--format=gnu-v3 --no-params
_ZNK11__gnu_debug16_Error_formatter14_M_format_wordImEEvPciPKcT_
void __gnu_debug::_Error_formatter::_M_format_word<unsigned long>(char*, int, char const*, unsigned long) const
__gnu_debug::_Error_formatter::_M_format_word<unsigned long>
#
# The new demangler used to core dump on this.
--format=gnu-v3 --no-params
_ZSt18uninitialized_copyIN9__gnu_cxx17__normal_iteratorIPSt4pairISsPFbP6sqlitePPcEESt6vectorIS9_SaIS9_EEEESE_ET0_T_SG_SF_
__gnu_cxx::__normal_iterator<std::pair<std::string, bool (*)(sqlite*, char**)>*, std::vector<std::pair<std::string, bool (*)(sqlite*, char**)>, std::allocator<std::pair<std::string, bool (*)(sqlite*, char**)> > > > std::uninitialized_copy<__gnu_cxx::__normal_iterator<std::pair<std::string, bool (*)(sqlite*, char**)>*, std::vector<std::pair<std::string, bool (*)(sqlite*, char**)>, std::allocator<std::pair<std::string, bool (*)(sqlite*, char**)> > > >, __gnu_cxx::__normal_iterator<std::pair<std::string, bool (*)(sqlite*, char**)>*, std::vector<std::pair<std::string, bool (*)(sqlite*, char**)>, std::allocator<std::pair<std::string, bool (*)(sqlite*, char**)> > > > >(__gnu_cxx::__normal_iterator<std::pair<std::string, bool (*)(sqlite*, char**)>*, std::vector<std::pair<std::string, bool (*)(sqlite*, char**)>, std::allocator<std::pair<std::string, bool (*)(sqlite*, char**)> > > >, __gnu_cxx::__normal_iterator<std::pair<std::string, bool (*)(sqlite*, char**)>*, std::vector<std::pair<std::string, bool (*)(sqlite*, char**)>, std::allocator<std::pair<std::string, bool (*)(sqlite*, char**)> > > >, __gnu_cxx::__normal_iterator<std::pair<std::string, bool (*)(sqlite*, char**)>*, std::vector<std::pair<std::string, bool (*)(sqlite*, char**)>, std::allocator<std::pair<std::string, bool (*)(sqlite*, char**)> > > >)
std::uninitialized_copy<__gnu_cxx::__normal_iterator<std::pair<std::string, bool (*)(sqlite*, char**)>*, std::vector<std::pair<std::string, bool (*)(sqlite*, char**)>, std::allocator<std::pair<std::string, bool (*)(sqlite*, char**)> > > >, __gnu_cxx::__normal_iterator<std::pair<std::string, bool (*)(sqlite*, char**)>*, std::vector<std::pair<std::string, bool (*)(sqlite*, char**)>, std::allocator<std::pair<std::string, bool (*)(sqlite*, char**)> > > > >
#
# The new demangler used to fail on this.
--format=gnu-v3 --no-params
_Z1fP1cIPFiiEE
f(c<int (*)(int)>*)
f
#
# Wrap expressions using '>' in an extra layer of parens to avoid
# confusion with the '>' which ends the template parameters.
--format=gnu-v3 --no-params
_Z4dep9ILi3EEvP3fooIXgtT_Li2EEE
void dep9<3>(foo<((3)>(2))>*)
dep9<3>
#
# Watch out for templated version of `operator<'--it needs an extra
# space.
--format=gnu-v3 --no-params
_ZStltI9file_pathSsEbRKSt4pairIT_T0_ES6_
bool std::operator< <file_path, std::string>(std::pair<file_path, std::string> const&, std::pair<file_path, std::string> const&)
std::operator< <file_path, std::string>
#
# More hairy qualifier handling.
--format=gnu-v3 --no-params
_Z9hairyfuncM1YKFPVPFrPA2_PM1XKFKPA3_ilEPcEiE
hairyfunc(int (* const (X::** (* restrict (* volatile* (Y::*)(int) const)(char*)) [2])(long) const) [3])
hairyfunc
#
# Check that negative numbers are handled correctly.
--format=gnu-v3 --no-params
_Z1fILin1EEvv
void f<-1>()
f<-1>
#
# Check a destructor of a standard substitution.
--format=gnu-v3 --no-params
_ZNSdD0Ev
std::basic_iostream<char, std::char_traits<char> >::~basic_iostream()
std::basic_iostream<char, std::char_traits<char> >::~basic_iostream
#
# Another case where we got member function qualifiers wrong.
--format=gnu-v3 --no-params
_ZNK15nsBaseHashtableI15nsUint32HashKey8nsCOMPtrI4IFooEPS2_E13EnumerateReadEPF15PLDHashOperatorRKjS4_PvES9_
nsBaseHashtable<nsUint32HashKey, nsCOMPtr<IFoo>, IFoo*>::EnumerateRead(PLDHashOperator (*)(unsigned int const&, IFoo*, void*), void*) const
nsBaseHashtable<nsUint32HashKey, nsCOMPtr<IFoo>, IFoo*>::EnumerateRead
#
# Another member function qualifier test case, when the member function
# returns a pointer to function.
--format=gnu-v3 --no-params
_ZNK1C1fIiEEPFivEv
int (*C::f<int>() const)()
C::f<int>
#
# Another case where we got member function qualifiers wrong.
--format=gnu-v3 --no-params
_ZZ3BBdI3FooEvvENK3Fob3FabEv
void BBd<Foo>()::Fob::Fab() const
void BBd<Foo>()::Fob::Fab
#
# The same idea one level deeper.
--format=gnu-v3 --no-params
_ZZZ3BBdI3FooEvvENK3Fob3FabEvENK3Gob3GabEv
void BBd<Foo>()::Fob::Fab() const::Gob::Gab() const
void BBd<Foo>()::Fob::Fab() const::Gob::Gab
#
# Yet another member function qualifier problem.
--format=gnu-v3 --no-params
_ZNK5boost6spirit5matchI13rcs_deltatextEcvMNS0_4impl5dummyEFvvEEv
boost::spirit::match<rcs_deltatext>::operator void (boost::spirit::impl::dummy::*)()() const
boost::spirit::match<rcs_deltatext>::operator void (boost::spirit::impl::dummy::*)()
#
# Multi-dimensional arrays with qualifiers on the inner dimensions.
--format=gnu-v3 --no-params
_Z3fooIA6_KiEvA9_KT_rVPrS4_
void foo<int const [6]>(int const [9][6], int restrict const (* volatile restrict) [9][6])
foo<int const [6]>
#
# From PR libstdc++/12736
--format=gnu-v3 --no-params
_Z3fooIA3_iEvRKT_
void foo<int [3]>(int const (&) [3])
foo<int [3]>
#
# Related to PR libstdc++/12736
--format=gnu-v3 --no-params
_Z3fooIPA3_iEvRKT_
void foo<int (*) [3]>(int (* const&) [3])
foo<int (*) [3]>
#
# This used to crash the demangler--PR 16240
--format=gnu-v3 --no-params
_ZN13PatternDriver23StringScalarDeleteValueC1ERKNS_25ConflateStringScalarValueERKNS_25AbstractStringScalarValueERKNS_12TemplateEnumINS_12pdcomplementELZNS_16complement_namesEELZNS_14COMPLEMENTENUMEEEE
PatternDriver::StringScalarDeleteValue::StringScalarDeleteValue(PatternDriver::ConflateStringScalarValue const&, PatternDriver::AbstractStringScalarValue const&, PatternDriver::TemplateEnum<PatternDriver::pdcomplement, PatternDriver::complement_names, PatternDriver::COMPLEMENTENUM> const&)
PatternDriver::StringScalarDeleteValue::StringScalarDeleteValue
#
# This used to cause the demangler to walk into undefined memory--PR 22268
--format=gnu-v3 --no-params
ALsetchannels
ALsetchannels
ALsetchannels
# Test GNU V3 constructor and destructor identification.
# 0 means it is not a constructor/destructor.
# Other integers correspond to enum gnu_v3_{c,d}tor_kinds in demangle.h.
--is-v3-ctor
_GLOBAL__I__Z2fnv
0
#
--is-v3-dtor
_GLOBAL__I__Z2fnv
0
#
--is-v3-ctor
_ZNSdC1Ev
1
#
--is-v3-dtor
_ZNSdC1Ev
0
#
--is-v3-ctor
_ZNSdD0Ev
0
#
--is-v3-dtor
_ZNSdD0Ev
1
#
--is-v3-ctor
_ZNSdC2Ev
2
#
--is-v3-dtor
_ZNSdC2Ev
0
#
--is-v3-ctor
_ZNSdD1Ev
0
#
--is-v3-dtor
_ZNSdD1Ev
2
#
# This caused an infinite loop.
#
# This is generated by an EDG compiler (kcc 4.0).  To demangle it
# correctly, I believe that we have to understand that the J37J deep
# in the string somehow refers back to the type starting 37 characters
# in from some starting point, so that it winds up being the type
# starting with 41THandle....  However, lacking a spec for EDG
# demangling, it's hard to implement this.
#
# In the meantime, this symbol can be successfully demangled in GNU
# mode.  Of course the result is more or less nonsense, but an older
# version of g++ would indeed generate this mangled name given the
# appropriate input, so the demangling is correct.
--format=auto --no-params
__CPR212____ct__Q3_3std141list__tm__128_Q2_3edm41THandle__tm__26_Q2_4emid15EMparticleChunkQ2_3std68allocator__tm__51_Q2_3edmJ37J14const_iteratorFRCQ3_3std18list__tm__7_Z1ZZ2Z8iterator
_Z1ZZ2Z::__CPR212____ct__Q3_3std141list__tm__128_Q2_3edm41THandle__tm__26_Q2_4emid15EMparticleChunkQ2_3std68allocator__tm__51_Q2_3edmJ37J14const_iteratorFRCQ3_3std18list__tm(iterator)
_Z1ZZ2Z::__CPR212____ct__Q3_3std141list__tm__128_Q2_3edm41THandle__tm__26_Q2_4emid15EMparticleChunkQ2_3std68allocator__tm__51_Q2_3edmJ37J14const_iteratorFRCQ3_3std18list__tm
#
# This used to cause a crash. It doesn't follow the C++ encoding so
# the demangled name should be identical to the original symbol name.
--format=auto --no-params
_test_array__L_1__B23b___clean.6
_test_array__L_1__B23b___clean.6
_test_array__L_1__B23b___clean.6
#
--format=java
_ZGAN4java4lang5Class7forNameEPNS0_6StringE
hidden alias for java.lang.Class.forName(java.lang.String)
#
# Test cases to verify encoding that determines if a return type is present
# Related to PR9861
--format=java
_ZN4java4lang4Math4acosEJdd
java.lang.Math.acos(double)double
#
--format=auto
_ZN4java4lang4Math4acosEJdd
double java::lang::Math::acos(double)
#
--format=auto
_ZN4java4lang4Math4acosEJvd
void java::lang::Math::acos(double)
#
--format=auto --ret-postfix
_ZN4java4lang4Math4acosEJdd
java::lang::Math::acos(double)double
#
--format=gnu-v3 --no-params --ret-postfix
_Z4makeI7FactoryiET_IT0_Ev
make<Factory, int>()Factory<int>
make<Factory, int>
#
# From PR 28797
--format=auto --no-params
_Z1fM1AKiPKS1_
f(int const A::*, int const A::* const*)
f
# This used to cause a core dump in the demangler -- PR 29176
--format=auto --no-params
SASDASDFASDF_sdfsdf
SASDASDFASDF_sdfsdf
SASDASDFASDF_sdfsdf
# These are all cases of invalid manglings where the demangler would read
# past the end of the string.
# d_name wasn't honouring a NULL from d_substitution
--format=gnu-v3
_ZSA
_ZSA
# d_expr_primary wasn't honouring NULL from cplus_demangle_mangled_name
--format=gnu-v3
_ZN1fIL_
_ZN1fIL_
# d_operator_name was taking two characters in a row
--format=gnu-v3
_Za
_Za
# d_prefix wasn't honouring NULL from d_substitution
--format=gnu-v3
_ZNSA
_ZNSA
# d_prefix wasn't honouring NULL from d_template_param
--format=gnu-v3
_ZNT
_ZNT
# Dereferencing NULL in d_pointer_to_member_type
--format=gnu-v3
_Z1aMark
_Z1aMark
# <local-source-name> test 1
--format=gnu-v3
_ZL3foo_2
foo
# <local-source-name> test 2
--format=gnu-v3
_ZZL3foo_2vE4var1
foo()::var1
# <local-source-name> test 3
--format=gnu-v3
_ZZL3foo_2vE4var1_0
foo()::var1
# <local-source-name> test 4
--format=gnu-v3
_ZZN7myspaceL3foo_1EvEN11localstruct1fEZNS_3fooEvE16otherlocalstruct
myspace::foo()::localstruct::f(myspace::foo()::otherlocalstruct)
# Java resource name
--format=gnu-v3
_ZGr32_java$Sutil$Siso4217$_properties
java resource java/util/iso4217.properties
# decltype/param placeholder test
--format=gnu-v3
_Z3addIidEDTplfp_fp0_ET_T0_
decltype ({parm#1}+{parm#2}) add<int, double>(int, double)
# decltype scope test
--format=gnu-v3
_Z1fI1SENDtfp_E4typeET_
decltype ({parm#1})::type f<S>(S)
# decltype/fn call test
--format=gnu-v3
_Z4add3IidEDTclL_Z1gEfp_fp0_EET_T0_
decltype (g({parm#1}, {parm#2})) add3<int, double>(int, double)
# 'this' test
--format=gnu-v3
_ZN1A1fIiEEDTcldtdtdefpT1b1fIT_EEEv
decltype ((((*this).b).(f<int>))()) A::f<int>()
# new (2008) built in types test
--format=gnu-v3
_Z1fDfDdDeDhDsDi
f(decimal32, decimal64, decimal128, half, char16_t, char32_t)
# pack expansion test
--format=gnu-v3
_Z1fIIPiPfPdEEvDpT_
void f<int*, float*, double*>(int*, float*, double*)
# '.' test
--format=gnu-v3
_Z1hI1AIiEdEDTcldtfp_1gIT0_EEET_S2_
decltype (({parm#1}.(g<double>))()) h<A<int>, double>(A<int>, double)
# test for typed function in decltype
--format=gnu-v3
_ZN1AIiE1jIiEEDTplfp_clL_Z1xvEEET_
decltype ({parm#1}+(x())) A<int>::j<int>(int)
# typed function in decltype with an argument list
--format=gnu-v3
_Z1tIlEDTplcvT_Li5EclL_Z1qsELi6EEEv
decltype (((long)(5))+(q(6))) t<long>()
# test for expansion of function parameter pack
--format=gnu-v3
_Z1gIJidEEDTclL_Z1fEspplfp_Li1EEEDpT_
decltype (f(({parm#1}+(1))...)) g<int, double>(int, double)
# lambda tests
--format=gnu-v3
_ZZ1giENKUlvE_clEv
g(int)::{lambda()#1}::operator()() const
--format=gnu-v3
_Z4algoIZ1giEUlvE0_EiT_
int algo<g(int)::{lambda()#2}>(g(int)::{lambda()#2})
--format=gnu-v3
_ZZN1S1fEiiEd0_NKUlvE0_clEv
S::f(int, int)::{default arg#2}::{lambda()#2}::operator()() const
--format=gnu-v3
_ZNK1SIiE1xMUlvE1_clEv
S<int>::x::{lambda()#3}::operator()() const
--format=gnu-v3
_ZN8functionC1IZN1CIiE4testES_Ed_UliE_EET_
function::function<C<int>::test(function)::{default arg#1}::{lambda(int)#1}>(C<int>::test(function)::{default arg#1}::{lambda(int)#1})
--format=gnu-v3
_Z1fN1SUt_E
f(S::{unnamed type#1})
--format=gnu-v3
_Z1fDv32_f
f(float __vector(32))
--format=gnu-v3
_Z1fIfLi4EEvDv_T0__T_
void f<float, 4>(float __vector(4))
--format=gnu-v3
_Z1fI1AEDTclonplfp_fp_EET_
decltype ((operator+)({parm#1}, {parm#1})) f<A>(A)
--format=gnu-v3
_Z1hI1AEDTcldtfp_miEET_
decltype (({parm#1}.(operator-))()) h<A>(A)
--format=gnu-v3
_Z1fDn
f(decltype(nullptr))
--format=gnu-v3
_Z1fIRiEvOT_b
void f<int&>(int&, bool)
--format=gnu-v3
_ZN5aaaaa6bbbbbb5cccccIN23ddddddddddddddddddddddd3eeeENS2_4ffff16ggggggggggggggggENS0_9hhhhhhhhhES6_S6_S6_S6_S6_S6_S6_EE
aaaaa::bbbbbb::ccccc<ddddddddddddddddddddddd::eee, ddddddddddddddddddddddd::ffff::gggggggggggggggg, aaaaa::bbbbbb::hhhhhhhhh, aaaaa::bbbbbb::hhhhhhhhh, aaaaa::bbbbbb::hhhhhhhhh, aaaaa::bbbbbb::hhhhhhhhh, aaaaa::bbbbbb::hhhhhhhhh, aaaaa::bbbbbb::hhhhhhhhh, aaaaa::bbbbbb::hhhhhhhhh, aaaaa::bbbbbb::hhhhhhhhh>
--format=gnu-v3
_Z5outerIsEcPFilE
char outer<short>(int (*)(long))
--format=gnu-v3
_Z5outerPFsiEl
outer(short (*)(int), long)
--format=gnu-v3
_Z6outer2IsEPFilES1_
int (*outer2<short>(int (*)(long)))(long)
--format=gnu-v3 --ret-postfix
_Z5outerIsEcPFilE
outer<short>(int (*)(long))char
--format=gnu-v3 --ret-postfix
_Z5outerPFsiEl
outer(short (*)(int), long)
--format=gnu-v3 --ret-postfix
_Z6outer2IsEPFilES1_
outer2<short>(int (*)(long))int (*)(long)
--format=gnu-v3 --ret-drop
_Z5outerIsEcPFilE
outer<short>(int (*)(long))
--format=gnu-v3 --ret-drop
_Z5outerPFsiEl
outer(short (*)(int), long)
--format=gnu-v3 --ret-drop
_Z6outer2IsEPFilES1_
outer2<short>(int (*)(long))
#
--format=gnu-v3 --no-params
_ZN1KIXadL_ZN1S1mEiEEE1fEv
K<&S::m>::f()
K<&S::m>::f
--format=gnu-v3
_ZN1KILi1EXadL_ZN1S1mEiEEE1fEv
K<1, &S::m>::f()
# Here the `(int)' argument list of `S::m' is already removed.
--format=gnu-v3
_ZN1KILi1EXadL_ZN1S1mEEEE1fEv
K<1, &S::m>::f()
#
# Used to crash -- binutils PR 13030.
--format=gnu-v3
_ZSt10_ConstructI10CellBorderIS0_EEvPT_DpOT0_
_ZSt10_ConstructI10CellBorderIS0_EEvPT_DpOT0_
# A pack expansion is substitutable.
--format=gnu-v3
_Z1fIJiEiEv1AIJDpT_EET0_S4_
void f<int, int>(A<int>, int, int)
# So is decltype.
--format=gnu-v3
_Z1fIiiEDTcvT__EET0_S2_
decltype ((int)()) f<int, int>(int, int)
# And vector.
--format=gnu-v3
_Z1fDv4_iS_
f(int __vector(4), int __vector(4))
--format=gnu-v3
_Z2f1Ii1AEDTdsfp_fp0_ET0_MS2_T_
decltype ({parm#1}.*{parm#2}) f1<int, A>(A, int A::*)
--format=gnu-v3
_Z2f2IiEDTquL_Z1bEfp_trET_
decltype (b?{parm#1} : (throw)) f2<int>(int)
--format=gnu-v3
_Z6check1IiEvP6helperIXsznw_T_EEE
void check1<int>(helper<sizeof (new int)>*)
--format=gnu-v3
_Z6check2IiEvP6helperIXszgsnw_T_piEEE
void check2<int>(helper<sizeof (::new int())>*)
--format=gnu-v3
_Z6check3IiEvP6helperIXsznwadL_Z1iE_T_piLi1EEEE
void check3<int>(helper<sizeof (new (&i) int(1))>*)
--format=gnu-v3
_Z6check4IiEvP6helperIXszna_A1_T_EEE
void check4<int>(helper<sizeof (new int [1])>*)
--format=gnu-v3
_Z6check5IiEvP6helperIXszna_A1_T_piEEE
void check5<int>(helper<sizeof (new int [1]())>*)
--format=gnu-v3
_Z1fIiEDTcmgsdlfp_psfp_EPT_
decltype ((::delete {parm#1}),(+{parm#1})) f<int>(int*)
--format=gnu-v3
_Z1fIiEDTcmdafp_psfp_EPT_
decltype ((delete[] {parm#1}),(+{parm#1})) f<int>(int*)
--format=gnu-v3
_ZN1AdlEPv
A::operator delete(void*)
--format=gnu-v3
_Z2f1IiEDTppfp_ET_
decltype ({parm#1}++) f1<int>(int)
--format=gnu-v3
_Z2f1IiEDTpp_fp_ET_
decltype (++{parm#1}) f1<int>(int)
--format=gnu-v3
_Z2f1IiEDTcl1gfp_ilEEET_
decltype (g({parm#1}, {})) f1<int>(int)
--format=gnu-v3
_Z2f1IiEDTnw_T_ilEES0_
decltype (new int{}) f1<int>(int)
--format=gnu-v3
_Zli2_wPKc
operator"" _w(char const*)
--format=gnu-v3
_Z1fIiEDTnw_Dapifp_EET_
decltype (new auto({parm#1})) f<int>(int)
--format=gnu-v3
_Z1fIiERDaRKT_S1_
auto& f<int>(int const&, int)
--format=gnu-v3
_Z1gILi1EEvR1AIXT_EER1BIXscbT_EE
void g<1>(A<1>&, B<static_cast<bool>(1)>&)
--format=gnu-v3
_ZNKSt7complexIiE4realB5cxx11Ev
std::complex<int>::real[abi:cxx11]() const
#
# Some more crashes revealed by fuzz-testing:
# Check for NULL pointer when demangling trinary operators
--format=gnu-v3
_Z1fAv32_f
_Z1fAv32_f
# Do not overflow when decoding identifier length
--format=gnu-v3
_Z11111111111
_Z11111111111
# Check out-of-bounds access when decoding braced initializer list
--format=gnu-v3
_ZDTtl
_ZDTtl
# Check for NULL pointer when demangling DEMANGLE_COMPONENT_LOCAL_NAME
--format=gnu-v3
_ZZN1fEEd_lEv
_ZZN1fEEd_lEv
# Handle DEMANGLE_COMPONENT_FIXED_TYPE in d_find_pack
--format=gnu-v3
_Z1fDpDFT_
_Z1fDpDFT_
# Likewise, DEMANGLE_COMPONENT_DEFAULT_ARG
--format=gnu-v3
_Z1fIDpZ1fEd_E
_Z1fIDpZ1fEd_E
# Likewise, DEMANGLE_COMPONENT_NUMBER
--format=gnu-v3
_Z1fDpDv1_c
f((char __vector(1))...)
#
# Ada (GNAT) tests.
#
# Simple test.
--format=gnat
yz__qrs
yz.qrs
# Operator
--format=gnat
oper__Oadd
oper."+"
# Overloaded subprogram.
--format=gnat
yz__qrs__2
yz.qrs
# Nested subprogram.
--format=gnat
yz__qrs__tuv.1661
yz.qrs.tuv
# Nested and overloaded subprograms.
--format=gnat
yz__qrs__tuv__2_1.1667
yz.qrs.tuv
--format=gnat
yz__qrs__tuv__2_2.1670
yz.qrs.tuv
--format=gnat
yz__qrs__tuv__2_3.1674
yz.qrs.tuv
# Elaborated flag (not demangled)
--format=gnat
x_E
<x_E>
# Nested package
--format=gnat
x__m1
x.m1
--format=gnat
x__m3
x.m3
--format=gnat
x__y__m2X
x.y.m2
--format=gnat
x__y__z__rXb
x.y.z.r
# Child package
--format=gnat
x__y__j
x.y.j
# Library level
--format=gnat
_ada_x__m3
x.m3
# Package body elaborator
--format=gnat
p___elabb
p'Elab_Body
# Package spec elaborator
--format=gnat
p___elabs
p'Elab_Spec
# Task body
--format=gnat
p__taskobjTKB
p.taskobj
# Task subprogram
--format=gnat
p__taskobjTK__f1.2330
p.taskobj.f1
# Protected types subprograms
--format=gnat
prot__lock__getN
prot.lock.get
--format=gnat
prot__lock__getP
prot.lock.get
--format=gnat
prot__lock__get__sub.2590
prot.lock.get.sub
--format=gnat
prot__lock__setN
prot.lock.set
--format=gnat
prot__lock__setP
prot.lock.set
# Protected type entries
--format=gnat
prot__lock__update_B7s
prot.lock.update
--format=gnat
prot__lock__update_E6s
prot.lock.update
# Controlled types
--format=gnat
gnat__sockets__sockets_library_controllerDF__2
gnat.sockets.sockets_library_controller.Finalize
--format=gnat
system__partition_interface__racw_stub_typeDA
system.partition_interface.racw_stub_type.Adjust
# Stream operations
--format=gnat
gnat__wide_wide_string_split__slice_setSR__2
gnat.wide_wide_string_split.slice_set'Read
--format=gnat
ada__real_time__timing_events__events__listSW__2Xnn
ada.real_time.timing_events.events.list'Write
--format=gnat
system__finalization_root__root_controlledSI
system.finalization_root.root_controlled'Input
--format=gnat
ada__finalization__limited_controlledSO__2
ada.finalization.limited_controlled'Output
# Tagged types
--format=gnat
ada__synchronous_task_control___size__2
ada.synchronous_task_control'Size
--format=gnat
ada__real_time__timing_events__events___alignment__2Xnn
ada.real_time.timing_events.events'Alignment
--format=gnat
system__finalization_root___assign__2
system.finalization_root.":="
#
# Used to crash the demangler.
--format=gnu-v3
DFA
DFA
#
# http://sourceware.org/bugzilla/show_bug.cgi?id=11572
--format=auto
_ZN3Psi7VariantIIcPKcEE5visitIIRZN11VariantTest9TestVisit11test_methodEvEUlS2_E0_RZNS6_11test_methodEvEUlcE1_RZNS6_11test_methodEvEUlNS_4NoneEE_EEENS_13VariantDetail19SelectVisitorResultIIDpT_EE4typeEDpOSG_
Psi::VariantDetail::SelectVisitorResult<VariantTest::TestVisit::test_method()::{lambda(char const*)#2}&, VariantTest::TestVisit::test_method()::{lambda(char)#3}&, VariantTest::TestVisit::test_method()::{lambda(Psi::None)#1}&>::type Psi::Variant<char, char const*>::visit<VariantTest::TestVisit::test_method()::{lambda(char const*)#2}&, VariantTest::TestVisit::test_method()::{lambda(char)#3}&, VariantTest::TestVisit::test_method()::{lambda(Psi::None)#1}&>((VariantTest::TestVisit::test_method()::{lambda(Psi::None)#1}&)...)
#
# Clone suffix tests
#
--format=gnu-v3 --no-params
_Z3fo5n.clone.1
fo5(__int128) [clone .clone.1]
fo5
#
--format=gnu-v3 --no-params
_Z3fo5n.constprop.2
fo5(__int128) [clone .constprop.2]
fo5
#
--format=gnu-v3 --no-params
_Z3fo5n.isra.3
fo5(__int128) [clone .isra.3]
fo5
#
--format=gnu-v3 --no-params
_Z3fo5n.part.4
fo5(__int128) [clone .part.4]
fo5
#
--format=gnu-v3 --no-params
_Z12to_be_clonediPv.clone.0
to_be_cloned(int, void*) [clone .clone.0]
to_be_cloned
#
--format=gnu-v3 --no-params
_Z3fooi.1988
foo(int) [clone .1988]
foo
#
--format=gnu-v3 --no-params
_Z3fooi.part.9.165493.constprop.775.31805
foo(int) [clone .part.9.165493] [clone .constprop.775.31805]
foo
#
--format=gnu-v3 --no-params
_Z2f1IiEvT_S0_S0_._omp_fn.2
void f1<int>(int, int, int) [clone ._omp_fn.2]
f1<int>
#
--format=gnu-v3 --no-params
_Z3fooi._omp_cpyfn.6
foo(int) [clone ._omp_cpyfn.6]
foo
#
--format=gnu-v3 --no-params
_Z1fIKFvvES0_Evv
void f<void () const, void () const>()
f<void () const, void () const>
#
--format=gnu-v3
_ZN4modc6parser8sequenceINS_9astParser13LocatedParserINS0_9ParserRefINS2_UlRNS2_16TokenParserInputEE_EEEEEINS0_14OptionalParserINS2_18ListParserTemplateILNS_6tokens5Token4TypeE4EXadL_ZNSD_Ut_13parenthesizedEEEE6ParserINS4_INS0_6ParserIS5_NS_3ast10ExpressionEEEEEEEEENSA_INS4_INS2_22OneOfKeywordsToTParserINSJ_5StyleEEEEEEENS0_14SequenceParserIS5_INS0_18ExactElementParserIS5_EENSA_ISM_EEEEENS0_14RepeatedParserINS4_INS0_15TransformParserINSU_IS5_INS4_INSP_INSJ_10Annotation12RelationshipEEEEESX_EEENS2_UlNS2_3LocES12_ONS_5MaybeISK_EEE19_EEEEELb0EEEEEENSU_INS0_17ExtractParserTypeIT_E9InputTypeEINS0_8MaybeRefIS1F_E4TypeEDpNS1I_IT0_E4TypeEEEEOS1F_DpOS1L_
modc::parser::ParserRef<modc::astParser::OneOfKeywordsToTParser<modc::astParser::ListParserTemplate<(modc::tokens::Token::Type)4, &modc::tokens::{unnamed type#1}::parenthesized>::Parser::Style> ><modc::parser::ExtractParserType<modc::astParser::LocatedParser<modc::parser::ParserRef<modc::astParser::{lambda(modc::astParser::TokenParserInput&)#1}> > >::InputType, modc::parser::MaybeRef<modc::astParser::{lambda(modc::astParser::Loc, modc::parser::RepeatedParser, modc::Maybe<modc::parser::Parser>&&)#21}>::Type, modc::parser::RepeatedParser<modc::parser::ParserRef<modc::parser::TransformParser<modc::parser::ParserRef<modc::astParser::OneOfKeywordsToTParser<modc::astParser::ListParserTemplate<(modc::tokens::Token::Type)4, &modc::tokens::{unnamed type#1}::parenthesized>::Parser::Style> ><modc::astParser::TokenParserInput<modc::parser::ParserRef<modc::astParser::ListParserTemplate<(modc::tokens::Token::Type)4, &modc::tokens::{unnamed type#1}::parenthesized>::Parser<modc::parser::ParserRef<modc::parser::Parser<modc::astParser::TokenParserInput, modc::ast::Expression> > ><modc::astParser::ListParserTemplate<(modc::tokens::Token::Type)4, &modc::tokens::{unnamed type#1}::parenthesized>::Parser::Annotation::Relationship> >, modc::parser::ExactElementParser> >, modc::astParser::{lambda(modc::astParser::Loc, modc::parser::RepeatedParser, modc::Maybe<modc::parser::Parser>&&)#21}> >, false><modc::parser::OptionalParser<modc::astParser::ListParserTemplate<(modc::tokens::Token::Type)4, &modc::tokens::{unnamed type#1}::parenthesized>::Parser<modc::parser::ParserRef<modc::parser::Parser<modc::astParser::TokenParserInput, modc::ast::Expression> > > > >::Type, modc::parser::RepeatedParser<modc::parser::ParserRef<modc::parser::TransformParser<modc::parser::ParserRef<modc::astParser::OneOfKeywordsToTParser<modc::astParser::ListParserTemplate<(modc::tokens::Token::Type)4, &modc::tokens::{unnamed type#1}::parenthesized>::Parser::Style> ><modc::astParser::TokenParserInput<modc::parser::ParserRef<modc::astParser::ListParserTemplate<(modc::tokens::Token::Type)4, &modc::tokens::{unnamed type#1}::parenthesized>::Parser<modc::parser::ParserRef<modc::parser::Parser<modc::astParser::TokenParserInput, modc::ast::Expression> > ><modc::astParser::ListParserTemplate<(modc::tokens::Token::Type)4, &modc::tokens::{unnamed type#1}::parenthesized>::Parser::Annotation::Relationship> >, modc::parser::ExactElementParser> >, modc::astParser::{lambda(modc::astParser::Loc, modc::parser::RepeatedParser, modc::Maybe<modc::parser::Parser>&&)#21}> >, false><modc::astParser::LocatedParser<modc::parser::ParserRef<modc::astParser::{lambda(modc::astParser::TokenParserInput&)#1}> ><modc::parser::ParserRef<modc::astParser::OneOfKeywordsToTParser<modc::astParser::ListParserTemplate<(modc::tokens::Token::Type)4, &modc::tokens::{unnamed type#1}::parenthesized>::Parser::Style> > > >::Type, modc::parser::RepeatedParser<modc::parser::ParserRef<modc::parser::TransformParser<modc::parser::ParserRef<modc::astParser::OneOfKeywordsToTParser<modc::astParser::ListParserTemplate<(modc::tokens::Token::Type)4, &modc::tokens::{unnamed type#1}::parenthesized>::Parser::Style> ><modc::astParser::TokenParserInput<modc::parser::ParserRef<modc::astParser::ListParserTemplate<(modc::tokens::Token::Type)4, &modc::tokens::{unnamed type#1}::parenthesized>::Parser<modc::parser::ParserRef<modc::parser::Parser<modc::astParser::TokenParserInput, modc::ast::Expression> > ><modc::astParser::ListParserTemplate<(modc::tokens::Token::Type)4, &modc::tokens::{unnamed type#1}::parenthesized>::Parser::Annotation::Relationship> >, modc::parser::ExactElementParser> >, modc::astParser::{lambda(modc::astParser::Loc, modc::parser::RepeatedParser, modc::Maybe<modc::parser::Parser>&&)#21}> >, false><modc::parser::SequenceParser<modc::astParser::TokenParserInput<modc::parser::ExactElementParser<modc::astParser::TokenParserInput>, modc::astParser::LocatedParser<modc::parser::ParserRef<modc::astParser::{lambda(modc::astParser::TokenParserInput&)#1}> ><modc::ast::Expression> > > >::Type, modc::parser::RepeatedParser<modc::parser::ParserRef<modc::parser::TransformParser<modc::parser::ParserRef<modc::astParser::OneOfKeywordsToTParser<modc::astParser::ListParserTemplate<(modc::tokens::Token::Type)4, &modc::tokens::{unnamed type#1}::parenthesized>::Parser::Style> ><modc::astParser::TokenParserInput<modc::parser::ParserRef<modc::astParser::ListParserTemplate<(modc::tokens::Token::Type)4, &modc::tokens::{unnamed type#1}::parenthesized>::Parser<modc::parser::ParserRef<modc::parser::Parser<modc::astParser::TokenParserInput, modc::ast::Expression> > ><modc::astParser::ListParserTemplate<(modc::tokens::Token::Type)4, &modc::tokens::{unnamed type#1}::parenthesized>::Parser::Annotation::Relationship> >, modc::parser::ExactElementParser> >, modc::astParser::{lambda(modc::astParser::Loc, modc::parser::RepeatedParser, modc::Maybe<modc::parser::Parser>&&)#21}> >, false><modc::parser::RepeatedParser<modc::parser::ParserRef<modc::parser::TransformParser<modc::parser::ParserRef<modc::astParser::OneOfKeywordsToTParser<modc::astParser::ListParserTemplate<(modc::tokens::Token::Type)4, &modc::tokens::{unnamed type#1}::parenthesized>::Parser::Style> ><modc::astParser::TokenParserInput<modc::parser::ParserRef<modc::astParser::ListParserTemplate<(modc::tokens::Token::Type)4, &modc::tokens::{unnamed type#1}::parenthesized>::Parser<modc::parser::ParserRef<modc::parser::Parser<modc::astParser::TokenParserInput, modc::ast::Expression> > ><modc::astParser::ListParserTemplate<(modc::tokens::Token::Type)4, &modc::tokens::{unnamed type#1}::parenthesized>::Parser::Annotation::Relationship> >, modc::parser::ExactElementParser> >, modc::astParser::{lambda(modc::astParser::Loc, modc::parser::RepeatedParser, modc::Maybe<modc::parser::Parser>&&)#21}> >, false> >::Type> modc::parser::sequence<modc::astParser::LocatedParser<modc::parser::ParserRef<modc::astParser::{lambda(modc::astParser::TokenParserInput&)#1}> >, modc::parser::OptionalParser<modc::astParser::ListParserTemplate<(modc::tokens::Token::Type)4, &modc::tokens::{unnamed type#1}::parenthesized>::Parser<modc::parser::ParserRef<modc::parser::Parser<modc::astParser::TokenParserInput, modc::ast::Expression> > > >, modc::astParser::LocatedParser<modc::parser::ParserRef<modc::astParser::{lambda(modc::astParser::TokenParserInput&)#1}> ><modc::parser::ParserRef<modc::astParser::OneOfKeywordsToTParser<modc::astParser::ListParserTemplate<(modc::tokens::Token::Type)4, &modc::tokens::{unnamed type#1}::parenthesized>::Parser::Style> > >, modc::parser::SequenceParser<modc::astParser::TokenParserInput<modc::parser::ExactElementParser<modc::astParser::TokenParserInput>, modc::astParser::LocatedParser<modc::parser::ParserRef<modc::astParser::{lambda(modc::astParser::TokenParserInput&)#1}> ><modc::ast::Expression> > >, modc::parser::RepeatedParser<modc::parser::ParserRef<modc::parser::TransformParser<modc::parser::ParserRef<modc::astParser::OneOfKeywordsToTParser<modc::astParser::ListParserTemplate<(modc::tokens::Token::Type)4, &modc::tokens::{unnamed type#1}::parenthesized>::Parser::Style> ><modc::astParser::TokenParserInput<modc::parser::ParserRef<modc::astParser::ListParserTemplate<(modc::tokens::Token::Type)4, &modc::tokens::{unnamed type#1}::parenthesized>::Parser<modc::parser::ParserRef<modc::parser::Parser<modc::astParser::TokenParserInput, modc::ast::Expression> > ><modc::astParser::ListParserTemplate<(modc::tokens::Token::Type)4, &modc::tokens::{unnamed type#1}::parenthesized>::Parser::Annotation::Relationship> >, modc::parser::ExactElementParser> >, modc::astParser::{lambda(modc::astParser::Loc, modc::parser::RepeatedParser, modc::Maybe<modc::parser::Parser>&&)#21}> >, false> >(modc::astParser::{lambda(modc::astParser::Loc, modc::parser::RepeatedParser, modc::Maybe<modc::parser::Parser>&&)#21}&&, (modc::parser::ExtractParserType<modc::astParser::LocatedParser<modc::parser::ParserRef<modc::astParser::{lambda(modc::astParser::TokenParserInput&)#1}> > >&&)...)
--format=gnu-v3
_ZNKR1A1hEv
A::h() const &
--format=gnu-v3
_Z1lM1AKFvvRE
l(void (A::*)() const &)
--format=gnu-v3
_Z1mIFvvOEEvM1AT_
void m<void () &&>(void (A::*)() &&)
--format=gnu-v3
_Z1nIM1AKFvvREEvT_
void n<void (A::*)() const &>(void (A::*)() const &)
--format=gnu-v3
_ZL1fIiEvv
void f<int>()
# https://sourceware.org/bugzilla/show_bug.cgi?id=14963#c3
--format=gnu-v3
_ZSt7forwardIRN1x14refobjiteratorINS0_3refINS0_4mime30multipart_section_processorObjIZ15get_body_parserIZZN14mime_processor21make_section_iteratorERKNS2_INS3_10sectionObjENS0_10ptrrefBaseEEEbENKUlvE_clEvEUlSB_bE_ZZNS6_21make_section_iteratorESB_bENKSC_clEvEUlSB_E0_ENS1_INS2_INS0_20outputrefiteratorObjIiEES8_EEEERKSsSB_OT_OT0_EUlmE_NS3_32make_multipart_default_discarderISP_EEEES8_EEEEEOT_RNSt16remove_referenceISW_E4typeE
x::refobjiterator<x::ref<x::mime::multipart_section_processorObj<x::refobjiterator<x::ref<x::outputrefiteratorObj<int>, x::ptrrefBase> > get_body_parser<mime_processor::make_section_iterator(x::ref<x::mime::sectionObj, x::ptrrefBase> const&, bool)::{lambda()#1}::operator()() const::{lambda(x::ref<x::mime::sectionObj, x::ptrrefBase> const&, bool)#1}, mime_processor::make_section_iterator(x::ref<x::mime::sectionObj, x::ptrrefBase> const&, bool)::{lambda()#1}::operator()() const::{lambda(x::ref<x::mime::sectionObj, x::ptrrefBase> const&)#2}>(std::string const&, x::ref<x::mime::sectionObj, x::ptrrefBase> const&, mime_processor::make_section_iterator(x::ref<x::mime::sectionObj, x::ptrrefBase> const&, bool)::{lambda()#1}::operator()() const::{lambda(x::ref<x::mime::sectionObj, x::ptrrefBase> const&, bool)#1}&&, mime_processor::make_section_iterator(x::ref<x::mime::sectionObj, x::ptrrefBase> const&, bool)::{lambda()#1}::operator()() const::{lambda(x::ref<x::mime::sectionObj, x::ptrrefBase> const&)#2}&&)::{lambda(unsigned long)#1}, x::mime::make_multipart_default_discarder<mime_processor::make_section_iterator(x::ref<x::mime::sectionObj, x::ptrrefBase> const&, bool)::{lambda()#1}::operator()() const::{lambda(x::ref<x::mime::sectionObj, x::ptrrefBase> const&, bool)#1}&&> >, x::ptrrefBase> >& std::forward<x::refobjiterator<x::ref<x::mime::multipart_section_processorObj<x::refobjiterator<x::ref<x::outputrefiteratorObj<int>, x::ptrrefBase> > get_body_parser<mime_processor::make_section_iterator(x::ref<x::mime::sectionObj, x::ptrrefBase> const&, bool)::{lambda()#1}::operator()() const::{lambda(x::ref<x::mime::sectionObj, x::ptrrefBase> const&, bool)#1}, mime_processor::make_section_iterator(x::ref<x::mime::sectionObj, x::ptrrefBase> const&, bool)::{lambda()#1}::operator()() const::{lambda(x::ref<x::mime::sectionObj, x::ptrrefBase> const&)#2}>(std::string const&, x::ref<x::mime::sectionObj, x::ptrrefBase> const&, mime_processor::make_section_iterator(x::ref<x::mime::sectionObj, x::ptrrefBase> const&, bool)::{lambda()#1}::operator()() const::{lambda(x::ref<x::mime::sectionObj, x::ptrrefBase> const&, bool)#1}&&, mime_processor::make_section_iterator(x::ref<x::mime::sectionObj, x::ptrrefBase> const&, bool)::{lambda()#1}::operator()() const::{lambda(x::ref<x::mime::sectionObj, x::ptrrefBase> const&)#2}&&)::{lambda(unsigned long)#1}, x::mime::make_multipart_default_discarder<mime_processor::make_section_iterator(x::ref<x::mime::sectionObj, x::ptrrefBase> const&, bool)::{lambda()#1}::operator()() const::{lambda(x::ref<x::mime::sectionObj, x::ptrrefBase> const&, bool)#1}&&> >, x::ptrrefBase> >&>(std::remove_reference<x::mime::multipart_section_processorObj<x::refobjiterator<x::ref<x::outputrefiteratorObj<int>, x::ptrrefBase> > get_body_parser<mime_processor::make_section_iterator(x::ref<x::mime::sectionObj, x::ptrrefBase> const&, bool)::{lambda()#1}::operator()() const::{lambda(x::ref<x::mime::sectionObj, x::ptrrefBase> const&, bool)#1}, mime_processor::make_section_iterator(x::ref<x::mime::sectionObj, x::ptrrefBase> const&, bool)::{lambda()#1}::operator()() const::{lambda(x::ref<x::mime::sectionObj, x::ptrrefBase> const&)#2}>(std::string const&, x::ref<x::mime::sectionObj, x::ptrrefBase> const&, mime_processor::make_section_iterator(x::ref<x::mime::sectionObj, x::ptrrefBase> const&, bool)::{lambda()#1}::operator()() const::{lambda(x::ref<x::mime::sectionObj, x::ptrrefBase> const&, bool)#1}&&, mime_processor::make_section_iterator(x::ref<x::mime::sectionObj, x::ptrrefBase> const&, bool)::{lambda()#1}::operator()() const::{lambda(x::ref<x::mime::sectionObj, x::ptrrefBase> const&)#2}&&)::{lambda(unsigned long)#1}, x::mime::make_multipart_default_discarder<mime_processor::make_section_iterator(x::ref<x::mime::sectionObj, x::ptrrefBase> const&, bool)::{lambda()#1}::operator()() const::{lambda(x::ref<x::mime::sectionObj, x::ptrrefBase> const&, bool)#1}&&> > >::type&)
#
--format=gnu-v3 --no-params
_ZNK7strings8internal8SplitterINS_9delimiter5AnyOfENS_9SkipEmptyEEcvT_ISt6vectorI12basic_stringIcSt11char_traitsIcESaIcEESaISD_EEvEEv
strings::internal::Splitter<strings::delimiter::AnyOf, strings::SkipEmpty>::operator std::vector<basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<basic_string<char, std::char_traits<char>, std::allocator<char> > > ><std::vector<basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<basic_string<char, std::char_traits<char>, std::allocator<char> > > >, void>() const
strings::internal::Splitter<strings::delimiter::AnyOf, strings::SkipEmpty>::operator std::vector<basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<basic_string<char, std::char_traits<char>, std::allocator<char> > > ><std::vector<basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<basic_string<char, std::char_traits<char>, std::allocator<char> > > >, void>
#
--format=gnu-v3 --no-params
_ZN1AcvT_I1CEEv
A::operator C<C>()
A::operator C<C>
#
--format=gnu-v3 --no-params
_ZN1AcvPT_I1CEEv
A::operator C*<C>()
A::operator C*<C>
#
--format=gnu-v3 --no-params
_ZN1AcvT_IiEI1CEEv
A::operator C<int><C>()
A::operator C<int><C>
# https://sourceware.org/bugzilla/show_bug.cgi?id=14963#c16
--format=gnu-v3
_ZN3mdr16in_cached_threadIRZNK4cudr6GPUSet17parallel_for_eachIZN5tns3d20shape_representation7compute7GPUImpl7executeERKNS_1AINS_7ptr_refIKjEELl3ELl3ENS_8c_strideILl1ELl0EEEEERKNS8_INS9_IjEELl4ELl1ESD_EEEUliRKNS1_7ContextERNS7_5StateEE_JSt6vectorISO_SaISO_EEEEEvOT_DpRT0_EUlSP_E_JSt17reference_wrapperISO_EEEENS_12ScopedFutureIDTclfp_spcl7forwardISW_Efp0_EEEEESV_DpOSW_
mdr::ScopedFuture<decltype ({parm#1}(((forward<void cudr::GPUSet::parallel_for_each<tns3d::shape_representation::compute::GPUImpl::execute(mdr::A<mdr::ptr_ref<unsigned int const>, 3l, 3l, mdr::c_stride<1l, 0l> > const&, mdr::A<mdr::ptr_ref<unsigned int>, 4l, 1l, mdr::c_stride<1l, 0l> > const&)::{lambda(int, cudr::Context const&, tns3d::shape_representation::compute::GPUImpl::State&)#1}, std::vector<tns3d::shape_representation::compute::GPUImpl::State, std::allocator<tns3d::shape_representation::compute::GPUImpl::State> > >(tns3d::shape_representation::compute::GPUImpl::execute(mdr::A<mdr::ptr_ref<unsigned int const>, 3l, 3l, mdr::c_stride<1l, 0l> > const&, mdr::A<mdr::ptr_ref<unsigned int>, 4l, 1l, mdr::c_stride<1l, 0l> > const&)::{lambda(int, cudr::Context const&, tns3d::shape_representation::compute::GPUImpl::State&)#1}&&, std::vector<tns3d::shape_representation::compute::GPUImpl::State, std::allocator<tns3d::shape_representation::compute::GPUImpl::State> >&) const::{lambda(tns3d::shape_representation::compute::GPUImpl::State&)#1}&>)({parm#2}))...))> mdr::in_cached_thread<void cudr::GPUSet::parallel_for_each<tns3d::shape_representation::compute::GPUImpl::execute(mdr::A<mdr::ptr_ref<unsigned int const>, 3l, 3l, mdr::c_stride<1l, 0l> > const&, mdr::A<mdr::ptr_ref<unsigned int>, 4l, 1l, mdr::c_stride<1l, 0l> > const&)::{lambda(int, cudr::Context const&, tns3d::shape_representation::compute::GPUImpl::State&)#1}, std::vector<tns3d::shape_representation::compute::GPUImpl::State, std::allocator<tns3d::shape_representation::compute::GPUImpl::State> > >(void cudr::GPUSet::parallel_for_each<tns3d::shape_representation::compute::GPUImpl::execute(mdr::A<mdr::ptr_ref<unsigned int const>, 3l, 3l, mdr::c_stride<1l, 0l> > const&, mdr::A<mdr::ptr_ref<unsigned int>, 4l, 1l, mdr::c_stride<1l, 0l> > const&)::{lambda(int, cudr::Context const&, tns3d::shape_representation::compute::GPUImpl::State&)#1}, std::vector<tns3d::shape_representation::compute::GPUImpl::State, std::allocator<tns3d::shape_representation::compute::GPUImpl::State> > >(tns3d::shape_representation::compute::GPUImpl::execute(mdr::A<mdr::ptr_ref<unsigned int const>, 3l, 3l, mdr::c_stride<1l, 0l> > const&, mdr::A<mdr::ptr_ref<unsigned int>, 4l, 1l, mdr::c_stride<1l, 0l> > const&)::{lambda(int, cudr::Context const&, tns3d::shape_representation::compute::GPUImpl::State&)#1}&&, std::vector<tns3d::shape_representation::compute::GPUImpl::State, std::allocator<tns3d::shape_representation::compute::GPUImpl::State> >&) const::{lambda(tns3d::shape_representation::compute::GPUImpl::State&)#1}&, std::vector<tns3d::shape_representation::compute::GPUImpl::State, std::allocator<tns3d::shape_representation::compute::GPUImpl::State> >&) const::{lambda(tns3d::shape_representation::compute::GPUImpl::State&)#1}&, std::reference_wrapper<tns3d::shape_representation::compute::GPUImpl::State> >(void cudr::GPUSet::parallel_for_each<tns3d::shape_representation::compute::GPUImpl::execute(mdr::A<mdr::ptr_ref<unsigned int const>, 3l, 3l, mdr::c_stride<1l, 0l> > const&, mdr::A<mdr::ptr_ref<unsigned int>, 4l, 1l, mdr::c_stride<1l, 0l> > const&)::{lambda(int, cudr::Context const&, tns3d::shape_representation::compute::GPUImpl::State&)#1}, std::vector<tns3d::shape_representation::compute::GPUImpl::State, std::allocator<tns3d::shape_representation::compute::GPUImpl::State> > >(tns3d::shape_representation::compute::GPUImpl::execute(mdr::A<mdr::ptr_ref<unsigned int const>, 3l, 3l, mdr::c_stride<1l, 0l> > const&, mdr::A<mdr::ptr_ref<unsigned int>, 4l, 1l, mdr::c_stride<1l, 0l> > const&)::{lambda(int, cudr::Context const&, tns3d::shape_representation::compute::GPUImpl::State&)#1}&&, std::vector<tns3d::shape_representation::compute::GPUImpl::State, std::allocator<tns3d::shape_representation::compute::GPUImpl::State> >&) const::{lambda(tns3d::shape_representation::compute::GPUImpl::State&)#1}&, (void cudr::GPUSet::parallel_for_each<tns3d::shape_representation::compute::GPUImpl::execute(mdr::A<mdr::ptr_ref<unsigned int const>, 3l, 3l, mdr::c_stride<1l, 0l> > const&, mdr::A<mdr::ptr_ref<unsigned int>, 4l, 1l, mdr::c_stride<1l, 0l> > const&)::{lambda(int, cudr::Context const&, tns3d::shape_representation::compute::GPUImpl::State&)#1}, std::vector<tns3d::shape_representation::compute::GPUImpl::State, std::allocator<tns3d::shape_representation::compute::GPUImpl::State> > >(tns3d::shape_representation::compute::GPUImpl::execute(mdr::A<mdr::ptr_ref<unsigned int const>, 3l, 3l, mdr::c_stride<1l, 0l> > const&, mdr::A<mdr::ptr_ref<unsigned int>, 4l, 1l, mdr::c_stride<1l, 0l> > const&)::{lambda(int, cudr::Context const&, tns3d::shape_representation::compute::GPUImpl::State&)#1}&&, std::vector<tns3d::shape_representation::compute::GPUImpl::State, std::allocator<tns3d::shape_representation::compute::GPUImpl::State> >&) const::{lambda(tns3d::shape_representation::compute::GPUImpl::State&)#1}&&&)...)
# https://sourceware.org/bugzilla/show_bug.cgi?id=14963#c18
--format=gnu-v3
_ZNSt9_Any_data9_M_accessIPZN13ThreadManager10futureTaskISt5_BindIFSt7_Mem_fnIM6RunnerFvvEEPS5_EEEEvOT_EUlvE_EERSC_v
void ThreadManager::futureTask<std::_Bind<std::_Mem_fn<void (Runner::*)()> (Runner*)> >(std::_Bind<std::_Mem_fn<void (Runner::*)()> (Runner*)>&&)::{lambda()#1}*& std::_Any_data::_M_access<void ThreadManager::futureTask<std::_Bind<std::_Mem_fn<void (Runner::*)()> (Runner*)> >(void ThreadManager::futureTask<std::_Bind<std::_Mem_fn<void (Runner::*)()> (Runner*)> >(std::_Bind<std::_Mem_fn<void (Runner::*)()> (Runner*)>&&)::{lambda()#1}*&&)::{lambda()#1}*>()
# https://sourceware.org/bugzilla/show_bug.cgi?id=14963#c24
# aka https://sourceware.org/bugzilla/show_bug.cgi?id=16593
--format=gnu-v3
_ZNSt9_Any_data9_M_accessIPZN3sel8Selector6SetObjI3FooJPKcMS4_FviEEEEvRT_DpT0_EUlvE_EESA_v
void sel::Selector::SetObj<Foo, char const*, void (Foo::*)(int)>(Foo&, char const*, void (Foo::*)(int))::{lambda()#1}*& std::_Any_data::_M_access<void sel::Selector::SetObj<Foo, char const*, void (Foo::*)(int)>(void sel::Selector::SetObj<Foo, char const*, void (Foo::*)(int)>(Foo&, char const*, void (Foo::*)(int))::{lambda()#1}*&, char const*, void (Foo::*)(int))::{lambda()#1}*>()
# https://sourceware.org/bugzilla/show_bug.cgi?id=16752#c1
--format=gnu-v3
_ZNSt9_Any_data9_M_accessIPZN13ThreadManager7newTaskIRSt5_BindIFSt7_Mem_fnIM5DiaryFivEEPS5_EEIEEESt6futureINSt9result_ofIFT_DpT0_EE4typeEEOSF_DpOSG_EUlvE_EERSF_v
std::future<std::result_of<std::_Bind<std::_Mem_fn<int (Diary::*)()> (Diary*)>& ()>::type> ThreadManager::newTask<std::_Bind<std::_Mem_fn<int (Diary::*)()> (Diary*)>&>(std::_Bind<std::_Mem_fn<int (Diary::*)()> (Diary*)>&)::{lambda()#1}*& std::_Any_data::_M_access<std::future<std::result_of<std::_Bind<std::_Mem_fn<int (Diary::*)()> (Diary*)>& ()>::type> ThreadManager::newTask<std::_Bind<std::_Mem_fn<int (Diary::*)()> (Diary*)>&>(std::future<std::result_of<std::_Bind<std::_Mem_fn<int (Diary::*)()> (Diary*)>& ()>::type> ThreadManager::newTask<std::_Bind<std::_Mem_fn<int (Diary::*)()> (Diary*)>&>(std::_Bind<std::_Mem_fn<int (Diary::*)()> (Diary*)>&)::{lambda()#1}*&&)::{lambda()#1}*>()
# https://sourceware.org/bugzilla/show_bug.cgi?id=16752#c6
--format=gnu-v3
_ZNSt9_Any_data9_M_accessIPZN6cereal18polymorphic_detail15getInputBindingINS1_16JSONInputArchiveEEENS1_6detail15InputBindingMapIT_E11SerializersERS7_jEUlPvRSt10unique_ptrIvNS5_12EmptyDeleterIvEEEE0_EESA_v
cereal::detail::InputBindingMap<cereal::JSONInputArchive>::Serializers cereal::polymorphic_detail::getInputBinding<cereal::JSONInputArchive>(cereal::JSONInputArchive&, unsigned int)::{lambda(void*, std::unique_ptr<void, cereal::detail::EmptyDeleter<void> >&)#2}*& std::_Any_data::_M_access<cereal::detail::InputBindingMap<cereal::JSONInputArchive>::Serializers cereal::polymorphic_detail::getInputBinding<cereal::JSONInputArchive>(cereal::detail::InputBindingMap<cereal::JSONInputArchive>::Serializers cereal::polymorphic_detail::getInputBinding<cereal::JSONInputArchive>(cereal::JSONInputArchive&, unsigned int)::{lambda(void*, std::unique_ptr<void, cereal::detail::EmptyDeleter<void> >&)#2}*&, unsigned int)::{lambda(void*, std::unique_ptr<void, cereal::detail::EmptyDeleter<void> >&)#2}*>()
# https://sourceware.org/bugzilla/show_bug.cgi?id=16845#c2
--format=gnu-v3
_ZNSt9_Any_data9_M_accessIPZ4postISt8functionIFvvEEEvOT_EUlvE_EERS5_v
void post<std::function<void ()> >(std::function<void ()>&&)::{lambda()#1}*& std::_Any_data::_M_access<void post<std::function<void ()> >(void post<std::function<void ()> >(std::function<void ()>&&)::{lambda()#1}*&&)::{lambda()#1}*>()
#
--format=auto --no-params
_Z3xxxDFyuVb
xxx(unsigned long long _Fract, bool volatile)
xxx
# https://sourceware.org/bugzilla/show_bug.cgi?id=16817
--format=auto --no-params
_QueueNotification_QueueController__$4PPPPPPPM_A_INotice___Z
_QueueNotification_QueueController__$4PPPPPPPM_A_INotice___Z
_QueueNotification_QueueController__$4PPPPPPPM_A_INotice___Z
--format=gnu-v3
_Z1fSsB3fooS_
f(std::string[abi:foo], std::string[abi:foo])
--format=gnu-v3
_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))
# 
# 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
--format=gnu-v3
_Z1fPDxFvvES0_
f(void (*)() transaction_safe, void (*)() transaction_safe)
#
# These two are from gcc PR61321, and gcc PR61233 / gdb PR16957
#
--format=gnu-v3
_Z13function_tempIiEv1AIXszcvT_Li999EEE
void function_temp<int>(A<sizeof ((int)(999))>)
#
--format=gnu-v3
_Z7ZipWithI7QStringS0_5QListZN4oral6detail16AdaptCreateTableI7AccountEES0_RKNS3_16CachedFieldsDataEEUlRKS0_SA_E_ET1_IDTclfp1_cvT__EcvT0__EEEERKT1_ISC_ERKT1_ISD_ET2_
QList<decltype ({parm#3}((QString)(), (QString)()))> ZipWith<QString, QString, QList, QString oral::detail::AdaptCreateTable<Account>(oral::detail::CachedFieldsData const&)::{lambda(QString const&, QString const&)#1}>(QList<QString oral::detail::AdaptCreateTable<Account>(oral::detail::CachedFieldsData const&)::{lambda(QString const&, QString const&)#1}> const&, QList<QList> const&, QString oral::detail::AdaptCreateTable<Account>(oral::detail::CachedFieldsData const&)::{lambda(QString const&, QString const&)#1})
#
# These three are symbols generated by g++'s testsuite, which triggered the same bug as above.
--format=gnu-v3
_Z14int_if_addableI1YERiP1AIXszpldecvPT_Li0EdecvS4_Li0EEE
int& int_if_addable<Y>(A<sizeof ((*((Y*)(0)))+(*((Y*)(0))))>*)
#
--format=gnu-v3
_Z3bazIiEvP1AIXszcl3foocvT__ELCf00000000_00000000EEEE
void baz<int>(A<sizeof (foo((int)(), (floatcomplex )00000000_00000000))>*)
#
--format=gnu-v3
_Z3fooI1FEN1XIXszdtcl1PclcvT__EEE5arrayEE4TypeEv
X<sizeof ((P(((F)())())).array)>::Type foo<F>()
