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 OutputStream;
25 }
26 }
27 
28 using llvm::itanium_demangle::OutputStream;
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 
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(OutputStream &OS, 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 CustomNode;
286 struct TagTypeNode;
287 struct IntrinsicTypeNode;
288 struct NodeArrayNode;
289 struct QualifiedNameNode;
290 struct TemplateParameterReferenceNode;
291 struct EncodedStringLiteralNode;
292 struct IntegerLiteralNode;
293 struct RttiBaseClassDescriptorNode;
294 struct LocalStaticGuardVariableNode;
295 struct SymbolNode;
296 struct FunctionSymbolNode;
297 struct VariableSymbolNode;
298 struct SpecialTableSymbolNode;
299 
300 struct TypeNode : public Node {
301  explicit TypeNode(NodeKind K) : Node(K) {}
302 
303  virtual void outputPre(OutputStream &OS, OutputFlags Flags) const = 0;
304  virtual void outputPost(OutputStream &OS, OutputFlags Flags) const = 0;
305 
306  void output(OutputStream &OS, OutputFlags Flags) const override {
307  outputPre(OS, Flags);
308  outputPost(OS, Flags);
309  }
310 
312 };
313 
314 struct PrimitiveTypeNode : public TypeNode {
317 
318  void outputPre(OutputStream &OS, OutputFlags Flags) const override;
319  void outputPost(OutputStream &OS, OutputFlags Flags) const override {}
320 
322 };
323 
327 
328  void outputPre(OutputStream &OS, OutputFlags Flags) const override;
329  void outputPost(OutputStream &OS, OutputFlags Flags) const override;
330 
331  // Valid if this FunctionTypeNode is the Pointee of a PointerType or
332  // MemberPointerType.
334 
335  // The function's calling convention.
337 
338  // Function flags (gloabl, public, etc)
340 
342 
343  // The return type of the function.
344  TypeNode *ReturnType = nullptr;
345 
346  // True if this is a C-style ... varargs function.
347  bool IsVariadic = false;
348 
349  // Function parameters
350  NodeArrayNode *Params = nullptr;
351 
352  // True if the function type is noexcept.
353  bool IsNoexcept = false;
354 };
355 
356 struct IdentifierNode : public Node {
357  explicit IdentifierNode(NodeKind K) : Node(K) {}
358 
360 
361 protected:
362  void outputTemplateParameters(OutputStream &OS, OutputFlags Flags) const;
363 };
364 
367 
368  void output(OutputStream &OS, OutputFlags Flags) const override;
369 
371 };
372 
376 
377  void output(OutputStream &OS, OutputFlags Flags) const override;
378 
381  bool IsDestructor = false;
382 };
383 
386 
387  void output(OutputStream &OS, OutputFlags Flags) const override;
388 
390 };
391 
395  Operator(Operator) {}
396 
397  void output(OutputStream &OS, OutputFlags Flags) const override;
398 
400 };
401 
405 
406  void output(OutputStream &OS, OutputFlags Flags) const override;
407 
409 };
410 
414 
415  void output(OutputStream &OS, OutputFlags Flags) const override;
416 
417  bool IsThread = false;
419 };
420 
424 
425  void output(OutputStream &OS, OutputFlags Flags) const override;
426 
427  // The type that this operator converts too.
428  TypeNode *TargetType = nullptr;
429 };
430 
436 
437  void output(OutputStream &OS, OutputFlags Flags) const override;
438 
439  // The name of the class that this is a structor of.
440  IdentifierNode *Class = nullptr;
441  bool IsDestructor = false;
442 };
443 
446 
447  void outputPre(OutputStream &OS, OutputFlags Flags) const override;
448  void outputPost(OutputStream &OS, OutputFlags Flags) const override;
449 
450  struct ThisAdjustor {
452  int32_t VBPtrOffset = 0;
453  int32_t VBOffsetOffset = 0;
454  int32_t VtordispOffset = 0;
455  };
456 
458 };
459 
460 struct PointerTypeNode : public TypeNode {
462  void outputPre(OutputStream &OS, OutputFlags Flags) const override;
463  void outputPost(OutputStream &OS, OutputFlags Flags) const override;
464 
465  // Is this a pointer, reference, or rvalue-reference?
467 
468  // If this is a member pointer, this is the class that the member is in.
470 
471  // Represents a type X in "a pointer to X", "a reference to X", or
472  // "rvalue-reference to X"
473  TypeNode *Pointee = nullptr;
474 };
475 
476 struct TagTypeNode : public TypeNode {
478 
479  void outputPre(OutputStream &OS, OutputFlags Flags) const override;
480  void outputPost(OutputStream &OS, OutputFlags Flags) const override;
481 
484 };
485 
486 struct ArrayTypeNode : public TypeNode {
488 
489  void outputPre(OutputStream &OS, OutputFlags Flags) const override;
490  void outputPost(OutputStream &OS, OutputFlags Flags) const override;
491 
492  void outputDimensionsImpl(OutputStream &OS, OutputFlags Flags) const;
493  void outputOneDimension(OutputStream &OS, OutputFlags Flags, Node *N) const;
494 
495  // A list of array dimensions. e.g. [3,4,5] in `int Foo[3][4][5]`
497 
498  // The type of array element.
499  TypeNode *ElementType = nullptr;
500 };
501 
502 struct IntrinsicNode : public TypeNode {
504  void output(OutputStream &OS, OutputFlags Flags) const override {}
505 };
506 
507 struct CustomTypeNode : public TypeNode {
509 
510  void outputPre(OutputStream &OS, OutputFlags Flags) const override;
511  void outputPost(OutputStream &OS, OutputFlags Flags) const override;
512 
514 };
515 
516 struct NodeArrayNode : public Node {
518 
519  void output(OutputStream &OS, OutputFlags Flags) const override;
520 
521  void output(OutputStream &OS, OutputFlags Flags, StringView Separator) const;
522 
523  Node **Nodes = nullptr;
524  size_t Count = 0;
525 };
526 
527 struct QualifiedNameNode : public Node {
529 
530  void output(OutputStream &OS, OutputFlags Flags) const override;
531 
533 
535  Node *LastComponent = Components->Nodes[Components->Count - 1];
536  return static_cast<IdentifierNode *>(LastComponent);
537  }
538 };
539 
543 
544  void output(OutputStream &OS, OutputFlags Flags) const override;
545 
546  SymbolNode *Symbol = nullptr;
547 
549  std::array<int64_t, 3> ThunkOffsets;
551  bool IsMemberPointer = false;
552 };
553 
554 struct IntegerLiteralNode : public Node {
558 
559  void output(OutputStream &OS, OutputFlags Flags) const override;
560 
562  bool IsNegative = false;
563 };
564 
568 
569  void output(OutputStream &OS, OutputFlags Flags) const override;
570 
572  int32_t VBPtrOffset = 0;
575 };
576 
577 struct SymbolNode : public Node {
578  explicit SymbolNode(NodeKind K) : Node(K) {}
579  void output(OutputStream &OS, OutputFlags Flags) const override;
581 };
582 
586 
587  void output(OutputStream &OS, OutputFlags Flags) const override;
590 };
591 
595 
596  void output(OutputStream &OS, OutputFlags Flags) const override;
597 
598  bool IsVisible = false;
599 };
600 
603 
604  void output(OutputStream &OS, OutputFlags Flags) const override;
605 
607  bool IsTruncated = false;
609 };
610 
613 
614  void output(OutputStream &OS, OutputFlags Flags) const override;
615 
617  TypeNode *Type = nullptr;
618 };
619 
622 
623  void output(OutputStream &OS, OutputFlags Flags) const override;
624 
626 };
627 
628 } // namespace ms_demangle
629 } // namespace llvm
630 
631 #endif
llvm::ms_demangle::DynamicStructorIdentifierNode
Definition: MicrosoftDemangleNodes.h:373
llvm::ms_demangle::FunctionSignatureNode::FunctionClass
FuncClass FunctionClass
Definition: MicrosoftDemangleNodes.h:339
llvm::ms_demangle::DynamicStructorIdentifierNode::Name
QualifiedNameNode * Name
Definition: MicrosoftDemangleNodes.h:380
llvm::ms_demangle::FunctionRefQualifier::Reference
@ Reference
llvm::ms_demangle::IntegerLiteralNode::IsNegative
bool IsNegative
Definition: MicrosoftDemangleNodes.h:562
llvm::ms_demangle::QualifiedNameNode::QualifiedNameNode
QualifiedNameNode()
Definition: MicrosoftDemangleNodes.h:528
llvm::ms_demangle::SpecialIntrinsicKind::DynamicInitializer
@ DynamicInitializer
llvm::ms_demangle::Node::~Node
virtual ~Node()=default
llvm::ms_demangle::PointerTypeNode::PointerTypeNode
PointerTypeNode()
Definition: MicrosoftDemangleNodes.h:461
llvm::ms_demangle::NodeArrayNode::Nodes
Node ** Nodes
Definition: MicrosoftDemangleNodes.h:523
llvm::ms_demangle::FC_Private
@ FC_Private
Definition: MicrosoftDemangleNodes.h:212
llvm::ms_demangle::OF_Default
@ OF_Default
Definition: MicrosoftDemangleNodes.h:77
llvm::ms_demangle::ArrayTypeNode
Definition: MicrosoftDemangleNodes.h:486
llvm::ms_demangle::Node
Definition: MicrosoftDemangleNodes.h:258
llvm
This file implements support for optimizing divisions by a constant.
Definition: AllocatorList.h:23
llvm::ms_demangle::ArrayTypeNode::outputPost
void outputPost(OutputStream &OS, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:575
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:546
llvm::ms_demangle::IntrinsicFunctionKind::BitwiseXor
@ BitwiseXor
llvm::ms_demangle::IntrinsicFunctionKind::BitwiseAnd
@ BitwiseAnd
llvm::ms_demangle::IntegerLiteralNode
Definition: MicrosoftDemangleNodes.h:554
llvm::ms_demangle::TagTypeNode::TagTypeNode
TagTypeNode(TagKind Tag)
Definition: MicrosoftDemangleNodes.h:477
llvm::ms_demangle::TemplateParameterReferenceNode::Affinity
PointerAffinity Affinity
Definition: MicrosoftDemangleNodes.h:550
llvm::ms_demangle::Node::output
virtual void output(OutputStream &OS, OutputFlags Flags) const =0
llvm::ms_demangle::CustomTypeNode
Definition: MicrosoftDemangleNodes.h:507
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:532
llvm::ms_demangle::SymbolNode::SymbolNode
SymbolNode(NodeKind K)
Definition: MicrosoftDemangleNodes.h:578
llvm::ms_demangle::OF_NoTagSpecifier
@ OF_NoTagSpecifier
Definition: MicrosoftDemangleNodes.h:79
llvm::ms_demangle::TagTypeNode::outputPre
void outputPre(OutputStream &OS, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:534
llvm::ms_demangle::SpecialIntrinsicKind::LocalVftable
@ LocalVftable
llvm::ms_demangle::SpecialTableSymbolNode::TargetName
QualifiedNameNode * TargetName
Definition: MicrosoftDemangleNodes.h:588
NodeArrayNode
Definition: ItaniumDemangle.h:372
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:452
llvm::ms_demangle::CallingConv::Pascal
@ Pascal
llvm::ms_demangle::NamedIdentifierNode::NamedIdentifierNode
NamedIdentifierNode()
Definition: MicrosoftDemangleNodes.h:385
llvm::ms_demangle::StorageClass::None
@ None
llvm::ms_demangle::StructorIdentifierNode::IsDestructor
bool IsDestructor
Definition: MicrosoftDemangleNodes.h:441
llvm::ms_demangle::PointerAffinity::Pointer
@ Pointer
llvm::ms_demangle::TemplateParameterReferenceNode::IsMemberPointer
bool IsMemberPointer
Definition: MicrosoftDemangleNodes.h:551
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:357
llvm::ms_demangle::IntrinsicFunctionKind::MemberPointer
@ MemberPointer
llvm::ms_demangle::NodeKind::LiteralOperatorIdentifier
@ LiteralOperatorIdentifier
llvm::ms_demangle::CallingConv::Cdecl
@ Cdecl
llvm::ms_demangle::RttiBaseClassDescriptorNode::output
void output(OutputStream &OS, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:634
llvm::ms_demangle::Q_Restrict
@ Q_Restrict
Definition: MicrosoftDemangleNodes.h:42
llvm::ms_demangle::ConversionOperatorIdentifierNode::ConversionOperatorIdentifierNode
ConversionOperatorIdentifierNode()
Definition: MicrosoftDemangleNodes.h:422
llvm::ms_demangle::IntrinsicFunctionKind::BitwiseAndEqual
@ BitwiseAndEqual
llvm::ms_demangle::LocalStaticGuardVariableNode::LocalStaticGuardVariableNode
LocalStaticGuardVariableNode()
Definition: MicrosoftDemangleNodes.h:593
llvm::ms_demangle::FunctionSignatureNode
Definition: MicrosoftDemangleNodes.h:324
llvm::ms_demangle::FunctionSignatureNode::outputPost
void outputPost(OutputStream &OS, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:419
llvm::ms_demangle::FunctionSymbolNode::Signature
FunctionSignatureNode * Signature
Definition: MicrosoftDemangleNodes.h:625
llvm::ms_demangle::SpecialTableSymbolNode::Quals
Qualifiers Quals
Definition: MicrosoftDemangleNodes.h:589
llvm::ms_demangle::IntrinsicFunctionKind::RshEqual
@ RshEqual
llvm::ms_demangle::ArrayTypeNode::outputDimensionsImpl
void outputDimensionsImpl(OutputStream &OS, OutputFlags Flags) const
Definition: MicrosoftDemangleNodes.cpp:563
llvm::ms_demangle::Q_Unaligned
@ Q_Unaligned
Definition: MicrosoftDemangleNodes.h:41
llvm::ms_demangle::IntrinsicFunctionIdentifierNode
Definition: MicrosoftDemangleNodes.h:392
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:379
llvm::ms_demangle::NodeKind::Custom
@ Custom
llvm::ms_demangle::IntrinsicFunctionKind::ArrayNew
@ ArrayNew
llvm::ms_demangle::IntrinsicNode::output
void output(OutputStream &OS, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.h:504
llvm::ms_demangle::IntrinsicFunctionKind::Delete
@ Delete
llvm::ms_demangle::CallingConv::Swift
@ Swift
llvm::ms_demangle::IntrinsicFunctionKind::EHVectorVbaseCopyCtorIter
@ EHVectorVbaseCopyCtorIter
llvm::ms_demangle::PrimitiveTypeNode::outputPost
void outputPost(OutputStream &OS, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.h:319
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:496
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:487
llvm::ms_demangle::IntrinsicFunctionKind::ManVectorVbaseCopyCtorIter
@ ManVectorVbaseCopyCtorIter
llvm::ms_demangle::IntrinsicFunctionKind::TimesEqual
@ TimesEqual
llvm::ms_demangle::SpecialIntrinsicKind::UdtReturning
@ UdtReturning
llvm::ms_demangle::RttiBaseClassDescriptorNode::RttiBaseClassDescriptorNode
RttiBaseClassDescriptorNode()
Definition: MicrosoftDemangleNodes.h:566
llvm::ms_demangle::IntrinsicFunctionKind::LshEqual
@ LshEqual
llvm::ms_demangle::IntrinsicFunctionKind::EHVectorCopyCtorIter
@ EHVectorCopyCtorIter
llvm::ms_demangle::TemplateParameterReferenceNode
Definition: MicrosoftDemangleNodes.h:540
llvm::ms_demangle::QualifiedNameNode
Definition: MicrosoftDemangleNodes.h:527
llvm::ms_demangle::PrimitiveTypeNode::PrimKind
PrimitiveKind PrimKind
Definition: MicrosoftDemangleNodes.h:321
llvm::ms_demangle::LiteralOperatorIdentifierNode::LiteralOperatorIdentifierNode
LiteralOperatorIdentifierNode()
Definition: MicrosoftDemangleNodes.h:403
llvm::ms_demangle::EncodedStringLiteralNode::EncodedStringLiteralNode
EncodedStringLiteralNode()
Definition: MicrosoftDemangleNodes.h:602
llvm::ms_demangle::SpecialIntrinsicKind::RttiCompleteObjLocator
@ RttiCompleteObjLocator
llvm::ms_demangle::VariableSymbolNode::SC
StorageClass SC
Definition: MicrosoftDemangleNodes.h:616
llvm::ms_demangle::FC_Global
@ FC_Global
Definition: MicrosoftDemangleNodes.h:213
llvm::ms_demangle::StorageClass
StorageClass
Definition: MicrosoftDemangleNodes.h:46
llvm::ms_demangle::IntrinsicFunctionKind::LeftShift
@ LeftShift
llvm::ms_demangle::NodeKind::LocalStaticGuardIdentifier
@ LocalStaticGuardIdentifier
llvm::ms_demangle::ArrayTypeNode::outputPre
void outputPre(OutputStream &OS, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:550
llvm::ms_demangle::IntrinsicFunctionIdentifierNode::output
void output(OutputStream &OS, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:255
llvm::ms_demangle::IntrinsicFunctionKind::LogicalNot
@ LogicalNot
llvm::ms_demangle::FC_Static
@ FC_Static
Definition: MicrosoftDemangleNodes.h:214
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::CharKind
CharKind
Definition: MicrosoftDemangleNodes.h:110
llvm::ms_demangle::TypeNode::output
void output(OutputStream &OS, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.h:306
llvm::ms_demangle::CallingConv
CallingConv
Definition: MicrosoftDemangleNodes.h:59
llvm::ms_demangle::FunctionSignatureNode::FunctionSignatureNode
FunctionSignatureNode(NodeKind K)
Definition: MicrosoftDemangleNodes.h:325
llvm::ms_demangle::OF_NoCallingConvention
@ OF_NoCallingConvention
Definition: MicrosoftDemangleNodes.h:78
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:336
llvm::ms_demangle::PrimitiveTypeNode::outputPre
void outputPre(OutputStream &OS, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:131
llvm::ms_demangle::FunctionSignatureNode::ReturnType
TypeNode * ReturnType
Definition: MicrosoftDemangleNodes.h:344
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:534
llvm::ms_demangle::IntrinsicFunctionKind::BitwiseNot
@ BitwiseNot
llvm::ms_demangle::StructorIdentifierNode::StructorIdentifierNode
StructorIdentifierNode()
Definition: MicrosoftDemangleNodes.h:432
llvm::ms_demangle::CallingConv::Fastcall
@ Fastcall
llvm::ms_demangle::NodeKind::TagType
@ TagType
llvm::ms_demangle::FunctionSymbolNode::output
void output(OutputStream &OS, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:587
llvm::ms_demangle::LocalStaticGuardVariableNode
Definition: MicrosoftDemangleNodes.h:592
llvm::ms_demangle::NodeKind::Identifier
@ Identifier
llvm::ms_demangle::CallingConv::Vectorcall
@ Vectorcall
llvm::ms_demangle::StructorIdentifierNode::output
void output(OutputStream &OS, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:374
llvm::ms_demangle::SpecialIntrinsicKind::Unknown
@ Unknown
llvm::ms_demangle::PointerTypeNode::Pointee
TypeNode * Pointee
Definition: MicrosoftDemangleNodes.h:473
llvm::ms_demangle::CustomTypeNode::outputPost
void outputPost(OutputStream &OS, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:628
llvm::ms_demangle::FC_StaticThisAdjust
@ FC_StaticThisAdjust
Definition: MicrosoftDemangleNodes.h:221
llvm::ms_demangle::IdentifierNode::outputTemplateParameters
void outputTemplateParameters(OutputStream &OS, OutputFlags Flags) const
Definition: MicrosoftDemangleNodes.cpp:223
llvm::ms_demangle::RttiBaseClassDescriptorNode::VBPtrOffset
int32_t VBPtrOffset
Definition: MicrosoftDemangleNodes.h:572
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:451
llvm::ms_demangle::LocalStaticGuardIdentifierNode
Definition: MicrosoftDemangleNodes.h:411
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:584
llvm::ms_demangle::IntrinsicFunctionKind::EHVecDtorIter
@ EHVecDtorIter
llvm::ms_demangle::IdentifierNode
Definition: MicrosoftDemangleNodes.h:356
llvm::ms_demangle::RttiBaseClassDescriptorNode::NVOffset
uint32_t NVOffset
Definition: MicrosoftDemangleNodes.h:571
llvm::ms_demangle::IntrinsicFunctionKind::CoAwait
@ CoAwait
llvm::ms_demangle::TagKind::Enum
@ Enum
llvm::ms_demangle::ThunkSignatureNode::ThisAdjustor
Definition: MicrosoftDemangleNodes.h:450
llvm::ms_demangle::CallingConv::Eabi
@ Eabi
llvm::ms_demangle::IntrinsicFunctionKind::VbaseDtor
@ VbaseDtor
llvm::ms_demangle::LocalStaticGuardIdentifierNode::IsThread
bool IsThread
Definition: MicrosoftDemangleNodes.h:417
llvm::ms_demangle::TagTypeNode
Definition: MicrosoftDemangleNodes.h:476
llvm::ms_demangle::EncodedStringLiteralNode::IsTruncated
bool IsTruncated
Definition: MicrosoftDemangleNodes.h:607
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:433
llvm::ms_demangle::SymbolNode
Definition: MicrosoftDemangleNodes.h:577
llvm::ms_demangle::OF_NoMemberType
@ OF_NoMemberType
Definition: MicrosoftDemangleNodes.h:81
llvm::ms_demangle::LocalStaticGuardVariableNode::IsVisible
bool IsVisible
Definition: MicrosoftDemangleNodes.h:598
llvm::ms_demangle::PrimitiveKind::Char
@ Char
llvm::ms_demangle::DynamicStructorIdentifierNode::DynamicStructorIdentifierNode
DynamicStructorIdentifierNode()
Definition: MicrosoftDemangleNodes.h:374
llvm::ms_demangle::Node::kind
NodeKind kind() const
Definition: MicrosoftDemangleNodes.h:262
llvm::ms_demangle::FunctionSignatureNode::RefQualifier
FunctionRefQualifier RefQualifier
Definition: MicrosoftDemangleNodes.h:341
llvm::ms_demangle::StorageClass::FunctionLocalStatic
@ FunctionLocalStatic
llvm::ms_demangle::ConversionOperatorIdentifierNode
Definition: MicrosoftDemangleNodes.h:421
llvm::ms_demangle::FunctionSymbolNode::FunctionSymbolNode
FunctionSymbolNode()
Definition: MicrosoftDemangleNodes.h:621
llvm::ms_demangle::StructorIdentifierNode::Class
IdentifierNode * Class
Definition: MicrosoftDemangleNodes.h:440
llvm::ms_demangle::ThunkSignatureNode
Definition: MicrosoftDemangleNodes.h:444
llvm::ms_demangle::IntrinsicFunctionKind::Increment
@ Increment
llvm::ms_demangle::NamedIdentifierNode
Definition: MicrosoftDemangleNodes.h:384
llvm::ms_demangle::SpecialTableSymbolNode::output
void output(OutputStream &OS, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:652
llvm::ms_demangle::PrimitiveKind::Char32
@ Char32
llvm::ms_demangle::NodeArrayNode::Count
size_t Count
Definition: MicrosoftDemangleNodes.h:524
llvm::ms_demangle::StorageClass::PrivateStatic
@ PrivateStatic
llvm::ms_demangle::PrimitiveTypeNode
Definition: MicrosoftDemangleNodes.h:314
llvm::ms_demangle::CallingConv::Thiscall
@ Thiscall
llvm::ms_demangle::IntrinsicFunctionKind::BitwiseOrEqual
@ BitwiseOrEqual
llvm::ms_demangle::FC_Public
@ FC_Public
Definition: MicrosoftDemangleNodes.h:210
llvm::ms_demangle::ConversionOperatorIdentifierNode::output
void output(OutputStream &OS, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:366
uint64_t
llvm::ms_demangle::Q_None
@ Q_None
Definition: MicrosoftDemangleNodes.h:36
llvm::ms_demangle::FC_VirtualThisAdjustEx
@ FC_VirtualThisAdjustEx
Definition: MicrosoftDemangleNodes.h:220
llvm::ms_demangle::DynamicStructorIdentifierNode::IsDestructor
bool IsDestructor
Definition: MicrosoftDemangleNodes.h:381
llvm::ms_demangle::IntrinsicFunctionKind::LogicalOr
@ LogicalOr
llvm::ms_demangle::CharKind::Char32
@ Char32
llvm::ms_demangle::LiteralOperatorIdentifierNode
Definition: MicrosoftDemangleNodes.h:402
llvm::ms_demangle::SpecialIntrinsicKind::Typeof
@ Typeof
llvm::ms_demangle::NodeKind::IntrinsicFunctionIdentifier
@ IntrinsicFunctionIdentifier
QualifiedName
Definition: ItaniumDemangle.h:1021
llvm::ms_demangle::ArrayTypeNode::outputOneDimension
void outputOneDimension(OutputStream &OS, OutputFlags Flags, Node *N) const
Definition: MicrosoftDemangleNodes.cpp:555
llvm::ms_demangle::IntrinsicFunctionKind::Dereference
@ Dereference
llvm::ms_demangle::NodeKind::PointerType
@ PointerType
llvm::ms_demangle::IntrinsicFunctionKind::Comma
@ Comma
llvm::ms_demangle::DynamicStructorIdentifierNode::output
void output(OutputStream &OS, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:232
llvm::ms_demangle::IntrinsicFunctionKind::ModEqual
@ ModEqual
llvm::ms_demangle::NamedIdentifierNode::Name
StringView Name
Definition: MicrosoftDemangleNodes.h:389
llvm::ms_demangle::SpecialTableSymbolNode
Definition: MicrosoftDemangleNodes.h:583
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:408
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:513
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:502
llvm::ms_demangle::IntrinsicFunctionIdentifierNode::Operator
IntrinsicFunctionKind Operator
Definition: MicrosoftDemangleNodes.h:399
llvm::ms_demangle::IntrinsicFunctionKind::RightShift
@ RightShift
llvm::ms_demangle::VcallThunkIdentifierNode::OffsetInVTable
uint64_t OffsetInVTable
Definition: MicrosoftDemangleNodes.h:370
llvm::ms_demangle::IntrinsicFunctionKind::VecDtorIter
@ VecDtorIter
IntegerLiteral
Definition: ItaniumDemangle.h:2262
llvm::ms_demangle::IntrinsicFunctionKind::CopyCtorClosure
@ CopyCtorClosure
llvm::ms_demangle::FunctionSignatureNode::Affinity
PointerAffinity Affinity
Definition: MicrosoftDemangleNodes.h:333
llvm::ms_demangle::PointerTypeNode
Definition: MicrosoftDemangleNodes.h:460
llvm::ms_demangle::NodeKind::NodeArray
@ NodeArray
llvm::ms_demangle::IdentifierNode::TemplateParams
NodeArrayNode * TemplateParams
Definition: MicrosoftDemangleNodes.h:359
llvm::ms_demangle::ThunkSignatureNode::ThunkSignatureNode
ThunkSignatureNode()
Definition: MicrosoftDemangleNodes.h:445
llvm::ms_demangle::TemplateParameterReferenceNode::ThunkOffsets
std::array< int64_t, 3 > ThunkOffsets
Definition: MicrosoftDemangleNodes.h:549
llvm::ms_demangle::IntrinsicFunctionKind::Minus
@ Minus
llvm::ms_demangle::TagTypeNode::outputPost
void outputPost(OutputStream &OS, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:548
llvm::ms_demangle::PointerAffinity::None
@ None
llvm::ms_demangle::IntrinsicFunctionKind::VectorVbaseCopyCtorIter
@ VectorVbaseCopyCtorIter
llvm::ms_demangle::IntrinsicFunctionKind::ManVectorCtorIter
@ ManVectorCtorIter
llvm::ms_demangle::QualifiedNameNode::output
void output(OutputStream &OS, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:630
llvm::ms_demangle::RttiBaseClassDescriptorNode
Definition: MicrosoftDemangleNodes.h:565
llvm::ms_demangle::PrimitiveKind::Schar
@ Schar
llvm::ms_demangle::TemplateParameterReferenceNode::TemplateParameterReferenceNode
TemplateParameterReferenceNode()
Definition: MicrosoftDemangleNodes.h:541
llvm::ms_demangle::CustomTypeNode::outputPre
void outputPre(OutputStream &OS, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:625
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:428
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::IntrinsicFunctionKind::VdispMap
@ VdispMap
llvm::ms_demangle::NodeKind::IntrinsicType
@ IntrinsicType
llvm::ms_demangle::LocalStaticGuardIdentifierNode::output
void output(OutputStream &OS, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:356
llvm::ms_demangle::IntegerLiteralNode::IntegerLiteralNode
IntegerLiteralNode(uint64_t Value, bool IsNegative)
Definition: MicrosoftDemangleNodes.h:556
llvm::ms_demangle::PrimitiveKind::Int64
@ Int64
llvm::ms_demangle::PrimitiveTypeNode::PrimitiveTypeNode
PrimitiveTypeNode(PrimitiveKind K)
Definition: MicrosoftDemangleNodes.h:315
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::IntrinsicFunctionKind::ManVectorDtorIter
@ ManVectorDtorIter
llvm::ms_demangle::TypeNode::outputPost
virtual void outputPost(OutputStream &OS, OutputFlags Flags) const =0
llvm::ms_demangle::NamedIdentifierNode::output
void output(OutputStream &OS, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:250
llvm::ms_demangle::VcallThunkIdentifierNode
Definition: MicrosoftDemangleNodes.h:365
llvm::ms_demangle::ThunkSignatureNode::ThisAdjust
ThisAdjustor ThisAdjust
Definition: MicrosoftDemangleNodes.h:457
llvm::ms_demangle::Q_Huge
@ Q_Huge
Definition: MicrosoftDemangleNodes.h:40
llvm::ms_demangle::TagTypeNode::Tag
TagKind Tag
Definition: MicrosoftDemangleNodes.h:483
llvm::ms_demangle::PrimitiveKind::Char16
@ Char16
llvm::ms_demangle::Node::Node
Node(NodeKind K)
Definition: MicrosoftDemangleNodes.h:259
llvm::ms_demangle::FunctionSignatureNode::outputPre
void outputPre(OutputStream &OS, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:387
llvm::ms_demangle::NodeKind::VcallThunkIdentifier
@ VcallThunkIdentifier
llvm::ms_demangle::IntrinsicFunctionKind::BitwiseXorEqual
@ BitwiseXorEqual
llvm::ms_demangle::FunctionRefQualifier
FunctionRefQualifier
Definition: MicrosoftDemangleNodes.h:56
llvm::ms_demangle::NodeArrayNode::output
void output(OutputStream &OS, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:158
llvm::ms_demangle::RttiBaseClassDescriptorNode::VBTableOffset
uint32_t VBTableOffset
Definition: MicrosoftDemangleNodes.h:573
llvm::ms_demangle::PrimitiveKind
PrimitiveKind
Definition: MicrosoftDemangleNodes.h:86
DemangleConfig.h
llvm::ms_demangle::IntegerLiteralNode::IntegerLiteralNode
IntegerLiteralNode()
Definition: MicrosoftDemangleNodes.h:555
llvm::ms_demangle::PrimitiveKind::Uint64
@ Uint64
NodeKind
Determine the kind of a node from its type.
Definition: ItaniumDemangle.h:2364
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:412
llvm::ms_demangle::IntegerLiteralNode::output
void output(OutputStream &OS, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:195
uint16_t
llvm::ms_demangle::NodeKind::DynamicStructorIdentifier
@ DynamicStructorIdentifier
llvm::ms_demangle::VariableSymbolNode::VariableSymbolNode
VariableSymbolNode()
Definition: MicrosoftDemangleNodes.h:612
llvm::ms_demangle::FunctionSignatureNode::Params
NodeArrayNode * Params
Definition: MicrosoftDemangleNodes.h:350
llvm::ms_demangle::TypeNode::Quals
Qualifiers Quals
Definition: MicrosoftDemangleNodes.h:311
OutputStream
Definition: Utility.h:27
llvm::ms_demangle::ArrayTypeNode::ElementType
TypeNode * ElementType
Definition: MicrosoftDemangleNodes.h:499
llvm::ms_demangle::IntrinsicFunctionIdentifierNode::IntrinsicFunctionIdentifierNode
IntrinsicFunctionIdentifierNode(IntrinsicFunctionKind Operator)
Definition: MicrosoftDemangleNodes.h:393
llvm::ms_demangle::NodeArrayNode::NodeArrayNode
NodeArrayNode()
Definition: MicrosoftDemangleNodes.h:517
llvm::ms_demangle::NodeKind::LocalStaticGuardVariable
@ LocalStaticGuardVariable
llvm::ms_demangle::PrimitiveKind::Uchar
@ Uchar
llvm::ms_demangle::ThunkSignatureNode::ThisAdjustor::VBOffsetOffset
int32_t VBOffsetOffset
Definition: MicrosoftDemangleNodes.h:453
llvm::ms_demangle::LiteralOperatorIdentifierNode::output
void output(OutputStream &OS, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:381
llvm::ms_demangle::PrimitiveKind::Short
@ Short
llvm::ms_demangle::TagKind::Class
@ Class
llvm::ms_demangle::ThunkSignatureNode::ThisAdjustor::VtordispOffset
int32_t VtordispOffset
Definition: MicrosoftDemangleNodes.h:454
llvm::ms_demangle::IntrinsicFunctionKind::MinusEqual
@ MinusEqual
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:347
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::VariableSymbolNode::output
void output(OutputStream &OS, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:594
llvm::ms_demangle::IntrinsicNode::IntrinsicNode
IntrinsicNode()
Definition: MicrosoftDemangleNodes.h:503
llvm::ms_demangle::FunctionSignatureNode::FunctionSignatureNode
FunctionSignatureNode()
Definition: MicrosoftDemangleNodes.h:326
llvm::ms_demangle::TypeNode::TypeNode
TypeNode(NodeKind K)
Definition: MicrosoftDemangleNodes.h:301
llvm::ms_demangle::PointerTypeNode::ClassParent
QualifiedNameNode * ClassParent
Definition: MicrosoftDemangleNodes.h:469
llvm::ms_demangle::SpecialIntrinsicKind::LocalStaticGuard
@ LocalStaticGuard
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::VcallThunkIdentifierNode::output
void output(OutputStream &OS, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:647
llvm::ms_demangle::NodeKind::SpecialTableSymbol
@ SpecialTableSymbol
llvm::ms_demangle::FC_Protected
@ FC_Protected
Definition: MicrosoftDemangleNodes.h:211
llvm::ms_demangle::TypeNode::outputPre
virtual void outputPre(OutputStream &OS, OutputFlags Flags) const =0
llvm::ms_demangle::PointerAffinity::Reference
@ Reference
llvm::ms_demangle::PointerAffinity
PointerAffinity
Definition: MicrosoftDemangleNodes.h:55
llvm::ms_demangle::StructorIdentifierNode
Definition: MicrosoftDemangleNodes.h:431
llvm::ms_demangle::StorageClass::ProtectedStatic
@ ProtectedStatic
llvm::ms_demangle::ThunkSignatureNode::outputPre
void outputPre(OutputStream &OS, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:457
llvm::ms_demangle::EncodedStringLiteralNode::DecodedString
StringView DecodedString
Definition: MicrosoftDemangleNodes.h:606
llvm::ms_demangle::IntrinsicFunctionKind::VecDelDtor
@ VecDelDtor
llvm::ms_demangle::FC_Virtual
@ FC_Virtual
Definition: MicrosoftDemangleNodes.h:215
llvm::ms_demangle::TemplateParameterReferenceNode::ThunkOffsetCount
int ThunkOffsetCount
Definition: MicrosoftDemangleNodes.h:548
llvm::ms_demangle::EncodedStringLiteralNode::output
void output(OutputStream &OS, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:174
llvm::ms_demangle::CallingConv::None
@ None
N
#define N
llvm::ms_demangle::SymbolNode::output
void output(OutputStream &OS, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:583
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:516
llvm::ms_demangle::PointerTypeNode::outputPost
void outputPost(OutputStream &OS, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:526
llvm::ms_demangle::NodeKind::VariableSymbol
@ VariableSymbol
llvm::ms_demangle::TemplateParameterReferenceNode::output
void output(OutputStream &OS, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:201
llvm::ms_demangle::SymbolNode::Name
QualifiedNameNode * Name
Definition: MicrosoftDemangleNodes.h:580
StringView
Definition: StringView.h:23
llvm::ms_demangle::VariableSymbolNode
Definition: MicrosoftDemangleNodes.h:611
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:300
llvm::ms_demangle::NodeKind::EncodedStringLiteral
@ EncodedStringLiteral
llvm::ms_demangle::PointerTypeNode::Affinity
PointerAffinity Affinity
Definition: MicrosoftDemangleNodes.h:466
NodeArray
Definition: ItaniumDemangle.h:334
llvm::ms_demangle::RttiBaseClassDescriptorNode::Flags
uint32_t Flags
Definition: MicrosoftDemangleNodes.h:574
llvm::ms_demangle::FunctionSignatureNode::IsNoexcept
bool IsNoexcept
Definition: MicrosoftDemangleNodes.h:353
llvm::ms_demangle::ReferenceKind::RValueRef
@ RValueRef
llvm::ms_demangle::OutputFlags
OutputFlags
Definition: MicrosoftDemangleNodes.h:76
llvm::ms_demangle::ThunkSignatureNode::outputPost
void outputPost(OutputStream &OS, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:463
llvm::ms_demangle::NodeKind::Md5Symbol
@ Md5Symbol
llvm::ms_demangle::EncodedStringLiteralNode::Char
CharKind Char
Definition: MicrosoftDemangleNodes.h:608
llvm::ms_demangle::NodeKind::ThunkSignature
@ ThunkSignature
llvm::ms_demangle::LocalStaticGuardVariableNode::output
void output(OutputStream &OS, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:642
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:601
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::TagKind
TagKind
Definition: MicrosoftDemangleNodes.h:224
llvm::Value
LLVM Value Representation.
Definition: Value.h:75
llvm::ms_demangle::PrimitiveKind::Nullptr
@ Nullptr
llvm::ms_demangle::PointerTypeNode::outputPre
void outputPre(OutputStream &OS, OutputFlags Flags) const override
Definition: MicrosoftDemangleNodes.cpp:480
llvm::ms_demangle::LocalStaticGuardIdentifierNode::ScopeIndex
uint32_t ScopeIndex
Definition: MicrosoftDemangleNodes.h:418
llvm::ms_demangle::NodeKind::ArrayType
@ ArrayType
llvm::ms_demangle::PrimitiveKind::Float
@ Float
llvm::ms_demangle::PointerAffinity::RValueReference
@ RValueReference
llvm::ms_demangle::IntrinsicFunctionKind::LogicalAnd
@ LogicalAnd
llvm::ms_demangle::VcallThunkIdentifierNode::VcallThunkIdentifierNode
VcallThunkIdentifierNode()
Definition: MicrosoftDemangleNodes.h:366
llvm::ms_demangle::CustomTypeNode::CustomTypeNode
CustomTypeNode()
Definition: MicrosoftDemangleNodes.h:508
llvm::ms_demangle::FunctionSymbolNode
Definition: MicrosoftDemangleNodes.h:620