LLVM  14.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 
116 };
117 
118 class TypeRecord {
119 protected:
120  TypeRecord() = default;
122 
123 public:
124  TypeRecordKind getKind() const { return Kind; }
125 
127 };
128 
129 // LF_MODIFIER
130 class ModifierRecord : public TypeRecord {
131 public:
132  ModifierRecord() = default;
136  Modifiers(Modifiers) {}
137 
140 
143 };
144 
145 // LF_PROCEDURE
146 class ProcedureRecord : public TypeRecord {
147 public:
148  ProcedureRecord() = default;
156 
157  TypeIndex getReturnType() const { return ReturnType; }
159  FunctionOptions getOptions() const { return Options; }
162 
168 };
169 
170 // LF_MFUNCTION
172 public:
173  MemberFunctionRecord() = default;
175 
180  : TypeRecord(TypeRecordKind::MemberFunction), ReturnType(ReturnType),
185 
186  TypeIndex getReturnType() const { return ReturnType; }
187  TypeIndex getClassType() const { return ClassType; }
188  TypeIndex getThisType() const { return ThisType; }
190  FunctionOptions getOptions() const { return Options; }
194 
203 };
204 
205 // LF_LABEL
206 class LabelRecord : public TypeRecord {
207 public:
208  LabelRecord() = default;
210 
212 
214 };
215 
216 // LF_MFUNC_ID
218 public:
219  MemberFuncIdRecord() = default;
222  StringRef Name)
223  : TypeRecord(TypeRecordKind::MemberFuncId), ClassType(ClassType),
225 
226  TypeIndex getClassType() const { return ClassType; }
228  StringRef getName() const { return Name; }
229 
233 };
234 
235 // LF_ARGLIST
236 class ArgListRecord : public TypeRecord {
237 public:
238  ArgListRecord() = default;
240 
242  : TypeRecord(Kind), ArgIndices(Indices) {}
243 
245 
246  std::vector<TypeIndex> ArgIndices;
247 };
248 
249 // LF_SUBSTR_LIST
250 class StringListRecord : public TypeRecord {
251 public:
252  StringListRecord() = default;
254 
256  : TypeRecord(Kind), StringIndices(Indices) {}
257 
259 
260  std::vector<TypeIndex> StringIndices;
261 };
262 
263 // LF_POINTER
264 class PointerRecord : public TypeRecord {
265 public:
266  // ---------------------------XXXXX
267  static const uint32_t PointerKindShift = 0;
268  static const uint32_t PointerKindMask = 0x1F;
269 
270  // ------------------------XXX-----
271  static const uint32_t PointerModeShift = 5;
272  static const uint32_t PointerModeMask = 0x07;
273 
274  // ----------XXX------XXXXX--------
275  static const uint32_t PointerOptionMask = 0x381f00;
276 
277  // -------------XXXXXX------------
278  static const uint32_t PointerSizeShift = 13;
279  static const uint32_t PointerSizeMask = 0xFF;
280 
281  PointerRecord() = default;
283 
286  Attrs(Attrs) {}
287 
289  PointerOptions PO, uint8_t Size)
291  Attrs(calcAttrs(PK, PM, PO, Size)) {}
292 
294  PointerOptions PO, uint8_t Size, const MemberPointerInfo &MPI)
296  Attrs(calcAttrs(PK, PM, PO, Size)), MemberInfo(MPI) {}
297 
299 
301  return static_cast<PointerKind>((Attrs >> PointerKindShift) &
303  }
304 
306  return static_cast<PointerMode>((Attrs >> PointerModeShift) &
308  }
309 
311  return static_cast<PointerOptions>(Attrs & PointerOptionMask);
312  }
313 
314  uint8_t getSize() const {
315  return (Attrs >> PointerSizeShift) & PointerSizeMask;
316  }
317 
319 
320  bool isPointerToMember() const {
323  }
324 
325  bool isFlat() const { return !!(Attrs & uint32_t(PointerOptions::Flat32)); }
326  bool isConst() const { return !!(Attrs & uint32_t(PointerOptions::Const)); }
327 
328  bool isVolatile() const {
330  }
331 
332  bool isUnaligned() const {
334  }
335 
336  bool isRestrict() const {
338  }
339 
342  }
343 
346  }
347 
351 
353  uint8_t Size) {
354  Attrs = calcAttrs(PK, PM, PO, Size);
355  }
356 
357 private:
358  static uint32_t calcAttrs(PointerKind PK, PointerMode PM, PointerOptions PO,
359  uint8_t Size) {
360  uint32_t A = 0;
361  A |= static_cast<uint32_t>(PK);
362  A |= static_cast<uint32_t>(PO);
363  A |= (static_cast<uint32_t>(PM) << PointerModeShift);
364  A |= (static_cast<uint32_t>(Size) << PointerSizeShift);
365  return A;
366  }
367 };
368 
369 // LF_NESTTYPE
370 class NestedTypeRecord : public TypeRecord {
371 public:
372  NestedTypeRecord() = default;
375  : TypeRecord(TypeRecordKind::NestedType), Type(Type), Name(Name) {}
376 
377  TypeIndex getNestedType() const { return Type; }
378  StringRef getName() const { return Name; }
379 
382 };
383 
384 // LF_FIELDLIST
385 class FieldListRecord : public TypeRecord {
386 public:
387  FieldListRecord() = default;
391 
393 };
394 
395 // LF_ARRAY
396 class ArrayRecord : public TypeRecord {
397 public:
398  ArrayRecord() = default;
401  StringRef Name)
404 
406  TypeIndex getIndexType() const { return IndexType; }
407  uint64_t getSize() const { return Size; }
408  StringRef getName() const { return Name; }
409 
414 };
415 
416 class TagRecord : public TypeRecord {
417 protected:
418  TagRecord() = default;
424 
425 public:
426  static const int HfaKindShift = 11;
427  static const int HfaKindMask = 0x1800;
428  static const int WinRTKindShift = 14;
429  static const int WinRTKindMask = 0xC000;
430 
431  bool hasUniqueName() const {
433  }
434 
435  bool isNested() const {
437  }
438 
439  bool isForwardRef() const {
441  }
442 
443  bool containsNestedClass() const {
445  }
446 
447  bool isScoped() const {
449  }
450 
451  uint16_t getMemberCount() const { return MemberCount; }
452  ClassOptions getOptions() const { return Options; }
453  TypeIndex getFieldList() const { return FieldList; }
454  StringRef getName() const { return Name; }
455  StringRef getUniqueName() const { return UniqueName; }
456 
462 };
463 
464 // LF_CLASS, LF_STRUCTURE, LF_INTERFACE
465 class ClassRecord : public TagRecord {
466 public:
467  ClassRecord() = default;
475 
476  HfaKind getHfa() const {
477  uint16_t Value = static_cast<uint16_t>(Options);
479  return static_cast<HfaKind>(Value);
480  }
481 
483  uint16_t Value = static_cast<uint16_t>(Options);
485  return static_cast<WindowsRTClassKind>(Value);
486  }
487 
490  uint64_t getSize() const { return Size; }
491 
495 };
496 
497 // LF_UNION
498 struct UnionRecord : public TagRecord {
499  UnionRecord() = default;
504  UniqueName),
505  Size(Size) {}
506 
507  HfaKind getHfa() const {
508  uint16_t Value = static_cast<uint16_t>(Options);
510  return static_cast<HfaKind>(Value);
511  }
512 
513  uint64_t getSize() const { return Size; }
514 
516 };
517 
518 // LF_ENUM
519 class EnumRecord : public TagRecord {
520 public:
521  EnumRecord() = default;
526  UniqueName),
528 
530 
532 };
533 
534 // LF_BITFIELD
535 class BitFieldRecord : public TypeRecord {
536 public:
537  BitFieldRecord() = default;
541  BitOffset(BitOffset) {}
542 
543  TypeIndex getType() const { return Type; }
544  uint8_t getBitOffset() const { return BitOffset; }
545  uint8_t getBitSize() const { return BitSize; }
546 
548  uint8_t BitSize = 0;
549  uint8_t BitOffset = 0;
550 };
551 
552 // LF_VTSHAPE
554 public:
555  VFTableShapeRecord() = default;
558  : TypeRecord(TypeRecordKind::VFTableShape), SlotsRef(Slots) {}
559  explicit VFTableShapeRecord(std::vector<VFTableSlotKind> Slots)
560  : TypeRecord(TypeRecordKind::VFTableShape), Slots(std::move(Slots)) {}
561 
563  if (!SlotsRef.empty())
564  return SlotsRef;
565  return Slots;
566  }
567 
568  uint32_t getEntryCount() const { return getSlots().size(); }
569 
571  std::vector<VFTableSlotKind> Slots;
572 };
573 
574 // LF_TYPESERVER2
576 public:
577  TypeServer2Record() = default;
580  : TypeRecord(TypeRecordKind::TypeServer2), Age(Age), Name(Name) {
581  assert(GuidStr.size() == 16 && "guid isn't 16 bytes");
582  ::memcpy(Guid.Guid, GuidStr.data(), 16);
583  }
584 
585  const GUID &getGuid() const { return Guid; }
586  uint32_t getAge() const { return Age; }
587  StringRef getName() const { return Name; }
588 
589  GUID Guid = {};
592 };
593 
594 // LF_STRING_ID
595 class StringIdRecord : public TypeRecord {
596 public:
597  StringIdRecord() = default;
600  : TypeRecord(TypeRecordKind::StringId), Id(Id), String(String) {}
601 
602  TypeIndex getId() const { return Id; }
603  StringRef getString() const { return String; }
604 
607 };
608 
609 // LF_FUNC_ID
610 class FuncIdRecord : public TypeRecord {
611 public:
612  FuncIdRecord() = default;
617 
620  StringRef getName() const { return Name; }
621 
625 };
626 
627 // LF_UDT_SRC_LINE
629 public:
630  UdtSourceLineRecord() = default;
633  : TypeRecord(TypeRecordKind::UdtSourceLine), UDT(UDT),
635 
636  TypeIndex getUDT() const { return UDT; }
637  TypeIndex getSourceFile() const { return SourceFile; }
638  uint32_t getLineNumber() const { return LineNumber; }
639 
643 };
644 
645 // LF_UDT_MOD_SRC_LINE
647 public:
648  UdtModSourceLineRecord() = default;
652  : TypeRecord(TypeRecordKind::UdtSourceLine), UDT(UDT),
654 
655  TypeIndex getUDT() const { return UDT; }
656  TypeIndex getSourceFile() const { return SourceFile; }
657  uint32_t getLineNumber() const { return LineNumber; }
658  uint16_t getModule() const { return Module; }
659 
664 };
665 
666 // LF_BUILDINFO
667 class BuildInfoRecord : public TypeRecord {
668 public:
669  BuildInfoRecord() = default;
672  : TypeRecord(TypeRecordKind::BuildInfo),
674 
676 
677  /// Indices of known build info arguments.
679  CurrentDirectory, ///< Absolute CWD path
680  BuildTool, ///< Absolute compiler path
681  SourceFile, ///< Path to main source file, relative or absolute
682  TypeServerPDB, ///< Absolute path of type server PDB (/Fd)
683  CommandLine, ///< Full canonical command line (maybe -cc1)
685  };
686 
688 };
689 
690 // LF_VFTABLE
691 class VFTableRecord : public TypeRecord {
692 public:
693  VFTableRecord() = default;
697  ArrayRef<StringRef> Methods)
700  MethodNames.push_back(Name);
702  }
703 
706  uint32_t getVFPtrOffset() const { return VFPtrOffset; }
707  StringRef getName() const { return makeArrayRef(MethodNames).front(); }
708 
710  return makeArrayRef(MethodNames).drop_front();
711  }
712 
716  std::vector<StringRef> MethodNames;
717 };
718 
719 // LF_ONEMETHOD
720 class OneMethodRecord : public TypeRecord {
721 public:
722  OneMethodRecord() = default;
725  StringRef Name)
726  : TypeRecord(TypeRecordKind::OneMethod), Type(Type), Attrs(Attrs),
730  : TypeRecord(TypeRecordKind::OneMethod), Type(Type),
731  Attrs(Access, MK, Options), VFTableOffset(VFTableOffset), Name(Name) {}
732 
733  TypeIndex getType() const { return Type; }
735  MethodOptions getOptions() const { return Attrs.getFlags(); }
736  MemberAccess getAccess() const { return Attrs.getAccess(); }
737  int32_t getVFTableOffset() const { return VFTableOffset; }
738  StringRef getName() const { return Name; }
739 
740  bool isIntroducingVirtual() const {
743  }
744 
747  int32_t VFTableOffset = 0;
749 };
750 
751 // LF_METHODLIST
753 public:
754  MethodOverloadListRecord() = default;
758 
760 
761  std::vector<OneMethodRecord> Methods;
762 };
763 
764 /// For method overload sets. LF_METHOD
766 public:
767  OverloadedMethodRecord() = default;
770  StringRef Name)
771  : TypeRecord(TypeRecordKind::OverloadedMethod),
773 
775  TypeIndex getMethodList() const { return MethodList; }
776  StringRef getName() const { return Name; }
777 
781 };
782 
783 // LF_MEMBER
784 class DataMemberRecord : public TypeRecord {
785 public:
786  DataMemberRecord() = default;
789  StringRef Name)
790  : TypeRecord(TypeRecordKind::DataMember), Attrs(Attrs), Type(Type),
793  StringRef Name)
794  : TypeRecord(TypeRecordKind::DataMember), Attrs(Access), Type(Type),
796 
797  MemberAccess getAccess() const { return Attrs.getAccess(); }
798  TypeIndex getType() const { return Type; }
799  uint64_t getFieldOffset() const { return FieldOffset; }
800  StringRef getName() const { return Name; }
801 
806 };
807 
808 // LF_STMEMBER
810 public:
811  StaticDataMemberRecord() = default;
814  : TypeRecord(TypeRecordKind::StaticDataMember), Attrs(Attrs), Type(Type),
815  Name(Name) {}
817  : TypeRecord(TypeRecordKind::StaticDataMember), Attrs(Access), Type(Type),
818  Name(Name) {}
819 
820  MemberAccess getAccess() const { return Attrs.getAccess(); }
821  TypeIndex getType() const { return Type; }
822  StringRef getName() const { return Name; }
823 
827 };
828 
829 // LF_ENUMERATE
830 class EnumeratorRecord : public TypeRecord {
831 public:
832  EnumeratorRecord() = default;
836  Value(std::move(Value)), Name(Name) {}
839  Value(std::move(Value)), Name(Name) {}
840 
841  MemberAccess getAccess() const { return Attrs.getAccess(); }
842  APSInt getValue() const { return Value; }
843  StringRef getName() const { return Name; }
844 
848 };
849 
850 // LF_VFUNCTAB
851 class VFPtrRecord : public TypeRecord {
852 public:
853  VFPtrRecord() = default;
856  : TypeRecord(TypeRecordKind::VFPtr), Type(Type) {}
857 
858  TypeIndex getType() const { return Type; }
859 
861 };
862 
863 // LF_BCLASS, LF_BINTERFACE
864 class BaseClassRecord : public TypeRecord {
865 public:
866  BaseClassRecord() = default;
869  : TypeRecord(TypeRecordKind::BaseClass), Attrs(Attrs), Type(Type),
870  Offset(Offset) {}
872  : TypeRecord(TypeRecordKind::BaseClass), Attrs(Access), Type(Type),
873  Offset(Offset) {}
874 
875  MemberAccess getAccess() const { return Attrs.getAccess(); }
876  TypeIndex getBaseType() const { return Type; }
877  uint64_t getBaseOffset() const { return Offset; }
878 
882 };
883 
884 // LF_VBCLASS, LF_IVBCLASS
886 public:
887  VirtualBaseClassRecord() = default;
897  : TypeRecord(Kind), Attrs(Access), BaseType(BaseType),
899 
900  MemberAccess getAccess() const { return Attrs.getAccess(); }
901  TypeIndex getBaseType() const { return BaseType; }
902  TypeIndex getVBPtrType() const { return VBPtrType; }
903  uint64_t getVBPtrOffset() const { return VBPtrOffset; }
904  uint64_t getVTableIndex() const { return VTableIndex; }
905 
911 };
912 
913 /// LF_INDEX - Used to chain two large LF_FIELDLIST or LF_METHODLIST records
914 /// together. The first will end in an LF_INDEX record that points to the next.
916 public:
917  ListContinuationRecord() = default;
920  : TypeRecord(TypeRecordKind::ListContinuation),
922 
924 
926 };
927 
928 // LF_PRECOMP
929 class PrecompRecord : public TypeRecord {
930 public:
931  PrecompRecord() = default;
933 
935  uint32_t getTypesCount() const { return TypesCount; }
936  uint32_t getSignature() const { return Signature; }
938 
943 };
944 
945 // LF_ENDPRECOMP
946 class EndPrecompRecord : public TypeRecord {
947 public:
948  EndPrecompRecord() = default;
950 
951  uint32_t getSignature() const { return Signature; }
952 
954 };
955 
956 } // end namespace codeview
957 } // end namespace llvm
958 
959 #endif // LLVM_DEBUGINFO_CODEVIEW_TYPERECORD_H
llvm::Check::Size
@ Size
Definition: FileCheck.h:73
llvm::codeview::UdtSourceLineRecord::UDT
TypeIndex UDT
Definition: TypeRecord.h:640
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:705
llvm::codeview::TypeRecord::TypeRecord
TypeRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:121
llvm::codeview::PointerRecord::isFlat
bool isFlat() const
Definition: TypeRecord.h:325
llvm::codeview::MemberFuncIdRecord::MemberFuncIdRecord
MemberFuncIdRecord()=default
llvm::codeview::OneMethodRecord::Type
TypeIndex Type
Definition: TypeRecord.h:745
llvm::codeview::BaseClassRecord::Type
TypeIndex Type
Definition: TypeRecord.h:880
llvm::codeview::ClassOptions::ForwardReference
@ ForwardReference
llvm::codeview::StaticDataMemberRecord::Attrs
MemberAttributes Attrs
Definition: TypeRecord.h:824
llvm::codeview::BitFieldRecord::getBitSize
uint8_t getBitSize() const
Definition: TypeRecord.h:545
llvm::codeview::VFTableShapeRecord::getSlots
ArrayRef< VFTableSlotKind > getSlots() const
Definition: TypeRecord.h:562
llvm::codeview::EnumRecord::EnumRecord
EnumRecord(uint16_t MemberCount, ClassOptions Options, TypeIndex FieldList, StringRef Name, StringRef UniqueName, TypeIndex UnderlyingType)
Definition: TypeRecord.h:523
llvm::codeview::ModifierRecord::ModifierRecord
ModifierRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:133
llvm::codeview::ClassRecord::getDerivationList
TypeIndex getDerivationList() const
Definition: TypeRecord.h:488
llvm::codeview::MemberAccess
MemberAccess
Source-level access specifier. (CV_access_e)
Definition: CodeView.h:265
llvm::codeview::TagRecord::containsNestedClass
bool containsNestedClass() const
Definition: TypeRecord.h:443
llvm::codeview::TagRecord
Definition: TypeRecord.h:416
llvm::codeview::VirtualBaseClassRecord::VirtualBaseClassRecord
VirtualBaseClassRecord()=default
llvm::codeview::VirtualBaseClassRecord::VBPtrOffset
uint64_t VBPtrOffset
Definition: TypeRecord.h:909
llvm
This is an optimization pass for GlobalISel generic memory operations.
Definition: AllocatorList.h:23
llvm::codeview::EnumeratorRecord::EnumeratorRecord
EnumeratorRecord(MemberAccess Access, APSInt Value, StringRef Name)
Definition: TypeRecord.h:837
llvm::codeview::ListContinuationRecord::getContinuationIndex
TypeIndex getContinuationIndex() const
Definition: TypeRecord.h:923
llvm::codeview::BuildInfoRecord::BuildInfoArg
BuildInfoArg
Indices of known build info arguments.
Definition: TypeRecord.h:678
llvm::codeview::MethodOverloadListRecord::getMethods
ArrayRef< OneMethodRecord > getMethods() const
Definition: TypeRecord.h:759
llvm::codeview::FuncIdRecord::Name
StringRef Name
Definition: TypeRecord.h:624
llvm::codeview::ClassRecord::DerivationList
TypeIndex DerivationList
Definition: TypeRecord.h:492
GUID.h
llvm::codeview::VFTableRecord::VFPtrOffset
uint32_t VFPtrOffset
Definition: TypeRecord.h:715
llvm::codeview::ProcedureRecord::getCallConv
CallingConvention getCallConv() const
Definition: TypeRecord.h:158
llvm::codeview::StaticDataMemberRecord::getName
StringRef getName() const
Definition: TypeRecord.h:822
llvm::codeview::ModifierRecord::ModifiedType
TypeIndex ModifiedType
Definition: TypeRecord.h:141
llvm::codeview::VFTableShapeRecord::getEntryCount
uint32_t getEntryCount() const
Definition: TypeRecord.h:568
llvm::codeview::PrecompRecord::getTypesCount
uint32_t getTypesCount() const
Definition: TypeRecord.h:935
llvm::codeview::TypeServer2Record::getGuid
const GUID & getGuid() const
Definition: TypeRecord.h:585
Optional.h
llvm::codeview::StaticDataMemberRecord::StaticDataMemberRecord
StaticDataMemberRecord(MemberAttributes Attrs, TypeIndex Type, StringRef Name)
Definition: TypeRecord.h:813
llvm::codeview::MemberFunctionRecord::CallConv
CallingConvention CallConv
Definition: TypeRecord.h:198
llvm::codeview::CVMemberRecord::Data
ArrayRef< uint8_t > Data
Definition: TypeRecord.h:36
llvm::codeview::VFPtrRecord::getType
TypeIndex getType() const
Definition: TypeRecord.h:858
llvm::codeview::TagRecord::hasUniqueName
bool hasUniqueName() const
Definition: TypeRecord.h:431
llvm::codeview::TagRecord::getUniqueName
StringRef getUniqueName() const
Definition: TypeRecord.h:455
llvm::codeview::PointerRecord::PointerModeShift
static const uint32_t PointerModeShift
Definition: TypeRecord.h:271
llvm::codeview::UdtModSourceLineRecord::UdtModSourceLineRecord
UdtModSourceLineRecord(TypeIndex UDT, TypeIndex SourceFile, uint32_t LineNumber, uint16_t Module)
Definition: TypeRecord.h:650
llvm::codeview::WindowsRTClassKind
WindowsRTClassKind
Definition: CodeView.h:398
llvm::codeview::StaticDataMemberRecord::Type
TypeIndex Type
Definition: TypeRecord.h:825
llvm::codeview::DataMemberRecord::DataMemberRecord
DataMemberRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:787
llvm::codeview::PointerRecord::PointerRecord
PointerRecord()=default
llvm::codeview::ModifierOptions
ModifierOptions
Equivalent to CV_modifier_t.
Definition: CodeView.h:304
llvm::codeview::StringIdRecord
Definition: TypeRecord.h:595
llvm::codeview::StringIdRecord::String
StringRef String
Definition: TypeRecord.h:606
StringRef.h
llvm::codeview::PointerRecord::PointerRecord
PointerRecord(TypeIndex ReferentType, uint32_t Attrs)
Definition: TypeRecord.h:284
llvm::codeview::TagRecord::TagRecord
TagRecord()=default
llvm::codeview::UdtSourceLineRecord::getUDT
TypeIndex getUDT() const
Definition: TypeRecord.h:636
llvm::codeview::NestedTypeRecord
Definition: TypeRecord.h:370
llvm::codeview::DataMemberRecord::DataMemberRecord
DataMemberRecord()=default
llvm::codeview::PointerRecord::getOptions
PointerOptions getOptions() const
Definition: TypeRecord.h:310
llvm::codeview::MemberFuncIdRecord::getFunctionType
TypeIndex getFunctionType() const
Definition: TypeRecord.h:227
llvm::codeview::FunctionOptions
FunctionOptions
Definition: CodeView.h:249
llvm::codeview::MemberFuncIdRecord::ClassType
TypeIndex ClassType
Definition: TypeRecord.h:230
llvm::codeview::UnionRecord::UnionRecord
UnionRecord()=default
llvm::codeview::PointerRecord::isVolatile
bool isVolatile() const
Definition: TypeRecord.h:328
llvm::codeview::OverloadedMethodRecord::Name
StringRef Name
Definition: TypeRecord.h:780
llvm::SmallVector
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
Definition: SmallVector.h:1177
llvm::codeview::ClassRecord::getWinRTKind
WindowsRTClassKind getWinRTKind() const
Definition: TypeRecord.h:482
llvm::codeview::VFTableRecord::getMethodNames
ArrayRef< StringRef > getMethodNames() const
Definition: TypeRecord.h:709
llvm::codeview::UnionRecord::UnionRecord
UnionRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:500
llvm::codeview::EnumeratorRecord::EnumeratorRecord
EnumeratorRecord(MemberAttributes Attrs, APSInt Value, StringRef Name)
Definition: TypeRecord.h:834
llvm::codeview::PrecompRecord::TypesCount
uint32_t TypesCount
Definition: TypeRecord.h:940
llvm::codeview::DataMemberRecord::getFieldOffset
uint64_t getFieldOffset() const
Definition: TypeRecord.h:799
llvm::codeview::DataMemberRecord::getType
TypeIndex getType() const
Definition: TypeRecord.h:798
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:642
llvm::codeview::ClassRecord::ClassRecord
ClassRecord()=default
llvm::codeview::PrecompRecord::Signature
uint32_t Signature
Definition: TypeRecord.h:941
llvm::codeview::BuildInfoRecord::TypeServerPDB
@ TypeServerPDB
Absolute path of type server PDB (/Fd)
Definition: TypeRecord.h:682
llvm::codeview::BaseClassRecord::Offset
uint64_t Offset
Definition: TypeRecord.h:881
llvm::codeview::PrecompRecord
Definition: TypeRecord.h:929
llvm::codeview::TypeServer2Record::Name
StringRef Name
Definition: TypeRecord.h:591
llvm::codeview::StringIdRecord::getId
TypeIndex getId() const
Definition: TypeRecord.h:602
llvm::codeview::PointerRecord::getReferentType
TypeIndex getReferentType() const
Definition: TypeRecord.h:298
llvm::codeview::CallingConvention::NearC
@ NearC
llvm::codeview::VFTableShapeRecord
Definition: TypeRecord.h:553
llvm::codeview::ProcedureRecord::ReturnType
TypeIndex ReturnType
Definition: TypeRecord.h:163
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:45
llvm::sys::path::end
const_iterator end(StringRef path)
Get end iterator over path.
Definition: Path.cpp:236
llvm::codeview::BaseClassRecord
Definition: TypeRecord.h:864
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:227
llvm::codeview::ProcedureRecord::getOptions
FunctionOptions getOptions() const
Definition: TypeRecord.h:159
llvm::codeview::MemberFunctionRecord::getArgumentList
TypeIndex getArgumentList() const
Definition: TypeRecord.h:192
llvm::codeview::ClassRecord::ClassRecord
ClassRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:468
llvm::codeview::UnionRecord::Size
uint64_t Size
Definition: TypeRecord.h:515
llvm::codeview::ArgListRecord::ArgListRecord
ArgListRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:239
llvm::codeview::VirtualBaseClassRecord::BaseType
TypeIndex BaseType
Definition: TypeRecord.h:907
llvm::codeview::OneMethodRecord::getName
StringRef getName() const
Definition: TypeRecord.h:738
llvm::Optional
Definition: APInt.h:33
Offset
uint64_t Offset
Definition: ELFObjHandler.cpp:80
llvm::codeview::UnionRecord::getSize
uint64_t getSize() const
Definition: TypeRecord.h:513
llvm::codeview::BitFieldRecord::BitFieldRecord
BitFieldRecord()=default
llvm::codeview::LabelRecord::LabelRecord
LabelRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:209
llvm::codeview::ModifierOptions::None
@ None
llvm::codeview::MemberFunctionRecord::ReturnType
TypeIndex ReturnType
Definition: TypeRecord.h:195
llvm::codeview::FuncIdRecord::getParentScope
TypeIndex getParentScope() const
Definition: TypeRecord.h:618
llvm::codeview::PointerOptions::Volatile
@ Volatile
BaseType
llvm::codeview::PointerRecord
Definition: TypeRecord.h:264
llvm::codeview::LabelType
LabelType
Equivalent to CV_LABEL_TYPE_e.
Definition: CodeView.h:297
llvm::codeview::UnionRecord::getHfa
HfaKind getHfa() const
Definition: TypeRecord.h:507
llvm::codeview::NestedTypeRecord::getNestedType
TypeIndex getNestedType() const
Definition: TypeRecord.h:377
llvm::codeview::MemberFunctionRecord::ParameterCount
uint16_t ParameterCount
Definition: TypeRecord.h:200
llvm::codeview::PointerMode::Pointer
@ Pointer
llvm::codeview::DataMemberRecord
Definition: TypeRecord.h:784
llvm::codeview::UdtSourceLineRecord::UdtSourceLineRecord
UdtSourceLineRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:631
llvm::codeview::PointerRecord::PointerSizeShift
static const uint32_t PointerSizeShift
Definition: TypeRecord.h:278
llvm::codeview::StringListRecord::StringListRecord
StringListRecord(TypeRecordKind Kind, ArrayRef< TypeIndex > Indices)
Definition: TypeRecord.h:255
llvm::codeview::TagRecord::isNested
bool isNested() const
Definition: TypeRecord.h:435
llvm::codeview::MemberAttributes::MethodKindShift
@ MethodKindShift
Definition: TypeRecord.h:44
llvm::ArrayRef::empty
bool empty() const
empty - Check if the array is empty.
Definition: ArrayRef.h:158
llvm::codeview::OneMethodRecord::Attrs
MemberAttributes Attrs
Definition: TypeRecord.h:746
llvm::codeview::BuildInfoRecord::MaxArgs
@ MaxArgs
Definition: TypeRecord.h:684
llvm::codeview::ListContinuationRecord::ContinuationIndex
TypeIndex ContinuationIndex
Definition: TypeRecord.h:925
llvm::codeview::UdtSourceLineRecord::getSourceFile
TypeIndex getSourceFile() const
Definition: TypeRecord.h:637
llvm::codeview::MethodOverloadListRecord::MethodOverloadListRecord
MethodOverloadListRecord(ArrayRef< OneMethodRecord > Methods)
Definition: TypeRecord.h:756
llvm::codeview::StringListRecord::StringListRecord
StringListRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:253
llvm::codeview::PointerRecord::PointerRecord
PointerRecord(TypeIndex ReferentType, PointerKind PK, PointerMode PM, PointerOptions PO, uint8_t Size, const MemberPointerInfo &MPI)
Definition: TypeRecord.h:293
llvm::codeview::OverloadedMethodRecord::NumOverloads
uint16_t NumOverloads
Definition: TypeRecord.h:778
llvm::codeview::PointerRecord::setAttrs
void setAttrs(PointerKind PK, PointerMode PM, PointerOptions PO, uint8_t Size)
Definition: TypeRecord.h:352
llvm::codeview::StringListRecord::StringIndices
std::vector< TypeIndex > StringIndices
Definition: TypeRecord.h:260
llvm::codeview::MemberFunctionRecord::ThisPointerAdjustment
int32_t ThisPointerAdjustment
Definition: TypeRecord.h:202
llvm::codeview::ClassOptions::ContainsNestedClass
@ ContainsNestedClass
llvm::codeview::ClassOptions::Scoped
@ Scoped
llvm::codeview::ArrayRecord::ElementType
TypeIndex ElementType
Definition: TypeRecord.h:410
llvm::codeview::MethodKind::IntroducingVirtual
@ IntroducingVirtual
llvm::codeview::ArrayRecord::Size
uint64_t Size
Definition: TypeRecord.h:412
llvm::codeview::MethodKind::Friend
@ Friend
llvm::codeview::MemberFunctionRecord::MemberFunctionRecord
MemberFunctionRecord()=default
llvm::codeview::TagRecord::UniqueName
StringRef UniqueName
Definition: TypeRecord.h:461
llvm::codeview::ProcedureRecord::getReturnType
TypeIndex getReturnType() const
Definition: TypeRecord.h:157
llvm::codeview::UdtModSourceLineRecord::getSourceFile
TypeIndex getSourceFile() const
Definition: TypeRecord.h:656
llvm::codeview::ArgListRecord
Definition: TypeRecord.h:236
llvm::codeview::MemberAttributes
Equvalent to CV_fldattr_t in cvinfo.h.
Definition: TypeRecord.h:40
llvm::codeview::EnumRecord
Definition: TypeRecord.h:519
llvm::codeview::CVMemberRecord
Definition: TypeRecord.h:34
llvm::codeview::UdtSourceLineRecord::UdtSourceLineRecord
UdtSourceLineRecord()=default
llvm::codeview::MemberFunctionRecord::getReturnType
TypeIndex getReturnType() const
Definition: TypeRecord.h:186
llvm::codeview::PointerOptions::Restrict
@ Restrict
llvm::codeview::DataMemberRecord::getName
StringRef getName() const
Definition: TypeRecord.h:800
llvm::codeview::UdtModSourceLineRecord::SourceFile
TypeIndex SourceFile
Definition: TypeRecord.h:661
llvm::codeview::MemberFunctionRecord::ThisType
TypeIndex ThisType
Definition: TypeRecord.h:197
llvm::codeview::VFTableRecord::VFTableRecord
VFTableRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:694
llvm::codeview::ProcedureRecord::getArgumentList
TypeIndex getArgumentList() const
Definition: TypeRecord.h:161
llvm::codeview::ProcedureRecord::ProcedureRecord
ProcedureRecord(TypeIndex ReturnType, CallingConvention CallConv, FunctionOptions Options, uint16_t ParameterCount, TypeIndex ArgumentList)
Definition: TypeRecord.h:150
llvm::codeview::PointerOptions::Flat32
@ Flat32
llvm::codeview::MemberFuncIdRecord::Name
StringRef Name
Definition: TypeRecord.h:232
llvm::codeview::ContinuationRecordKind::MethodOverloadList
@ MethodOverloadList
llvm::codeview::EndPrecompRecord::EndPrecompRecord
EndPrecompRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:949
llvm::codeview::BaseClassRecord::getBaseType
TypeIndex getBaseType() const
Definition: TypeRecord.h:876
llvm::HighlightColor::Enumerator
@ Enumerator
llvm::codeview::BitFieldRecord
Definition: TypeRecord.h:535
llvm::codeview::DataMemberRecord::Type
TypeIndex Type
Definition: TypeRecord.h:803
llvm::codeview::NestedTypeRecord::getName
StringRef getName() const
Definition: TypeRecord.h:378
llvm::codeview::PointerRecord::isRValueReferenceThisPtr
bool isRValueReferenceThisPtr() const
Definition: TypeRecord.h:344
llvm::codeview::MethodOverloadListRecord
Definition: TypeRecord.h:752
llvm::codeview::OverloadedMethodRecord::OverloadedMethodRecord
OverloadedMethodRecord()=default
llvm::codeview::PointerOptions
PointerOptions
Equivalent to misc lfPointerAttr bitfields.
Definition: CodeView.h:362
llvm::codeview::PointerRecord::Attrs
uint32_t Attrs
Definition: TypeRecord.h:349
llvm::codeview::DataMemberRecord::getAccess
MemberAccess getAccess() const
Definition: TypeRecord.h:797
llvm::codeview::ClassOptions::None
@ None
llvm::codeview::StringIdRecord::StringIdRecord
StringIdRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:598
llvm::codeview::UdtModSourceLineRecord::Module
uint16_t Module
Definition: TypeRecord.h:663
llvm::codeview::MemberFunctionRecord::getClassType
TypeIndex getClassType() const
Definition: TypeRecord.h:187
llvm::codeview::MemberFunctionRecord::ClassType
TypeIndex ClassType
Definition: TypeRecord.h:196
llvm::codeview::VFTableShapeRecord::VFTableShapeRecord
VFTableShapeRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:556
llvm::codeview::FuncIdRecord::FuncIdRecord
FuncIdRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:613
llvm::codeview::MethodKind
MethodKind
Part of member attribute flags. (CV_methodprop_e)
Definition: CodeView.h:273
llvm::codeview::StaticDataMemberRecord::getType
TypeIndex getType() const
Definition: TypeRecord.h:821
llvm::codeview::MethodOverloadListRecord::MethodOverloadListRecord
MethodOverloadListRecord()=default
llvm::codeview::UdtModSourceLineRecord
Definition: TypeRecord.h:646
llvm::codeview::PointerRecord::PointerSizeMask
static const uint32_t PointerSizeMask
Definition: TypeRecord.h:279
llvm::codeview::StringListRecord::getIndices
ArrayRef< TypeIndex > getIndices() const
Definition: TypeRecord.h:258
llvm::codeview::BaseClassRecord::BaseClassRecord
BaseClassRecord()=default
llvm::codeview::UdtSourceLineRecord::SourceFile
TypeIndex SourceFile
Definition: TypeRecord.h:641
llvm::codeview::TypeRecord
Definition: TypeRecord.h:118
llvm::codeview::EnumeratorRecord::getName
StringRef getName() const
Definition: TypeRecord.h:843
llvm::codeview::ProcedureRecord::ParameterCount
uint16_t ParameterCount
Definition: TypeRecord.h:166
llvm::codeview::EndPrecompRecord::Signature
uint32_t Signature
Definition: TypeRecord.h:953
llvm::codeview::FuncIdRecord::FunctionType
TypeIndex FunctionType
Definition: TypeRecord.h:623
llvm::codeview::MemberFuncIdRecord::FunctionType
TypeIndex FunctionType
Definition: TypeRecord.h:231
llvm::codeview::ArrayRecord::getName
StringRef getName() const
Definition: TypeRecord.h:408
llvm::codeview::VFTableRecord::MethodNames
std::vector< StringRef > MethodNames
Definition: TypeRecord.h:716
llvm::codeview::VFPtrRecord::VFPtrRecord
VFPtrRecord(TypeIndex Type)
Definition: TypeRecord.h:855
llvm::codeview::MethodOverloadListRecord::MethodOverloadListRecord
MethodOverloadListRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:755
llvm::codeview::TagRecord::HfaKindShift
static const int HfaKindShift
Definition: TypeRecord.h:426
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:915
llvm::codeview::TagRecord::Name
StringRef Name
Definition: TypeRecord.h:460
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:655
llvm::codeview::ModifierRecord::ModifierRecord
ModifierRecord()=default
llvm::codeview::BaseClassRecord::BaseClassRecord
BaseClassRecord(MemberAttributes Attrs, TypeIndex Type, uint64_t Offset)
Definition: TypeRecord.h:868
llvm::codeview::EnumRecord::getUnderlyingType
TypeIndex getUnderlyingType() const
Definition: TypeRecord.h:529
llvm::codeview::CVMemberRecord::Kind
TypeLeafKind Kind
Definition: TypeRecord.h:35
llvm::codeview::TypeServer2Record::Guid
GUID Guid
Definition: TypeRecord.h:589
llvm::codeview::ModifierRecord
Definition: TypeRecord.h:130
llvm::codeview::BuildInfoRecord::BuildInfoRecord
BuildInfoRecord()=default
llvm::codeview::OverloadedMethodRecord
For method overload sets. LF_METHOD.
Definition: TypeRecord.h:765
llvm::codeview::ClassOptions
ClassOptions
Definition: CodeView.h:206
CodeView.h
llvm::codeview::TagRecord::HfaKindMask
static const int HfaKindMask
Definition: TypeRecord.h:427
llvm::codeview::OneMethodRecord::OneMethodRecord
OneMethodRecord()=default
llvm::codeview::MemberFunctionRecord::getThisType
TypeIndex getThisType() const
Definition: TypeRecord.h:188
llvm::codeview::MemberFunctionRecord
Definition: TypeRecord.h:171
llvm::codeview::ClassRecord::getHfa
HfaKind getHfa() const
Definition: TypeRecord.h:476
llvm::codeview::BaseClassRecord::getAccess
MemberAccess getAccess() const
Definition: TypeRecord.h:875
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:724
llvm::codeview::MemberPointerInfo::ContainingType
TypeIndex ContainingType
Definition: TypeRecord.h:113
llvm::codeview::ClassRecord::getVTableShape
TypeIndex getVTableShape() const
Definition: TypeRecord.h:489
llvm::codeview::MemberFuncIdRecord::MemberFuncIdRecord
MemberFuncIdRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:220
llvm::codeview::LabelRecord::LabelRecord
LabelRecord()=default
llvm::codeview::OneMethodRecord::isIntroducingVirtual
bool isIntroducingVirtual() const
Definition: TypeRecord.h:740
llvm::codeview::VirtualBaseClassRecord::getAccess
MemberAccess getAccess() const
Definition: TypeRecord.h:900
llvm::codeview::PointerMode
PointerMode
Equivalent to CV_ptrmode_e.
Definition: CodeView.h:353
llvm::codeview::FuncIdRecord::getFunctionType
TypeIndex getFunctionType() const
Definition: TypeRecord.h:619
llvm::codeview::ArgListRecord::getIndices
ArrayRef< TypeIndex > getIndices() const
Definition: TypeRecord.h:244
llvm::codeview::TypeServer2Record::getAge
uint32_t getAge() const
Definition: TypeRecord.h:586
llvm::codeview::ProcedureRecord::ArgumentList
TypeIndex ArgumentList
Definition: TypeRecord.h:167
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:305
llvm::codeview::ClassRecord::Size
uint64_t Size
Definition: TypeRecord.h:494
llvm::codeview::BitFieldRecord::getType
TypeIndex getType() const
Definition: TypeRecord.h:543
llvm::codeview::EndPrecompRecord::EndPrecompRecord
EndPrecompRecord()=default
llvm::codeview::PointerRecord::isUnaligned
bool isUnaligned() const
Definition: TypeRecord.h:332
llvm::codeview::MemberPointerInfo::MemberPointerInfo
MemberPointerInfo(TypeIndex ContainingType, PointerToMemberRepresentation Representation)
Definition: TypeRecord.h:104
llvm::codeview::TagRecord::getMemberCount
uint16_t getMemberCount() const
Definition: TypeRecord.h:451
llvm::codeview::TagRecord::getName
StringRef getName() const
Definition: TypeRecord.h:454
llvm::codeview::MemberFunctionRecord::getThisPointerAdjustment
int32_t getThisPointerAdjustment() const
Definition: TypeRecord.h:193
llvm::codeview::VirtualBaseClassRecord::getVTableIndex
uint64_t getVTableIndex() const
Definition: TypeRecord.h:904
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:575
llvm::codeview::TypeServer2Record::getName
StringRef getName() const
Definition: TypeRecord.h:587
llvm::codeview::VFTableShapeRecord::VFTableShapeRecord
VFTableShapeRecord(std::vector< VFTableSlotKind > Slots)
Definition: TypeRecord.h:559
llvm::codeview::BuildInfoRecord::BuildTool
@ BuildTool
Absolute compiler path.
Definition: TypeRecord.h:680
llvm::codeview::VFPtrRecord::Type
TypeIndex Type
Definition: TypeRecord.h:860
llvm::codeview::EnumeratorRecord
Definition: TypeRecord.h:830
llvm::codeview::OneMethodRecord
Definition: TypeRecord.h:720
Index
uint32_t Index
Definition: ELFObjHandler.cpp:83
llvm::codeview::ClassRecord::VTableShape
TypeIndex VTableShape
Definition: TypeRecord.h:493
uint64_t
llvm::codeview::FieldListRecord::FieldListRecord
FieldListRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:388
llvm::codeview::UnionRecord::UnionRecord
UnionRecord(uint16_t MemberCount, ClassOptions Options, TypeIndex FieldList, uint64_t Size, StringRef Name, StringRef UniqueName)
Definition: TypeRecord.h:501
llvm::codeview::NestedTypeRecord::NestedTypeRecord
NestedTypeRecord(TypeIndex Type, StringRef Name)
Definition: TypeRecord.h:374
llvm::codeview::UdtModSourceLineRecord::getModule
uint16_t getModule() const
Definition: TypeRecord.h:658
llvm::codeview::FieldListRecord::Data
ArrayRef< uint8_t > Data
Definition: TypeRecord.h:392
llvm::codeview::StaticDataMemberRecord::getAccess
MemberAccess getAccess() const
Definition: TypeRecord.h:820
llvm::codeview::TagRecord::MemberCount
uint16_t MemberCount
Definition: TypeRecord.h:457
llvm::codeview::ArrayRecord::IndexType
TypeIndex IndexType
Definition: TypeRecord.h:411
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:548
llvm::codeview::TagRecord::Options
ClassOptions Options
Definition: TypeRecord.h:458
llvm::codeview::VirtualBaseClassRecord
Definition: TypeRecord.h:885
llvm::codeview::BuildInfoRecord::CurrentDirectory
@ CurrentDirectory
Absolute CWD path.
Definition: TypeRecord.h:679
llvm::codeview::PointerRecord::getSize
uint8_t getSize() const
Definition: TypeRecord.h:314
llvm::codeview::VirtualBaseClassRecord::getVBPtrOffset
uint64_t getVBPtrOffset() const
Definition: TypeRecord.h:903
llvm::codeview::TagRecord::FieldList
TypeIndex FieldList
Definition: TypeRecord.h:459
llvm::codeview::BaseClassRecord::getBaseOffset
uint64_t getBaseOffset() const
Definition: TypeRecord.h:877
llvm::codeview::PointerRecord::ReferentType
TypeIndex ReferentType
Definition: TypeRecord.h:348
llvm::codeview::ContinuationRecordKind::FieldList
@ FieldList
llvm::codeview::MemberFunctionRecord::MemberFunctionRecord
MemberFunctionRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:174
FuncId
Profile::FuncID FuncId
Definition: Profile.cpp:321
llvm::codeview::MethodOverloadListRecord::Methods
std::vector< OneMethodRecord > Methods
Definition: TypeRecord.h:761
llvm::codeview::BitFieldRecord::getBitOffset
uint8_t getBitOffset() const
Definition: TypeRecord.h:544
llvm::codeview::StaticDataMemberRecord::StaticDataMemberRecord
StaticDataMemberRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:812
llvm::codeview::PointerRecord::isConst
bool isConst() const
Definition: TypeRecord.h:326
llvm::codeview::VFTableRecord::OverriddenVFTable
TypeIndex OverriddenVFTable
Definition: TypeRecord.h:714
llvm::codeview::BitFieldRecord::BitFieldRecord
BitFieldRecord(TypeIndex Type, uint8_t BitSize, uint8_t BitOffset)
Definition: TypeRecord.h:539
ArrayRef.h
BinaryStreamArray.h
llvm::codeview::TypeRecord::Kind
TypeRecordKind Kind
Definition: TypeRecord.h:126
llvm::codeview::PrecompRecord::PrecompFilePath
StringRef PrecompFilePath
Definition: TypeRecord.h:942
llvm::codeview::BaseClassRecord::Attrs
MemberAttributes Attrs
Definition: TypeRecord.h:879
llvm::codeview::OneMethodRecord::OneMethodRecord
OneMethodRecord(TypeIndex Type, MemberAccess Access, MethodKind MK, MethodOptions Options, int32_t VFTableOffset, StringRef Name)
Definition: TypeRecord.h:728
llvm::codeview::ProcedureRecord::ProcedureRecord
ProcedureRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:149
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:1707
llvm::codeview::ProcedureRecord::getParameterCount
uint16_t getParameterCount() const
Definition: TypeRecord.h:160
llvm::codeview::StaticDataMemberRecord
Definition: TypeRecord.h:809
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:381
llvm::codeview::OverloadedMethodRecord::getMethodList
TypeIndex getMethodList() const
Definition: TypeRecord.h:775
llvm::codeview::TagRecord::isForwardRef
bool isForwardRef() const
Definition: TypeRecord.h:439
llvm::codeview::VirtualBaseClassRecord::VBPtrType
TypeIndex VBPtrType
Definition: TypeRecord.h:908
llvm::codeview::DataMemberRecord::Attrs
MemberAttributes Attrs
Definition: TypeRecord.h:802
llvm::codeview::TypeServer2Record::TypeServer2Record
TypeServer2Record()=default
APSInt.h
llvm::codeview::PointerOptions::Const
@ Const
llvm::codeview::PrecompRecord::getSignature
uint32_t getSignature() const
Definition: TypeRecord.h:936
llvm::codeview::PrecompRecord::getPrecompFilePath
StringRef getPrecompFilePath() const
Definition: TypeRecord.h:937
llvm::Module
A Module instance is used to store all the information related to an LLVM module.
Definition: Module.h:65
llvm::codeview::MemberFunctionRecord::Options
FunctionOptions Options
Definition: TypeRecord.h:199
llvm::codeview::VFTableRecord::getVFPtrOffset
uint32_t getVFPtrOffset() const
Definition: TypeRecord.h:706
llvm::codeview::FuncIdRecord
Definition: TypeRecord.h:610
llvm::codeview::HfaKind
HfaKind
Definition: CodeView.h:257
llvm::codeview::ArgListRecord::ArgIndices
std::vector< TypeIndex > ArgIndices
Definition: TypeRecord.h:246
llvm::codeview::StaticDataMemberRecord::Name
StringRef Name
Definition: TypeRecord.h:826
llvm::codeview::ProcedureRecord::ProcedureRecord
ProcedureRecord()=default
llvm::codeview::MemberPointerInfo::MemberPointerInfo
MemberPointerInfo()=default
llvm::codeview::OverloadedMethodRecord::MethodList
TypeIndex MethodList
Definition: TypeRecord.h:779
llvm::ArrayRef< uint8_t >
llvm::codeview::VFPtrRecord::VFPtrRecord
VFPtrRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:854
llvm::codeview::PointerRecord::PointerOptionMask
static const uint32_t PointerOptionMask
Definition: TypeRecord.h:275
llvm::codeview::FieldListRecord
Definition: TypeRecord.h:385
llvm::codeview::OneMethodRecord::getMethodKind
MethodKind getMethodKind() const
Definition: TypeRecord.h:734
llvm::codeview::OverloadedMethodRecord::getNumOverloads
uint16_t getNumOverloads() const
Definition: TypeRecord.h:774
llvm::codeview::FuncIdRecord::getName
StringRef getName() const
Definition: TypeRecord.h:620
llvm::codeview::MemberFuncIdRecord::getClassType
TypeIndex getClassType() const
Definition: TypeRecord.h:226
llvm::StringRef
StringRef - Represent a constant reference to a string, i.e.
Definition: StringRef.h:57
llvm::codeview::PrecompRecord::PrecompRecord
PrecompRecord()=default
llvm::codeview::TypeRecord::TypeRecord
TypeRecord()=default
llvm::codeview::OneMethodRecord::getAccess
MemberAccess getAccess() const
Definition: TypeRecord.h:736
llvm::codeview::ProcedureRecord::Options
FunctionOptions Options
Definition: TypeRecord.h:165
llvm::codeview::ArrayRecord::getElementType
TypeIndex getElementType() const
Definition: TypeRecord.h:405
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:176
llvm::codeview::UdtSourceLineRecord
Definition: TypeRecord.h:628
llvm::codeview::PointerRecord::PointerModeMask
static const uint32_t PointerModeMask
Definition: TypeRecord.h:272
uint32_t
llvm::append_range
void append_range(Container &C, Range &&R)
Wrapper function to append a range to a container.
Definition: STLExtras.h:1846
llvm::codeview::VFTableRecord
Definition: TypeRecord.h:691
llvm::codeview::ModifierRecord::getModifiedType
TypeIndex getModifiedType() const
Definition: TypeRecord.h:138
llvm::codeview::PointerOptions::Unaligned
@ Unaligned
llvm::codeview::BaseClassRecord::BaseClassRecord
BaseClassRecord(MemberAccess Access, TypeIndex Type, uint64_t Offset)
Definition: TypeRecord.h:871
llvm::codeview::OverloadedMethodRecord::OverloadedMethodRecord
OverloadedMethodRecord(uint16_t NumOverloads, TypeIndex MethodList, StringRef Name)
Definition: TypeRecord.h:769
llvm::codeview::VirtualBaseClassRecord::Attrs
MemberAttributes Attrs
Definition: TypeRecord.h:906
llvm::codeview::PointerToMemberRepresentation
PointerToMemberRepresentation
Equivalent to CV_pmtype_e.
Definition: CodeView.h:376
llvm::codeview::BaseClassRecord::BaseClassRecord
BaseClassRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:867
llvm::codeview::PointerRecord::isLValueReferenceThisPtr
bool isLValueReferenceThisPtr() const
Definition: TypeRecord.h:340
llvm::codeview::PointerOptions::LValueRefThisPointer
@ LValueRefThisPointer
llvm::codeview::FieldListRecord::FieldListRecord
FieldListRecord(ArrayRef< uint8_t > Data)
Definition: TypeRecord.h:389
llvm::codeview::FuncIdRecord::FuncIdRecord
FuncIdRecord(TypeIndex ParentScope, TypeIndex FunctionType, StringRef Name)
Definition: TypeRecord.h:614
llvm::codeview::EndPrecompRecord::getSignature
uint32_t getSignature() const
Definition: TypeRecord.h:951
llvm::codeview::ListContinuationRecord::ListContinuationRecord
ListContinuationRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:918
llvm::codeview::UdtModSourceLineRecord::UdtModSourceLineRecord
UdtModSourceLineRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:649
llvm::codeview::StringIdRecord::Id
TypeIndex Id
Definition: TypeRecord.h:605
llvm::codeview::MethodKind::Static
@ Static
llvm::codeview::EnumeratorRecord::getAccess
MemberAccess getAccess() const
Definition: TypeRecord.h:841
llvm::codeview::VFTableRecord::CompleteClass
TypeIndex CompleteClass
Definition: TypeRecord.h:713
llvm::codeview::ArrayRecord::ArrayRecord
ArrayRecord(TypeIndex ElementType, TypeIndex IndexType, uint64_t Size, StringRef Name)
Definition: TypeRecord.h:400
llvm::codeview::FieldListRecord::FieldListRecord
FieldListRecord()=default
llvm::codeview::ProcedureRecord
Definition: TypeRecord.h:146
llvm::StringRef::size
constexpr LLVM_NODISCARD size_t size() const
size - Get the string size.
Definition: StringRef.h:156
llvm::codeview::VirtualBaseClassRecord::VirtualBaseClassRecord
VirtualBaseClassRecord(TypeRecordKind Kind, MemberAttributes Attrs, TypeIndex BaseType, TypeIndex VBPtrType, uint64_t Offset, uint64_t Index)
Definition: TypeRecord.h:889
llvm::codeview::BuildInfoRecord::SourceFile
@ SourceFile
Path to main source file, relative or absolute.
Definition: TypeRecord.h:681
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:768
llvm::codeview::PointerRecord::PointerKindShift
static const uint32_t PointerKindShift
Definition: TypeRecord.h:267
llvm::codeview::VFTableRecord::getCompleteClass
TypeIndex getCompleteClass() const
Definition: TypeRecord.h:704
llvm::codeview::PointerToMemberRepresentation::Unknown
@ Unknown
llvm::codeview::PointerRecord::PointerRecord
PointerRecord(TypeIndex ReferentType, PointerKind PK, PointerMode PM, PointerOptions PO, uint8_t Size)
Definition: TypeRecord.h:288
uint16_t
llvm::codeview::StringListRecord::StringListRecord
StringListRecord()=default
llvm::codeview::LabelType::Near
@ Near
llvm::codeview::TypeServer2Record::TypeServer2Record
TypeServer2Record(StringRef GuidStr, uint32_t Age, StringRef Name)
Definition: TypeRecord.h:579
llvm::codeview::MemberFunctionRecord::getParameterCount
uint16_t getParameterCount() const
Definition: TypeRecord.h:191
llvm::codeview::TypeRecord::getKind
TypeRecordKind getKind() const
Definition: TypeRecord.h:124
llvm::codeview::UnionRecord
Definition: TypeRecord.h:498
llvm::codeview::ProcedureRecord::CallConv
CallingConvention CallConv
Definition: TypeRecord.h:164
llvm::codeview::TagRecord::getFieldList
TypeIndex getFieldList() const
Definition: TypeRecord.h:453
llvm::codeview::DataMemberRecord::Name
StringRef Name
Definition: TypeRecord.h:805
llvm::codeview::VFTableShapeRecord::SlotsRef
ArrayRef< VFTableSlotKind > SlotsRef
Definition: TypeRecord.h:570
llvm::codeview::ModifierRecord::getModifiers
ModifierOptions getModifiers() const
Definition: TypeRecord.h:139
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:723
llvm::codeview::PointerMode::PointerToMemberFunction
@ PointerToMemberFunction
llvm::codeview::BitFieldRecord::BitOffset
uint8_t BitOffset
Definition: TypeRecord.h:549
llvm::codeview::VirtualBaseClassRecord::getBaseType
TypeIndex getBaseType() const
Definition: TypeRecord.h:901
llvm::codeview::LabelRecord::Mode
LabelType Mode
Definition: TypeRecord.h:213
llvm::codeview::TagRecord::WinRTKindShift
static const int WinRTKindShift
Definition: TypeRecord.h:428
llvm::codeview::ModifierRecord::ModifierRecord
ModifierRecord(TypeIndex ModifiedType, ModifierOptions Modifiers)
Definition: TypeRecord.h:134
CVRecord.h
llvm::codeview::OneMethodRecord::VFTableOffset
int32_t VFTableOffset
Definition: TypeRecord.h:747
llvm::codeview::DataMemberRecord::DataMemberRecord
DataMemberRecord(MemberAccess Access, TypeIndex Type, uint64_t Offset, StringRef Name)
Definition: TypeRecord.h:792
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:373
llvm::codeview::TagRecord::getOptions
ClassOptions getOptions() const
Definition: TypeRecord.h:452
llvm::codeview::TagRecord::isScoped
bool isScoped() const
Definition: TypeRecord.h:447
llvm::codeview::BitFieldRecord::Type
TypeIndex Type
Definition: TypeRecord.h:547
llvm::codeview::StringIdRecord::StringIdRecord
StringIdRecord(TypeIndex Id, StringRef String)
Definition: TypeRecord.h:599
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:622
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::FunctionOptions::None
@ None
llvm::codeview::VFPtrRecord
Definition: TypeRecord.h:851
llvm::codeview::BuildInfoRecord
Definition: TypeRecord.h:667
llvm::codeview::MemberFuncIdRecord
Definition: TypeRecord.h:217
llvm::codeview::TagRecord::TagRecord
TagRecord(TypeRecordKind Kind, uint16_t MemberCount, ClassOptions Options, TypeIndex FieldList, StringRef Name, StringRef UniqueName)
Definition: TypeRecord.h:420
llvm::codeview::DataMemberRecord::DataMemberRecord
DataMemberRecord(MemberAttributes Attrs, TypeIndex Type, uint64_t Offset, StringRef Name)
Definition: TypeRecord.h:788
llvm::codeview::PointerRecord::isPointerToMember
bool isPointerToMember() const
Definition: TypeRecord.h:320
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:571
llvm::makeArrayRef
ArrayRef< T > makeArrayRef(const T &OneElt)
Construct an ArrayRef from a single element.
Definition: ArrayRef.h:474
llvm::codeview::PointerRecord::MemberInfo
Optional< MemberPointerInfo > MemberInfo
Definition: TypeRecord.h:350
llvm::codeview::ModifierRecord::Modifiers
ModifierOptions Modifiers
Definition: TypeRecord.h:142
llvm::codeview::VFTableShapeRecord::VFTableShapeRecord
VFTableShapeRecord()=default
llvm::codeview::EnumeratorRecord::Name
StringRef Name
Definition: TypeRecord.h:847
llvm::codeview::NestedTypeRecord::Type
TypeIndex Type
Definition: TypeRecord.h:380
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:399
llvm::codeview::OverloadedMethodRecord::getName
StringRef getName() const
Definition: TypeRecord.h:776
llvm::codeview::BuildInfoRecord::getArgs
ArrayRef< TypeIndex > getArgs() const
Definition: TypeRecord.h:675
llvm::codeview::UdtModSourceLineRecord::getLineNumber
uint32_t getLineNumber() const
Definition: TypeRecord.h:657
llvm::codeview::EnumeratorRecord::Value
APSInt Value
Definition: TypeRecord.h:846
llvm::codeview::VFTableShapeRecord::VFTableShapeRecord
VFTableShapeRecord(ArrayRef< VFTableSlotKind > Slots)
Definition: TypeRecord.h:557
llvm::codeview::ClassRecord::getSize
uint64_t getSize() const
Definition: TypeRecord.h:490
llvm::codeview::TypeServer2Record::TypeServer2Record
TypeServer2Record(TypeRecordKind Kind)
Definition: TypeRecord.h:578
llvm::codeview::MemberFunctionRecord::getCallConv
CallingConvention getCallConv() const
Definition: TypeRecord.h:189
llvm::codeview::PointerRecord::isRestrict
bool isRestrict() const
Definition: TypeRecord.h:336
SmallVector.h
llvm::codeview::VirtualBaseClassRecord::VTableIndex
uint64_t VTableIndex
Definition: TypeRecord.h:910
llvm::codeview::StaticDataMemberRecord::StaticDataMemberRecord
StaticDataMemberRecord(MemberAccess Access, TypeIndex Type, StringRef Name)
Definition: TypeRecord.h:816
llvm::codeview::MemberAttributes::MemberAttributes
MemberAttributes()=default
llvm::codeview::StringIdRecord::StringIdRecord
StringIdRecord()=default
llvm::codeview::StringListRecord
Definition: TypeRecord.h:250
llvm::codeview::ArrayRecord
Definition: TypeRecord.h:396
llvm::codeview::BuildInfoRecord::ArgIndices
SmallVector< TypeIndex, MaxArgs > ArgIndices
Definition: TypeRecord.h:687
llvm::codeview::BitFieldRecord::BitFieldRecord
BitFieldRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:538
llvm::codeview::PointerRecord::getMemberInfo
MemberPointerInfo getMemberInfo() const
Definition: TypeRecord.h:318
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:804
llvm::codeview::StringIdRecord::getString
StringRef getString() const
Definition: TypeRecord.h:603
llvm::codeview::VFTableRecord::getName
StringRef getName() const
Definition: TypeRecord.h:707
llvm::codeview::TagRecord::TagRecord
TagRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:419
llvm::codeview::VFPtrRecord::VFPtrRecord
VFPtrRecord()=default
llvm::ArrayRef::size
size_t size() const
size - Get the array size.
Definition: ArrayRef.h:163
llvm::codeview::PointerRecord::getPointerKind
PointerKind getPointerKind() const
Definition: TypeRecord.h:300
llvm::codeview::UdtSourceLineRecord::UdtSourceLineRecord
UdtSourceLineRecord(TypeIndex UDT, TypeIndex SourceFile, uint32_t LineNumber)
Definition: TypeRecord.h:632
llvm::codeview::PrecompRecord::getStartTypeIndex
uint32_t getStartTypeIndex() const
Definition: TypeRecord.h:934
llvm::codeview::CallingConvention
CallingConvention
These values correspond to the CV_call_e enumeration, and are documented at the following locations: ...
Definition: CodeView.h:178
llvm::codeview::LabelRecord
Definition: TypeRecord.h:206
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:148
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:735
llvm::codeview::OneMethodRecord::getVFTableOffset
int32_t getVFTableOffset() const
Definition: TypeRecord.h:737
llvm::codeview::PointerKind
PointerKind
Equivalent to CV_ptrtype_e.
Definition: CodeView.h:336
llvm::codeview::OneMethodRecord::getType
TypeIndex getType() const
Definition: TypeRecord.h:733
llvm::codeview::ArrayRecord::Name
StringRef Name
Definition: TypeRecord.h:413
llvm::codeview::TypeIndex
A 32-bit type reference.
Definition: TypeIndex.h:96
llvm::codeview::EnumRecord::EnumRecord
EnumRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:522
llvm::codeview::PointerRecord::PointerKindMask
static const uint32_t PointerKindMask
Definition: TypeRecord.h:268
llvm::codeview::ArrayRecord::getIndexType
TypeIndex getIndexType() const
Definition: TypeRecord.h:406
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:469
llvm::codeview::ClassRecord
Definition: TypeRecord.h:465
llvm::codeview::VirtualBaseClassRecord::VirtualBaseClassRecord
VirtualBaseClassRecord(TypeRecordKind Kind, MemberAccess Access, TypeIndex BaseType, TypeIndex VBPtrType, uint64_t Offset, uint64_t Index)
Definition: TypeRecord.h:894
llvm::codeview::BuildInfoRecord::BuildInfoRecord
BuildInfoRecord(ArrayRef< TypeIndex > ArgIndices)
Definition: TypeRecord.h:671
llvm::codeview::TypeServer2Record::Age
uint32_t Age
Definition: TypeRecord.h:590
llvm::codeview::EnumRecord::UnderlyingType
TypeIndex UnderlyingType
Definition: TypeRecord.h:531
llvm::codeview::VirtualBaseClassRecord::getVBPtrType
TypeIndex getVBPtrType() const
Definition: TypeRecord.h:902
llvm::codeview::EnumeratorRecord::EnumeratorRecord
EnumeratorRecord()=default
llvm::codeview::EnumeratorRecord::Attrs
MemberAttributes Attrs
Definition: TypeRecord.h:845
llvm::codeview::EnumeratorRecord::getValue
APSInt getValue() const
Definition: TypeRecord.h:842
llvm::codeview::BuildInfoRecord::CommandLine
@ CommandLine
Full canonical command line (maybe -cc1)
Definition: TypeRecord.h:683
llvm::codeview::VFTableRecord::VFTableRecord
VFTableRecord(TypeIndex CompleteClass, TypeIndex OverriddenVFTable, uint32_t VFPtrOffset, StringRef Name, ArrayRef< StringRef > Methods)
Definition: TypeRecord.h:695
llvm::codeview::MemberFunctionRecord::ArgumentList
TypeIndex ArgumentList
Definition: TypeRecord.h:201
Endian.h
llvm::codeview::ArrayRecord::ArrayRecord
ArrayRecord()=default
llvm::codeview::MemberPointerInfo
Definition: TypeRecord.h:100
llvm::codeview::EndPrecompRecord
Definition: TypeRecord.h:946
llvm::codeview::PointerOptions::RValueRefThisPointer
@ RValueRefThisPointer
llvm::codeview::MemberFuncIdRecord::getName
StringRef getName() const
Definition: TypeRecord.h:228
llvm::codeview::EnumeratorRecord::EnumeratorRecord
EnumeratorRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:833
llvm::codeview::UdtSourceLineRecord::getLineNumber
uint32_t getLineNumber() const
Definition: TypeRecord.h:638
llvm::Value
LLVM Value Representation.
Definition: Value.h:74
llvm::codeview::MemberFuncIdRecord::MemberFuncIdRecord
MemberFuncIdRecord(TypeIndex ClassType, TypeIndex FunctionType, StringRef Name)
Definition: TypeRecord.h:221
llvm::codeview::ArrayRecord::getSize
uint64_t getSize() const
Definition: TypeRecord.h:407
llvm::codeview::UdtModSourceLineRecord::UDT
TypeIndex UDT
Definition: TypeRecord.h:660
llvm::codeview::ListContinuationRecord::ListContinuationRecord
ListContinuationRecord(TypeIndex ContinuationIndex)
Definition: TypeRecord.h:919
llvm::codeview::ClassOptions::Nested
@ Nested
llvm::codeview::TagRecord::WinRTKindMask
static const int WinRTKindMask
Definition: TypeRecord.h:429
llvm::codeview::UdtModSourceLineRecord::LineNumber
uint32_t LineNumber
Definition: TypeRecord.h:662
llvm::codeview::BuildInfoRecord::BuildInfoRecord
BuildInfoRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:670
llvm::codeview::OneMethodRecord::Name
StringRef Name
Definition: TypeRecord.h:748
llvm::FunctionType
Class to represent function types.
Definition: DerivedTypes.h:103
llvm::codeview::ArgListRecord::ArgListRecord
ArgListRecord(TypeRecordKind Kind, ArrayRef< TypeIndex > Indices)
Definition: TypeRecord.h:241
llvm::codeview::PrecompRecord::PrecompRecord
PrecompRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:932
llvm::codeview::PrecompRecord::StartTypeIndex
uint32_t StartTypeIndex
Definition: TypeRecord.h:939
llvm::codeview::MethodOptions
MethodOptions
Equivalent to CV_fldattr_t bitfield.
Definition: CodeView.h:284
llvm::codeview::MemberFunctionRecord::getOptions
FunctionOptions getOptions() const
Definition: TypeRecord.h:190
llvm::codeview::PointerRecord::PointerRecord
PointerRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:282
llvm::codeview::VirtualBaseClassRecord::VirtualBaseClassRecord
VirtualBaseClassRecord(TypeRecordKind Kind)
Definition: TypeRecord.h:888
llvm::codeview::LabelRecord::LabelRecord
LabelRecord(LabelType Mode)
Definition: TypeRecord.h:211