21 using namespace ms_demangle;
23 #define OUTPUT_ENUM_CLASS_VALUE(Enum, Value, Desc) \ 34 if (std::isalnum(C) || C ==
'>')
77 if (SpaceAfter && Pos2 > Pos1)
107 OS <<
"__vectorcall";
162 Nodes[0]->output(OS, Flags);
163 for (
size_t I = 1;
I < Count; ++
I) {
165 Nodes[
I]->output(OS, Flags);
185 OS << DecodedString <<
"\"";
198 if (ThunkOffsetCount > 0)
204 Symbol->output(OS, Flags);
205 if (ThunkOffsetCount > 0)
209 if (ThunkOffsetCount > 0)
210 OS << ThunkOffsets[0];
211 for (
int I = 1;
I < ThunkOffsetCount; ++
I) {
212 OS <<
", " << ThunkOffsets[
I];
214 if (ThunkOffsetCount > 0)
223 TemplateParams->output(OS, Flags);
230 OS <<
"`dynamic atexit destructor for ";
232 OS <<
"`dynamic initializer for ";
236 Variable->output(OS, Flags);
240 Name->output(OS, Flags);
247 outputTemplateParameters(OS, Flags);
301 "`vector deleting dtor'");
303 "`default ctor closure'");
305 "`scalar deleting dtor'");
307 "`vector ctor iterator'");
309 "`vector dtor iterator'");
311 "`vector vbase ctor iterator'");
313 "`virtual displacement map'");
315 "`eh vector ctor iterator'");
317 "`eh vector dtor iterator'");
319 "`eh vector vbase ctor iterator'");
321 "`copy ctor closure'");
323 "`local vftable ctor closure'");
326 "operator delete[]");
328 "`managed vector ctor iterator'");
330 "`managed vector dtor iterator'");
332 "`EH vector copy ctor iterator'");
334 "`EH vector vbase copy ctor iterator'");
336 "`vector copy ctor iterator'");
338 "`vector vbase copy constructor iterator'");
340 "`managed vector vbase copy constructor iterator'");
347 outputTemplateParameters(OS, Flags);
352 OS <<
"`local static guard'";
354 OS <<
"{" << ScopeIndex <<
"}";
360 outputTemplateParameters(OS, Flags);
362 TargetType->output(OS, Flags);
368 Class->output(OS, Flags);
369 outputTemplateParameters(OS, Flags);
374 OS <<
"operator \"\"" <<
Name;
375 outputTemplateParameters(OS, Flags);
395 OS <<
"extern \"C\" ";
411 Params->output(OS, Flags);
424 OS <<
" __unaligned";
446 OS <<
"`adjustor{" << ThisAdjust.StaticOffset <<
"}'";
449 OS <<
"`vtordispex{" << ThisAdjust.VBPtrOffset <<
", " 450 << ThisAdjust.VBOffsetOffset <<
", " << ThisAdjust.VtordispOffset
451 <<
", " << ThisAdjust.StaticOffset <<
"}'";
453 OS <<
"`vtordisp{" << ThisAdjust.VtordispOffset <<
", " 454 << ThisAdjust.StaticOffset <<
"}'";
469 Pointee->outputPre(OS, Flags);
474 OS <<
"__unaligned ";
487 ClassParent->output(OS, Flags);
512 Pointee->outputPost(OS, Flags);
532 ElementType->outputPre(OS, Flags);
546 if (Dimensions->Count == 0)
549 outputOneDimension(OS, Flags, Dimensions->Nodes[0]);
550 for (
size_t I = 1;
I < Dimensions->Count; ++
I) {
552 outputOneDimension(OS, Flags, Dimensions->Nodes[
I]);
558 outputDimensionsImpl(OS, Flags);
561 ElementType->outputPost(OS, Flags);
565 Name->output(OS, Flags);
569 Signature->outputPre(OS, Flags);
571 Name->output(OS, Flags);
572 Signature->outputPost(OS, Flags);
578 OS <<
"private: static ";
581 OS <<
"public: static ";
584 OS <<
"protected: static ";
591 Type->outputPre(OS, Flags);
594 Name->output(OS, Flags);
596 Type->outputPost(OS, Flags);
605 Components->output(OS, Flags,
"::");
610 OS <<
"`RTTI Base Class Descriptor at (";
611 OS << NVOffset <<
", " << VBPtrOffset <<
", " << VBTableOffset <<
", " 618 Name->output(OS, Flags);
623 OS <<
"`vcall'{" << OffsetInVTable <<
", {flat}}";
628 Name->output(OS, Flags);
631 TargetName->output(OS, Flags);
void outputQuals(bool SpaceBefore, bool SpaceAfter) const
void output(OutputStream &OS, OutputFlags Flags) const override
void outputPost(OutputStream &OS, OutputFlags Flags) const
void output(OutputStream &OS, OutputFlags Flags) const override
This class represents lattice values for constants.
static void outputSpaceIfNecessary(OutputStream &OS)
static void outputCallingConvention(OutputStream &OS, CallingConv CC)
void outputPre(OutputStream &OS, OutputFlags Flags) const override
void output(OutputStream &OS, OutputFlags Flags) const override
void outputPost(OutputStream &OS, OutputFlags Flags) const override
CallingConv CallConvention
void output(OutputStream &OS, OutputFlags Flags) const override
void output(OutputStream &OS, OutputFlags Flags) const override
amdgpu Simplify well known AMD library false Value Value const Twine & Name
void outputOneDimension(OutputStream &OS, OutputFlags Flags, Node *N) const
static bool outputQualifierIfPresent(OutputStream &OS, Qualifiers Q, Qualifiers Mask, bool NeedSpace)
void outputPre(OutputStream &OS, OutputFlags Flags) const
void outputPost(OutputStream &OS, OutputFlags Flags) const override
void outputPre(OutputStream &OS, OutputFlags Flags) const override
void outputPost(OutputStream &OS, OutputFlags Flags) const
std::string toString(OutputFlags Flags=OF_Default) const
void outputTemplateParameters(OutputStream &OS, OutputFlags Flags) const
The instances of the Type class are immutable: once they are created, they are never changed...
size_t getCurrentPosition() const
void outputPre(OutputStream &OS, OutputFlags Flags) const override
void output(OutputStream &OS, OutputFlags Flags) const override
void output(OutputStream &OS, OutputFlags Flags) const override
void output(OutputStream &OS, OutputFlags Flags) const override
void output(OutputStream &OS, OutputFlags Flags) const override
void output(OutputStream &OS, OutputFlags Flags) const override
#define OUTPUT_ENUM_CLASS_VALUE(Enum, Value, Desc)
void outputPre(OutputStream &OS, OutputFlags Flags) const
void output(OutputStream &OS, OutputFlags Flags) const override
void output(OutputStream &OS, OutputFlags Flags) const override
This is a utility class that provides an abstraction for the common functionality between Instruction...
CHAIN = SC CHAIN, Imm128 - System call.
void output(OutputStream &OS, OutputFlags Flags) const override
void outputDimensionsImpl(OutputStream &OS, OutputFlags Flags) const
void output(OutputStream &OS, OutputFlags Flags) const override
static void outputQualifiers(OutputStream &OS, Qualifiers Q, bool SpaceBefore, bool SpaceAfter)
void outputPre(OutputStream &OS, OutputFlags Flags) const override
void output(OutputStream &OS, OutputFlags Flags) const override
void output(OutputStream &OS, OutputFlags Flags) const override
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
void output(OutputStream &OS, OutputFlags Flags) const override
LLVM Value Representation.
void output(OutputStream &OS, OutputFlags Flags) const override
bool initializeOutputStream(char *Buf, size_t *N, OutputStream &S, size_t InitSize)
std::underlying_type< E >::type Mask()
Get a bitmask with 1s in all places up to the high-order bit of E's largest value.
virtual void output(OutputStream &OS, OutputFlags Flags) const =0
void outputPost(OutputStream &OS, OutputFlags Flags) const override
static bool outputSingleQualifier(OutputStream &OS, Qualifiers Q)
void output(OutputStream &OS, OutputFlags Flags) const override
void outputPost(OutputStream &OS, OutputFlags Flags) const override
void outputPre(OutputStream &OS, OutputFlags Flags) const