LLVM  15.0.0git
MicrosoftDemangleNodes.h
Go to the documentation of this file.
1 //===- MicrosoftDemangleNodes.h ---------------------------------*- C++ -*-===//
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 // This file defines the AST nodes used in the MSVC demangler.
10 //
11 //===----------------------------------------------------------------------===//
12 
13 #ifndef LLVM_DEMANGLE_MICROSOFTDEMANGLENODES_H
14 #define LLVM_DEMANGLE_MICROSOFTDEMANGLENODES_H
15 
17 #include <array>
18 #include <cstdint>
19 #include <string>
20 
21 namespace llvm {
22 namespace itanium_demangle {
23 class OutputBuffer;
24 }
25 }
26 
27 using llvm::itanium_demangle::OutputBuffer;
28 using llvm::itanium_demangle::StringView;
29 
30 namespace llvm {
31 namespace ms_demangle {
32 
33 // Storage classes
34 enum Qualifiers : uint8_t {
35  Q_None = 0,
36  Q_Const = 1 << 0,
37  Q_Volatile = 1 << 1,
38  Q_Far = 1 << 2,
39  Q_Huge = 1 << 3,
40  Q_Unaligned = 1 << 4,
41  Q_Restrict = 1 << 5,
42  Q_Pointer64 = 1 << 6
43 };
44 
45 enum class StorageClass : uint8_t {
46  None,
50  Global,
52 };
53 
56 
57 // Calling conventions
58 enum class CallingConv : uint8_t {
59  None,
60  Cdecl,
61  Pascal,
62  Thiscall,
63  Stdcall,
64  Fastcall,
65  Clrcall,
66  Eabi,
67  Vectorcall,
68  Regcall,
69  Swift, // Clang-only
70  SwiftAsync, // Clang-only
71 };
72 
73 enum class ReferenceKind : uint8_t { None, LValueRef, RValueRef };
74 
83 };
84 
85 // Types
86 enum class PrimitiveKind {
87  Void,
88  Bool,
89  Char,
90  Schar,
91  Uchar,
92  Char8,
93  Char16,
94  Char32,
95  Short,
96  Ushort,
97  Int,
98  Uint,
99  Long,
100  Ulong,
101  Int64,
102  Uint64,
103  Wchar,
104  Float,
105  Double,
106  Ldouble,
107  Nullptr,
108 };
109 
110 enum class CharKind {
111  Char,
112  Char16,
113  Char32,
114  Wchar,
115 };
116 
117 enum class IntrinsicFunctionKind : uint8_t {
118  None,
119  New, // ?2 # operator new
120  Delete, // ?3 # operator delete
121  Assign, // ?4 # operator=
122  RightShift, // ?5 # operator>>
123  LeftShift, // ?6 # operator<<
124  LogicalNot, // ?7 # operator!
125  Equals, // ?8 # operator==
126  NotEquals, // ?9 # operator!=
127  ArraySubscript, // ?A # operator[]
128  Pointer, // ?C # operator->
129  Dereference, // ?D # operator*
130  Increment, // ?E # operator++
131  Decrement, // ?F # operator--
132  Minus, // ?G # operator-
133  Plus, // ?H # operator+
134  BitwiseAnd, // ?I # operator&
135  MemberPointer, // ?J # operator->*
136  Divide, // ?K # operator/
137  Modulus, // ?L # operator%
138  LessThan, // ?M operator<
139  LessThanEqual, // ?N operator<=
140  GreaterThan, // ?O operator>
141  GreaterThanEqual, // ?P operator>=
142  Comma, // ?Q operator,
143  Parens, // ?R operator()
144  BitwiseNot, // ?S operator~
145  BitwiseXor, // ?T operator^
146  BitwiseOr, // ?U operator|
147  LogicalAnd, // ?V operator&&
148  LogicalOr, // ?W operator||
149  TimesEqual, // ?X operator*=
150  PlusEqual, // ?Y operator+=
151  MinusEqual, // ?Z operator-=
152  DivEqual, // ?_0 operator/=
153  ModEqual, // ?_1 operator%=
154  RshEqual, // ?_2 operator>>=
155  LshEqual, // ?_3 operator<<=
156  BitwiseAndEqual, // ?_4 operator&=
157  BitwiseOrEqual, // ?_5 operator|=
158  BitwiseXorEqual, // ?_6 operator^=
159  VbaseDtor, // ?_D # vbase destructor
160  VecDelDtor, // ?_E # vector deleting destructor
161  DefaultCtorClosure, // ?_F # default constructor closure
162  ScalarDelDtor, // ?_G # scalar deleting destructor
163  VecCtorIter, // ?_H # vector constructor iterator
164  VecDtorIter, // ?_I # vector destructor iterator
165  VecVbaseCtorIter, // ?_J # vector vbase constructor iterator
166  VdispMap, // ?_K # virtual displacement map
167  EHVecCtorIter, // ?_L # eh vector constructor iterator
168  EHVecDtorIter, // ?_M # eh vector destructor iterator
169  EHVecVbaseCtorIter, // ?_N # eh vector vbase constructor iterator
170  CopyCtorClosure, // ?_O # copy constructor closure
171  LocalVftableCtorClosure, // ?_T # local vftable constructor closure
172  ArrayNew, // ?_U operator new[]
173  ArrayDelete, // ?_V operator delete[]
174  ManVectorCtorIter, // ?__A managed vector ctor iterator
175  ManVectorDtorIter, // ?__B managed vector dtor iterator
176  EHVectorCopyCtorIter, // ?__C EH vector copy ctor iterator
177  EHVectorVbaseCopyCtorIter, // ?__D EH vector vbase copy ctor iterator
178  VectorCopyCtorIter, // ?__G vector copy constructor iterator
179  VectorVbaseCopyCtorIter, // ?__H vector vbase copy constructor iterator
180  ManVectorVbaseCopyCtorIter, // ?__I managed vector vbase copy constructor
181  CoAwait, // ?__L operator co_await
182  Spaceship, // ?__M operator<=>
184 };
185 
187  None,
188  Vftable,
189  Vbtable,
190  Typeof,
191  VcallThunk,
194  UdtReturning,
195  Unknown,
203  LocalVftable,
205 };
206 
207 // Function classes
209  FC_None = 0,
210  FC_Public = 1 << 0,
211  FC_Protected = 1 << 1,
212  FC_Private = 1 << 2,
213  FC_Global = 1 << 3,
214  FC_Static = 1 << 4,
215  FC_Virtual = 1 << 5,
216  FC_Far = 1 << 6,
217  FC_ExternC = 1 << 7,
222 };
223 
224 enum class TagKind { Class, Struct, Union, Enum };
225 
226 enum class NodeKind {
227  Unknown,
228  Md5Symbol,
231  Identifier,
241  PointerType,
242  TagType,
243  ArrayType,
244  Custom,
246  NodeArray,
256 };
257 
258 struct Node {
259  explicit Node(NodeKind K) : Kind(K) {}
260  virtual ~Node() = default;
261 
262  NodeKind kind() const { return Kind; }
263 
264  virtual void output(OutputBuffer &OB, OutputFlags Flags) const = 0;
265 
266  std::string toString(OutputFlags Flags = OF_Default) const;
267 
268 private:
269  NodeKind Kind;
270 };
271 
272 struct TypeNode;
273 struct PrimitiveTypeNode;
274 struct FunctionSignatureNode;
275 struct IdentifierNode;
276 struct NamedIdentifierNode;
277 struct VcallThunkIdentifierNode;
278 struct IntrinsicFunctionIdentifierNode;
279 struct LiteralOperatorIdentifierNode;
280 struct ConversionOperatorIdentifierNode;
281 struct StructorIdentifierNode;
282 struct ThunkSignatureNode;
283 struct PointerTypeNode;
284 struct ArrayTypeNode;
285 struct TagTypeNode;
286 struct NodeArrayNode;
287 struct QualifiedNameNode;
288 struct TemplateParameterReferenceNode;
289 struct EncodedStringLiteralNode;
290 struct IntegerLiteralNode;
291 struct RttiBaseClassDescriptorNode;
292 struct LocalStaticGuardVariableNode;
293 struct SymbolNode;
294 struct FunctionSymbolNode;
295 struct VariableSymbolNode;
296 struct SpecialTableSymbolNode;
297 
298 struct TypeNode : public Node {
299  explicit TypeNode(NodeKind K) : Node(K) {}
300 
301  virtual void outputPre(OutputBuffer &OB, OutputFlags Flags) const = 0;
302  virtual void outputPost(OutputBuffer &OB, OutputFlags Flags) const = 0;
303 
304  void output(OutputBuffer &OB, OutputFlags Flags) const override {
305  outputPre(OB, Flags);
306  outputPost(OB, Flags);
307  }
308 
310 };
311 
312 struct PrimitiveTypeNode : public TypeNode {
315 
316  void outputPre(OutputBuffer &OB, OutputFlags Flags) const override;
317  void outputPost(OutputBuffer &OB, OutputFlags Flags) const override {}
318 
320 };
321 
325 
326  void outputPre(OutputBuffer &OB, OutputFlags Flags) const override;
327  void outputPost(OutputBuffer &OB, OutputFlags Flags) const override;
328 
329  // Valid if this FunctionTypeNode is the Pointee of a PointerType or
330  // MemberPointerType.
332 
333  // The function's calling convention.
335 
336  // Function flags (gloabl, public, etc)
338 
340 
341  // The return type of the function.
342  TypeNode *ReturnType = nullptr;
343 
344  // True if this is a C-style ... varargs function.
345  bool IsVariadic = false;
346 
347  // Function parameters
348  NodeArrayNode *Params = nullptr;
349 
350  // True if the function type is noexcept.
351  bool IsNoexcept = false;
352 };
353 
354 struct IdentifierNode : public Node {
355  explicit IdentifierNode(NodeKind K) : Node(K) {}
356 
358 
359 protected:
361 };
362 
365 
366  void output(OutputBuffer &OB, OutputFlags Flags) const override;
367 
369 };
370 
374 
375  void output(OutputBuffer &OB, OutputFlags Flags) const override;
376 
379  bool IsDestructor = false;
380 };
381 
384 
385  void output(OutputBuffer &OB, OutputFlags Flags) const override;
386 
388 };
389 
393  Operator(Operator) {}
394 
395  void output(OutputBuffer &OB, OutputFlags Flags) const override;
396 
398 };
399 
403 
404  void output(OutputBuffer &OB, OutputFlags Flags) const override;
405 
407 };
408 
412 
413  void output(OutputBuffer &OB, OutputFlags Flags) const override;
414 
415  bool IsThread = false;
417 };
418 
422 
423  void output(OutputBuffer &OB, OutputFlags Flags) const override;
424 
425  // The type that this operator converts too.
426  TypeNode *TargetType = nullptr;
427 };
428 
434 
435  void output(OutputBuffer &OB, OutputFlags Flags) const override;
436 
437  // The name of the class that this is a structor of.
438  IdentifierNode *Class = nullptr;
439  bool IsDestructor = false;
440 };
441 
444 
445  void outputPre(OutputBuffer &OB, OutputFlags Flags) const override;
446  void outputPost(OutputBuffer &OB, OutputFlags Flags) const override;
447 
448  struct ThisAdjustor {
450  int32_t VBPtrOffset = 0;
451  int32_t VBOffsetOffset = 0;
452  int32_t VtordispOffset = 0;
453  };
454 
456 };
457 
458 struct PointerTypeNode : public TypeNode {
460  void outputPre(OutputBuffer &OB, OutputFlags Flags) const override;
461  void outputPost(OutputBuffer &OB, OutputFlags Flags) const override;
462 
463  // Is this a pointer, reference, or rvalue-reference?
465 
466  // If this is a member pointer, this is the class that the member is in.
468 
469  // Represents a type X in "a pointer to X", "a reference to X", or
470  // "rvalue-reference to X"
471  TypeNode *Pointee = nullptr;
472 };
473 
474 struct TagTypeNode : public TypeNode {
476 
477  void outputPre(OutputBuffer &OB, OutputFlags Flags) const override;
478  void outputPost(OutputBuffer &OB, OutputFlags Flags) const override;
479 
482 };
483 
484 struct ArrayTypeNode : public TypeNode {
486 
487  void outputPre(OutputBuffer &OB, OutputFlags Flags) const override;
488  void outputPost(OutputBuffer &OB, OutputFlags Flags) const override;
489 
490  void outputDimensionsImpl(OutputBuffer &OB, OutputFlags Flags) const;
491  void outputOneDimension(OutputBuffer &OB, OutputFlags Flags, Node *N) const;
492 
493  // A list of array dimensions. e.g. [3,4,5] in `int Foo[3][4][5]`
495 
496  // The type of array element.
497  TypeNode *ElementType = nullptr;
498 };
499 
500 struct IntrinsicNode : public TypeNode {
502  void output(OutputBuffer &OB, OutputFlags Flags) const override {}
503 };
504 
505 struct CustomTypeNode : public TypeNode {
507 
508  void outputPre(OutputBuffer &OB, OutputFlags Flags) const override;
509  void outputPost(OutputBuffer &OB, OutputFlags Flags) const override;
510 
512 };
513 
514 struct NodeArrayNode : public Node {
516 
517  void output(OutputBuffer &OB, OutputFlags Flags) const override;
518 
519  void output(OutputBuffer &OB, OutputFlags Flags, StringView Separator) const;
520 
521  Node **Nodes = nullptr;
522  size_t Count = 0;
523 };
524 
525 struct QualifiedNameNode : public Node {
527 
528  void output(OutputBuffer &OB, OutputFlags Flags) const override;
529 
531 
533  Node *LastComponent = Components->Nodes[Components->Count - 1];
534  return static_cast<IdentifierNode *>(LastComponent);
535  }
536 };
537 
541 
542  void output(OutputBuffer &OB, OutputFlags Flags) const override;
543 
544  SymbolNode *Symbol = nullptr;
545 
547  std::array<int64_t, 3> ThunkOffsets;
549  bool IsMemberPointer = false;
550 };
551 
552 struct IntegerLiteralNode : public Node {
556 
557  void output(OutputBuffer &OB, OutputFlags Flags) const override;
558 
560  bool IsNegative = false;
561 };
562 
566 
567  void output(OutputBuffer &OB, OutputFlags Flags) const override;
568 
570  int32_t VBPtrOffset = 0;
573 };
574 
575 struct SymbolNode : public Node {
576  explicit SymbolNode(NodeKind K) : Node(K) {}
577  void output(OutputBuffer &OB, OutputFlags Flags) const override;
579 };
580 
584 
585  void output(OutputBuffer &OB, OutputFlags Flags) const override;
588 };
589 
593 
594  void output(OutputBuffer &OB, OutputFlags Flags) const override;
595 
596  bool IsVisible = false;
597 };
598 
601 
602  void output(OutputBuffer &OB, OutputFlags Flags) const override;
603 
605  bool IsTruncated = false;
607 };
608 
611 
612  void output(OutputBuffer &OB, OutputFlags Flags) const override;
613 
615  TypeNode *Type = nullptr;
616 };
617 
620 
621  void output(OutputBuffer &OB, OutputFlags Flags) const override;
622 
624 };
625 
626 } // namespace ms_demangle
627 } // namespace llvm
628 
629 #endif
llvm::ms_demangle::DynamicStructorIdentifierNode
Definition: MicrosoftDemangleNodes.h:371
llvm::ms_demangle::FunctionSignatureNode::FunctionClass
FuncClass FunctionClass
Definition: MicrosoftDemangleNodes.h:337
llvm::ms_demangle::PointerTypeNode::outputPre
void outputPre(OutputBuffer &OB, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:479
llvm::ms_demangle::DynamicStructorIdentifierNode::Name
QualifiedNameNode * Name
Definition: MicrosoftDemangleNodes.h:378
llvm::ms_demangle::FunctionRefQualifier::Reference
@ Reference
llvm::ms_demangle::IntegerLiteralNode::IsNegative
bool IsNegative
Definition: MicrosoftDemangleNodes.h:560
llvm::ms_demangle::LocalStaticGuardVariableNode::output
void output(OutputBuffer &OB, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:641
llvm::ms_demangle::ArrayTypeNode::outputPost
void outputPost(OutputBuffer &OB, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:574
llvm::ms_demangle::QualifiedNameNode::QualifiedNameNode
QualifiedNameNode()
Definition: MicrosoftDemangleNodes.h:526
llvm::ms_demangle::VcallThunkIdentifierNode::output
void output(OutputBuffer &OB, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:646
llvm::ms_demangle::SpecialIntrinsicKind::DynamicInitializer
@ DynamicInitializer
llvm::ms_demangle::Node::~Node
virtual ~Node()=default
llvm::ms_demangle::PointerTypeNode::PointerTypeNode
PointerTypeNode()
Definition: MicrosoftDemangleNodes.h:459
llvm::ms_demangle::IntrinsicNode::output
void output(OutputBuffer &OB, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.h:502
llvm::ms_demangle::NodeArrayNode::Nodes
Node ** Nodes
Definition: MicrosoftDemangleNodes.h:521
llvm::ms_demangle::FC_Private
@ FC_Private
Definition: MicrosoftDemangleNodes.h:212
llvm::ms_demangle::OF_Default
@ OF_Default
Definition: MicrosoftDemangleNodes.h:76
llvm::ms_demangle::ArrayTypeNode
Definition: MicrosoftDemangleNodes.h:484
llvm::ms_demangle::Node
Definition: MicrosoftDemangleNodes.h:258
llvm
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:17
llvm::ms_demangle::PrimitiveKind::Ldouble
@ Ldouble
llvm::Operator
This is a utility class that provides an abstraction for the common functionality between Instruction...
Definition: Operator.h:32
llvm::ms_demangle::SpecialIntrinsicKind::Vbtable
@ Vbtable
llvm::ms_demangle::SpecialIntrinsicKind::RttiClassHierarchyDescriptor
@ RttiClassHierarchyDescriptor
llvm::ms_demangle::TemplateParameterReferenceNode::Symbol
SymbolNode * Symbol
Definition: MicrosoftDemangleNodes.h:544
llvm::ms_demangle::IntrinsicFunctionKind::BitwiseXor
@ BitwiseXor
llvm::ms_demangle::IntrinsicFunctionKind::BitwiseAnd
@ BitwiseAnd
llvm::ms_demangle::IntegerLiteralNode
Definition: MicrosoftDemangleNodes.h:552
llvm::ms_demangle::TagTypeNode::TagTypeNode
TagTypeNode(TagKind Tag)
Definition: MicrosoftDemangleNodes.h:475
llvm::ms_demangle::TemplateParameterReferenceNode::Affinity
PointerAffinity Affinity
Definition: MicrosoftDemangleNodes.h:548
llvm::ms_demangle::CustomTypeNode
Definition: MicrosoftDemangleNodes.h:505
llvm::ms_demangle::NodeKind::FunctionSignature
@ FunctionSignature
llvm::ms_demangle::IntrinsicFunctionKind::DefaultCtorClosure
@ DefaultCtorClosure
llvm::ms_demangle::Q_Far
@ Q_Far
Definition: MicrosoftDemangleNodes.h:38
llvm::ms_demangle::QualifiedNameNode::Components
NodeArrayNode * Components
Definition: MicrosoftDemangleNodes.h:530
llvm::ms_demangle::SymbolNode::SymbolNode
SymbolNode(NodeKind K)
Definition: MicrosoftDemangleNodes.h:576
llvm::ms_demangle::OF_NoTagSpecifier
@ OF_NoTagSpecifier
Definition: MicrosoftDemangleNodes.h:78
llvm::ms_demangle::SpecialIntrinsicKind::LocalVftable
@ LocalVftable
llvm::ms_demangle::SpecialTableSymbolNode::TargetName
QualifiedNameNode * TargetName
Definition: MicrosoftDemangleNodes.h:586
llvm::ms_demangle::ThunkSignatureNode::outputPost
void outputPost(OutputBuffer &OB, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:462
NodeArrayNode
Definition: ItaniumDemangle.h:336
llvm::ms_demangle::IntrinsicFunctionKind::Equals
@ Equals
llvm::ms_demangle::TagKind::Struct
@ Struct
llvm::ms_demangle::ReferenceKind
ReferenceKind
Definition: MicrosoftDemangleNodes.h:73
llvm::ms_demangle::ThunkSignatureNode::ThisAdjustor::VBPtrOffset
int32_t VBPtrOffset
Definition: MicrosoftDemangleNodes.h:450
llvm::ms_demangle::CallingConv::Pascal
@ Pascal
llvm::ms_demangle::NamedIdentifierNode::NamedIdentifierNode
NamedIdentifierNode()
Definition: MicrosoftDemangleNodes.h:383
llvm::ms_demangle::StorageClass::None
@ None
llvm::ms_demangle::StructorIdentifierNode::IsDestructor
bool IsDestructor
Definition: MicrosoftDemangleNodes.h:439
llvm::ms_demangle::PointerAffinity::Pointer
@ Pointer
llvm::ms_demangle::TemplateParameterReferenceNode::IsMemberPointer
bool IsMemberPointer
Definition: MicrosoftDemangleNodes.h:549
llvm::ms_demangle::IntrinsicFunctionKind::None
@ None
llvm::ms_demangle::IntrinsicFunctionKind::LessThan
@ LessThan
llvm::ms_demangle::IntrinsicFunctionKind::GreaterThanEqual
@ GreaterThanEqual
llvm::ms_demangle::IdentifierNode::IdentifierNode
IdentifierNode(NodeKind K)
Definition: MicrosoftDemangleNodes.h:355
llvm::ms_demangle::IntrinsicFunctionKind::MemberPointer
@ MemberPointer
llvm::ms_demangle::CustomTypeNode::outputPost
void outputPost(OutputBuffer &OB, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:627
llvm::ms_demangle::NodeKind::LiteralOperatorIdentifier
@ LiteralOperatorIdentifier
llvm::ms_demangle::CallingConv::Cdecl
@ Cdecl
llvm::ms_demangle::Q_Restrict
@ Q_Restrict
Definition: MicrosoftDemangleNodes.h:41
llvm::ms_demangle::ConversionOperatorIdentifierNode::ConversionOperatorIdentifierNode
ConversionOperatorIdentifierNode()
Definition: MicrosoftDemangleNodes.h:420
llvm::ms_demangle::IntrinsicFunctionKind::BitwiseAndEqual
@ BitwiseAndEqual
llvm::ms_demangle::LocalStaticGuardVariableNode::LocalStaticGuardVariableNode
LocalStaticGuardVariableNode()
Definition: MicrosoftDemangleNodes.h:591
llvm::ms_demangle::FunctionSignatureNode
Definition: MicrosoftDemangleNodes.h:322
llvm::ms_demangle::FunctionSymbolNode::Signature
FunctionSignatureNode * Signature
Definition: MicrosoftDemangleNodes.h:623
llvm::ms_demangle::LiteralOperatorIdentifierNode::output
void output(OutputBuffer &OB, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:380
llvm::ms_demangle::SpecialTableSymbolNode::Quals
Qualifiers Quals
Definition: MicrosoftDemangleNodes.h:587
llvm::ms_demangle::IntrinsicFunctionKind::RshEqual
@ RshEqual
llvm::ms_demangle::TagTypeNode::outputPost
void outputPost(OutputBuffer &OB, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:547
llvm::ms_demangle::Q_Unaligned
@ Q_Unaligned
Definition: MicrosoftDemangleNodes.h:40
llvm::ms_demangle::IntrinsicFunctionIdentifierNode
Definition: MicrosoftDemangleNodes.h:390
llvm::Type
The instances of the Type class are immutable: once they are created, they are never changed.
Definition: Type.h:45
llvm::ms_demangle::DynamicStructorIdentifierNode::Variable
VariableSymbolNode * Variable
Definition: MicrosoftDemangleNodes.h:377
llvm::ms_demangle::NodeKind::Custom
@ Custom
llvm::ms_demangle::IntrinsicFunctionKind::ArrayNew
@ ArrayNew
llvm::ms_demangle::IntrinsicFunctionKind::Delete
@ Delete
llvm::ms_demangle::IdentifierNode::outputTemplateParameters
void outputTemplateParameters(OutputBuffer &OB, OutputFlags Flags) const
Definition: MicrosoftDemangleNodes.cpp:222
llvm::ms_demangle::CallingConv::Swift
@ Swift
llvm::ms_demangle::IntrinsicFunctionKind::EHVectorVbaseCopyCtorIter
@ EHVectorVbaseCopyCtorIter
llvm::ms_demangle::IntrinsicFunctionKind::MaxIntrinsic
@ MaxIntrinsic
llvm::ms_demangle::Q_Const
@ Q_Const
Definition: MicrosoftDemangleNodes.h:36
llvm::ms_demangle::ArrayTypeNode::Dimensions
NodeArrayNode * Dimensions
Definition: MicrosoftDemangleNodes.h:494
llvm::ms_demangle::Qualifiers
Qualifiers
Definition: MicrosoftDemangleNodes.h:34
llvm::ArrayType
Class to represent array types.
Definition: DerivedTypes.h:357
llvm::ms_demangle::ArrayTypeNode::ArrayTypeNode
ArrayTypeNode()
Definition: MicrosoftDemangleNodes.h:485
llvm::ms_demangle::IntrinsicFunctionKind::ManVectorVbaseCopyCtorIter
@ ManVectorVbaseCopyCtorIter
llvm::ms_demangle::Node::output
virtual void output(OutputBuffer &OB, OutputFlags Flags) const =0
llvm::dwarf::Tag
Tag
Definition: Dwarf.h:105
llvm::ms_demangle::IntrinsicFunctionKind::TimesEqual
@ TimesEqual
llvm::ms_demangle::SpecialIntrinsicKind::UdtReturning
@ UdtReturning
llvm::ms_demangle::RttiBaseClassDescriptorNode::RttiBaseClassDescriptorNode
RttiBaseClassDescriptorNode()
Definition: MicrosoftDemangleNodes.h:564
llvm::ms_demangle::IntrinsicFunctionKind::LshEqual
@ LshEqual
llvm::ms_demangle::IntrinsicFunctionKind::EHVectorCopyCtorIter
@ EHVectorCopyCtorIter
llvm::ms_demangle::TemplateParameterReferenceNode
Definition: MicrosoftDemangleNodes.h:538
llvm::ms_demangle::QualifiedNameNode
Definition: MicrosoftDemangleNodes.h:525
llvm::ms_demangle::PrimitiveTypeNode::PrimKind
PrimitiveKind PrimKind
Definition: MicrosoftDemangleNodes.h:319
llvm::ms_demangle::LiteralOperatorIdentifierNode::LiteralOperatorIdentifierNode
LiteralOperatorIdentifierNode()
Definition: MicrosoftDemangleNodes.h:401
llvm::ms_demangle::EncodedStringLiteralNode::EncodedStringLiteralNode
EncodedStringLiteralNode()
Definition: MicrosoftDemangleNodes.h:600
llvm::ms_demangle::SpecialIntrinsicKind::RttiCompleteObjLocator
@ RttiCompleteObjLocator
llvm::ms_demangle::ConversionOperatorIdentifierNode::output
void output(OutputBuffer &OB, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:365
llvm::ms_demangle::VariableSymbolNode::SC
StorageClass SC
Definition: MicrosoftDemangleNodes.h:614
llvm::ms_demangle::FC_Global
@ FC_Global
Definition: MicrosoftDemangleNodes.h:213
llvm::ms_demangle::StorageClass
StorageClass
Definition: MicrosoftDemangleNodes.h:45
llvm::ms_demangle::IntrinsicFunctionKind::LeftShift
@ LeftShift
llvm::ms_demangle::NodeKind::LocalStaticGuardIdentifier
@ LocalStaticGuardIdentifier
llvm::ms_demangle::IntrinsicFunctionKind::LogicalNot
@ LogicalNot
llvm::ms_demangle::FC_Static
@ FC_Static
Definition: MicrosoftDemangleNodes.h:214
llvm::ms_demangle::TypeNode::outputPost
virtual void outputPost(OutputBuffer &OB, OutputFlags Flags) const =0
llvm::ms_demangle::IntrinsicFunctionKind::VectorCopyCtorIter
@ VectorCopyCtorIter
llvm::ms_demangle::IntrinsicFunctionKind::Assign
@ Assign
llvm::ms_demangle::SpecialIntrinsicKind::LocalStaticThreadGuard
@ LocalStaticThreadGuard
llvm::ms_demangle::ReferenceKind::None
@ None
llvm::ms_demangle::SymbolNode::output
void output(OutputBuffer &OB, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:582
llvm::ms_demangle::OF_NoVariableType
@ OF_NoVariableType
Definition: MicrosoftDemangleNodes.h:82
llvm::ms_demangle::CharKind
CharKind
Definition: MicrosoftDemangleNodes.h:110
llvm::ms_demangle::CallingConv
CallingConv
Definition: MicrosoftDemangleNodes.h:58
llvm::ms_demangle::FunctionSignatureNode::FunctionSignatureNode
FunctionSignatureNode(NodeKind K)
Definition: MicrosoftDemangleNodes.h:323
llvm::ms_demangle::OF_NoCallingConvention
@ OF_NoCallingConvention
Definition: MicrosoftDemangleNodes.h:77
llvm::ms_demangle::FC_NoParameterList
@ FC_NoParameterList
Definition: MicrosoftDemangleNodes.h:218
llvm::ms_demangle::IntrinsicFunctionKind::ArrayDelete
@ ArrayDelete
llvm::ms_demangle::CharKind::Wchar
@ Wchar
llvm::ms_demangle::PrimitiveKind::Long
@ Long
llvm::ms_demangle::IntrinsicFunctionKind
IntrinsicFunctionKind
Definition: MicrosoftDemangleNodes.h:117
llvm::ms_demangle::NodeKind::QualifiedName
@ QualifiedName
llvm::ms_demangle::FunctionSignatureNode::CallConvention
CallingConv CallConvention
Definition: MicrosoftDemangleNodes.h:334
llvm::ms_demangle::FunctionSignatureNode::ReturnType
TypeNode * ReturnType
Definition: MicrosoftDemangleNodes.h:342
llvm::ms_demangle::SpecialIntrinsicKind
SpecialIntrinsicKind
Definition: MicrosoftDemangleNodes.h:186
llvm::ms_demangle::PrimitiveKind::Double
@ Double
llvm::ms_demangle::FunctionRefQualifier::None
@ None
llvm::ms_demangle::QualifiedNameNode::getUnqualifiedIdentifier
IdentifierNode * getUnqualifiedIdentifier()
Definition: MicrosoftDemangleNodes.h:532
llvm::ms_demangle::IntrinsicFunctionKind::BitwiseNot
@ BitwiseNot
llvm::ms_demangle::StructorIdentifierNode::StructorIdentifierNode
StructorIdentifierNode()
Definition: MicrosoftDemangleNodes.h:430
llvm::ms_demangle::CallingConv::Fastcall
@ Fastcall
llvm::ms_demangle::StructorIdentifierNode::output
void output(OutputBuffer &OB, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:373
llvm::ms_demangle::NodeKind::TagType
@ TagType
llvm::ms_demangle::LocalStaticGuardVariableNode
Definition: MicrosoftDemangleNodes.h:590
llvm::ms_demangle::NodeKind::Identifier
@ Identifier
llvm::ms_demangle::CallingConv::Vectorcall
@ Vectorcall
llvm::ms_demangle::SpecialIntrinsicKind::Unknown
@ Unknown
llvm::ms_demangle::PointerTypeNode::Pointee
TypeNode * Pointee
Definition: MicrosoftDemangleNodes.h:471
llvm::ms_demangle::FC_StaticThisAdjust
@ FC_StaticThisAdjust
Definition: MicrosoftDemangleNodes.h:221
llvm::ms_demangle::RttiBaseClassDescriptorNode::VBPtrOffset
int32_t VBPtrOffset
Definition: MicrosoftDemangleNodes.h:570
llvm::ms_demangle::OF_NoReturnType
@ OF_NoReturnType
Definition: MicrosoftDemangleNodes.h:81
llvm::ms_demangle::IntrinsicFunctionKind::NotEquals
@ NotEquals
llvm::ms_demangle::CharKind::Char16
@ Char16
llvm::ms_demangle::ThunkSignatureNode::ThisAdjustor::StaticOffset
uint32_t StaticOffset
Definition: MicrosoftDemangleNodes.h:449
llvm::ms_demangle::LocalStaticGuardIdentifierNode
Definition: MicrosoftDemangleNodes.h:409
llvm::ms_demangle::ArrayTypeNode::outputDimensionsImpl
void outputDimensionsImpl(OutputBuffer &OB, OutputFlags Flags) const
Definition: MicrosoftDemangleNodes.cpp:562
llvm::ms_demangle::IntrinsicFunctionKind::LessThanEqual
@ LessThanEqual
llvm::ms_demangle::IntrinsicFunctionKind::Decrement
@ Decrement
llvm::ms_demangle::IntrinsicFunctionKind::PlusEqual
@ PlusEqual
llvm::ms_demangle::SpecialTableSymbolNode::SpecialTableSymbolNode
SpecialTableSymbolNode()
Definition: MicrosoftDemangleNodes.h:582
llvm::ms_demangle::IntrinsicFunctionKind::EHVecDtorIter
@ EHVecDtorIter
llvm::ms_demangle::IdentifierNode
Definition: MicrosoftDemangleNodes.h:354
llvm::ms_demangle::RttiBaseClassDescriptorNode::NVOffset
uint32_t NVOffset
Definition: MicrosoftDemangleNodes.h:569
llvm::ms_demangle::IntrinsicFunctionKind::CoAwait
@ CoAwait
llvm::ms_demangle::TagKind::Enum
@ Enum
llvm::ms_demangle::CustomTypeNode::outputPre
void outputPre(OutputBuffer &OB, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:624
llvm::ms_demangle::ThunkSignatureNode::ThisAdjustor
Definition: MicrosoftDemangleNodes.h:448
llvm::ms_demangle::CallingConv::Eabi
@ Eabi
llvm::ms_demangle::IntrinsicFunctionKind::VbaseDtor
@ VbaseDtor
llvm::ms_demangle::LocalStaticGuardIdentifierNode::IsThread
bool IsThread
Definition: MicrosoftDemangleNodes.h:415
llvm::ms_demangle::TagTypeNode
Definition: MicrosoftDemangleNodes.h:474
llvm::ms_demangle::EncodedStringLiteralNode::IsTruncated
bool IsTruncated
Definition: MicrosoftDemangleNodes.h:605
llvm::ms_demangle::SpecialIntrinsicKind::RttiBaseClassArray
@ RttiBaseClassArray
llvm::ms_demangle::StorageClass::Global
@ Global
llvm::ms_demangle::IntrinsicFunctionKind::VecVbaseCtorIter
@ VecVbaseCtorIter
StringView.h
llvm::ms_demangle::SpecialIntrinsicKind::StringLiteralSymbol
@ StringLiteralSymbol
llvm::ms_demangle::StructorIdentifierNode::StructorIdentifierNode
StructorIdentifierNode(bool IsDestructor)
Definition: MicrosoftDemangleNodes.h:431
llvm::ms_demangle::SymbolNode
Definition: MicrosoftDemangleNodes.h:575
llvm::ms_demangle::OF_NoMemberType
@ OF_NoMemberType
Definition: MicrosoftDemangleNodes.h:80
llvm::ms_demangle::LocalStaticGuardVariableNode::IsVisible
bool IsVisible
Definition: MicrosoftDemangleNodes.h:596
llvm::ms_demangle::PrimitiveKind::Char
@ Char
llvm::ms_demangle::DynamicStructorIdentifierNode::DynamicStructorIdentifierNode
DynamicStructorIdentifierNode()
Definition: MicrosoftDemangleNodes.h:372
llvm::ms_demangle::Node::kind
NodeKind kind() const
Definition: MicrosoftDemangleNodes.h:262
llvm::ms_demangle::FunctionSignatureNode::RefQualifier
FunctionRefQualifier RefQualifier
Definition: MicrosoftDemangleNodes.h:339
llvm::ms_demangle::StorageClass::FunctionLocalStatic
@ FunctionLocalStatic
llvm::ms_demangle::ConversionOperatorIdentifierNode
Definition: MicrosoftDemangleNodes.h:419
llvm::ms_demangle::FunctionSymbolNode::FunctionSymbolNode
FunctionSymbolNode()
Definition: MicrosoftDemangleNodes.h:619
llvm::ms_demangle::StructorIdentifierNode::Class
IdentifierNode * Class
Definition: MicrosoftDemangleNodes.h:438
llvm::ms_demangle::TagTypeNode::outputPre
void outputPre(OutputBuffer &OB, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:533
llvm::ms_demangle::DynamicStructorIdentifierNode::output
void output(OutputBuffer &OB, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:231
llvm::ms_demangle::ThunkSignatureNode
Definition: MicrosoftDemangleNodes.h:442
llvm::ms_demangle::IntrinsicFunctionKind::Increment
@ Increment
llvm::ms_demangle::NamedIdentifierNode
Definition: MicrosoftDemangleNodes.h:382
llvm::ms_demangle::PrimitiveKind::Char32
@ Char32
llvm::ms_demangle::NodeArrayNode::Count
size_t Count
Definition: MicrosoftDemangleNodes.h:522
llvm::ms_demangle::StorageClass::PrivateStatic
@ PrivateStatic
llvm::ms_demangle::ArrayTypeNode::outputOneDimension
void outputOneDimension(OutputBuffer &OB, OutputFlags Flags, Node *N) const
Definition: MicrosoftDemangleNodes.cpp:554
llvm::ms_demangle::PrimitiveTypeNode
Definition: MicrosoftDemangleNodes.h:312
llvm::ms_demangle::CallingConv::Thiscall
@ Thiscall
llvm::ms_demangle::IntrinsicFunctionKind::BitwiseOrEqual
@ BitwiseOrEqual
llvm::ms_demangle::FC_Public
@ FC_Public
Definition: MicrosoftDemangleNodes.h:210
uint64_t
llvm::ms_demangle::Q_None
@ Q_None
Definition: MicrosoftDemangleNodes.h:35
llvm::ms_demangle::FC_VirtualThisAdjustEx
@ FC_VirtualThisAdjustEx
Definition: MicrosoftDemangleNodes.h:220
llvm::ms_demangle::DynamicStructorIdentifierNode::IsDestructor
bool IsDestructor
Definition: MicrosoftDemangleNodes.h:379
llvm::ms_demangle::IntrinsicFunctionKind::LogicalOr
@ LogicalOr
llvm::ms_demangle::CharKind::Char32
@ Char32
llvm::ms_demangle::LiteralOperatorIdentifierNode
Definition: MicrosoftDemangleNodes.h:400
llvm::ms_demangle::SpecialIntrinsicKind::Typeof
@ Typeof
llvm::ms_demangle::NodeKind::IntrinsicFunctionIdentifier
@ IntrinsicFunctionIdentifier
QualifiedName
Definition: ItaniumDemangle.h:1045
llvm::ms_demangle::NodeArrayNode::output
void output(OutputBuffer &OB, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:157
llvm::ms_demangle::IntrinsicFunctionKind::Dereference
@ Dereference
llvm::ms_demangle::NodeKind::PointerType
@ PointerType
llvm::ms_demangle::IntrinsicFunctionKind::Comma
@ Comma
llvm::ms_demangle::IntrinsicFunctionKind::ModEqual
@ ModEqual
llvm::ms_demangle::NamedIdentifierNode::Name
StringView Name
Definition: MicrosoftDemangleNodes.h:387
llvm::ms_demangle::SpecialTableSymbolNode
Definition: MicrosoftDemangleNodes.h:581
llvm::ms_demangle::SpecialIntrinsicKind::Vftable
@ Vftable
llvm::ms_demangle::Q_Volatile
@ Q_Volatile
Definition: MicrosoftDemangleNodes.h:37
llvm::ms_demangle::IntrinsicFunctionKind::VecCtorIter
@ VecCtorIter
llvm::ms_demangle::LiteralOperatorIdentifierNode::Name
StringView Name
Definition: MicrosoftDemangleNodes.h:406
llvm::PointerType
Class to represent pointers.
Definition: DerivedTypes.h:632
llvm::ms_demangle::FC_None
@ FC_None
Definition: MicrosoftDemangleNodes.h:209
llvm::ms_demangle::CustomTypeNode::Identifier
IdentifierNode * Identifier
Definition: MicrosoftDemangleNodes.h:511
llvm::ms_demangle::FunctionRefQualifier::RValueReference
@ RValueReference
llvm::ms_demangle::IntrinsicFunctionKind::Parens
@ Parens
llvm::ms_demangle::IntrinsicFunctionKind::GreaterThan
@ GreaterThan
llvm::ms_demangle::PrimitiveKind::Void
@ Void
llvm::ms_demangle::Node::toString
std::string toString(OutputFlags Flags=OF_Default) const
Definition: MicrosoftDemangleNodes.cpp:120
llvm::ms_demangle::IntrinsicNode
Definition: MicrosoftDemangleNodes.h:500
llvm::ms_demangle::IntrinsicFunctionIdentifierNode::Operator
IntrinsicFunctionKind Operator
Definition: MicrosoftDemangleNodes.h:397
llvm::ms_demangle::IntrinsicFunctionKind::RightShift
@ RightShift
llvm::ms_demangle::VcallThunkIdentifierNode::OffsetInVTable
uint64_t OffsetInVTable
Definition: MicrosoftDemangleNodes.h:368
llvm::ms_demangle::IntrinsicFunctionKind::VecDtorIter
@ VecDtorIter
IntegerLiteral
Definition: ItaniumDemangle.h:2257
llvm::ms_demangle::ArrayTypeNode::outputPre
void outputPre(OutputBuffer &OB, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:549
llvm::ms_demangle::IntrinsicFunctionKind::CopyCtorClosure
@ CopyCtorClosure
llvm::ms_demangle::FunctionSignatureNode::Affinity
PointerAffinity Affinity
Definition: MicrosoftDemangleNodes.h:331
llvm::ms_demangle::TemplateParameterReferenceNode::output
void output(OutputBuffer &OB, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:200
llvm::ms_demangle::IntrinsicFunctionIdentifierNode::output
void output(OutputBuffer &OB, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:254
llvm::ms_demangle::FunctionSymbolNode::output
void output(OutputBuffer &OB, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:586
llvm::ms_demangle::PointerTypeNode
Definition: MicrosoftDemangleNodes.h:458
llvm::ms_demangle::NodeKind::NodeArray
@ NodeArray
llvm::ms_demangle::IdentifierNode::TemplateParams
NodeArrayNode * TemplateParams
Definition: MicrosoftDemangleNodes.h:357
llvm::ms_demangle::ThunkSignatureNode::ThunkSignatureNode
ThunkSignatureNode()
Definition: MicrosoftDemangleNodes.h:443
llvm::ms_demangle::TemplateParameterReferenceNode::ThunkOffsets
std::array< int64_t, 3 > ThunkOffsets
Definition: MicrosoftDemangleNodes.h:547
llvm::ms_demangle::IntrinsicFunctionKind::Minus
@ Minus
llvm::ms_demangle::PointerAffinity::None
@ None
llvm::ms_demangle::IntrinsicFunctionKind::VectorVbaseCopyCtorIter
@ VectorVbaseCopyCtorIter
llvm::ms_demangle::IntrinsicFunctionKind::ManVectorCtorIter
@ ManVectorCtorIter
llvm::ms_demangle::RttiBaseClassDescriptorNode
Definition: MicrosoftDemangleNodes.h:563
llvm::ms_demangle::PrimitiveTypeNode::outputPost
void outputPost(OutputBuffer &OB, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.h:317
llvm::ms_demangle::PrimitiveKind::Schar
@ Schar
llvm::ms_demangle::TemplateParameterReferenceNode::TemplateParameterReferenceNode
TemplateParameterReferenceNode()
Definition: MicrosoftDemangleNodes.h:539
llvm::ms_demangle::FuncClass
FuncClass
Definition: MicrosoftDemangleNodes.h:208
llvm::ms_demangle::CharKind::Char
@ Char
llvm::ms_demangle::ConversionOperatorIdentifierNode::TargetType
TypeNode * TargetType
Definition: MicrosoftDemangleNodes.h:426
llvm::ms_demangle::Q_Pointer64
@ Q_Pointer64
Definition: MicrosoftDemangleNodes.h:42
llvm::ms_demangle::SpecialIntrinsicKind::DynamicAtexitDestructor
@ DynamicAtexitDestructor
llvm::ms_demangle::SpecialIntrinsicKind::RttiBaseClassDescriptor
@ RttiBaseClassDescriptor
llvm::ms_demangle::LocalStaticGuardIdentifierNode::output
void output(OutputBuffer &OB, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:355
llvm::ms_demangle::IntrinsicFunctionKind::VdispMap
@ VdispMap
llvm::ms_demangle::NodeKind::IntrinsicType
@ IntrinsicType
llvm::ms_demangle::IntegerLiteralNode::IntegerLiteralNode
IntegerLiteralNode(uint64_t Value, bool IsNegative)
Definition: MicrosoftDemangleNodes.h:554
llvm::ms_demangle::PrimitiveKind::Int64
@ Int64
llvm::ms_demangle::PrimitiveTypeNode::PrimitiveTypeNode
PrimitiveTypeNode(PrimitiveKind K)
Definition: MicrosoftDemangleNodes.h:313
llvm::ms_demangle::NodeKind::Unknown
@ Unknown
llvm::ms_demangle::IntrinsicFunctionKind::DivEqual
@ DivEqual
llvm::ms_demangle::PrimitiveKind::Ushort
@ Ushort
llvm::ms_demangle::FC_VirtualThisAdjust
@ FC_VirtualThisAdjust
Definition: MicrosoftDemangleNodes.h:219
llvm::ms_demangle::NodeKind::IntegerLiteral
@ IntegerLiteral
llvm::ms_demangle::ReferenceKind::LValueRef
@ LValueRef
llvm::ms_demangle::IntrinsicFunctionKind::New
@ New
uint32_t
llvm::ms_demangle::FunctionSignatureNode::outputPre
void outputPre(OutputBuffer &OB, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:386
llvm::ms_demangle::IntrinsicFunctionKind::ManVectorDtorIter
@ ManVectorDtorIter
llvm::ms_demangle::VcallThunkIdentifierNode
Definition: MicrosoftDemangleNodes.h:363
llvm::ms_demangle::ThunkSignatureNode::ThisAdjust
ThisAdjustor ThisAdjust
Definition: MicrosoftDemangleNodes.h:455
llvm::ms_demangle::SpecialTableSymbolNode::output
void output(OutputBuffer &OB, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:651
llvm::ms_demangle::Q_Huge
@ Q_Huge
Definition: MicrosoftDemangleNodes.h:39
llvm::ms_demangle::TagTypeNode::Tag
TagKind Tag
Definition: MicrosoftDemangleNodes.h:481
llvm::ms_demangle::PrimitiveKind::Char16
@ Char16
llvm::ms_demangle::NamedIdentifierNode::output
void output(OutputBuffer &OB, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:249
llvm::ms_demangle::Node::Node
Node(NodeKind K)
Definition: MicrosoftDemangleNodes.h:259
llvm::ms_demangle::TypeNode::output
void output(OutputBuffer &OB, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.h:304
llvm::ms_demangle::NodeKind::VcallThunkIdentifier
@ VcallThunkIdentifier
llvm::ms_demangle::IntrinsicFunctionKind::BitwiseXorEqual
@ BitwiseXorEqual
llvm::ms_demangle::FunctionRefQualifier
FunctionRefQualifier
Definition: MicrosoftDemangleNodes.h:55
llvm::ms_demangle::RttiBaseClassDescriptorNode::VBTableOffset
uint32_t VBTableOffset
Definition: MicrosoftDemangleNodes.h:571
llvm::ms_demangle::PrimitiveKind
PrimitiveKind
Definition: MicrosoftDemangleNodes.h:86
llvm::ms_demangle::IntegerLiteralNode::IntegerLiteralNode
IntegerLiteralNode()
Definition: MicrosoftDemangleNodes.h:553
llvm::ms_demangle::PrimitiveTypeNode::outputPre
void outputPre(OutputBuffer &OB, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:130
llvm::ms_demangle::PrimitiveKind::Uint64
@ Uint64
NodeKind
Determine the kind of a node from its type.
Definition: ItaniumDemangle.h:2360
llvm::ms_demangle::EncodedStringLiteralNode::output
void output(OutputBuffer &OB, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:173
llvm::ms_demangle::IntrinsicFunctionKind::Plus
@ Plus
llvm::ms_demangle::IntrinsicFunctionKind::LocalVftableCtorClosure
@ LocalVftableCtorClosure
llvm::ms_demangle::IntrinsicFunctionKind::Modulus
@ Modulus
llvm::ms_demangle::OF_NoAccessSpecifier
@ OF_NoAccessSpecifier
Definition: MicrosoftDemangleNodes.h:79
llvm::ms_demangle::IntrinsicFunctionKind::ScalarDelDtor
@ ScalarDelDtor
llvm::ms_demangle::LocalStaticGuardIdentifierNode::LocalStaticGuardIdentifierNode
LocalStaticGuardIdentifierNode()
Definition: MicrosoftDemangleNodes.h:410
llvm::ms_demangle::TypeNode::outputPre
virtual void outputPre(OutputBuffer &OB, OutputFlags Flags) const =0
uint16_t
llvm::ms_demangle::NodeKind::DynamicStructorIdentifier
@ DynamicStructorIdentifier
llvm::ms_demangle::VariableSymbolNode::VariableSymbolNode
VariableSymbolNode()
Definition: MicrosoftDemangleNodes.h:610
llvm::ms_demangle::FunctionSignatureNode::Params
NodeArrayNode * Params
Definition: MicrosoftDemangleNodes.h:348
llvm::ms_demangle::TypeNode::Quals
Qualifiers Quals
Definition: MicrosoftDemangleNodes.h:309
llvm::ms_demangle::ArrayTypeNode::ElementType
TypeNode * ElementType
Definition: MicrosoftDemangleNodes.h:497
llvm::ms_demangle::IntrinsicFunctionIdentifierNode::IntrinsicFunctionIdentifierNode
IntrinsicFunctionIdentifierNode(IntrinsicFunctionKind Operator)
Definition: MicrosoftDemangleNodes.h:391
llvm::ms_demangle::NodeArrayNode::NodeArrayNode
NodeArrayNode()
Definition: MicrosoftDemangleNodes.h:515
llvm::ms_demangle::NodeKind::LocalStaticGuardVariable
@ LocalStaticGuardVariable
llvm::ms_demangle::PrimitiveKind::Uchar
@ Uchar
llvm::ms_demangle::ThunkSignatureNode::ThisAdjustor::VBOffsetOffset
int32_t VBOffsetOffset
Definition: MicrosoftDemangleNodes.h:451
llvm::ms_demangle::PrimitiveKind::Short
@ Short
llvm::ms_demangle::TagKind::Class
@ Class
llvm::ms_demangle::ThunkSignatureNode::ThisAdjustor::VtordispOffset
int32_t VtordispOffset
Definition: MicrosoftDemangleNodes.h:452
llvm::ms_demangle::IntrinsicFunctionKind::MinusEqual
@ MinusEqual
llvm::ms_demangle::FunctionSignatureNode::outputPost
void outputPost(OutputBuffer &OB, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:418
llvm::ms_demangle::NodeKind::FunctionSymbol
@ FunctionSymbol
llvm::ms_demangle::SpecialIntrinsicKind::RttiTypeDescriptor
@ RttiTypeDescriptor
llvm::ms_demangle::IntrinsicFunctionKind::Spaceship
@ Spaceship
llvm::X86II::OB
@ OB
Definition: X86BaseInfo.h:801
llvm::IntrinsicType
IntrinsicType
Definition: X86IntrinsicsInfo.h:22
llvm::ms_demangle::SpecialIntrinsicKind::None
@ None
llvm::ms_demangle::FunctionSignatureNode::IsVariadic
bool IsVariadic
Definition: MicrosoftDemangleNodes.h:345
llvm::ms_demangle::CallingConv::Clrcall
@ Clrcall
llvm::ms_demangle::IntrinsicFunctionKind::EHVecVbaseCtorIter
@ EHVecVbaseCtorIter
llvm::ms_demangle::NodeKind::ConversionOperatorIdentifier
@ ConversionOperatorIdentifier
llvm::ms_demangle::PrimitiveKind::Char8
@ Char8
llvm::ms_demangle::CallingConv::Stdcall
@ Stdcall
llvm::ms_demangle::NodeKind::NamedIdentifier
@ NamedIdentifier
llvm::ms_demangle::IntrinsicFunctionKind::Pointer
@ Pointer
llvm::ms_demangle::IntrinsicNode::IntrinsicNode
IntrinsicNode()
Definition: MicrosoftDemangleNodes.h:501
llvm::ms_demangle::FunctionSignatureNode::FunctionSignatureNode
FunctionSignatureNode()
Definition: MicrosoftDemangleNodes.h:324
llvm::ms_demangle::TypeNode::TypeNode
TypeNode(NodeKind K)
Definition: MicrosoftDemangleNodes.h:299
llvm::ms_demangle::PointerTypeNode::ClassParent
QualifiedNameNode * ClassParent
Definition: MicrosoftDemangleNodes.h:467
llvm::ms_demangle::SpecialIntrinsicKind::LocalStaticGuard
@ LocalStaticGuard
OutputBuffer
Definition: Utility.h:31
llvm::ms_demangle::IntrinsicFunctionKind::Divide
@ Divide
llvm::ms_demangle::NodeKind::StructorIdentifier
@ StructorIdentifier
llvm::ms_demangle::FC_Far
@ FC_Far
Definition: MicrosoftDemangleNodes.h:216
llvm::ms_demangle::PointerTypeNode::outputPost
void outputPost(OutputBuffer &OB, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:525
llvm::ms_demangle::NodeKind::SpecialTableSymbol
@ SpecialTableSymbol
llvm::ms_demangle::QualifiedNameNode::output
void output(OutputBuffer &OB, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:629
llvm::ms_demangle::FC_Protected
@ FC_Protected
Definition: MicrosoftDemangleNodes.h:211
llvm::ms_demangle::PointerAffinity::Reference
@ Reference
llvm::ms_demangle::PointerAffinity
PointerAffinity
Definition: MicrosoftDemangleNodes.h:54
llvm::ms_demangle::StructorIdentifierNode
Definition: MicrosoftDemangleNodes.h:429
llvm::ms_demangle::StorageClass::ProtectedStatic
@ ProtectedStatic
llvm::ms_demangle::EncodedStringLiteralNode::DecodedString
StringView DecodedString
Definition: MicrosoftDemangleNodes.h:604
llvm::ms_demangle::IntrinsicFunctionKind::VecDelDtor
@ VecDelDtor
llvm::ms_demangle::RttiBaseClassDescriptorNode::output
void output(OutputBuffer &OB, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:633
llvm::ms_demangle::FC_Virtual
@ FC_Virtual
Definition: MicrosoftDemangleNodes.h:215
llvm::ms_demangle::TemplateParameterReferenceNode::ThunkOffsetCount
int ThunkOffsetCount
Definition: MicrosoftDemangleNodes.h:546
llvm::ms_demangle::CallingConv::None
@ None
N
#define N
llvm::ms_demangle::FC_ExternC
@ FC_ExternC
Definition: MicrosoftDemangleNodes.h:217
llvm::ms_demangle::PrimitiveKind::Uint
@ Uint
llvm::ms_demangle::PrimitiveKind::Int
@ Int
llvm::ms_demangle::NodeArrayNode
Definition: MicrosoftDemangleNodes.h:514
llvm::ms_demangle::NodeKind::VariableSymbol
@ VariableSymbol
llvm::ms_demangle::SymbolNode::Name
QualifiedNameNode * Name
Definition: MicrosoftDemangleNodes.h:578
StringView
Definition: StringView.h:25
llvm::ms_demangle::VariableSymbolNode
Definition: MicrosoftDemangleNodes.h:609
llvm::ms_demangle::IntrinsicFunctionKind::ArraySubscript
@ ArraySubscript
llvm::ms_demangle::IntrinsicFunctionKind::EHVecCtorIter
@ EHVecCtorIter
llvm::ms_demangle::CallingConv::Regcall
@ Regcall
llvm::ms_demangle::CallingConv::SwiftAsync
@ SwiftAsync
llvm::ms_demangle::NodeKind::TemplateParameterReference
@ TemplateParameterReference
llvm::ms_demangle::NodeKind::RttiBaseClassDescriptor
@ RttiBaseClassDescriptor
llvm::ms_demangle::TypeNode
Definition: MicrosoftDemangleNodes.h:298
llvm::ms_demangle::NodeKind::EncodedStringLiteral
@ EncodedStringLiteral
llvm::ms_demangle::PointerTypeNode::Affinity
PointerAffinity Affinity
Definition: MicrosoftDemangleNodes.h:464
NodeArray
Definition: ItaniumDemangle.h:298
llvm::ms_demangle::RttiBaseClassDescriptorNode::Flags
uint32_t Flags
Definition: MicrosoftDemangleNodes.h:572
llvm::ms_demangle::FunctionSignatureNode::IsNoexcept
bool IsNoexcept
Definition: MicrosoftDemangleNodes.h:351
llvm::ms_demangle::ReferenceKind::RValueRef
@ RValueRef
llvm::ms_demangle::OutputFlags
OutputFlags
Definition: MicrosoftDemangleNodes.h:75
llvm::ms_demangle::NodeKind::Md5Symbol
@ Md5Symbol
llvm::ms_demangle::EncodedStringLiteralNode::Char
CharKind Char
Definition: MicrosoftDemangleNodes.h:606
llvm::ms_demangle::NodeKind::ThunkSignature
@ ThunkSignature
llvm::ms_demangle::PrimitiveKind::Wchar
@ Wchar
llvm::ms_demangle::SpecialIntrinsicKind::VcallThunk
@ VcallThunk
llvm::ms_demangle::StorageClass::PublicStatic
@ PublicStatic
llvm::ms_demangle::EncodedStringLiteralNode
Definition: MicrosoftDemangleNodes.h:599
llvm::ms_demangle::TagKind::Union
@ Union
llvm::ms_demangle::NodeKind::PrimitiveType
@ PrimitiveType
llvm::ms_demangle::PrimitiveKind::Bool
@ Bool
llvm::ms_demangle::IntrinsicFunctionKind::BitwiseOr
@ BitwiseOr
llvm::ms_demangle::PrimitiveKind::Ulong
@ Ulong
llvm::ms_demangle::IntegerLiteralNode::output
void output(OutputBuffer &OB, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:194
llvm::ms_demangle::TagKind
TagKind
Definition: MicrosoftDemangleNodes.h:224
llvm::Value
LLVM Value Representation.
Definition: Value.h:74
llvm::ms_demangle::PrimitiveKind::Nullptr
@ Nullptr
llvm::ms_demangle::LocalStaticGuardIdentifierNode::ScopeIndex
uint32_t ScopeIndex
Definition: MicrosoftDemangleNodes.h:416
llvm::ms_demangle::NodeKind::ArrayType
@ ArrayType
llvm::ms_demangle::PrimitiveKind::Float
@ Float
llvm::ms_demangle::PointerAffinity::RValueReference
@ RValueReference
llvm::ms_demangle::VariableSymbolNode::output
void output(OutputBuffer &OB, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:593
llvm::ms_demangle::IntrinsicFunctionKind::LogicalAnd
@ LogicalAnd
llvm::ms_demangle::ThunkSignatureNode::outputPre
void outputPre(OutputBuffer &OB, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:456
llvm::ms_demangle::VcallThunkIdentifierNode::VcallThunkIdentifierNode
VcallThunkIdentifierNode()
Definition: MicrosoftDemangleNodes.h:364
llvm::ms_demangle::CustomTypeNode::CustomTypeNode
CustomTypeNode()
Definition: MicrosoftDemangleNodes.h:506
llvm::ms_demangle::FunctionSymbolNode
Definition: MicrosoftDemangleNodes.h:618