/src/llvm-project-16.0.6.src/libcxxabi/src/cxa_demangle.cpp
Line | Count | Source (jump to first uncovered line) |
1 | | //===----------------------------------------------------------------------===// |
2 | | // |
3 | | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
4 | | // See https://llvm.org/LICENSE.txt for license information. |
5 | | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
6 | | // |
7 | | //===----------------------------------------------------------------------===// |
8 | | |
9 | | // FIXME: (possibly) incomplete list of features that clang mangles that this |
10 | | // file does not yet support: |
11 | | // - C++ modules TS |
12 | | |
13 | | #include "demangle/ItaniumDemangle.h" |
14 | | #include "__cxxabi_config.h" |
15 | | #include <cassert> |
16 | | #include <cctype> |
17 | | #include <cstdio> |
18 | | #include <cstdlib> |
19 | | #include <cstring> |
20 | | #include <functional> |
21 | | #include <numeric> |
22 | | #include <utility> |
23 | | |
24 | | using namespace itanium_demangle; |
25 | | |
26 | | constexpr const char *itanium_demangle::FloatData<float>::spec; |
27 | | constexpr const char *itanium_demangle::FloatData<double>::spec; |
28 | | constexpr const char *itanium_demangle::FloatData<long double>::spec; |
29 | | |
30 | | // <discriminator> := _ <non-negative number> # when number < 10 |
31 | | // := __ <non-negative number> _ # when number >= 10 |
32 | | // extension := decimal-digit+ # at the end of string |
33 | | const char *itanium_demangle::parse_discriminator(const char *first, |
34 | 0 | const char *last) { |
35 | | // parse but ignore discriminator |
36 | 0 | if (first != last) { |
37 | 0 | if (*first == '_') { |
38 | 0 | const char *t1 = first + 1; |
39 | 0 | if (t1 != last) { |
40 | 0 | if (std::isdigit(*t1)) |
41 | 0 | first = t1 + 1; |
42 | 0 | else if (*t1 == '_') { |
43 | 0 | for (++t1; t1 != last && std::isdigit(*t1); ++t1) |
44 | 0 | ; |
45 | 0 | if (t1 != last && *t1 == '_') |
46 | 0 | first = t1 + 1; |
47 | 0 | } |
48 | 0 | } |
49 | 0 | } else if (std::isdigit(*first)) { |
50 | 0 | const char *t1 = first + 1; |
51 | 0 | for (; t1 != last && std::isdigit(*t1); ++t1) |
52 | 0 | ; |
53 | 0 | if (t1 == last) |
54 | 0 | first = last; |
55 | 0 | } |
56 | 0 | } |
57 | 0 | return first; |
58 | 0 | } |
59 | | |
60 | | #ifndef NDEBUG |
61 | | namespace { |
62 | | struct DumpVisitor { |
63 | | unsigned Depth = 0; |
64 | | bool PendingNewline = false; |
65 | | |
66 | 0 | template<typename NodeT> static constexpr bool wantsNewline(const NodeT *) { |
67 | 0 | return true; |
68 | 0 | } Unexecuted instantiation: cxa_demangle.cpp:bool (anonymous namespace)::DumpVisitor::wantsNewline<(anonymous namespace)::itanium_demangle::Node>((anonymous namespace)::itanium_demangle::Node const*) Unexecuted instantiation: cxa_demangle.cpp:bool (anonymous namespace)::DumpVisitor::wantsNewline<(anonymous namespace)::itanium_demangle::ModuleName>((anonymous namespace)::itanium_demangle::ModuleName const*) |
69 | 0 | static bool wantsNewline(NodeArray A) { return !A.empty(); } |
70 | 0 | static constexpr bool wantsNewline(...) { return false; } |
71 | | |
72 | 0 | template<typename ...Ts> static bool anyWantNewline(Ts ...Vs) { |
73 | 0 | for (bool B : {wantsNewline(Vs)...}) |
74 | 0 | if (B) |
75 | 0 | return true; |
76 | 0 | return false; |
77 | 0 | } Unexecuted instantiation: cxa_demangle.cpp:bool (anonymous namespace)::DumpVisitor::anyWantNewline<(anonymous namespace)::itanium_demangle::NodeArray>((anonymous namespace)::itanium_demangle::NodeArray) Unexecuted instantiation: cxa_demangle.cpp:bool (anonymous namespace)::DumpVisitor::anyWantNewline<(anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::StringView>((anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::StringView) Unexecuted instantiation: cxa_demangle.cpp:bool (anonymous namespace)::DumpVisitor::anyWantNewline<(anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::Node const*>((anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::Node const*) Unexecuted instantiation: cxa_demangle.cpp:bool (anonymous namespace)::DumpVisitor::anyWantNewline<(anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Qualifiers>((anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Qualifiers) Unexecuted instantiation: cxa_demangle.cpp:bool (anonymous namespace)::DumpVisitor::anyWantNewline<(anonymous namespace)::itanium_demangle::Node const*>((anonymous namespace)::itanium_demangle::Node const*) Unexecuted instantiation: cxa_demangle.cpp:bool (anonymous namespace)::DumpVisitor::anyWantNewline<(anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::Node*>((anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::Node*) Unexecuted instantiation: cxa_demangle.cpp:bool (anonymous namespace)::DumpVisitor::anyWantNewline<(anonymous namespace)::itanium_demangle::StringView>((anonymous namespace)::itanium_demangle::StringView) Unexecuted instantiation: cxa_demangle.cpp:bool (anonymous namespace)::DumpVisitor::anyWantNewline<(anonymous namespace)::itanium_demangle::Node*, (anonymous namespace)::itanium_demangle::StringView>((anonymous namespace)::itanium_demangle::Node*, (anonymous namespace)::itanium_demangle::StringView) Unexecuted instantiation: cxa_demangle.cpp:bool (anonymous namespace)::DumpVisitor::anyWantNewline<(anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::ReferenceKind>((anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::ReferenceKind) Unexecuted instantiation: cxa_demangle.cpp:bool (anonymous namespace)::DumpVisitor::anyWantNewline<(anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*>((anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*) Unexecuted instantiation: cxa_demangle.cpp:bool (anonymous namespace)::DumpVisitor::anyWantNewline<(anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node*>((anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node*) Unexecuted instantiation: cxa_demangle.cpp:bool (anonymous namespace)::DumpVisitor::anyWantNewline<(anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::NodeArray, (anonymous namespace)::itanium_demangle::Qualifiers, (anonymous namespace)::itanium_demangle::FunctionRefQual, (anonymous namespace)::itanium_demangle::Node const*>((anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::NodeArray, (anonymous namespace)::itanium_demangle::Qualifiers, (anonymous namespace)::itanium_demangle::FunctionRefQual, (anonymous namespace)::itanium_demangle::Node const*) Unexecuted instantiation: cxa_demangle.cpp:bool (anonymous namespace)::DumpVisitor::anyWantNewline<(anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::NodeArray, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Qualifiers, (anonymous namespace)::itanium_demangle::FunctionRefQual>((anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::NodeArray, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Qualifiers, (anonymous namespace)::itanium_demangle::FunctionRefQual) Unexecuted instantiation: cxa_demangle.cpp:bool (anonymous namespace)::DumpVisitor::anyWantNewline<(anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::Node const*>((anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::Node const*) Unexecuted instantiation: cxa_demangle.cpp:bool (anonymous namespace)::DumpVisitor::anyWantNewline<(anonymous namespace)::itanium_demangle::Node*, (anonymous namespace)::itanium_demangle::Node*>((anonymous namespace)::itanium_demangle::Node*, (anonymous namespace)::itanium_demangle::Node*) Unexecuted instantiation: cxa_demangle.cpp:bool (anonymous namespace)::DumpVisitor::anyWantNewline<(anonymous namespace)::itanium_demangle::ModuleName*, (anonymous namespace)::itanium_demangle::Node*, bool>((anonymous namespace)::itanium_demangle::ModuleName*, (anonymous namespace)::itanium_demangle::Node*, bool) Unexecuted instantiation: cxa_demangle.cpp:bool (anonymous namespace)::DumpVisitor::anyWantNewline<(anonymous namespace)::itanium_demangle::ModuleName*, (anonymous namespace)::itanium_demangle::Node*>((anonymous namespace)::itanium_demangle::ModuleName*, (anonymous namespace)::itanium_demangle::Node*) Unexecuted instantiation: cxa_demangle.cpp:bool (anonymous namespace)::DumpVisitor::anyWantNewline<(anonymous namespace)::itanium_demangle::Node const*, bool>((anonymous namespace)::itanium_demangle::Node const*, bool) Unexecuted instantiation: cxa_demangle.cpp:bool (anonymous namespace)::DumpVisitor::anyWantNewline<(anonymous namespace)::itanium_demangle::TemplateParamKind, unsigned int>((anonymous namespace)::itanium_demangle::TemplateParamKind, unsigned int) Unexecuted instantiation: cxa_demangle.cpp:bool (anonymous namespace)::DumpVisitor::anyWantNewline<(anonymous namespace)::itanium_demangle::Node*>((anonymous namespace)::itanium_demangle::Node*) Unexecuted instantiation: cxa_demangle.cpp:bool (anonymous namespace)::DumpVisitor::anyWantNewline<(anonymous namespace)::itanium_demangle::Node*, (anonymous namespace)::itanium_demangle::NodeArray>((anonymous namespace)::itanium_demangle::Node*, (anonymous namespace)::itanium_demangle::NodeArray) Unexecuted instantiation: cxa_demangle.cpp:bool (anonymous namespace)::DumpVisitor::anyWantNewline<unsigned long>(unsigned long) Unexecuted instantiation: cxa_demangle.cpp:bool (anonymous namespace)::DumpVisitor::anyWantNewline<(anonymous namespace)::itanium_demangle::SpecialSubKind>((anonymous namespace)::itanium_demangle::SpecialSubKind) Unexecuted instantiation: cxa_demangle.cpp:bool (anonymous namespace)::DumpVisitor::anyWantNewline<(anonymous namespace)::itanium_demangle::Node const*, bool, int>((anonymous namespace)::itanium_demangle::Node const*, bool, int) Unexecuted instantiation: cxa_demangle.cpp:bool (anonymous namespace)::DumpVisitor::anyWantNewline<(anonymous namespace)::itanium_demangle::NodeArray, (anonymous namespace)::itanium_demangle::NodeArray, (anonymous namespace)::itanium_demangle::StringView>((anonymous namespace)::itanium_demangle::NodeArray, (anonymous namespace)::itanium_demangle::NodeArray, (anonymous namespace)::itanium_demangle::StringView) Unexecuted instantiation: cxa_demangle.cpp:bool (anonymous namespace)::DumpVisitor::anyWantNewline<(anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node::Prec>((anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node::Prec) Unexecuted instantiation: cxa_demangle.cpp:bool (anonymous namespace)::DumpVisitor::anyWantNewline<(anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node::Prec>((anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node::Prec) Unexecuted instantiation: cxa_demangle.cpp:bool (anonymous namespace)::DumpVisitor::anyWantNewline<(anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::Node::Prec>((anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::Node::Prec) Unexecuted instantiation: cxa_demangle.cpp:bool (anonymous namespace)::DumpVisitor::anyWantNewline<(anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node::Prec>((anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node::Prec) Unexecuted instantiation: cxa_demangle.cpp:bool (anonymous namespace)::DumpVisitor::anyWantNewline<(anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::NodeArray, bool>((anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::NodeArray, bool) Unexecuted instantiation: cxa_demangle.cpp:bool (anonymous namespace)::DumpVisitor::anyWantNewline<(anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node::Prec>((anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node::Prec) Unexecuted instantiation: cxa_demangle.cpp:bool (anonymous namespace)::DumpVisitor::anyWantNewline<(anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node::Prec>((anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node::Prec) Unexecuted instantiation: cxa_demangle.cpp:bool (anonymous namespace)::DumpVisitor::anyWantNewline<(anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::NodeArray, (anonymous namespace)::itanium_demangle::Node::Prec>((anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::NodeArray, (anonymous namespace)::itanium_demangle::Node::Prec) Unexecuted instantiation: cxa_demangle.cpp:bool (anonymous namespace)::DumpVisitor::anyWantNewline<(anonymous namespace)::itanium_demangle::NodeArray, (anonymous namespace)::itanium_demangle::Node*, (anonymous namespace)::itanium_demangle::NodeArray, bool, bool, (anonymous namespace)::itanium_demangle::Node::Prec>((anonymous namespace)::itanium_demangle::NodeArray, (anonymous namespace)::itanium_demangle::Node*, (anonymous namespace)::itanium_demangle::NodeArray, bool, bool, (anonymous namespace)::itanium_demangle::Node::Prec) Unexecuted instantiation: cxa_demangle.cpp:bool (anonymous namespace)::DumpVisitor::anyWantNewline<(anonymous namespace)::itanium_demangle::Node*, bool, bool, (anonymous namespace)::itanium_demangle::Node::Prec>((anonymous namespace)::itanium_demangle::Node*, bool, bool, (anonymous namespace)::itanium_demangle::Node::Prec) Unexecuted instantiation: cxa_demangle.cpp:bool (anonymous namespace)::DumpVisitor::anyWantNewline<(anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::Node*, (anonymous namespace)::itanium_demangle::Node::Prec>((anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::Node*, (anonymous namespace)::itanium_demangle::Node::Prec) Unexecuted instantiation: cxa_demangle.cpp:bool (anonymous namespace)::DumpVisitor::anyWantNewline<(anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::Node::Prec>((anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::Node::Prec) Unexecuted instantiation: cxa_demangle.cpp:bool (anonymous namespace)::DumpVisitor::anyWantNewline<(anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::NodeArray>((anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::NodeArray) Unexecuted instantiation: cxa_demangle.cpp:bool (anonymous namespace)::DumpVisitor::anyWantNewline<bool, (anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*>(bool, (anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*) Unexecuted instantiation: cxa_demangle.cpp:bool (anonymous namespace)::DumpVisitor::anyWantNewline<bool>(bool) Unexecuted instantiation: cxa_demangle.cpp:bool (anonymous namespace)::DumpVisitor::anyWantNewline<(anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::StringView>((anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::StringView) Unexecuted instantiation: cxa_demangle.cpp:bool (anonymous namespace)::DumpVisitor::anyWantNewline<(anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*, bool>((anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*, bool) Unexecuted instantiation: cxa_demangle.cpp:bool (anonymous namespace)::DumpVisitor::anyWantNewline<(anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*>((anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*) |
78 | | |
79 | 0 | void printStr(const char *S) { fprintf(stderr, "%s", S); } |
80 | 0 | void print(StringView SV) { |
81 | 0 | fprintf(stderr, "\"%.*s\"", (int)SV.size(), SV.begin()); |
82 | 0 | } |
83 | 0 | void print(const Node *N) { |
84 | 0 | if (N) |
85 | 0 | N->visit(std::ref(*this)); |
86 | 0 | else |
87 | 0 | printStr("<null>"); |
88 | 0 | } |
89 | 0 | void print(NodeArray A) { |
90 | 0 | ++Depth; |
91 | 0 | printStr("{"); |
92 | 0 | bool First = true; |
93 | 0 | for (const Node *N : A) { |
94 | 0 | if (First) |
95 | 0 | print(N); |
96 | 0 | else |
97 | 0 | printWithComma(N); |
98 | 0 | First = false; |
99 | 0 | } |
100 | 0 | printStr("}"); |
101 | 0 | --Depth; |
102 | 0 | } |
103 | | |
104 | | // Overload used when T is exactly 'bool', not merely convertible to 'bool'. |
105 | 0 | void print(bool B) { printStr(B ? "true" : "false"); } |
106 | | |
107 | | template <class T> |
108 | 0 | typename std::enable_if<std::is_unsigned<T>::value>::type print(T N) { |
109 | 0 | fprintf(stderr, "%llu", (unsigned long long)N); |
110 | 0 | } Unexecuted instantiation: cxa_demangle.cpp:_ZN12_GLOBAL__N_111DumpVisitor5printIjEENSt3__19enable_ifIXsr3std11is_unsignedIT_EE5valueEvE4typeES4_ Unexecuted instantiation: cxa_demangle.cpp:_ZN12_GLOBAL__N_111DumpVisitor5printImEENSt3__19enable_ifIXsr3std11is_unsignedIT_EE5valueEvE4typeES4_ |
111 | | |
112 | | template <class T> |
113 | 0 | typename std::enable_if<std::is_signed<T>::value>::type print(T N) { |
114 | 0 | fprintf(stderr, "%lld", (long long)N); |
115 | 0 | } |
116 | | |
117 | 0 | void print(ReferenceKind RK) { |
118 | 0 | switch (RK) { |
119 | 0 | case ReferenceKind::LValue: |
120 | 0 | return printStr("ReferenceKind::LValue"); |
121 | 0 | case ReferenceKind::RValue: |
122 | 0 | return printStr("ReferenceKind::RValue"); |
123 | 0 | } |
124 | 0 | } |
125 | 0 | void print(FunctionRefQual RQ) { |
126 | 0 | switch (RQ) { |
127 | 0 | case FunctionRefQual::FrefQualNone: |
128 | 0 | return printStr("FunctionRefQual::FrefQualNone"); |
129 | 0 | case FunctionRefQual::FrefQualLValue: |
130 | 0 | return printStr("FunctionRefQual::FrefQualLValue"); |
131 | 0 | case FunctionRefQual::FrefQualRValue: |
132 | 0 | return printStr("FunctionRefQual::FrefQualRValue"); |
133 | 0 | } |
134 | 0 | } |
135 | 0 | void print(Qualifiers Qs) { |
136 | 0 | if (!Qs) return printStr("QualNone"); |
137 | 0 | struct QualName { Qualifiers Q; const char *Name; } Names[] = { |
138 | 0 | {QualConst, "QualConst"}, |
139 | 0 | {QualVolatile, "QualVolatile"}, |
140 | 0 | {QualRestrict, "QualRestrict"}, |
141 | 0 | }; |
142 | 0 | for (QualName Name : Names) { |
143 | 0 | if (Qs & Name.Q) { |
144 | 0 | printStr(Name.Name); |
145 | 0 | Qs = Qualifiers(Qs & ~Name.Q); |
146 | 0 | if (Qs) printStr(" | "); |
147 | 0 | } |
148 | 0 | } |
149 | 0 | } |
150 | 0 | void print(SpecialSubKind SSK) { |
151 | 0 | switch (SSK) { |
152 | 0 | case SpecialSubKind::allocator: |
153 | 0 | return printStr("SpecialSubKind::allocator"); |
154 | 0 | case SpecialSubKind::basic_string: |
155 | 0 | return printStr("SpecialSubKind::basic_string"); |
156 | 0 | case SpecialSubKind::string: |
157 | 0 | return printStr("SpecialSubKind::string"); |
158 | 0 | case SpecialSubKind::istream: |
159 | 0 | return printStr("SpecialSubKind::istream"); |
160 | 0 | case SpecialSubKind::ostream: |
161 | 0 | return printStr("SpecialSubKind::ostream"); |
162 | 0 | case SpecialSubKind::iostream: |
163 | 0 | return printStr("SpecialSubKind::iostream"); |
164 | 0 | } |
165 | 0 | } |
166 | 0 | void print(TemplateParamKind TPK) { |
167 | 0 | switch (TPK) { |
168 | 0 | case TemplateParamKind::Type: |
169 | 0 | return printStr("TemplateParamKind::Type"); |
170 | 0 | case TemplateParamKind::NonType: |
171 | 0 | return printStr("TemplateParamKind::NonType"); |
172 | 0 | case TemplateParamKind::Template: |
173 | 0 | return printStr("TemplateParamKind::Template"); |
174 | 0 | } |
175 | 0 | } |
176 | 0 | void print(Node::Prec P) { |
177 | 0 | switch (P) { |
178 | 0 | case Node::Prec::Primary: |
179 | 0 | return printStr("Node::Prec::Primary"); |
180 | 0 | case Node::Prec::Postfix: |
181 | 0 | return printStr("Node::Prec::Postfix"); |
182 | 0 | case Node::Prec::Unary: |
183 | 0 | return printStr("Node::Prec::Unary"); |
184 | 0 | case Node::Prec::Cast: |
185 | 0 | return printStr("Node::Prec::Cast"); |
186 | 0 | case Node::Prec::PtrMem: |
187 | 0 | return printStr("Node::Prec::PtrMem"); |
188 | 0 | case Node::Prec::Multiplicative: |
189 | 0 | return printStr("Node::Prec::Multiplicative"); |
190 | 0 | case Node::Prec::Additive: |
191 | 0 | return printStr("Node::Prec::Additive"); |
192 | 0 | case Node::Prec::Shift: |
193 | 0 | return printStr("Node::Prec::Shift"); |
194 | 0 | case Node::Prec::Spaceship: |
195 | 0 | return printStr("Node::Prec::Spaceship"); |
196 | 0 | case Node::Prec::Relational: |
197 | 0 | return printStr("Node::Prec::Relational"); |
198 | 0 | case Node::Prec::Equality: |
199 | 0 | return printStr("Node::Prec::Equality"); |
200 | 0 | case Node::Prec::And: |
201 | 0 | return printStr("Node::Prec::And"); |
202 | 0 | case Node::Prec::Xor: |
203 | 0 | return printStr("Node::Prec::Xor"); |
204 | 0 | case Node::Prec::Ior: |
205 | 0 | return printStr("Node::Prec::Ior"); |
206 | 0 | case Node::Prec::AndIf: |
207 | 0 | return printStr("Node::Prec::AndIf"); |
208 | 0 | case Node::Prec::OrIf: |
209 | 0 | return printStr("Node::Prec::OrIf"); |
210 | 0 | case Node::Prec::Conditional: |
211 | 0 | return printStr("Node::Prec::Conditional"); |
212 | 0 | case Node::Prec::Assign: |
213 | 0 | return printStr("Node::Prec::Assign"); |
214 | 0 | case Node::Prec::Comma: |
215 | 0 | return printStr("Node::Prec::Comma"); |
216 | 0 | case Node::Prec::Default: |
217 | 0 | return printStr("Node::Prec::Default"); |
218 | 0 | } |
219 | 0 | } |
220 | | |
221 | 0 | void newLine() { |
222 | 0 | printStr("\n"); |
223 | 0 | for (unsigned I = 0; I != Depth; ++I) |
224 | 0 | printStr(" "); |
225 | 0 | PendingNewline = false; |
226 | 0 | } |
227 | | |
228 | 0 | template<typename T> void printWithPendingNewline(T V) { |
229 | 0 | print(V); |
230 | 0 | if (wantsNewline(V)) |
231 | 0 | PendingNewline = true; |
232 | 0 | } Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::printWithPendingNewline<(anonymous namespace)::itanium_demangle::NodeArray>((anonymous namespace)::itanium_demangle::NodeArray) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::printWithPendingNewline<(anonymous namespace)::itanium_demangle::Node const*>((anonymous namespace)::itanium_demangle::Node const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::printWithPendingNewline<(anonymous namespace)::itanium_demangle::StringView>((anonymous namespace)::itanium_demangle::StringView) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::printWithPendingNewline<(anonymous namespace)::itanium_demangle::Qualifiers>((anonymous namespace)::itanium_demangle::Qualifiers) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::printWithPendingNewline<(anonymous namespace)::itanium_demangle::Node*>((anonymous namespace)::itanium_demangle::Node*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::printWithPendingNewline<(anonymous namespace)::itanium_demangle::ReferenceKind>((anonymous namespace)::itanium_demangle::ReferenceKind) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::printWithPendingNewline<(anonymous namespace)::itanium_demangle::FunctionRefQual>((anonymous namespace)::itanium_demangle::FunctionRefQual) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::printWithPendingNewline<(anonymous namespace)::itanium_demangle::ModuleName*>((anonymous namespace)::itanium_demangle::ModuleName*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::printWithPendingNewline<bool>(bool) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::printWithPendingNewline<(anonymous namespace)::itanium_demangle::TemplateParamKind>((anonymous namespace)::itanium_demangle::TemplateParamKind) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::printWithPendingNewline<unsigned int>(unsigned int) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::printWithPendingNewline<unsigned long>(unsigned long) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::printWithPendingNewline<(anonymous namespace)::itanium_demangle::SpecialSubKind>((anonymous namespace)::itanium_demangle::SpecialSubKind) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::printWithPendingNewline<int>(int) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::printWithPendingNewline<(anonymous namespace)::itanium_demangle::Node::Prec>((anonymous namespace)::itanium_demangle::Node::Prec) |
233 | | |
234 | 0 | template<typename T> void printWithComma(T V) { |
235 | 0 | if (PendingNewline || wantsNewline(V)) { |
236 | 0 | printStr(","); |
237 | 0 | newLine(); |
238 | 0 | } else { |
239 | 0 | printStr(", "); |
240 | 0 | } |
241 | |
|
242 | 0 | printWithPendingNewline(V); |
243 | 0 | } Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::printWithComma<(anonymous namespace)::itanium_demangle::Node const*>((anonymous namespace)::itanium_demangle::Node const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::printWithComma<(anonymous namespace)::itanium_demangle::StringView>((anonymous namespace)::itanium_demangle::StringView) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::printWithComma<(anonymous namespace)::itanium_demangle::Qualifiers>((anonymous namespace)::itanium_demangle::Qualifiers) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::printWithComma<(anonymous namespace)::itanium_demangle::Node*>((anonymous namespace)::itanium_demangle::Node*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::printWithComma<(anonymous namespace)::itanium_demangle::ReferenceKind>((anonymous namespace)::itanium_demangle::ReferenceKind) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::printWithComma<(anonymous namespace)::itanium_demangle::NodeArray>((anonymous namespace)::itanium_demangle::NodeArray) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::printWithComma<(anonymous namespace)::itanium_demangle::FunctionRefQual>((anonymous namespace)::itanium_demangle::FunctionRefQual) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::printWithComma<bool>(bool) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::printWithComma<unsigned int>(unsigned int) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::printWithComma<int>(int) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::printWithComma<(anonymous namespace)::itanium_demangle::Node::Prec>((anonymous namespace)::itanium_demangle::Node::Prec) |
244 | | |
245 | | struct CtorArgPrinter { |
246 | | DumpVisitor &Visitor; |
247 | | |
248 | 0 | template<typename T, typename ...Rest> void operator()(T V, Rest ...Vs) { |
249 | 0 | if (Visitor.anyWantNewline(V, Vs...)) |
250 | 0 | Visitor.newLine(); |
251 | 0 | Visitor.printWithPendingNewline(V); |
252 | 0 | int PrintInOrder[] = { (Visitor.printWithComma(Vs), 0)..., 0 }; |
253 | 0 | (void)PrintInOrder; |
254 | 0 | } Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::CtorArgPrinter::operator()<(anonymous namespace)::itanium_demangle::NodeArray>((anonymous namespace)::itanium_demangle::NodeArray) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::CtorArgPrinter::operator()<(anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::StringView>((anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::StringView) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::CtorArgPrinter::operator()<(anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::Node const*>((anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::Node const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::CtorArgPrinter::operator()<(anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Qualifiers>((anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Qualifiers) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::CtorArgPrinter::operator()<(anonymous namespace)::itanium_demangle::Node const*>((anonymous namespace)::itanium_demangle::Node const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::CtorArgPrinter::operator()<(anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::Node*>((anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::Node*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::CtorArgPrinter::operator()<(anonymous namespace)::itanium_demangle::StringView>((anonymous namespace)::itanium_demangle::StringView) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::CtorArgPrinter::operator()<(anonymous namespace)::itanium_demangle::Node*, (anonymous namespace)::itanium_demangle::StringView>((anonymous namespace)::itanium_demangle::Node*, (anonymous namespace)::itanium_demangle::StringView) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::CtorArgPrinter::operator()<(anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::ReferenceKind>((anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::ReferenceKind) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::CtorArgPrinter::operator()<(anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*>((anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::CtorArgPrinter::operator()<(anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node*>((anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::CtorArgPrinter::operator()<(anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::NodeArray, (anonymous namespace)::itanium_demangle::Qualifiers, (anonymous namespace)::itanium_demangle::FunctionRefQual, (anonymous namespace)::itanium_demangle::Node const*>((anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::NodeArray, (anonymous namespace)::itanium_demangle::Qualifiers, (anonymous namespace)::itanium_demangle::FunctionRefQual, (anonymous namespace)::itanium_demangle::Node const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::CtorArgPrinter::operator()<(anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::NodeArray, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Qualifiers, (anonymous namespace)::itanium_demangle::FunctionRefQual>((anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::NodeArray, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Qualifiers, (anonymous namespace)::itanium_demangle::FunctionRefQual) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::CtorArgPrinter::operator()<(anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::Node const*>((anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::Node const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::CtorArgPrinter::operator()<(anonymous namespace)::itanium_demangle::Node*, (anonymous namespace)::itanium_demangle::Node*>((anonymous namespace)::itanium_demangle::Node*, (anonymous namespace)::itanium_demangle::Node*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::CtorArgPrinter::operator()<(anonymous namespace)::itanium_demangle::ModuleName*, (anonymous namespace)::itanium_demangle::Node*, bool>((anonymous namespace)::itanium_demangle::ModuleName*, (anonymous namespace)::itanium_demangle::Node*, bool) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::CtorArgPrinter::operator()<(anonymous namespace)::itanium_demangle::ModuleName*, (anonymous namespace)::itanium_demangle::Node*>((anonymous namespace)::itanium_demangle::ModuleName*, (anonymous namespace)::itanium_demangle::Node*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::CtorArgPrinter::operator()<(anonymous namespace)::itanium_demangle::Node const*, bool>((anonymous namespace)::itanium_demangle::Node const*, bool) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::CtorArgPrinter::operator()<(anonymous namespace)::itanium_demangle::TemplateParamKind, unsigned int>((anonymous namespace)::itanium_demangle::TemplateParamKind, unsigned int) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::CtorArgPrinter::operator()<(anonymous namespace)::itanium_demangle::Node*>((anonymous namespace)::itanium_demangle::Node*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::CtorArgPrinter::operator()<(anonymous namespace)::itanium_demangle::Node*, (anonymous namespace)::itanium_demangle::NodeArray>((anonymous namespace)::itanium_demangle::Node*, (anonymous namespace)::itanium_demangle::NodeArray) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::CtorArgPrinter::operator()<unsigned long>(unsigned long) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::CtorArgPrinter::operator()<(anonymous namespace)::itanium_demangle::SpecialSubKind>((anonymous namespace)::itanium_demangle::SpecialSubKind) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::CtorArgPrinter::operator()<(anonymous namespace)::itanium_demangle::Node const*, bool, int>((anonymous namespace)::itanium_demangle::Node const*, bool, int) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::CtorArgPrinter::operator()<(anonymous namespace)::itanium_demangle::NodeArray, (anonymous namespace)::itanium_demangle::NodeArray, (anonymous namespace)::itanium_demangle::StringView>((anonymous namespace)::itanium_demangle::NodeArray, (anonymous namespace)::itanium_demangle::NodeArray, (anonymous namespace)::itanium_demangle::StringView) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::CtorArgPrinter::operator()<(anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node::Prec>((anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node::Prec) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::CtorArgPrinter::operator()<(anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node::Prec>((anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node::Prec) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::CtorArgPrinter::operator()<(anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::Node::Prec>((anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::Node::Prec) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::CtorArgPrinter::operator()<(anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node::Prec>((anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node::Prec) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::CtorArgPrinter::operator()<(anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::NodeArray, bool>((anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::NodeArray, bool) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::CtorArgPrinter::operator()<(anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node::Prec>((anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node::Prec) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::CtorArgPrinter::operator()<(anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node::Prec>((anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node::Prec) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::CtorArgPrinter::operator()<(anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::NodeArray, (anonymous namespace)::itanium_demangle::Node::Prec>((anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::NodeArray, (anonymous namespace)::itanium_demangle::Node::Prec) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::CtorArgPrinter::operator()<(anonymous namespace)::itanium_demangle::NodeArray, (anonymous namespace)::itanium_demangle::Node*, (anonymous namespace)::itanium_demangle::NodeArray, bool, bool, (anonymous namespace)::itanium_demangle::Node::Prec>((anonymous namespace)::itanium_demangle::NodeArray, (anonymous namespace)::itanium_demangle::Node*, (anonymous namespace)::itanium_demangle::NodeArray, bool, bool, (anonymous namespace)::itanium_demangle::Node::Prec) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::CtorArgPrinter::operator()<(anonymous namespace)::itanium_demangle::Node*, bool, bool, (anonymous namespace)::itanium_demangle::Node::Prec>((anonymous namespace)::itanium_demangle::Node*, bool, bool, (anonymous namespace)::itanium_demangle::Node::Prec) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::CtorArgPrinter::operator()<(anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::Node*, (anonymous namespace)::itanium_demangle::Node::Prec>((anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::Node*, (anonymous namespace)::itanium_demangle::Node::Prec) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::CtorArgPrinter::operator()<(anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::Node::Prec>((anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::Node::Prec) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::CtorArgPrinter::operator()<(anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::NodeArray>((anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::NodeArray) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::CtorArgPrinter::operator()<bool, (anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*>(bool, (anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::CtorArgPrinter::operator()<bool>(bool) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::CtorArgPrinter::operator()<(anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::StringView>((anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::StringView) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::CtorArgPrinter::operator()<(anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*, bool>((anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*, bool) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::CtorArgPrinter::operator()<(anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*>((anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*, (anonymous namespace)::itanium_demangle::Node const*) |
255 | | }; |
256 | | |
257 | 0 | template<typename NodeT> void operator()(const NodeT *Node) { |
258 | 0 | Depth += 2; |
259 | 0 | fprintf(stderr, "%s(", itanium_demangle::NodeKind<NodeT>::name()); |
260 | 0 | Node->match(CtorArgPrinter{*this}); |
261 | 0 | fprintf(stderr, ")"); |
262 | 0 | Depth -= 2; |
263 | 0 | } Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::NodeArrayNode>((anonymous namespace)::itanium_demangle::NodeArrayNode const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::DotSuffix>((anonymous namespace)::itanium_demangle::DotSuffix const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::VendorExtQualType>((anonymous namespace)::itanium_demangle::VendorExtQualType const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::QualType>((anonymous namespace)::itanium_demangle::QualType const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::ConversionOperatorType>((anonymous namespace)::itanium_demangle::ConversionOperatorType const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::PostfixQualifiedType>((anonymous namespace)::itanium_demangle::PostfixQualifiedType const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::ElaboratedTypeSpefType>((anonymous namespace)::itanium_demangle::ElaboratedTypeSpefType const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::NameType>((anonymous namespace)::itanium_demangle::NameType const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::AbiTagAttr>((anonymous namespace)::itanium_demangle::AbiTagAttr const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::EnableIfAttr>((anonymous namespace)::itanium_demangle::EnableIfAttr const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::ObjCProtoName>((anonymous namespace)::itanium_demangle::ObjCProtoName const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::PointerType>((anonymous namespace)::itanium_demangle::PointerType const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::ReferenceType>((anonymous namespace)::itanium_demangle::ReferenceType const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::PointerToMemberType>((anonymous namespace)::itanium_demangle::PointerToMemberType const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::ArrayType>((anonymous namespace)::itanium_demangle::ArrayType const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::FunctionType>((anonymous namespace)::itanium_demangle::FunctionType const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::NoexceptSpec>((anonymous namespace)::itanium_demangle::NoexceptSpec const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::DynamicExceptionSpec>((anonymous namespace)::itanium_demangle::DynamicExceptionSpec const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::FunctionEncoding>((anonymous namespace)::itanium_demangle::FunctionEncoding const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::LiteralOperator>((anonymous namespace)::itanium_demangle::LiteralOperator const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::SpecialName>((anonymous namespace)::itanium_demangle::SpecialName const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::CtorVtableSpecialName>((anonymous namespace)::itanium_demangle::CtorVtableSpecialName const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::QualifiedName>((anonymous namespace)::itanium_demangle::QualifiedName const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::NestedName>((anonymous namespace)::itanium_demangle::NestedName const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::LocalName>((anonymous namespace)::itanium_demangle::LocalName const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::ModuleName>((anonymous namespace)::itanium_demangle::ModuleName const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::ModuleEntity>((anonymous namespace)::itanium_demangle::ModuleEntity const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::VectorType>((anonymous namespace)::itanium_demangle::VectorType const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::PixelVectorType>((anonymous namespace)::itanium_demangle::PixelVectorType const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::BinaryFPType>((anonymous namespace)::itanium_demangle::BinaryFPType const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::BitIntType>((anonymous namespace)::itanium_demangle::BitIntType const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::SyntheticTemplateParamName>((anonymous namespace)::itanium_demangle::SyntheticTemplateParamName const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::TypeTemplateParamDecl>((anonymous namespace)::itanium_demangle::TypeTemplateParamDecl const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::NonTypeTemplateParamDecl>((anonymous namespace)::itanium_demangle::NonTypeTemplateParamDecl const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::TemplateTemplateParamDecl>((anonymous namespace)::itanium_demangle::TemplateTemplateParamDecl const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::TemplateParamPackDecl>((anonymous namespace)::itanium_demangle::TemplateParamPackDecl const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::ParameterPack>((anonymous namespace)::itanium_demangle::ParameterPack const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::TemplateArgumentPack>((anonymous namespace)::itanium_demangle::TemplateArgumentPack const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::ParameterPackExpansion>((anonymous namespace)::itanium_demangle::ParameterPackExpansion const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::TemplateArgs>((anonymous namespace)::itanium_demangle::TemplateArgs const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::NameWithTemplateArgs>((anonymous namespace)::itanium_demangle::NameWithTemplateArgs const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::GlobalQualifiedName>((anonymous namespace)::itanium_demangle::GlobalQualifiedName const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::ExpandedSpecialSubstitution>((anonymous namespace)::itanium_demangle::ExpandedSpecialSubstitution const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::SpecialSubstitution>((anonymous namespace)::itanium_demangle::SpecialSubstitution const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::CtorDtorName>((anonymous namespace)::itanium_demangle::CtorDtorName const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::DtorName>((anonymous namespace)::itanium_demangle::DtorName const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::UnnamedTypeName>((anonymous namespace)::itanium_demangle::UnnamedTypeName const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::ClosureTypeName>((anonymous namespace)::itanium_demangle::ClosureTypeName const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::StructuredBindingName>((anonymous namespace)::itanium_demangle::StructuredBindingName const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::BinaryExpr>((anonymous namespace)::itanium_demangle::BinaryExpr const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::ArraySubscriptExpr>((anonymous namespace)::itanium_demangle::ArraySubscriptExpr const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::PostfixExpr>((anonymous namespace)::itanium_demangle::PostfixExpr const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::ConditionalExpr>((anonymous namespace)::itanium_demangle::ConditionalExpr const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::MemberExpr>((anonymous namespace)::itanium_demangle::MemberExpr const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::SubobjectExpr>((anonymous namespace)::itanium_demangle::SubobjectExpr const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::EnclosingExpr>((anonymous namespace)::itanium_demangle::EnclosingExpr const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::CastExpr>((anonymous namespace)::itanium_demangle::CastExpr const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::SizeofParamPackExpr>((anonymous namespace)::itanium_demangle::SizeofParamPackExpr const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::CallExpr>((anonymous namespace)::itanium_demangle::CallExpr const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::NewExpr>((anonymous namespace)::itanium_demangle::NewExpr const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::DeleteExpr>((anonymous namespace)::itanium_demangle::DeleteExpr const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::PrefixExpr>((anonymous namespace)::itanium_demangle::PrefixExpr const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::FunctionParam>((anonymous namespace)::itanium_demangle::FunctionParam const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::ConversionExpr>((anonymous namespace)::itanium_demangle::ConversionExpr const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::PointerToMemberConversionExpr>((anonymous namespace)::itanium_demangle::PointerToMemberConversionExpr const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::InitListExpr>((anonymous namespace)::itanium_demangle::InitListExpr const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::FoldExpr>((anonymous namespace)::itanium_demangle::FoldExpr const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::ThrowExpr>((anonymous namespace)::itanium_demangle::ThrowExpr const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::BoolExpr>((anonymous namespace)::itanium_demangle::BoolExpr const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::StringLiteral>((anonymous namespace)::itanium_demangle::StringLiteral const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::LambdaExpr>((anonymous namespace)::itanium_demangle::LambdaExpr const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::EnumLiteral>((anonymous namespace)::itanium_demangle::EnumLiteral const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::IntegerLiteral>((anonymous namespace)::itanium_demangle::IntegerLiteral const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::FloatLiteralImpl<float> >((anonymous namespace)::itanium_demangle::FloatLiteralImpl<float> const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::FloatLiteralImpl<double> >((anonymous namespace)::itanium_demangle::FloatLiteralImpl<double> const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::FloatLiteralImpl<long double> >((anonymous namespace)::itanium_demangle::FloatLiteralImpl<long double> const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::BracedExpr>((anonymous namespace)::itanium_demangle::BracedExpr const*) Unexecuted instantiation: cxa_demangle.cpp:void (anonymous namespace)::DumpVisitor::operator()<(anonymous namespace)::itanium_demangle::BracedRangeExpr>((anonymous namespace)::itanium_demangle::BracedRangeExpr const*) |
264 | | |
265 | 0 | void operator()(const ForwardTemplateReference *Node) { |
266 | 0 | Depth += 2; |
267 | 0 | fprintf(stderr, "ForwardTemplateReference("); |
268 | 0 | if (Node->Ref && !Node->Printing) { |
269 | 0 | Node->Printing = true; |
270 | 0 | CtorArgPrinter{*this}(Node->Ref); |
271 | 0 | Node->Printing = false; |
272 | 0 | } else { |
273 | 0 | CtorArgPrinter{*this}(Node->Index); |
274 | 0 | } |
275 | 0 | fprintf(stderr, ")"); |
276 | 0 | Depth -= 2; |
277 | 0 | } |
278 | | }; |
279 | | } |
280 | | |
281 | 0 | void itanium_demangle::Node::dump() const { |
282 | 0 | DumpVisitor V; |
283 | 0 | visit(std::ref(V)); |
284 | 0 | V.newLine(); |
285 | 0 | } |
286 | | #endif |
287 | | |
288 | | namespace { |
289 | | class BumpPointerAllocator { |
290 | | struct BlockMeta { |
291 | | BlockMeta* Next; |
292 | | size_t Current; |
293 | | }; |
294 | | |
295 | | static constexpr size_t AllocSize = 4096; |
296 | | static constexpr size_t UsableAllocSize = AllocSize - sizeof(BlockMeta); |
297 | | |
298 | | alignas(long double) char InitialBuffer[AllocSize]; |
299 | | BlockMeta* BlockList = nullptr; |
300 | | |
301 | 0 | void grow() { |
302 | 0 | char* NewMeta = static_cast<char *>(std::malloc(AllocSize)); |
303 | 0 | if (NewMeta == nullptr) |
304 | 0 | std::terminate(); |
305 | 0 | BlockList = new (NewMeta) BlockMeta{BlockList, 0}; |
306 | 0 | } |
307 | | |
308 | 0 | void* allocateMassive(size_t NBytes) { |
309 | 0 | NBytes += sizeof(BlockMeta); |
310 | 0 | BlockMeta* NewMeta = reinterpret_cast<BlockMeta*>(std::malloc(NBytes)); |
311 | 0 | if (NewMeta == nullptr) |
312 | 0 | std::terminate(); |
313 | 0 | BlockList->Next = new (NewMeta) BlockMeta{BlockList->Next, 0}; |
314 | 0 | return static_cast<void*>(NewMeta + 1); |
315 | 0 | } |
316 | | |
317 | | public: |
318 | | BumpPointerAllocator() |
319 | 0 | : BlockList(new (InitialBuffer) BlockMeta{nullptr, 0}) {} |
320 | | |
321 | 0 | void* allocate(size_t N) { |
322 | 0 | N = (N + 15u) & ~15u; |
323 | 0 | if (N + BlockList->Current >= UsableAllocSize) { |
324 | 0 | if (N > UsableAllocSize) |
325 | 0 | return allocateMassive(N); |
326 | 0 | grow(); |
327 | 0 | } |
328 | 0 | BlockList->Current += N; |
329 | 0 | return static_cast<void*>(reinterpret_cast<char*>(BlockList + 1) + |
330 | 0 | BlockList->Current - N); |
331 | 0 | } |
332 | | |
333 | 0 | void reset() { |
334 | 0 | while (BlockList) { |
335 | 0 | BlockMeta* Tmp = BlockList; |
336 | 0 | BlockList = BlockList->Next; |
337 | 0 | if (reinterpret_cast<char*>(Tmp) != InitialBuffer) |
338 | 0 | std::free(Tmp); |
339 | 0 | } |
340 | 0 | BlockList = new (InitialBuffer) BlockMeta{nullptr, 0}; |
341 | 0 | } |
342 | | |
343 | 0 | ~BumpPointerAllocator() { reset(); } |
344 | | }; |
345 | | |
346 | | class DefaultAllocator { |
347 | | BumpPointerAllocator Alloc; |
348 | | |
349 | | public: |
350 | 0 | void reset() { Alloc.reset(); } |
351 | | |
352 | 0 | template<typename T, typename ...Args> T *makeNode(Args &&...args) { |
353 | 0 | return new (Alloc.allocate(sizeof(T))) |
354 | 0 | T(std::forward<Args>(args)...); |
355 | 0 | } Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::SpecialName* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::SpecialName, char const (&) [31], (anonymous namespace)::itanium_demangle::Node*&>(char const (&) [31], (anonymous namespace)::itanium_demangle::Node*&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::SpecialName* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::SpecialName, char const (&) [12], (anonymous namespace)::itanium_demangle::Node*&>(char const (&) [12], (anonymous namespace)::itanium_demangle::Node*&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::SpecialName* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::SpecialName, char const (&) [9], (anonymous namespace)::itanium_demangle::Node*&>(char const (&) [9], (anonymous namespace)::itanium_demangle::Node*&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::SpecialName* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::SpecialName, char const (&) [14], (anonymous namespace)::itanium_demangle::Node*&>(char const (&) [14], (anonymous namespace)::itanium_demangle::Node*&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::SpecialName* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::SpecialName, char const (&) [19], (anonymous namespace)::itanium_demangle::Node*&>(char const (&) [19], (anonymous namespace)::itanium_demangle::Node*&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::SpecialName* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::SpecialName, char const (&) [27], (anonymous namespace)::itanium_demangle::Node*&>(char const (&) [27], (anonymous namespace)::itanium_demangle::Node*&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::CtorVtableSpecialName* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::CtorVtableSpecialName, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&>((anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::SpecialName* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::SpecialName, char const (&) [41], (anonymous namespace)::itanium_demangle::Node*&>(char const (&) [41], (anonymous namespace)::itanium_demangle::Node*&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::SpecialName* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::SpecialName, char const (&) [18], (anonymous namespace)::itanium_demangle::Node*&>(char const (&) [18], (anonymous namespace)::itanium_demangle::Node*&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::SpecialName* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::SpecialName, char const (&) [22], (anonymous namespace)::itanium_demangle::Node*&>(char const (&) [22], (anonymous namespace)::itanium_demangle::Node*&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::SpecialName* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::SpecialName, char const (&) [20], (anonymous namespace)::itanium_demangle::Node*&>(char const (&) [20], (anonymous namespace)::itanium_demangle::Node*&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::SpecialName* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::SpecialName, char const (&) [25], (anonymous namespace)::itanium_demangle::Node*&>(char const (&) [25], (anonymous namespace)::itanium_demangle::Node*&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::NameType* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::NameType, char const (&) [22]>(char const (&) [22]) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::NameType* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::NameType, (anonymous namespace)::itanium_demangle::StringView&>((anonymous namespace)::itanium_demangle::StringView&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::ModuleName* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::ModuleName, (anonymous namespace)::itanium_demangle::ModuleName*&, (anonymous namespace)::itanium_demangle::Node*&, bool&>((anonymous namespace)::itanium_demangle::ModuleName*&, (anonymous namespace)::itanium_demangle::Node*&, bool&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::SpecialName* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::SpecialName, char const (&) [24], (anonymous namespace)::itanium_demangle::ModuleName*&>(char const (&) [24], (anonymous namespace)::itanium_demangle::ModuleName*&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::ForwardTemplateReference* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::ForwardTemplateReference, unsigned long&>(unsigned long&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::NameType* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::NameType, char const (&) [5]>(char const (&) [5]) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::BinaryExpr* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::BinaryExpr, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::StringView&, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node::Prec&>((anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::StringView&, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node::Prec&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::PrefixExpr* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::PrefixExpr, (anonymous namespace)::itanium_demangle::StringView&, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node::Prec&>((anonymous namespace)::itanium_demangle::StringView&, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node::Prec&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::PostfixExpr* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::PostfixExpr, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::StringView&, (anonymous namespace)::itanium_demangle::Node::Prec>((anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::StringView&, (anonymous namespace)::itanium_demangle::Node::Prec&&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::ArraySubscriptExpr* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::ArraySubscriptExpr, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node::Prec>((anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node::Prec&&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::MemberExpr* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::MemberExpr, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::StringView&, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node::Prec>((anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::StringView&, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node::Prec&&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::NewExpr* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::NewExpr, (anonymous namespace)::itanium_demangle::NodeArray&, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::NodeArray&, bool&, bool, (anonymous namespace)::itanium_demangle::Node::Prec>((anonymous namespace)::itanium_demangle::NodeArray&, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::NodeArray&, bool&, bool&&, (anonymous namespace)::itanium_demangle::Node::Prec&&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::DeleteExpr* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::DeleteExpr, (anonymous namespace)::itanium_demangle::Node*&, bool&, bool, (anonymous namespace)::itanium_demangle::Node::Prec>((anonymous namespace)::itanium_demangle::Node*&, bool&, bool&&, (anonymous namespace)::itanium_demangle::Node::Prec&&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::CallExpr* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::CallExpr, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::NodeArray, (anonymous namespace)::itanium_demangle::Node::Prec>((anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::NodeArray&&, (anonymous namespace)::itanium_demangle::Node::Prec&&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::ConversionExpr* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::ConversionExpr, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::NodeArray&, (anonymous namespace)::itanium_demangle::Node::Prec>((anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::NodeArray&, (anonymous namespace)::itanium_demangle::Node::Prec&&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::ConditionalExpr* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::ConditionalExpr, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node::Prec>((anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node::Prec&&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::CastExpr* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::CastExpr, (anonymous namespace)::itanium_demangle::StringView&, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node::Prec>((anonymous namespace)::itanium_demangle::StringView&, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node::Prec&&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::EnclosingExpr* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::EnclosingExpr, (anonymous namespace)::itanium_demangle::StringView&, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node::Prec>((anonymous namespace)::itanium_demangle::StringView&, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node::Prec&&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::IntegerLiteral* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::IntegerLiteral, (anonymous namespace)::itanium_demangle::StringView&, (anonymous namespace)::itanium_demangle::StringView&>((anonymous namespace)::itanium_demangle::StringView&, (anonymous namespace)::itanium_demangle::StringView&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::BoolExpr* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::BoolExpr, int>(int&&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::FloatLiteralImpl<float>* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::FloatLiteralImpl<float>, (anonymous namespace)::itanium_demangle::StringView&>((anonymous namespace)::itanium_demangle::StringView&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::FloatLiteralImpl<double>* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::FloatLiteralImpl<double>, (anonymous namespace)::itanium_demangle::StringView&>((anonymous namespace)::itanium_demangle::StringView&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::FloatLiteralImpl<long double>* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::FloatLiteralImpl<long double>, (anonymous namespace)::itanium_demangle::StringView&>((anonymous namespace)::itanium_demangle::StringView&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::StringLiteral* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::StringLiteral, (anonymous namespace)::itanium_demangle::Node*&>((anonymous namespace)::itanium_demangle::Node*&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::NameType* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::NameType, char const (&) [8]>(char const (&) [8]) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::UnnamedTypeName* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::UnnamedTypeName, (anonymous namespace)::itanium_demangle::StringView&>((anonymous namespace)::itanium_demangle::StringView&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::SyntheticTemplateParamName* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::SyntheticTemplateParamName, (anonymous namespace)::itanium_demangle::TemplateParamKind&, unsigned int&>((anonymous namespace)::itanium_demangle::TemplateParamKind&, unsigned int&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::TypeTemplateParamDecl* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::TypeTemplateParamDecl, (anonymous namespace)::itanium_demangle::Node*&>((anonymous namespace)::itanium_demangle::Node*&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::NonTypeTemplateParamDecl* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::NonTypeTemplateParamDecl, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&>((anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::TemplateTemplateParamDecl* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::TemplateTemplateParamDecl, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::NodeArray&>((anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::NodeArray&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::TemplateParamPackDecl* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::TemplateParamPackDecl, (anonymous namespace)::itanium_demangle::Node*&>((anonymous namespace)::itanium_demangle::Node*&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::ClosureTypeName* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::ClosureTypeName, (anonymous namespace)::itanium_demangle::NodeArray&, (anonymous namespace)::itanium_demangle::NodeArray&, (anonymous namespace)::itanium_demangle::StringView&>((anonymous namespace)::itanium_demangle::NodeArray&, (anonymous namespace)::itanium_demangle::NodeArray&, (anonymous namespace)::itanium_demangle::StringView&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::NameType* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::NameType, char const (&) [16]>(char const (&) [16]) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::LambdaExpr* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::LambdaExpr, (anonymous namespace)::itanium_demangle::Node*&>((anonymous namespace)::itanium_demangle::Node*&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::EnumLiteral* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::EnumLiteral, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::StringView&>((anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::StringView&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::FunctionParam* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::FunctionParam, (anonymous namespace)::itanium_demangle::StringView&>((anonymous namespace)::itanium_demangle::StringView&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::FoldExpr* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::FoldExpr, bool&, (anonymous namespace)::itanium_demangle::StringView, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&>(bool&, (anonymous namespace)::itanium_demangle::StringView&&, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::BracedExpr* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::BracedExpr, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&, bool>((anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&, bool&&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::BracedRangeExpr* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::BracedRangeExpr, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&>((anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::InitListExpr* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::InitListExpr, decltype(nullptr), (anonymous namespace)::itanium_demangle::NodeArray>(decltype(nullptr)&&, (anonymous namespace)::itanium_demangle::NodeArray&&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::PointerToMemberConversionExpr* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::PointerToMemberConversionExpr, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::StringView&, (anonymous namespace)::itanium_demangle::Node::Prec&>((anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::StringView&, (anonymous namespace)::itanium_demangle::Node::Prec&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::EnclosingExpr* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::EnclosingExpr, char const (&) [10], (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node::Prec>(char const (&) [10], (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node::Prec&&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::NameType* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::NameType, (anonymous namespace)::itanium_demangle::StringView>((anonymous namespace)::itanium_demangle::StringView&&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::SubobjectExpr* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::SubobjectExpr, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::StringView&, (anonymous namespace)::itanium_demangle::NodeArray, bool&>((anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::StringView&, (anonymous namespace)::itanium_demangle::NodeArray&&, bool&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::ParameterPackExpansion* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::ParameterPackExpansion, (anonymous namespace)::itanium_demangle::Node*&>((anonymous namespace)::itanium_demangle::Node*&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::SizeofParamPackExpr* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::SizeofParamPackExpr, (anonymous namespace)::itanium_demangle::Node*&>((anonymous namespace)::itanium_demangle::Node*&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::EnclosingExpr* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::EnclosingExpr, char const (&) [11], (anonymous namespace)::itanium_demangle::Node*&>(char const (&) [11], (anonymous namespace)::itanium_demangle::Node*&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::NodeArrayNode* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::NodeArrayNode, (anonymous namespace)::itanium_demangle::NodeArray>((anonymous namespace)::itanium_demangle::NodeArray&&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::InitListExpr* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::InitListExpr, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::NodeArray>((anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::NodeArray&&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::NameType* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::NameType, char const (&) [6]>(char const (&) [6]) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::ThrowExpr* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::ThrowExpr, (anonymous namespace)::itanium_demangle::Node*&>((anonymous namespace)::itanium_demangle::Node*&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::QualifiedName* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::QualifiedName, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&>((anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::DtorName* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::DtorName, (anonymous namespace)::itanium_demangle::Node*&>((anonymous namespace)::itanium_demangle::Node*&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::ConversionOperatorType* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::ConversionOperatorType, (anonymous namespace)::itanium_demangle::Node*&>((anonymous namespace)::itanium_demangle::Node*&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::LiteralOperator* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::LiteralOperator, (anonymous namespace)::itanium_demangle::Node*&>((anonymous namespace)::itanium_demangle::Node*&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::GlobalQualifiedName* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::GlobalQualifiedName, (anonymous namespace)::itanium_demangle::Node*&>((anonymous namespace)::itanium_demangle::Node*&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::EnclosingExpr* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::EnclosingExpr, char const (&) [9], (anonymous namespace)::itanium_demangle::Node*&>(char const (&) [9], (anonymous namespace)::itanium_demangle::Node*&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::NameType* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::NameType, char const (&) [4]>(char const (&) [4]) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::SpecialSubstitution* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::SpecialSubstitution, (anonymous namespace)::itanium_demangle::SpecialSubKind&>((anonymous namespace)::itanium_demangle::SpecialSubKind&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::AbiTagAttr* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::AbiTagAttr, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::StringView&>((anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::StringView&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::StructuredBindingName* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::StructuredBindingName, (anonymous namespace)::itanium_demangle::NodeArray>((anonymous namespace)::itanium_demangle::NodeArray&&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::ExpandedSpecialSubstitution* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::ExpandedSpecialSubstitution, (anonymous namespace)::itanium_demangle::SpecialSubstitution*>((anonymous namespace)::itanium_demangle::SpecialSubstitution*&&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::CtorDtorName* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::CtorDtorName, (anonymous namespace)::itanium_demangle::Node*&, bool, int&>((anonymous namespace)::itanium_demangle::Node*&, bool&&, int&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::ModuleEntity* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::ModuleEntity, (anonymous namespace)::itanium_demangle::ModuleName*&, (anonymous namespace)::itanium_demangle::Node*&>((anonymous namespace)::itanium_demangle::ModuleName*&, (anonymous namespace)::itanium_demangle::Node*&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::NestedName* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::NestedName, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&>((anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::NameType* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::NameType, char const (&) [15]>(char const (&) [15]) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::LocalName* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::LocalName, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&>((anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::ParameterPack* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::ParameterPack, (anonymous namespace)::itanium_demangle::NodeArray>((anonymous namespace)::itanium_demangle::NodeArray&&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::TemplateArgs* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::TemplateArgs, (anonymous namespace)::itanium_demangle::NodeArray>((anonymous namespace)::itanium_demangle::NodeArray&&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::NameWithTemplateArgs* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::NameWithTemplateArgs, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&>((anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::TemplateArgumentPack* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::TemplateArgumentPack, (anonymous namespace)::itanium_demangle::NodeArray&>((anonymous namespace)::itanium_demangle::NodeArray&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::EnableIfAttr* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::EnableIfAttr, (anonymous namespace)::itanium_demangle::NodeArray>((anonymous namespace)::itanium_demangle::NodeArray&&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::FunctionEncoding* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::FunctionEncoding, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::NodeArray, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Qualifiers&, (anonymous namespace)::itanium_demangle::FunctionRefQual&>((anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::NodeArray&&, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Qualifiers&, (anonymous namespace)::itanium_demangle::FunctionRefQual&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::DotSuffix* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::DotSuffix, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::StringView>((anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::StringView&&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::SpecialName* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::SpecialName, char const (&) [34], (anonymous namespace)::itanium_demangle::Node*&>(char const (&) [34], (anonymous namespace)::itanium_demangle::Node*&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::NoexceptSpec* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::NoexceptSpec, (anonymous namespace)::itanium_demangle::Node*&>((anonymous namespace)::itanium_demangle::Node*&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::DynamicExceptionSpec* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::DynamicExceptionSpec, (anonymous namespace)::itanium_demangle::NodeArray>((anonymous namespace)::itanium_demangle::NodeArray&&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::FunctionType* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::FunctionType, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::NodeArray&, (anonymous namespace)::itanium_demangle::Qualifiers&, (anonymous namespace)::itanium_demangle::FunctionRefQual&, (anonymous namespace)::itanium_demangle::Node*&>((anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::NodeArray&, (anonymous namespace)::itanium_demangle::Qualifiers&, (anonymous namespace)::itanium_demangle::FunctionRefQual&, (anonymous namespace)::itanium_demangle::Node*&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::ObjCProtoName* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::ObjCProtoName, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::StringView&>((anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::StringView&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::VendorExtQualType* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::VendorExtQualType, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::StringView&, (anonymous namespace)::itanium_demangle::Node*&>((anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::StringView&, (anonymous namespace)::itanium_demangle::Node*&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::QualType* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::QualType, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Qualifiers&>((anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Qualifiers&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::NameType* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::NameType, char const (&) [12]>(char const (&) [12]) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::NameType* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::NameType, char const (&) [14]>(char const (&) [14]) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::NameType* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::NameType, char const (&) [13]>(char const (&) [13]) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::NameType* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::NameType, char const (&) [10]>(char const (&) [10]) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::NameType* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::NameType, char const (&) [19]>(char const (&) [19]) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::NameType* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::NameType, char const (&) [9]>(char const (&) [9]) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::NameType* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::NameType, char const (&) [18]>(char const (&) [18]) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::NameType* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::NameType, char const (&) [7]>(char const (&) [7]) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::NameType* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::NameType, char const (&) [11]>(char const (&) [11]) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::BinaryFPType* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::BinaryFPType, (anonymous namespace)::itanium_demangle::Node*&>((anonymous namespace)::itanium_demangle::Node*&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::BitIntType* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::BitIntType, (anonymous namespace)::itanium_demangle::Node*&, bool&>((anonymous namespace)::itanium_demangle::Node*&, bool&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::PixelVectorType* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::PixelVectorType, (anonymous namespace)::itanium_demangle::Node*&>((anonymous namespace)::itanium_demangle::Node*&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::VectorType* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::VectorType, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&>((anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::VectorType* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::VectorType, (anonymous namespace)::itanium_demangle::Node*&, decltype(nullptr)>((anonymous namespace)::itanium_demangle::Node*&, decltype(nullptr)&&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::ArrayType* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::ArrayType, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&>((anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::PointerToMemberType* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::PointerToMemberType, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&>((anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::Node*&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::ElaboratedTypeSpefType* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::ElaboratedTypeSpefType, (anonymous namespace)::itanium_demangle::StringView&, (anonymous namespace)::itanium_demangle::Node*&>((anonymous namespace)::itanium_demangle::StringView&, (anonymous namespace)::itanium_demangle::Node*&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::PointerType* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::PointerType, (anonymous namespace)::itanium_demangle::Node*&>((anonymous namespace)::itanium_demangle::Node*&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::ReferenceType* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::ReferenceType, (anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::ReferenceKind>((anonymous namespace)::itanium_demangle::Node*&, (anonymous namespace)::itanium_demangle::ReferenceKind&&) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::PostfixQualifiedType* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::PostfixQualifiedType, (anonymous namespace)::itanium_demangle::Node*&, char const (&) [9]>((anonymous namespace)::itanium_demangle::Node*&, char const (&) [9]) Unexecuted instantiation: cxa_demangle.cpp:(anonymous namespace)::itanium_demangle::PostfixQualifiedType* (anonymous namespace)::DefaultAllocator::makeNode<(anonymous namespace)::itanium_demangle::PostfixQualifiedType, (anonymous namespace)::itanium_demangle::Node*&, char const (&) [11]>((anonymous namespace)::itanium_demangle::Node*&, char const (&) [11]) |
356 | | |
357 | 0 | void *allocateNodeArray(size_t sz) { |
358 | 0 | return Alloc.allocate(sizeof(Node *) * sz); |
359 | 0 | } |
360 | | }; |
361 | | } // unnamed namespace |
362 | | |
363 | | //===----------------------------------------------------------------------===// |
364 | | // Code beyond this point should not be synchronized with LLVM. |
365 | | //===----------------------------------------------------------------------===// |
366 | | |
367 | | using Demangler = itanium_demangle::ManglingParser<DefaultAllocator>; |
368 | | |
369 | | namespace { |
370 | | enum : int { |
371 | | demangle_invalid_args = -3, |
372 | | demangle_invalid_mangled_name = -2, |
373 | | demangle_memory_alloc_failure = -1, |
374 | | demangle_success = 0, |
375 | | }; |
376 | | } |
377 | | |
378 | | namespace __cxxabiv1 { |
379 | | extern "C" _LIBCXXABI_FUNC_VIS char * |
380 | 0 | __cxa_demangle(const char *MangledName, char *Buf, size_t *N, int *Status) { |
381 | 0 | if (MangledName == nullptr || (Buf != nullptr && N == nullptr)) { |
382 | 0 | if (Status) |
383 | 0 | *Status = demangle_invalid_args; |
384 | 0 | return nullptr; |
385 | 0 | } |
386 | | |
387 | 0 | int InternalStatus = demangle_success; |
388 | 0 | Demangler Parser(MangledName, MangledName + std::strlen(MangledName)); |
389 | 0 | Node *AST = Parser.parse(); |
390 | |
|
391 | 0 | if (AST == nullptr) |
392 | 0 | InternalStatus = demangle_invalid_mangled_name; |
393 | 0 | else { |
394 | 0 | OutputBuffer O(Buf, N); |
395 | 0 | assert(Parser.ForwardTemplateRefs.empty()); |
396 | 0 | AST->print(O); |
397 | 0 | O += '\0'; |
398 | 0 | if (N != nullptr) |
399 | 0 | *N = O.getCurrentPosition(); |
400 | 0 | Buf = O.getBuffer(); |
401 | 0 | } |
402 | | |
403 | 0 | if (Status) |
404 | 0 | *Status = InternalStatus; |
405 | 0 | return InternalStatus == demangle_success ? Buf : nullptr; |
406 | 0 | } |
407 | | } // __cxxabiv1 |