LLVM  13.0.0git
TypeRecord.h
Go to the documentation of this file.
1 //===- TypeRecord.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 #ifndef LLVM_DEBUGINFO_CODEVIEW_TYPERECORD_H
10 #define LLVM_DEBUGINFO_CODEVIEW_TYPERECORD_H
11 
12 #include "llvm/ADT/APSInt.h"
13 #include "llvm/ADT/ArrayRef.h"
14 #include "llvm/ADT/Optional.h"
15 #include "llvm/ADT/SmallVector.h"
16 #include "llvm/ADT/StringRef.h"
22 #include "llvm/Support/Endian.h"
23 #include <algorithm>
24 #include <cstdint>
25 #include <vector>
26 
27 namespace llvm {
28 namespace codeview {
29 
33 
37 };
38 
39 /// Equvalent to CV_fldattr_t in cvinfo.h.
42 
43  enum {
45  };
46 
47  MemberAttributes() = default;
48 
49  explicit MemberAttributes(MemberAccess Access)
50  : Attrs(static_cast<uint16_t>(Access)) {}
51 
53  Attrs = static_cast<uint16_t>(Access);
54  Attrs |= (static_cast<uint16_t>(Kind) << MethodKindShift);
55  Attrs |= static_cast<uint16_t>(Flags);
56  }
57 
58  /// Get the access specifier. Valid for any kind of member.
60  return MemberAccess(unsigned(Attrs) & unsigned(MethodOptions::AccessMask));
61  }
62 
63  /// Indicates if a method is defined with friend, virtual, static, etc.
65  return MethodKind(
66  (unsigned(Attrs) & unsigned(MethodOptions::MethodKindMask)) >>
68  }
69 
70  /// Get the flags that are not included in access control or method
71  /// properties.
73  return MethodOptions(
74  unsigned(Attrs) &
76  }
77 
78  /// Is this method virtual.
79  bool isVirtual() const {
80  auto MP = getMethodKind();
81  return MP != MethodKind::Vanilla && MP != MethodKind::Friend &&
82  MP != MethodKind::Static;
83  }
84 
85  /// Does this member introduce a new virtual method.
86  bool isIntroducedVirtual() const {
87  auto MP = getMethodKind();
88  return MP == MethodKind::IntroducingVirtual ||
90  }
91 
92  /// Is this method static.
93  bool isStatic() const {
95  }
96 };
97 
98 // Does not correspond to any tag, this is the tail of an LF_POINTER record
99 // if it represents a member pointer.
101 public:
102  MemberPointerInfo() = default;
103 
107 
110  return Representation;
111  }
112 
115 };
116 
117 class TypeRecord {
118 protected:
119  TypeRecord() = default;
121 
122 public:
123  TypeRecordKind getKind() const { return Kind; }
124 
126 };
127 
128 // LF_MODIFIER
129 class ModifierRecord : public TypeRecord {
130 public:
131  ModifierRecord() = default;
135  Modifiers(Modifiers) {}
136 
139 
142 };
143 
144 // LF_PROCEDURE
145 class ProcedureRecord : public TypeRecord {
146 public:
147  ProcedureRecord() = default;
155 
156  TypeIndex getReturnType() const { return ReturnType; }
158  FunctionOptions getOptions() const { return Options; }
161 
167 };
168 
169 // LF_MFUNCTION
171 public:
172  MemberFunctionRecord() = default;
174 
179  : TypeRecord(TypeRecordKind::MemberFunction), ReturnType(ReturnType),
184 
185  TypeIndex getReturnType() const { return ReturnType; }
186  TypeIndex getClassType() const { return ClassType; }
187  TypeIndex getThisType() const { return ThisType; }
189  FunctionOptions getOptions() const { return Options; }
193 
202 };
203 
204 // LF_LABEL
205 class LabelRecord : public TypeRecord {
206 public:
207  LabelRecord() = default;
209 
211 
213 };
214 
215 // LF_MFUNC_ID
217 public:
218  MemberFuncIdRecord() = default;
221  StringRef Name)
222  : TypeRecord(TypeRecordKind::MemberFuncId), ClassType(ClassType),
224 
225  TypeIndex getClassType() const { return ClassType; }
227  StringRef getName() const { return Name; }
228 
232 };
233 
234 // LF_ARGLIST
235 class ArgListRecord : public TypeRecord {
236 public:
237  ArgListRecord() = default;
239 
241  : TypeRecord(Kind), ArgIndices(Indices) {}
242 
244 
245  std::vector<TypeIndex> ArgIndices;
246 };
247 
248 // LF_SUBSTR_LIST
249 class StringListRecord : public TypeRecord {
250 public:
251  StringListRecord() = default;
253 
255  : TypeRecord(Kind), StringIndices(Indices) {}
256 
258 
259  std::vector<TypeIndex> StringIndices;
260 };
261 
262 // LF_POINTER
263 class PointerRecord : public TypeRecord {
264 public:
265  // ---------------------------XXXXX
266  static const uint32_t PointerKindShift = 0;
267  static const uint32_t PointerKindMask = 0x1F;
268 
269  // ------------------------XXX-----
270  static const uint32_t PointerModeShift = 5;
271  static const uint32_t PointerModeMask = 0x07;
272 
273  // ----------XXX------XXXXX--------
274  static const uint32_t PointerOptionMask = 0x381f00;
275 
276  // -------------XXXXXX------------
277  static const uint32_t PointerSizeShift = 13;
278  static const uint32_t PointerSizeMask = 0xFF;
279 
280  PointerRecord() = default;
282 
285  Attrs(Attrs) {}
286 
288  PointerOptions PO, uint8_t Size)
290  Attrs(calcAttrs(PK, PM, PO, Size)) {}
291 
293  PointerOptions PO, uint8_t Size, const MemberPointerInfo &MPI)
295  Attrs(calcAttrs(PK, PM, PO, Size)), MemberInfo(MPI) {}
296 
298 
300  return static_cast<PointerKind>((Attrs >> PointerKindShift) &
302  }
303 
305  return static_cast<PointerMode>((Attrs >> PointerModeShift) &
307  }
308 
310  return static_cast<PointerOptions>(Attrs & PointerOptionMask);
311  }
312 
313  uint8_t getSize() const {
314  return (Attrs >> PointerSizeShift) & PointerSizeMask;
315  }
316 
318 
319  bool isPointerToMember() const {
322  }
323 
324  bool isFlat() const { return !!(Attrs & uint32_t(PointerOptions::Flat32)); }
325  bool isConst() const { return !!(Attrs & uint32_t(PointerOptions::Const)); }
326 
327  bool isVolatile() const {
329  }
330 
331  bool isUnaligned() const {
333  }
334 
335  bool isRestrict() const {
337  }
338 
341  }
342 
345  }
346 
350 
352  uint8_t Size) {
353  Attrs = calcAttrs(PK, PM, PO, Size);
354  }
355 
356 private:
357  static uint32_t calcAttrs(PointerKind PK, PointerMode PM, PointerOptions PO,
358  uint8_t Size) {
359  uint32_t A = 0;
360  A |= static_cast<uint32_t>(PK);
361  A |= static_cast<uint32_t>(PO);
362  A |= (static_cast<uint32_t>(PM) << PointerModeShift);
363  A |= (static_cast<uint32_t>(Size) << PointerSizeShift);
364  return A;
365  }
366 };
367 
368 // LF_NESTTYPE
369 class NestedTypeRecord : public TypeRecord {
370 public:
371  NestedTypeRecord() = default;
374  : TypeRecord(TypeRecordKind::NestedType), Type(Type), Name(Name) {}
375 
376  TypeIndex getNestedType() const { return Type; }
377  StringRef getName() const { return Name; }
378 
381 };
382 
383 // LF_FIELDLIST
384 class FieldListRecord : public TypeRecord {
385 public:
386  FieldListRecord() = default;
390 
392 };
393 
394 // LF_ARRAY
395 class ArrayRecord : public TypeRecord {
396 public:
397  ArrayRecord() = default;
400  StringRef Name)
403 
405  TypeIndex getIndexType() const { return IndexType; }
406  uint64_t getSize() const { return Size; }
407  StringRef getName() const { return Name; }
408 
411  uint64_t Size = 0;
413 };
414 
415 class TagRecord : public TypeRecord {
416 protected:
417  TagRecord() = default;
423 
424 public:
425  static const int HfaKindShift = 11;
426  static const int HfaKindMask = 0x1800;
427  static const int WinRTKindShift = 14;
428  static const int WinRTKindMask = 0xC000;
429 
430  bool hasUniqueName() const {
432  }
433 
434  bool isNested() const {
436  }
437 
438  bool isForwardRef() const {
440  }
441 
442  bool containsNestedClass() const {
444  }
445 
446  bool isScoped() const {
448  }
449 
450  uint16_t getMemberCount() const { return MemberCount; }
451  ClassOptions getOptions() const { return Options; }
452  TypeIndex getFieldList() const { return FieldList; }
453  StringRef getName() const { return Name; }
454  StringRef getUniqueName() const { return UniqueName; }
455 
461 };
462 
463 // LF_CLASS, LF_STRUCTURE, LF_INTERFACE
464 class ClassRecord : public TagRecord {
465 public:
466  ClassRecord() = default;
474 
475  HfaKind getHfa() const {
476  uint16_t Value = static_cast<uint16_t>(Options);
478  return static_cast<HfaKind>(Value);
479  }
480 
482  uint16_t Value = static_cast<uint16_t>(Options);
484  return static_cast<WindowsRTClassKind>(Value);
485  }
486 
489  uint64_t getSize() const { return Size; }
490 
493  uint64_t Size = 0;
494 };
495 
496 // LF_UNION
497 struct UnionRecord : public TagRecord {
498  UnionRecord() = default;
503  UniqueName),
504  Size(Size) {}
505 
506  HfaKind getHfa() const {
507  uint16_t Value = static_cast<uint16_t>(Options);
509  return static_cast<HfaKind>(Value);
510  }
511 
512  uint64_t getSize() const { return Size; }
513 
514  uint64_t Size = 0;
515 };
516 
517 // LF_ENUM
518 class EnumRecord : public TagRecord {
519 public:
520  EnumRecord() = default;
525  UniqueName),
527 
529 
531 };
532 
533 // LF_BITFIELD
534 class BitFieldRecord : public TypeRecord {
535 public:
536  BitFieldRecord() = default;
540  BitOffset(BitOffset) {}
541 
542  TypeIndex getType() const { return Type; }
543  uint8_t getBitOffset() const { return BitOffset; }
544  uint8_t getBitSize() const { return BitSize; }
545 
547  uint8_t BitSize = 0;
548  uint8_t BitOffset = 0;
549 };
550 
551 // LF_VTSHAPE
553 public:
554  VFTableShapeRecord() = default;
557  : TypeRecord(TypeRecordKind::VFTableShape), SlotsRef(Slots) {}
558  explicit VFTableShapeRecord(std::vector<VFTableSlotKind> Slots)
559  : TypeRecord(TypeRecordKind::VFTableShape), Slots(std::move(Slots)) {}
560 
562  if (!SlotsRef.empty())
563  return SlotsRef;
564  return Slots;
565  }
566 
567  uint32_t getEntryCount() const { return getSlots().size(); }
568 
570  std::vector<VFTableSlotKind> Slots;
571 };
572 
573 // LF_TYPESERVER2
575 public:
576  TypeServer2Record() = default;
579  : TypeRecord(TypeRecordKind::TypeServer2), Age(Age), Name(Name) {
580  assert(GuidStr.size() == 16 && "guid isn't 16 bytes");
581  ::memcpy(Guid.Guid, GuidStr.data(), 16);
582  }
583 
584  const GUID &getGuid() const { return Guid; }
585  uint32_t getAge() const { return Age; }
586  StringRef getName() const { return Name; }
587 
591 };
592 
593 // LF_STRING_ID
594 class StringIdRecord : public TypeRecord {
595 public:
596  StringIdRecord() = default;
599  : TypeRecord(TypeRecordKind::StringId), Id(Id), String(String) {}
600 
601  TypeIndex getId() const { return Id; }
602  StringRef getString() const { return String; }
603 
606 };
607 
608 // LF_FUNC_ID
609 class FuncIdRecord : public TypeRecord {
610 public:
611  FuncIdRecord() = default;
616 
619  StringRef getName() const { return Name; }
620 
624 };
625 
626 // LF_UDT_SRC_LINE
628 public:
629  UdtSourceLineRecord() = default;
632  : TypeRecord(TypeRecordKind::UdtSourceLine), UDT(UDT),
634 
635  TypeIndex getUDT() const { return UDT; }
636  TypeIndex getSourceFile() const { return SourceFile; }
637  uint32_t getLineNumber() const { return LineNumber; }
638 
642 };
643 
644 // LF_UDT_MOD_SRC_LINE
646 public:
647  UdtModSourceLineRecord() = default;
651  : TypeRecord(TypeRecordKind::UdtSourceLine), UDT(UDT),
653 
654  TypeIndex getUDT() const { return UDT; }
655  TypeIndex getSourceFile() const { return SourceFile; }
656  uint32_t getLineNumber() const { return LineNumber; }
657  uint16_t getModule() const { return Module; }
658 
663 };
664 
665 // LF_BUILDINFO
666 class BuildInfoRecord : public TypeRecord {
667 public:
668  BuildInfoRecord() = default;
671  : TypeRecord(TypeRecordKind::BuildInfo),
673 
675 
676  /// Indices of known build info arguments.
678  CurrentDirectory, ///< Absolute CWD path
679  BuildTool, ///< Absolute compiler path
680  SourceFile, ///< Path to main source file, relative or absolute
681  TypeServerPDB, ///< Absolute path of type server PDB (/Fd)
682  CommandLine, ///< Full canonical command line (maybe -cc1)
684  };
685 
687 };
688 
689 // LF_VFTABLE
690 class VFTableRecord : public TypeRecord {
691 public:
692  VFTableRecord() = default;
696  ArrayRef<StringRef> Methods)
699  MethodNames.push_back(Name);
701  }
702 
705  uint32_t getVFPtrOffset() const { return VFPtrOffset; }
706  StringRef getName() const { return makeArrayRef(MethodNames).front(); }
707 
709  return makeArrayRef(MethodNames).drop_front();
710  }
711 
715  std::vector<StringRef> MethodNames;
716 };
717 
718 // LF_ONEMETHOD
719 class OneMethodRecord : public TypeRecord {
720 public:
721  OneMethodRecord() = default;
724  StringRef Name)
725  : TypeRecord(TypeRecordKind::OneMethod), Type(Type), Attrs(Attrs),
729  : TypeRecord(TypeRecordKind::OneMethod), Type(Type),
730  Attrs(Access, MK, Options), VFTableOffset(VFTableOffset), Name(Name) {}
731 
732  TypeIndex getType() const { return Type; }
734  MethodOptions getOptions() const { return Attrs.getFlags(); }
735  MemberAccess getAccess() const { return Attrs.getAccess(); }
736  int32_t getVFTableOffset() const { return VFTableOffset; }
737  StringRef getName() const { return Name; }
738 
739  bool isIntroducingVirtual() const {
742  }
743 
746  int32_t VFTableOffset = 0;
748 };
749 
750 // LF_METHODLIST
752 public:
753  MethodOverloadListRecord() = default;
757 
759 
760  std::vector<OneMethodRecord> Methods;
761 };
762 
763 /// For method overload sets. LF_METHOD
765 public:
766  OverloadedMethodRecord() = default;
769  StringRef Name)
770  : TypeRecord(TypeRecordKind::OverloadedMethod),
772 
774  TypeIndex getMethodList() const { return MethodList; }
775  StringRef getName() const { return Name; }
776 
780 };
781 
782 // LF_MEMBER
783 class DataMemberRecord : public TypeRecord {
784 public:
785  DataMemberRecord() = default;
788  StringRef Name)
789  : TypeRecord(TypeRecordKind::DataMember), Attrs(Attrs), Type(Type),
792  StringRef Name)
793  : TypeRecord(TypeRecordKind::DataMember), Attrs(Access), Type(Type),
795 
796  MemberAccess getAccess() const { return Attrs.getAccess(); }
797  TypeIndex getType() const { return Type; }
798  uint64_t getFieldOffset() const { return FieldOffset; }
799  StringRef getName() const { return Name; }
800 
803  uint64_t FieldOffset = 0;
805 };
806 
807 // LF_STMEMBER
809 public:
810  StaticDataMemberRecord() = default;
813  : TypeRecord(TypeRecordKind::StaticDataMember), Attrs(Attrs), Type(Type),
814  Name(Name) {}
816  : TypeRecord(TypeRecordKind::StaticDataMember), Attrs(Access), Type(Type),
817  Name(Name) {}
818 
819  MemberAccess getAccess() const { return Attrs.getAccess(); }
820  TypeIndex getType() const { return Type; }
821  StringRef getName() const { return Name; }
822 
826 };
827 
828 // LF_ENUMERATE
829 class EnumeratorRecord : public TypeRecord {
830 public:
831  EnumeratorRecord() = default;
835  Value(std::move(Value)), Name(Name) {}
838  Value(std::move(Value)), Name(Name) {}
839 
840  MemberAccess getAccess() const { return Attrs.getAccess(); }
841  APSInt getValue() const { return Value; }
842  StringRef getName() const { return Name; }
843 
847 };
848 
849 // LF_VFUNCTAB
850 class VFPtrRecord : public TypeRecord {
851 public:
852  VFPtrRecord() = default;
855  : TypeRecord(TypeRecordKind::VFPtr), Type(Type) {}
856 
857  TypeIndex getType() const { return Type; }
858 
860 };
861 
862 // LF_BCLASS, LF_BINTERFACE
863 class BaseClassRecord : public TypeRecord {
864 public:
865  BaseClassRecord() = default;
868  : TypeRecord(TypeRecordKind::BaseClass), Attrs(Attrs), Type(Type),
869  Offset(Offset) {}
871  : TypeRecord(TypeRecordKind::BaseClass), Attrs(Access), Type(Type),
872  Offset(Offset) {}
873 
874  MemberAccess getAccess() const { return Attrs.getAccess(); }
875  TypeIndex getBaseType() const { return Type; }
876  uint64_t getBaseOffset() const { return Offset; }
877 
880  uint64_t Offset = 0;
881 };
882 
883 // LF_VBCLASS, LF_IVBCLASS
885 public:
886  VirtualBaseClassRecord() = default;
890  uint64_t Offset, uint64_t Index)
895  uint64_t Offset, uint64_t Index)
896  : TypeRecord(Kind), Attrs(Access), BaseType(BaseType),
898 
899  MemberAccess getAccess() const { return Attrs.getAccess(); }
900  TypeIndex getBaseType() const { return BaseType; }
901  TypeIndex getVBPtrType() const { return VBPtrType; }
902  uint64_t getVBPtrOffset() const { return VBPtrOffset; }
903  uint64_t getVTableIndex() const { return VTableIndex; }
904 
908  uint64_t VBPtrOffset = 0;
909  uint64_t VTableIndex = 0;
910 };
911 
912 /// LF_INDEX - Used to chain two large LF_FIELDLIST or LF_METHODLIST records
913 /// together. The first will end in an LF_INDEX record that points to the next.
915 public:
916  ListContinuationRecord() = default;
919  : TypeRecord(TypeRecordKind::ListContinuation),
921 
923 
925 };
926 
927 // LF_PRECOMP
928 class PrecompRecord : public TypeRecord {
929 public:
930  PrecompRecord() = default;
932 
934  uint32_t getTypesCount() const { return TypesCount; }
935  uint32_t getSignature() const { return Signature; }
937 
942 };
943 
944 // LF_ENDPRECOMP
945 class EndPrecompRecord : public TypeRecord {
946 public:
947  EndPrecompRecord() = default;
949 
950  uint32_t getSignature() const { return Signature; }
951 
953 };
954 
955 } // end namespace codeview
956 } // end namespace llvm
957 
958 #endif // LLVM_DEBUGINFO_CODEVIEW_TYPERECORD_H
llvm::Check::Size
@ Size
Definition: FileCheck.h:73
llvm::codeview::UdtSourceLineRecord::UDT
TypeIndex UDT
Definition: TypeRecord.h:639
llvm::codeview::MemberAttributes::MemberAttributes
MemberAttributes(MemberAccess Access, MethodKind Kind, MethodOptions Flags)
Definition: TypeRecord.h:52
llvm::codeview::VFTableRecord::getOverriddenVTable
TypeIndex getOverriddenVTable() const
Definition: TypeRecord.h:704
llvm::codeview::TypeRecord::TypeRecord
TypeRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:120
llvm::codeview::PointerRecord::isFlat
bool isFlat() const
Definition: TypeRecord.h:324
llvm::codeview::MemberFuncIdRecord::MemberFuncIdRecord
MemberFuncIdRecord()=default
llvm::codeview::OneMethodRecord::Type
TypeIndex Type
Definition: TypeRecord.h:744
llvm::codeview::BaseClassRecord::Type
TypeIndex Type
Definition: TypeRecord.h:879
llvm::codeview::ClassOptions::ForwardReference
@ ForwardReference
llvm::codeview::StaticDataMemberRecord::Attrs
MemberAttributes Attrs
Definition: TypeRecord.h:823
llvm::codeview::BitFieldRecord::getBitSize
uint8_t getBitSize() const
Definition: TypeRecord.h:544
llvm::codeview::VFTableShapeRecord::getSlots
ArrayRef< VFTableSlotKind > getSlots() const
Definition: TypeRecord.h:561
llvm::codeview::EnumRecord::EnumRecord
EnumRecord(uint16_t MemberCount, ClassOptions Options, TypeIndex FieldList, StringRef Name, StringRef UniqueName, TypeIndex UnderlyingType)
Definition: TypeRecord.h:522
llvm::codeview::ModifierRecord::ModifierRecord
ModifierRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:132
llvm::codeview::ClassRecord::getDerivationList
TypeIndex getDerivationList() const
Definition: TypeRecord.h:487
llvm::codeview::MemberAccess
MemberAccess
Source-level access specifier. (CV_access_e)
Definition: CodeView.h:260
llvm::codeview::TagRecord::containsNestedClass
bool containsNestedClass() const
Definition: TypeRecord.h:442
llvm::codeview::TagRecord
Definition: TypeRecord.h:415
llvm::codeview::VirtualBaseClassRecord::VirtualBaseClassRecord
VirtualBaseClassRecord()=default
llvm::codeview::VirtualBaseClassRecord::VBPtrOffset
uint64_t VBPtrOffset
Definition: TypeRecord.h:908
llvm
Definition: AllocatorList.h:23
llvm::codeview::EnumeratorRecord::EnumeratorRecord
EnumeratorRecord(MemberAccess Access, APSInt Value, StringRef Name)
Definition: TypeRecord.h:836
llvm::codeview::ListContinuationRecord::getContinuationIndex
TypeIndex getContinuationIndex() const
Definition: TypeRecord.h:922
llvm::codeview::BuildInfoRecord::BuildInfoArg
BuildInfoArg
Indices of known build info arguments.
Definition: TypeRecord.h:677
llvm::codeview::MethodOverloadListRecord::getMethods
ArrayRef< OneMethodRecord > getMethods() const
Definition: TypeRecord.h:758
llvm::codeview::FuncIdRecord::Name
StringRef Name
Definition: TypeRecord.h:623
llvm::codeview::ClassRecord::DerivationList
TypeIndex DerivationList
Definition: TypeRecord.h:491
GUID.h
llvm::codeview::VFTableRecord::VFPtrOffset
uint32_t VFPtrOffset
Definition: TypeRecord.h:714
llvm::codeview::ProcedureRecord::getCallConv
CallingConvention getCallConv() const
Definition: TypeRecord.h:157
llvm::codeview::StaticDataMemberRecord::getName
StringRef getName() const
Definition: TypeRecord.h:821
llvm::codeview::ModifierRecord::ModifiedType
TypeIndex ModifiedType
Definition: TypeRecord.h:140
llvm::codeview::VFTableShapeRecord::getEntryCount
uint32_t getEntryCount() const
Definition: TypeRecord.h:567
llvm::codeview::PrecompRecord::getTypesCount
uint32_t getTypesCount() const
Definition: TypeRecord.h:934
llvm::codeview::TypeServer2Record::getGuid
const GUID & getGuid() const
Definition: TypeRecord.h:584
Optional.h
llvm::codeview::StaticDataMemberRecord::StaticDataMemberRecord
StaticDataMemberRecord(MemberAttributes Attrs, TypeIndex Type, StringRef Name)
Definition: TypeRecord.h:812
llvm::codeview::MemberFunctionRecord::CallConv
CallingConvention CallConv
Definition: TypeRecord.h:197
llvm::codeview::CVMemberRecord::Data
ArrayRef< uint8_t > Data
Definition: TypeRecord.h:36
llvm::codeview::VFPtrRecord::getType
TypeIndex getType() const
Definition: TypeRecord.h:857
llvm::codeview::TagRecord::hasUniqueName
bool hasUniqueName() const
Definition: TypeRecord.h:430
llvm::codeview::TagRecord::getUniqueName
StringRef getUniqueName() const
Definition: TypeRecord.h:454
llvm::codeview::PointerRecord::PointerModeShift
static const uint32_t PointerModeShift
Definition: TypeRecord.h:270
llvm::codeview::UdtModSourceLineRecord::UdtModSourceLineRecord
UdtModSourceLineRecord(TypeIndex UDT, TypeIndex SourceFile, uint32_t LineNumber, uint16_t Module)
Definition: TypeRecord.h:649
llvm::codeview::WindowsRTClassKind
WindowsRTClassKind
Definition: CodeView.h:393
llvm::codeview::StaticDataMemberRecord::Type
TypeIndex Type
Definition: TypeRecord.h:824
llvm::codeview::DataMemberRecord::DataMemberRecord
DataMemberRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:786
llvm::codeview::PointerRecord::PointerRecord
PointerRecord()=default
llvm::codeview::ModifierOptions
ModifierOptions
Equivalent to CV_modifier_t.
Definition: CodeView.h:299
llvm::codeview::StringIdRecord
Definition: TypeRecord.h:594
llvm::codeview::StringIdRecord::String
StringRef String
Definition: TypeRecord.h:605
StringRef.h
llvm::codeview::PointerRecord::PointerRecord
PointerRecord(TypeIndex ReferentType, uint32_t Attrs)
Definition: TypeRecord.h:283
llvm::codeview::TagRecord::TagRecord
TagRecord()=default
llvm::codeview::UdtSourceLineRecord::getUDT
TypeIndex getUDT() const
Definition: TypeRecord.h:635
llvm::codeview::NestedTypeRecord
Definition: TypeRecord.h:369
llvm::codeview::DataMemberRecord::DataMemberRecord
DataMemberRecord()=default
llvm::codeview::PointerRecord::getOptions
PointerOptions getOptions() const
Definition: TypeRecord.h:309
llvm::codeview::MemberFuncIdRecord::getFunctionType
TypeIndex getFunctionType() const
Definition: TypeRecord.h:226
llvm::codeview::FunctionOptions
FunctionOptions
Definition: CodeView.h:244
llvm::codeview::MemberFuncIdRecord::ClassType
TypeIndex ClassType
Definition: TypeRecord.h:229
llvm::codeview::UnionRecord::UnionRecord
UnionRecord()=default
llvm::codeview::PointerRecord::isVolatile
bool isVolatile() const
Definition: TypeRecord.h:327
llvm::codeview::OverloadedMethodRecord::Name
StringRef Name
Definition: TypeRecord.h:779
llvm::SmallVector
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
Definition: SmallVector.h:1167
llvm::codeview::ClassRecord::getWinRTKind
WindowsRTClassKind getWinRTKind() const
Definition: TypeRecord.h:481
llvm::codeview::VFTableRecord::getMethodNames
ArrayRef< StringRef > getMethodNames() const
Definition: TypeRecord.h:708
llvm::codeview::UnionRecord::UnionRecord
UnionRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:499
llvm::codeview::EnumeratorRecord::EnumeratorRecord
EnumeratorRecord(MemberAttributes Attrs, APSInt Value, StringRef Name)
Definition: TypeRecord.h:833
llvm::codeview::PrecompRecord::TypesCount
uint32_t TypesCount
Definition: TypeRecord.h:939
llvm::codeview::DataMemberRecord::getFieldOffset
uint64_t getFieldOffset() const
Definition: TypeRecord.h:798
llvm::codeview::DataMemberRecord::getType
TypeIndex getType() const
Definition: TypeRecord.h:797
llvm::codeview::GUID
This represents the 'GUID' type from windows.h.
Definition: GUID.h:21
llvm::codeview::UdtSourceLineRecord::LineNumber
uint32_t LineNumber
Definition: TypeRecord.h:641
llvm::codeview::ClassRecord::ClassRecord
ClassRecord()=default
llvm::codeview::PrecompRecord::Signature
uint32_t Signature
Definition: TypeRecord.h:940
llvm::codeview::BuildInfoRecord::TypeServerPDB
@ TypeServerPDB
Absolute path of type server PDB (/Fd)
Definition: TypeRecord.h:681
llvm::codeview::BaseClassRecord::Offset
uint64_t Offset
Definition: TypeRecord.h:880
llvm::codeview::PrecompRecord
Definition: TypeRecord.h:928
llvm::codeview::TypeServer2Record::Name
StringRef Name
Definition: TypeRecord.h:590
llvm::codeview::StringIdRecord::getId
TypeIndex getId() const
Definition: TypeRecord.h:601
llvm::codeview::PointerRecord::getReferentType
TypeIndex getReferentType() const
Definition: TypeRecord.h:297
llvm::codeview::VFTableShapeRecord
Definition: TypeRecord.h:552
llvm::codeview::ProcedureRecord::ReturnType
TypeIndex ReturnType
Definition: TypeRecord.h:162
llvm::codeview::MethodKind::Vanilla
@ Vanilla
llvm::Type
The instances of the Type class are immutable: once they are created, they are never changed.
Definition: Type.h:46
llvm::sys::path::end
const_iterator end(StringRef path)
Get end iterator over path.
Definition: Path.cpp:233
llvm::codeview::BaseClassRecord
Definition: TypeRecord.h:863
llvm::codeview::EnumRecord::EnumRecord
EnumRecord()=default
llvm::sys::path::begin
const_iterator begin(StringRef path, Style style=Style::native)
Get begin iterator over path.
Definition: Path.cpp:224
llvm::codeview::ProcedureRecord::getOptions
FunctionOptions getOptions() const
Definition: TypeRecord.h:158
llvm::codeview::MemberFunctionRecord::getArgumentList
TypeIndex getArgumentList() const
Definition: TypeRecord.h:191
llvm::codeview::ClassRecord::ClassRecord
ClassRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:467
llvm::codeview::UnionRecord::Size
uint64_t Size
Definition: TypeRecord.h:514
llvm::codeview::ArgListRecord::ArgListRecord
ArgListRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:238
llvm::codeview::VirtualBaseClassRecord::BaseType
TypeIndex BaseType
Definition: TypeRecord.h:906
llvm::codeview::OneMethodRecord::getName
StringRef getName() const
Definition: TypeRecord.h:737
llvm::Optional
Definition: APInt.h:33
Offset
uint64_t Offset
Definition: ELFObjHandler.cpp:81
llvm::codeview::UnionRecord::getSize
uint64_t getSize() const
Definition: TypeRecord.h:512
llvm::codeview::BitFieldRecord::BitFieldRecord
BitFieldRecord()=default
llvm::codeview::LabelRecord::LabelRecord
LabelRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:208
llvm::codeview::ModifierOptions::None
@ None
llvm::codeview::MemberFunctionRecord::ReturnType
TypeIndex ReturnType
Definition: TypeRecord.h:194
llvm::codeview::FuncIdRecord::getParentScope
TypeIndex getParentScope() const
Definition: TypeRecord.h:617
llvm::codeview::PointerOptions::Volatile
@ Volatile
BaseType
llvm::codeview::PointerRecord
Definition: TypeRecord.h:263
llvm::codeview::LabelType
LabelType
Equivalent to CV_LABEL_TYPE_e.
Definition: CodeView.h:292
llvm::codeview::UnionRecord::getHfa
HfaKind getHfa() const
Definition: TypeRecord.h:506
llvm::codeview::NestedTypeRecord::getNestedType
TypeIndex getNestedType() const
Definition: TypeRecord.h:376
llvm::codeview::MemberFunctionRecord::ParameterCount
uint16_t ParameterCount
Definition: TypeRecord.h:199
llvm::codeview::PointerMode::Pointer
@ Pointer
llvm::codeview::DataMemberRecord
Definition: TypeRecord.h:783
llvm::codeview::UdtSourceLineRecord::UdtSourceLineRecord
UdtSourceLineRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:630
llvm::codeview::PointerRecord::PointerSizeShift
static const uint32_t PointerSizeShift
Definition: TypeRecord.h:277
llvm::codeview::StringListRecord::StringListRecord
StringListRecord(TypeRecordKind Kind, ArrayRef< TypeIndex > Indices)
Definition: TypeRecord.h:254
llvm::codeview::TagRecord::isNested
bool isNested() const
Definition: TypeRecord.h:434
llvm::ArrayRef::empty
bool empty() const
empty - Check if the array is empty.
Definition: ArrayRef.h:160
llvm::codeview::OneMethodRecord::Attrs
MemberAttributes Attrs
Definition: TypeRecord.h:745
llvm::codeview::BuildInfoRecord::MaxArgs
@ MaxArgs
Definition: TypeRecord.h:683
llvm::codeview::ListContinuationRecord::ContinuationIndex
TypeIndex ContinuationIndex
Definition: TypeRecord.h:924
llvm::codeview::UdtSourceLineRecord::getSourceFile
TypeIndex getSourceFile() const
Definition: TypeRecord.h:636
llvm::codeview::MethodOverloadListRecord::MethodOverloadListRecord
MethodOverloadListRecord(ArrayRef< OneMethodRecord > Methods)
Definition: TypeRecord.h:755
llvm::codeview::StringListRecord::StringListRecord
StringListRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:252
llvm::codeview::PointerRecord::PointerRecord
PointerRecord(TypeIndex ReferentType, PointerKind PK, PointerMode PM, PointerOptions PO, uint8_t Size, const MemberPointerInfo &MPI)
Definition: TypeRecord.h:292
llvm::codeview::OverloadedMethodRecord::NumOverloads
uint16_t NumOverloads
Definition: TypeRecord.h:777
llvm::codeview::PointerRecord::setAttrs
void setAttrs(PointerKind PK, PointerMode PM, PointerOptions PO, uint8_t Size)
Definition: TypeRecord.h:351
llvm::codeview::StringListRecord::StringIndices
std::vector< TypeIndex > StringIndices
Definition: TypeRecord.h:259
llvm::codeview::MemberFunctionRecord::ThisPointerAdjustment
int32_t ThisPointerAdjustment
Definition: TypeRecord.h:201
llvm::codeview::ClassOptions::ContainsNestedClass
@ ContainsNestedClass
llvm::codeview::ClassOptions::Scoped
@ Scoped
llvm::codeview::ArrayRecord::ElementType
TypeIndex ElementType
Definition: TypeRecord.h:409
llvm::codeview::MethodKind::IntroducingVirtual
@ IntroducingVirtual
llvm::codeview::ArrayRecord::Size
uint64_t Size
Definition: TypeRecord.h:411
llvm::codeview::MethodKind::Friend
@ Friend
llvm::codeview::MemberFunctionRecord::MemberFunctionRecord
MemberFunctionRecord()=default
llvm::codeview::TagRecord::UniqueName
StringRef UniqueName
Definition: TypeRecord.h:460
llvm::codeview::ProcedureRecord::getReturnType
TypeIndex getReturnType() const
Definition: TypeRecord.h:156
llvm::codeview::UdtModSourceLineRecord::getSourceFile
TypeIndex getSourceFile() const
Definition: TypeRecord.h:655
llvm::codeview::ArgListRecord
Definition: TypeRecord.h:235
llvm::codeview::MemberAttributes
Equvalent to CV_fldattr_t in cvinfo.h.
Definition: TypeRecord.h:40
llvm::codeview::EnumRecord
Definition: TypeRecord.h:518
llvm::codeview::CVMemberRecord
Definition: TypeRecord.h:34
llvm::codeview::UdtSourceLineRecord::UdtSourceLineRecord
UdtSourceLineRecord()=default
llvm::codeview::MemberFunctionRecord::getReturnType
TypeIndex getReturnType() const
Definition: TypeRecord.h:185
llvm::codeview::PointerOptions::Restrict
@ Restrict
llvm::codeview::DataMemberRecord::getName
StringRef getName() const
Definition: TypeRecord.h:799
llvm::codeview::UdtModSourceLineRecord::SourceFile
TypeIndex SourceFile
Definition: TypeRecord.h:660
llvm::codeview::MemberFunctionRecord::ThisType
TypeIndex ThisType
Definition: TypeRecord.h:196
llvm::codeview::VFTableRecord::VFTableRecord
VFTableRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:693
llvm::codeview::ProcedureRecord::getArgumentList
TypeIndex getArgumentList() const
Definition: TypeRecord.h:160
llvm::codeview::ProcedureRecord::ProcedureRecord
ProcedureRecord(TypeIndex ReturnType, CallingConvention CallConv, FunctionOptions Options, uint16_t ParameterCount, TypeIndex ArgumentList)
Definition: TypeRecord.h:149
llvm::codeview::PointerOptions::Flat32
@ Flat32
llvm::codeview::MemberFuncIdRecord::Name
StringRef Name
Definition: TypeRecord.h:231
llvm::codeview::ContinuationRecordKind::MethodOverloadList
@ MethodOverloadList
llvm::codeview::EndPrecompRecord::EndPrecompRecord
EndPrecompRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:948
llvm::codeview::BaseClassRecord::getBaseType
TypeIndex getBaseType() const
Definition: TypeRecord.h:875
llvm::HighlightColor::Enumerator
@ Enumerator
llvm::codeview::BitFieldRecord
Definition: TypeRecord.h:534
llvm::codeview::DataMemberRecord::Type
TypeIndex Type
Definition: TypeRecord.h:802
llvm::codeview::NestedTypeRecord::getName
StringRef getName() const
Definition: TypeRecord.h:377
llvm::codeview::PointerRecord::isRValueReferenceThisPtr
bool isRValueReferenceThisPtr() const
Definition: TypeRecord.h:343
llvm::codeview::MethodOverloadListRecord
Definition: TypeRecord.h:751
llvm::codeview::OverloadedMethodRecord::OverloadedMethodRecord
OverloadedMethodRecord()=default
llvm::codeview::PointerOptions
PointerOptions
Equivalent to misc lfPointerAttr bitfields.
Definition: CodeView.h:357
llvm::codeview::PointerRecord::Attrs
uint32_t Attrs
Definition: TypeRecord.h:348
llvm::codeview::DataMemberRecord::getAccess
MemberAccess getAccess() const
Definition: TypeRecord.h:796
llvm::codeview::ClassOptions::None
@ None
llvm::codeview::StringIdRecord::StringIdRecord
StringIdRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:597
llvm::codeview::UdtModSourceLineRecord::Module
uint16_t Module
Definition: TypeRecord.h:662
llvm::codeview::MemberFunctionRecord::getClassType
TypeIndex getClassType() const
Definition: TypeRecord.h:186
llvm::codeview::MemberFunctionRecord::ClassType
TypeIndex ClassType
Definition: TypeRecord.h:195
llvm::codeview::VFTableShapeRecord::VFTableShapeRecord
VFTableShapeRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:555
llvm::codeview::FuncIdRecord::FuncIdRecord
FuncIdRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:612
llvm::codeview::MethodKind
MethodKind
Part of member attribute flags. (CV_methodprop_e)
Definition: CodeView.h:268
llvm::codeview::StaticDataMemberRecord::getType
TypeIndex getType() const
Definition: TypeRecord.h:820
llvm::codeview::MethodOverloadListRecord::MethodOverloadListRecord
MethodOverloadListRecord()=default
llvm::codeview::UdtModSourceLineRecord
Definition: TypeRecord.h:645
llvm::codeview::PointerRecord::PointerSizeMask
static const uint32_t PointerSizeMask
Definition: TypeRecord.h:278
llvm::codeview::StringListRecord::getIndices
ArrayRef< TypeIndex > getIndices() const
Definition: TypeRecord.h:257
llvm::codeview::BaseClassRecord::BaseClassRecord
BaseClassRecord()=default
llvm::codeview::UdtSourceLineRecord::SourceFile
TypeIndex SourceFile
Definition: TypeRecord.h:640
llvm::codeview::TypeRecord
Definition: TypeRecord.h:117
llvm::codeview::EnumeratorRecord::getName
StringRef getName() const
Definition: TypeRecord.h:842
llvm::codeview::ProcedureRecord::ParameterCount
uint16_t ParameterCount
Definition: TypeRecord.h:165
llvm::codeview::EndPrecompRecord::Signature
uint32_t Signature
Definition: TypeRecord.h:952
llvm::codeview::FuncIdRecord::FunctionType
TypeIndex FunctionType
Definition: TypeRecord.h:622
llvm::codeview::MemberFuncIdRecord::FunctionType
TypeIndex FunctionType
Definition: TypeRecord.h:230
llvm::codeview::ArrayRecord::getName
StringRef getName() const
Definition: TypeRecord.h:407
llvm::codeview::VFTableRecord::MethodNames
std::vector< StringRef > MethodNames
Definition: TypeRecord.h:715
llvm::codeview::VFPtrRecord::VFPtrRecord
VFPtrRecord(TypeIndex Type)
Definition: TypeRecord.h:854
llvm::codeview::MethodOverloadListRecord::MethodOverloadListRecord
MethodOverloadListRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:754
llvm::codeview::TagRecord::HfaKindShift
static const int HfaKindShift
Definition: TypeRecord.h:425
llvm::APSInt
An arbitrary precision integer that knows its signedness.
Definition: APSInt.h:22
Options
const char LLVMTargetMachineRef LLVMPassBuilderOptionsRef Options
Definition: PassBuilderBindings.cpp:48
llvm::codeview::ListContinuationRecord
LF_INDEX - Used to chain two large LF_FIELDLIST or LF_METHODLIST records together.
Definition: TypeRecord.h:914
llvm::codeview::TagRecord::Name
StringRef Name
Definition: TypeRecord.h:459
llvm::codeview::TypeRecordKind
TypeRecordKind
Distinguishes individual records in .debug$T or .debug$P section or PDB type stream.
Definition: CodeView.h:26
llvm::codeview::UdtModSourceLineRecord::getUDT
TypeIndex getUDT() const
Definition: TypeRecord.h:654
llvm::codeview::ModifierRecord::ModifierRecord
ModifierRecord()=default
llvm::codeview::BaseClassRecord::BaseClassRecord
BaseClassRecord(MemberAttributes Attrs, TypeIndex Type, uint64_t Offset)
Definition: TypeRecord.h:867
llvm::codeview::EnumRecord::getUnderlyingType
TypeIndex getUnderlyingType() const
Definition: TypeRecord.h:528
llvm::codeview::CVMemberRecord::Kind
TypeLeafKind Kind
Definition: TypeRecord.h:35
llvm::codeview::TypeServer2Record::Guid
GUID Guid
Definition: TypeRecord.h:588
llvm::codeview::ModifierRecord
Definition: TypeRecord.h:129
llvm::codeview::BuildInfoRecord::BuildInfoRecord
BuildInfoRecord()=default
llvm::codeview::OverloadedMethodRecord
For method overload sets. LF_METHOD.
Definition: TypeRecord.h:764
llvm::codeview::ClassOptions
ClassOptions
Definition: CodeView.h:201
CodeView.h
llvm::codeview::TagRecord::HfaKindMask
static const int HfaKindMask
Definition: TypeRecord.h:426
llvm::codeview::OneMethodRecord::OneMethodRecord
OneMethodRecord()=default
llvm::codeview::MemberFunctionRecord::getThisType
TypeIndex getThisType() const
Definition: TypeRecord.h:187
llvm::codeview::MemberFunctionRecord
Definition: TypeRecord.h:170
llvm::codeview::ClassRecord::getHfa
HfaKind getHfa() const
Definition: TypeRecord.h:475
llvm::codeview::BaseClassRecord::getAccess
MemberAccess getAccess() const
Definition: TypeRecord.h:874
llvm::codeview::MethodOptions::MethodKindMask
@ MethodKindMask
llvm::lltok::Kind
Kind
Definition: LLToken.h:18
llvm::codeview::OneMethodRecord::OneMethodRecord
OneMethodRecord(TypeIndex Type, MemberAttributes Attrs, int32_t VFTableOffset, StringRef Name)
Definition: TypeRecord.h:723
llvm::codeview::MemberPointerInfo::ContainingType
TypeIndex ContainingType
Definition: TypeRecord.h:113
llvm::codeview::ClassRecord::getVTableShape
TypeIndex getVTableShape() const
Definition: TypeRecord.h:488
llvm::codeview::MemberFuncIdRecord::MemberFuncIdRecord
MemberFuncIdRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:219
llvm::codeview::LabelRecord::LabelRecord
LabelRecord()=default
llvm::codeview::OneMethodRecord::isIntroducingVirtual
bool isIntroducingVirtual() const
Definition: TypeRecord.h:739
llvm::codeview::VirtualBaseClassRecord::getAccess
MemberAccess getAccess() const
Definition: TypeRecord.h:899
llvm::codeview::PointerMode
PointerMode
Equivalent to CV_ptrmode_e.
Definition: CodeView.h:348
llvm::codeview::FuncIdRecord::getFunctionType
TypeIndex getFunctionType() const
Definition: TypeRecord.h:618
llvm::codeview::ArgListRecord::getIndices
ArrayRef< TypeIndex > getIndices() const
Definition: TypeRecord.h:243
llvm::codeview::TypeServer2Record::getAge
uint32_t getAge() const
Definition: TypeRecord.h:585
llvm::codeview::ProcedureRecord::ArgumentList
TypeIndex ArgumentList
Definition: TypeRecord.h:166
llvm::support::ulittle32_t
detail::packed_endian_specific_integral< uint32_t, little, unaligned > ulittle32_t
Definition: Endian.h:272
llvm::codeview::MemberPointerInfo::getContainingType
TypeIndex getContainingType() const
Definition: TypeRecord.h:108
llvm::codeview::PointerRecord::getMode
PointerMode getMode() const
Definition: TypeRecord.h:304
llvm::codeview::ClassRecord::Size
uint64_t Size
Definition: TypeRecord.h:493
llvm::codeview::BitFieldRecord::getType
TypeIndex getType() const
Definition: TypeRecord.h:542
llvm::codeview::EndPrecompRecord::EndPrecompRecord
EndPrecompRecord()=default
llvm::codeview::PointerRecord::isUnaligned
bool isUnaligned() const
Definition: TypeRecord.h:331
llvm::codeview::MemberPointerInfo::MemberPointerInfo
MemberPointerInfo(TypeIndex ContainingType, PointerToMemberRepresentation Representation)
Definition: TypeRecord.h:104
llvm::codeview::TagRecord::getMemberCount
uint16_t getMemberCount() const
Definition: TypeRecord.h:450
llvm::codeview::TagRecord::getName
StringRef getName() const
Definition: TypeRecord.h:453
llvm::codeview::MemberFunctionRecord::getThisPointerAdjustment
int32_t getThisPointerAdjustment() const
Definition: TypeRecord.h:192
llvm::codeview::VirtualBaseClassRecord::getVTableIndex
uint64_t getVTableIndex() const
Definition: TypeRecord.h:903
llvm::support::ulittle16_t
detail::packed_endian_specific_integral< uint16_t, little, unaligned > ulittle16_t
Definition: Endian.h:270
llvm::codeview::TypeServer2Record
Definition: TypeRecord.h:574
llvm::codeview::TypeServer2Record::getName
StringRef getName() const
Definition: TypeRecord.h:586
llvm::codeview::VFTableShapeRecord::VFTableShapeRecord
VFTableShapeRecord(std::vector< VFTableSlotKind > Slots)
Definition: TypeRecord.h:558
llvm::codeview::BuildInfoRecord::BuildTool
@ BuildTool
Absolute compiler path.
Definition: TypeRecord.h:679
llvm::codeview::VFPtrRecord::Type
TypeIndex Type
Definition: TypeRecord.h:859
llvm::codeview::EnumeratorRecord
Definition: TypeRecord.h:829
llvm::codeview::OneMethodRecord
Definition: TypeRecord.h:719
Index
uint32_t Index
Definition: ELFObjHandler.cpp:84
llvm::codeview::ClassRecord::VTableShape
TypeIndex VTableShape
Definition: TypeRecord.h:492
llvm::codeview::FieldListRecord::FieldListRecord
FieldListRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:387
llvm::codeview::UnionRecord::UnionRecord
UnionRecord(uint16_t MemberCount, ClassOptions Options, TypeIndex FieldList, uint64_t Size, StringRef Name, StringRef UniqueName)
Definition: TypeRecord.h:500
llvm::codeview::NestedTypeRecord::NestedTypeRecord
NestedTypeRecord(TypeIndex Type, StringRef Name)
Definition: TypeRecord.h:373
llvm::codeview::UdtModSourceLineRecord::getModule
uint16_t getModule() const
Definition: TypeRecord.h:657
llvm::codeview::FieldListRecord::Data
ArrayRef< uint8_t > Data
Definition: TypeRecord.h:391
llvm::codeview::StaticDataMemberRecord::getAccess
MemberAccess getAccess() const
Definition: TypeRecord.h:819
llvm::codeview::TagRecord::MemberCount
uint16_t MemberCount
Definition: TypeRecord.h:456
llvm::codeview::ArrayRecord::IndexType
TypeIndex IndexType
Definition: TypeRecord.h:410
llvm::codeview::MemberAttributes::isIntroducedVirtual
bool isIntroducedVirtual() const
Does this member introduce a new virtual method.
Definition: TypeRecord.h:86
llvm::codeview::BitFieldRecord::BitSize
uint8_t BitSize
Definition: TypeRecord.h:547
llvm::codeview::TagRecord::Options
ClassOptions Options
Definition: TypeRecord.h:457
llvm::codeview::VirtualBaseClassRecord
Definition: TypeRecord.h:884
llvm::codeview::BuildInfoRecord::CurrentDirectory
@ CurrentDirectory
Absolute CWD path.
Definition: TypeRecord.h:678
llvm::codeview::PointerRecord::getSize
uint8_t getSize() const
Definition: TypeRecord.h:313
llvm::codeview::VirtualBaseClassRecord::getVBPtrOffset
uint64_t getVBPtrOffset() const
Definition: TypeRecord.h:902
llvm::codeview::TagRecord::FieldList
TypeIndex FieldList
Definition: TypeRecord.h:458
llvm::codeview::BaseClassRecord::getBaseOffset
uint64_t getBaseOffset() const
Definition: TypeRecord.h:876
llvm::codeview::PointerRecord::ReferentType
TypeIndex ReferentType
Definition: TypeRecord.h:347
llvm::codeview::ContinuationRecordKind::FieldList
@ FieldList
llvm::codeview::MemberFunctionRecord::MemberFunctionRecord
MemberFunctionRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:173
FuncId
Profile::FuncID FuncId
Definition: Profile.cpp:321
llvm::codeview::MethodOverloadListRecord::Methods
std::vector< OneMethodRecord > Methods
Definition: TypeRecord.h:760
llvm::codeview::BitFieldRecord::getBitOffset
uint8_t getBitOffset() const
Definition: TypeRecord.h:543
llvm::codeview::StaticDataMemberRecord::StaticDataMemberRecord
StaticDataMemberRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:811
llvm::codeview::PointerRecord::isConst
bool isConst() const
Definition: TypeRecord.h:325
llvm::codeview::VFTableRecord::OverriddenVFTable
TypeIndex OverriddenVFTable
Definition: TypeRecord.h:713
llvm::codeview::BitFieldRecord::BitFieldRecord
BitFieldRecord(TypeIndex Type, uint8_t BitSize, uint8_t BitOffset)
Definition: TypeRecord.h:538
ArrayRef.h
BinaryStreamArray.h
llvm::codeview::TypeRecord::Kind
TypeRecordKind Kind
Definition: TypeRecord.h:125
llvm::codeview::PrecompRecord::PrecompFilePath
StringRef PrecompFilePath
Definition: TypeRecord.h:941
llvm::codeview::BaseClassRecord::Attrs
MemberAttributes Attrs
Definition: TypeRecord.h:878
llvm::codeview::OneMethodRecord::OneMethodRecord
OneMethodRecord(TypeIndex Type, MemberAccess Access, MethodKind MK, MethodOptions Options, int32_t VFTableOffset, StringRef Name)
Definition: TypeRecord.h:727
llvm::codeview::ProcedureRecord::ProcedureRecord
ProcedureRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:148
assert
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
llvm::move
OutputIt move(R &&Range, OutputIt Out)
Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.
Definition: STLExtras.h:1540
llvm::codeview::ProcedureRecord::getParameterCount
uint16_t getParameterCount() const
Definition: TypeRecord.h:159
llvm::codeview::StaticDataMemberRecord
Definition: TypeRecord.h:808
memcpy
<%struct.s * > cast struct s *S to sbyte *< sbyte * > sbyte uint cast struct s *agg result to sbyte *< sbyte * > sbyte uint cast struct s *memtmp to sbyte *< sbyte * > sbyte uint ret void llc ends up issuing two memcpy or custom lower memcpy(of small size) to be ldmia/stmia. I think option 2 is better but the current register allocator cannot allocate a chunk of registers at a time. A feasible temporary solution is to use specific physical registers at the lowering time for small(<
llvm::codeview::NestedTypeRecord::Name
StringRef Name
Definition: TypeRecord.h:380
llvm::codeview::OverloadedMethodRecord::getMethodList
TypeIndex getMethodList() const
Definition: TypeRecord.h:774
llvm::codeview::TagRecord::isForwardRef
bool isForwardRef() const
Definition: TypeRecord.h:438
llvm::codeview::VirtualBaseClassRecord::VBPtrType
TypeIndex VBPtrType
Definition: TypeRecord.h:907
llvm::codeview::DataMemberRecord::Attrs
MemberAttributes Attrs
Definition: TypeRecord.h:801
llvm::codeview::TypeServer2Record::TypeServer2Record
TypeServer2Record()=default
APSInt.h
llvm::codeview::PointerOptions::Const
@ Const
llvm::codeview::PrecompRecord::getSignature
uint32_t getSignature() const
Definition: TypeRecord.h:935
llvm::codeview::PrecompRecord::getPrecompFilePath
StringRef getPrecompFilePath() const
Definition: TypeRecord.h:936
llvm::Module
A Module instance is used to store all the information related to an LLVM module.
Definition: Module.h:67
llvm::codeview::MemberFunctionRecord::Options
FunctionOptions Options
Definition: TypeRecord.h:198
llvm::codeview::VFTableRecord::getVFPtrOffset
uint32_t getVFPtrOffset() const
Definition: TypeRecord.h:705
llvm::codeview::FuncIdRecord
Definition: TypeRecord.h:609
llvm::codeview::HfaKind
HfaKind
Definition: CodeView.h:252
llvm::codeview::ArgListRecord::ArgIndices
std::vector< TypeIndex > ArgIndices
Definition: TypeRecord.h:245
llvm::codeview::StaticDataMemberRecord::Name
StringRef Name
Definition: TypeRecord.h:825
llvm::codeview::ProcedureRecord::ProcedureRecord
ProcedureRecord()=default
llvm::codeview::MemberPointerInfo::MemberPointerInfo
MemberPointerInfo()=default
llvm::codeview::OverloadedMethodRecord::MethodList
TypeIndex MethodList
Definition: TypeRecord.h:778
llvm::ArrayRef< uint8_t >
llvm::codeview::VFPtrRecord::VFPtrRecord
VFPtrRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:853
llvm::codeview::PointerRecord::PointerOptionMask
static const uint32_t PointerOptionMask
Definition: TypeRecord.h:274
llvm::codeview::FieldListRecord
Definition: TypeRecord.h:384
llvm::codeview::OneMethodRecord::getMethodKind
MethodKind getMethodKind() const
Definition: TypeRecord.h:733
llvm::codeview::OverloadedMethodRecord::getNumOverloads
uint16_t getNumOverloads() const
Definition: TypeRecord.h:773
llvm::codeview::FuncIdRecord::getName
StringRef getName() const
Definition: TypeRecord.h:619
llvm::codeview::MemberFuncIdRecord::getClassType
TypeIndex getClassType() const
Definition: TypeRecord.h:225
llvm::StringRef
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:58
llvm::codeview::PrecompRecord::PrecompRecord
PrecompRecord()=default
llvm::codeview::TypeRecord::TypeRecord
TypeRecord()=default
llvm::codeview::OneMethodRecord::getAccess
MemberAccess getAccess() const
Definition: TypeRecord.h:735
llvm::codeview::ProcedureRecord::Options
FunctionOptions Options
Definition: TypeRecord.h:164
llvm::codeview::ArrayRecord::getElementType
TypeIndex getElementType() const
Definition: TypeRecord.h:404
llvm::codeview::MemberFunctionRecord::MemberFunctionRecord
MemberFunctionRecord(TypeIndex ReturnType, TypeIndex ClassType, TypeIndex ThisType, CallingConvention CallConv, FunctionOptions Options, uint16_t ParameterCount, TypeIndex ArgumentList, int32_t ThisPointerAdjustment)
Definition: TypeRecord.h:175
llvm::codeview::UdtSourceLineRecord
Definition: TypeRecord.h:627
llvm::codeview::PointerRecord::PointerModeMask
static const uint32_t PointerModeMask
Definition: TypeRecord.h:271
uint32_t
llvm::append_range
void append_range(Container &C, Range &&R)
Wrapper function to append a range to a container.
Definition: STLExtras.h:1672
llvm::codeview::VFTableRecord
Definition: TypeRecord.h:690
llvm::codeview::ModifierRecord::getModifiedType
TypeIndex getModifiedType() const
Definition: TypeRecord.h:137
llvm::codeview::PointerOptions::Unaligned
@ Unaligned
llvm::codeview::BaseClassRecord::BaseClassRecord
BaseClassRecord(MemberAccess Access, TypeIndex Type, uint64_t Offset)
Definition: TypeRecord.h:870
llvm::codeview::OverloadedMethodRecord::OverloadedMethodRecord
OverloadedMethodRecord(uint16_t NumOverloads, TypeIndex MethodList, StringRef Name)
Definition: TypeRecord.h:768
llvm::codeview::VirtualBaseClassRecord::Attrs
MemberAttributes Attrs
Definition: TypeRecord.h:905
llvm::codeview::PointerToMemberRepresentation
PointerToMemberRepresentation
Equivalent to CV_pmtype_e.
Definition: CodeView.h:371
llvm::codeview::BaseClassRecord::BaseClassRecord
BaseClassRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:866
llvm::codeview::PointerRecord::isLValueReferenceThisPtr
bool isLValueReferenceThisPtr() const
Definition: TypeRecord.h:339
llvm::codeview::PointerOptions::LValueRefThisPointer
@ LValueRefThisPointer
llvm::codeview::FieldListRecord::FieldListRecord
FieldListRecord(ArrayRef< uint8_t > Data)
Definition: TypeRecord.h:388
llvm::codeview::FuncIdRecord::FuncIdRecord
FuncIdRecord(TypeIndex ParentScope, TypeIndex FunctionType, StringRef Name)
Definition: TypeRecord.h:613
llvm::codeview::EndPrecompRecord::getSignature
uint32_t getSignature() const
Definition: TypeRecord.h:950
llvm::codeview::ListContinuationRecord::ListContinuationRecord
ListContinuationRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:917
llvm::codeview::UdtModSourceLineRecord::UdtModSourceLineRecord
UdtModSourceLineRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:648
llvm::codeview::StringIdRecord::Id
TypeIndex Id
Definition: TypeRecord.h:604
llvm::codeview::MethodKind::Static
@ Static
llvm::codeview::EnumeratorRecord::getAccess
MemberAccess getAccess() const
Definition: TypeRecord.h:840
llvm::codeview::VFTableRecord::CompleteClass
TypeIndex CompleteClass
Definition: TypeRecord.h:712
llvm::codeview::ArrayRecord::ArrayRecord
ArrayRecord(TypeIndex ElementType, TypeIndex IndexType, uint64_t Size, StringRef Name)
Definition: TypeRecord.h:399
llvm::codeview::FieldListRecord::FieldListRecord
FieldListRecord()=default
llvm::codeview::ProcedureRecord
Definition: TypeRecord.h:145
llvm::codeview::VirtualBaseClassRecord::VirtualBaseClassRecord
VirtualBaseClassRecord(TypeRecordKind Kind, MemberAttributes Attrs, TypeIndex BaseType, TypeIndex VBPtrType, uint64_t Offset, uint64_t Index)
Definition: TypeRecord.h:888
llvm::codeview::BuildInfoRecord::SourceFile
@ SourceFile
Path to main source file, relative or absolute.
Definition: TypeRecord.h:680
llvm::GraphProgram::Name
Name
Definition: GraphWriter.h:52
llvm::codeview::MethodOptions::AccessMask
@ AccessMask
std
Definition: BitVector.h:838
llvm::codeview::OverloadedMethodRecord::OverloadedMethodRecord
OverloadedMethodRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:767
llvm::codeview::PointerRecord::PointerKindShift
static const uint32_t PointerKindShift
Definition: TypeRecord.h:266
llvm::codeview::VFTableRecord::getCompleteClass
TypeIndex getCompleteClass() const
Definition: TypeRecord.h:703
llvm::codeview::PointerRecord::PointerRecord
PointerRecord(TypeIndex ReferentType, PointerKind PK, PointerMode PM, PointerOptions PO, uint8_t Size)
Definition: TypeRecord.h:287
uint16_t
llvm::codeview::StringListRecord::StringListRecord
StringListRecord()=default
llvm::codeview::TypeServer2Record::TypeServer2Record
TypeServer2Record(StringRef GuidStr, uint32_t Age, StringRef Name)
Definition: TypeRecord.h:578
llvm::codeview::MemberFunctionRecord::getParameterCount
uint16_t getParameterCount() const
Definition: TypeRecord.h:190
llvm::codeview::TypeRecord::getKind
TypeRecordKind getKind() const
Definition: TypeRecord.h:123
llvm::codeview::UnionRecord
Definition: TypeRecord.h:497
llvm::codeview::ProcedureRecord::CallConv
CallingConvention CallConv
Definition: TypeRecord.h:163
llvm::codeview::TagRecord::getFieldList
TypeIndex getFieldList() const
Definition: TypeRecord.h:452
llvm::codeview::DataMemberRecord::Name
StringRef Name
Definition: TypeRecord.h:804
llvm::codeview::VFTableShapeRecord::SlotsRef
ArrayRef< VFTableSlotKind > SlotsRef
Definition: TypeRecord.h:569
llvm::codeview::ModifierRecord::getModifiers
ModifierOptions getModifiers() const
Definition: TypeRecord.h:138
llvm::support::little32_t
detail::packed_endian_specific_integral< int32_t, little, unaligned > little32_t
Definition: Endian.h:279
llvm::codeview::OneMethodRecord::OneMethodRecord
OneMethodRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:722
llvm::codeview::PointerMode::PointerToMemberFunction
@ PointerToMemberFunction
llvm::codeview::BitFieldRecord::BitOffset
uint8_t BitOffset
Definition: TypeRecord.h:548
llvm::codeview::VirtualBaseClassRecord::getBaseType
TypeIndex getBaseType() const
Definition: TypeRecord.h:900
llvm::codeview::LabelRecord::Mode
LabelType Mode
Definition: TypeRecord.h:212
llvm::codeview::TagRecord::WinRTKindShift
static const int WinRTKindShift
Definition: TypeRecord.h:427
llvm::codeview::ModifierRecord::ModifierRecord
ModifierRecord(TypeIndex ModifiedType, ModifierOptions Modifiers)
Definition: TypeRecord.h:133
CVRecord.h
llvm::codeview::OneMethodRecord::VFTableOffset
int32_t VFTableOffset
Definition: TypeRecord.h:746
llvm::codeview::DataMemberRecord::DataMemberRecord
DataMemberRecord(MemberAccess Access, TypeIndex Type, uint64_t Offset, StringRef Name)
Definition: TypeRecord.h:791
llvm::codeview::GUID::Guid
uint8_t Guid[16]
Definition: GUID.h:22
llvm::TargetStackID::Value
Value
Definition: TargetFrameLowering.h:27
llvm::codeview::NestedTypeRecord::NestedTypeRecord
NestedTypeRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:372
llvm::codeview::TagRecord::getOptions
ClassOptions getOptions() const
Definition: TypeRecord.h:451
llvm::codeview::TagRecord::isScoped
bool isScoped() const
Definition: TypeRecord.h:446
llvm::codeview::BitFieldRecord::Type
TypeIndex Type
Definition: TypeRecord.h:546
llvm::codeview::StringIdRecord::StringIdRecord
StringIdRecord(TypeIndex Id, StringRef String)
Definition: TypeRecord.h:598
llvm::codeview::NestedTypeRecord::NestedTypeRecord
NestedTypeRecord()=default
llvm::codeview::StaticDataMemberRecord::StaticDataMemberRecord
StaticDataMemberRecord()=default
llvm::codeview::MemberAttributes::isVirtual
bool isVirtual() const
Is this method virtual.
Definition: TypeRecord.h:79
llvm::codeview::FuncIdRecord::ParentScope
TypeIndex ParentScope
Definition: TypeRecord.h:621
llvm::codeview::MemberPointerInfo::getRepresentation
PointerToMemberRepresentation getRepresentation() const
Definition: TypeRecord.h:109
llvm::codeview::PointerMode::PointerToDataMember
@ PointerToDataMember
TypeIndex.h
llvm::codeview::MemberAttributes::isStatic
bool isStatic() const
Is this method static.
Definition: TypeRecord.h:93
llvm::codeview::MemberAttributes::Attrs
uint16_t Attrs
Definition: TypeRecord.h:41
llvm::codeview::VFPtrRecord
Definition: TypeRecord.h:850
llvm::codeview::BuildInfoRecord
Definition: TypeRecord.h:666
llvm::codeview::MemberFuncIdRecord
Definition: TypeRecord.h:216
llvm::codeview::TagRecord::TagRecord
TagRecord(TypeRecordKind Kind, uint16_t MemberCount, ClassOptions Options, TypeIndex FieldList, StringRef Name, StringRef UniqueName)
Definition: TypeRecord.h:419
llvm::codeview::DataMemberRecord::DataMemberRecord
DataMemberRecord(MemberAttributes Attrs, TypeIndex Type, uint64_t Offset, StringRef Name)
Definition: TypeRecord.h:787
llvm::codeview::PointerRecord::isPointerToMember
bool isPointerToMember() const
Definition: TypeRecord.h:319
llvm::codeview::TypeLeafKind
TypeLeafKind
Duplicate copy of the above enum, but using the official CV names.
Definition: CodeView.h:33
llvm::codeview::MethodKind::PureIntroducingVirtual
@ PureIntroducingVirtual
llvm::codeview::VFTableShapeRecord::Slots
std::vector< VFTableSlotKind > Slots
Definition: TypeRecord.h:570
llvm::makeArrayRef
ArrayRef< T > makeArrayRef(const T &OneElt)
Construct an ArrayRef from a single element.
Definition: ArrayRef.h:476
llvm::codeview::PointerRecord::MemberInfo
Optional< MemberPointerInfo > MemberInfo
Definition: TypeRecord.h:349
llvm::codeview::ModifierRecord::Modifiers
ModifierOptions Modifiers
Definition: TypeRecord.h:141
llvm::codeview::VFTableShapeRecord::VFTableShapeRecord
VFTableShapeRecord()=default
llvm::codeview::EnumeratorRecord::Name
StringRef Name
Definition: TypeRecord.h:846
llvm::codeview::NestedTypeRecord::Type
TypeIndex Type
Definition: TypeRecord.h:379
llvm::codeview::MemberAttributes::getFlags
MethodOptions getFlags() const
Get the flags that are not included in access control or method properties.
Definition: TypeRecord.h:72
llvm::codeview::ArrayRecord::ArrayRecord
ArrayRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:398
llvm::codeview::OverloadedMethodRecord::getName
StringRef getName() const
Definition: TypeRecord.h:775
llvm::codeview::BuildInfoRecord::getArgs
ArrayRef< TypeIndex > getArgs() const
Definition: TypeRecord.h:674
llvm::codeview::UdtModSourceLineRecord::getLineNumber
uint32_t getLineNumber() const
Definition: TypeRecord.h:656
llvm::codeview::EnumeratorRecord::Value
APSInt Value
Definition: TypeRecord.h:845
llvm::codeview::VFTableShapeRecord::VFTableShapeRecord
VFTableShapeRecord(ArrayRef< VFTableSlotKind > Slots)
Definition: TypeRecord.h:556
llvm::codeview::ClassRecord::getSize
uint64_t getSize() const
Definition: TypeRecord.h:489
llvm::codeview::TypeServer2Record::TypeServer2Record
TypeServer2Record(TypeRecordKind Kind)
Definition: TypeRecord.h:577
llvm::codeview::MemberFunctionRecord::getCallConv
CallingConvention getCallConv() const
Definition: TypeRecord.h:188
llvm::codeview::PointerRecord::isRestrict
bool isRestrict() const
Definition: TypeRecord.h:335
SmallVector.h
llvm::codeview::VirtualBaseClassRecord::VTableIndex
uint64_t VTableIndex
Definition: TypeRecord.h:909
llvm::codeview::StaticDataMemberRecord::StaticDataMemberRecord
StaticDataMemberRecord(MemberAccess Access, TypeIndex Type, StringRef Name)
Definition: TypeRecord.h:815
llvm::codeview::MemberAttributes::MemberAttributes
MemberAttributes()=default
llvm::codeview::StringIdRecord::StringIdRecord
StringIdRecord()=default
llvm::codeview::StringListRecord
Definition: TypeRecord.h:249
llvm::codeview::ArrayRecord
Definition: TypeRecord.h:395
llvm::codeview::BuildInfoRecord::ArgIndices
SmallVector< TypeIndex, MaxArgs > ArgIndices
Definition: TypeRecord.h:686
llvm::codeview::BitFieldRecord::BitFieldRecord
BitFieldRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:537
llvm::codeview::PointerRecord::getMemberInfo
MemberPointerInfo getMemberInfo() const
Definition: TypeRecord.h:317
llvm::codeview::ArgListRecord::ArgListRecord
ArgListRecord()=default
llvm::codeview::UdtModSourceLineRecord::UdtModSourceLineRecord
UdtModSourceLineRecord()=default
llvm::codeview::MemberPointerInfo::Representation
PointerToMemberRepresentation Representation
Definition: TypeRecord.h:114
llvm::codeview::DataMemberRecord::FieldOffset
uint64_t FieldOffset
Definition: TypeRecord.h:803
llvm::codeview::StringIdRecord::getString
StringRef getString() const
Definition: TypeRecord.h:602
llvm::codeview::VFTableRecord::getName
StringRef getName() const
Definition: TypeRecord.h:706
llvm::codeview::TagRecord::TagRecord
TagRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:418
llvm::codeview::VFPtrRecord::VFPtrRecord
VFPtrRecord()=default
llvm::ArrayRef::size
size_t size() const
size - Get the array size.
Definition: ArrayRef.h:165
llvm::codeview::PointerRecord::getPointerKind
PointerKind getPointerKind() const
Definition: TypeRecord.h:299
llvm::codeview::UdtSourceLineRecord::UdtSourceLineRecord
UdtSourceLineRecord(TypeIndex UDT, TypeIndex SourceFile, uint32_t LineNumber)
Definition: TypeRecord.h:631
llvm::codeview::PrecompRecord::getStartTypeIndex
uint32_t getStartTypeIndex() const
Definition: TypeRecord.h:933
llvm::codeview::CallingConvention
CallingConvention
These values correspond to the CV_call_e enumeration, and are documented at the following locations: ...
Definition: CodeView.h:173
llvm::codeview::LabelRecord
Definition: TypeRecord.h:205
llvm::codeview::MemberAttributes::getMethodKind
MethodKind getMethodKind() const
Indicates if a method is defined with friend, virtual, static, etc.
Definition: TypeRecord.h:64
llvm::codeview::ClassOptions::HasUniqueName
@ HasUniqueName
llvm::StringRef::data
const LLVM_NODISCARD char * data() const
data - Get a pointer to the start of the string (which may not be null terminated).
Definition: StringRef.h:149
llvm::codeview::MemberAttributes::MemberAttributes
MemberAttributes(MemberAccess Access)
Definition: TypeRecord.h:49
llvm::codeview::ListContinuationRecord::ListContinuationRecord
ListContinuationRecord()=default
llvm::codeview::OneMethodRecord::getOptions
MethodOptions getOptions() const
Definition: TypeRecord.h:734
llvm::codeview::OneMethodRecord::getVFTableOffset
int32_t getVFTableOffset() const
Definition: TypeRecord.h:736
llvm::codeview::PointerKind
PointerKind
Equivalent to CV_ptrtype_e.
Definition: CodeView.h:331
llvm::codeview::OneMethodRecord::getType
TypeIndex getType() const
Definition: TypeRecord.h:732
llvm::codeview::ArrayRecord::Name
StringRef Name
Definition: TypeRecord.h:412
llvm::codeview::TypeIndex
A 32-bit type reference.
Definition: TypeIndex.h:95
llvm::codeview::EnumRecord::EnumRecord
EnumRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:521
llvm::codeview::PointerRecord::PointerKindMask
static const uint32_t PointerKindMask
Definition: TypeRecord.h:267
llvm::codeview::ArrayRecord::getIndexType
TypeIndex getIndexType() const
Definition: TypeRecord.h:405
llvm::codeview::FuncIdRecord::FuncIdRecord
FuncIdRecord()=default
llvm::codeview::MemberAttributes::getAccess
MemberAccess getAccess() const
Get the access specifier. Valid for any kind of member.
Definition: TypeRecord.h:59
llvm::codeview::VFTableRecord::VFTableRecord
VFTableRecord()=default
llvm::codeview::ClassRecord::ClassRecord
ClassRecord(TypeRecordKind Kind, uint16_t MemberCount, ClassOptions Options, TypeIndex FieldList, TypeIndex DerivationList, TypeIndex VTableShape, uint64_t Size, StringRef Name, StringRef UniqueName)
Definition: TypeRecord.h:468
llvm::codeview::ClassRecord
Definition: TypeRecord.h:464
llvm::codeview::VirtualBaseClassRecord::VirtualBaseClassRecord
VirtualBaseClassRecord(TypeRecordKind Kind, MemberAccess Access, TypeIndex BaseType, TypeIndex VBPtrType, uint64_t Offset, uint64_t Index)
Definition: TypeRecord.h:893
llvm::codeview::BuildInfoRecord::BuildInfoRecord
BuildInfoRecord(ArrayRef< TypeIndex > ArgIndices)
Definition: TypeRecord.h:670
llvm::codeview::TypeServer2Record::Age
uint32_t Age
Definition: TypeRecord.h:589
llvm::codeview::EnumRecord::UnderlyingType
TypeIndex UnderlyingType
Definition: TypeRecord.h:530
llvm::codeview::VirtualBaseClassRecord::getVBPtrType
TypeIndex getVBPtrType() const
Definition: TypeRecord.h:901
llvm::codeview::EnumeratorRecord::EnumeratorRecord
EnumeratorRecord()=default
llvm::codeview::MemberAttributes::MethodKindShift
@ MethodKindShift
Definition: TypeRecord.h:44
llvm::codeview::EnumeratorRecord::Attrs
MemberAttributes Attrs
Definition: TypeRecord.h:844
llvm::codeview::EnumeratorRecord::getValue
APSInt getValue() const
Definition: TypeRecord.h:841
llvm::codeview::BuildInfoRecord::CommandLine
@ CommandLine
Full canonical command line (maybe -cc1)
Definition: TypeRecord.h:682
llvm::StringRef::size
LLVM_NODISCARD size_t size() const
size - Get the string size.
Definition: StringRef.h:157
llvm::codeview::VFTableRecord::VFTableRecord
VFTableRecord(TypeIndex CompleteClass, TypeIndex OverriddenVFTable, uint32_t VFPtrOffset, StringRef Name, ArrayRef< StringRef > Methods)
Definition: TypeRecord.h:694
llvm::codeview::MemberFunctionRecord::ArgumentList
TypeIndex ArgumentList
Definition: TypeRecord.h:200
Endian.h
llvm::codeview::ArrayRecord::ArrayRecord
ArrayRecord()=default
llvm::codeview::MemberPointerInfo
Definition: TypeRecord.h:100
llvm::codeview::EndPrecompRecord
Definition: TypeRecord.h:945
llvm::codeview::PointerOptions::RValueRefThisPointer
@ RValueRefThisPointer
llvm::codeview::MemberFuncIdRecord::getName
StringRef getName() const
Definition: TypeRecord.h:227
llvm::codeview::EnumeratorRecord::EnumeratorRecord
EnumeratorRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:832
llvm::codeview::UdtSourceLineRecord::getLineNumber
uint32_t getLineNumber() const
Definition: TypeRecord.h:637
llvm::Value
LLVM Value Representation.
Definition: Value.h:75
llvm::codeview::MemberFuncIdRecord::MemberFuncIdRecord
MemberFuncIdRecord(TypeIndex ClassType, TypeIndex FunctionType, StringRef Name)
Definition: TypeRecord.h:220
llvm::codeview::ArrayRecord::getSize
uint64_t getSize() const
Definition: TypeRecord.h:406
llvm::codeview::UdtModSourceLineRecord::UDT
TypeIndex UDT
Definition: TypeRecord.h:659
llvm::codeview::ListContinuationRecord::ListContinuationRecord
ListContinuationRecord(TypeIndex ContinuationIndex)
Definition: TypeRecord.h:918
llvm::codeview::ClassOptions::Nested
@ Nested
llvm::codeview::TagRecord::WinRTKindMask
static const int WinRTKindMask
Definition: TypeRecord.h:428
llvm::codeview::UdtModSourceLineRecord::LineNumber
uint32_t LineNumber
Definition: TypeRecord.h:661
llvm::codeview::BuildInfoRecord::BuildInfoRecord
BuildInfoRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:669
llvm::codeview::OneMethodRecord::Name
StringRef Name
Definition: TypeRecord.h:747
llvm::FunctionType
Class to represent function types.
Definition: DerivedTypes.h:102
llvm::codeview::ArgListRecord::ArgListRecord
ArgListRecord(TypeRecordKind Kind, ArrayRef< TypeIndex > Indices)
Definition: TypeRecord.h:240
llvm::codeview::PrecompRecord::PrecompRecord
PrecompRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:931
llvm::codeview::PrecompRecord::StartTypeIndex
uint32_t StartTypeIndex
Definition: TypeRecord.h:938
llvm::codeview::MethodOptions
MethodOptions
Equivalent to CV_fldattr_t bitfield.
Definition: CodeView.h:279
llvm::codeview::MemberFunctionRecord::getOptions
FunctionOptions getOptions() const
Definition: TypeRecord.h:189
llvm::codeview::PointerRecord::PointerRecord
PointerRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:281
llvm::codeview::VirtualBaseClassRecord::VirtualBaseClassRecord
VirtualBaseClassRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:887
llvm::codeview::LabelRecord::LabelRecord
LabelRecord(LabelType Mode)
Definition: TypeRecord.h:210