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