20 if (
auto EC = TypeDeserializer::deserializeAs<RecordT>(CVT,
Record)) {
22 return ClassOptions::None;
24 return Record.getOptions();
33 UdtOptions = getUdtOptions<ClassRecord>(std::move(CVT));
36 UdtOptions = getUdtOptions<EnumRecord>(std::move(CVT));
39 UdtOptions = getUdtOptions<UnionRecord>(std::move(CVT));
44 return (UdtOptions & ClassOptions::ForwardReference) != ClassOptions::None;
60 case SimpleTypeMode::NearPointer:
61 case SimpleTypeMode::FarPointer:
62 case SimpleTypeMode::HugePointer:
64 case SimpleTypeMode::NearPointer32:
65 case SimpleTypeMode::FarPointer32:
67 case SimpleTypeMode::NearPointer64:
69 case SimpleTypeMode::NearPointer128:
72 assert(
false &&
"invalid simple type mode!");
76 case SimpleTypeKind::None:
77 case SimpleTypeKind::Void:
79 case SimpleTypeKind::HResult:
81 case SimpleTypeKind::SByte:
82 case SimpleTypeKind::Byte:
86 case SimpleTypeKind::Int16Short:
87 case SimpleTypeKind::UInt16Short:
88 case SimpleTypeKind::Int16:
89 case SimpleTypeKind::UInt16:
91 case SimpleTypeKind::Int32Long:
92 case SimpleTypeKind::UInt32Long:
93 case SimpleTypeKind::Int32:
94 case SimpleTypeKind::UInt32:
96 case SimpleTypeKind::Int64Quad:
97 case SimpleTypeKind::UInt64Quad:
98 case SimpleTypeKind::Int64:
99 case SimpleTypeKind::UInt64:
101 case SimpleTypeKind::Int128Oct:
102 case SimpleTypeKind::UInt128Oct:
103 case SimpleTypeKind::Int128:
104 case SimpleTypeKind::UInt128:
108 case SimpleTypeKind::Character8:
109 case SimpleTypeKind::SignedCharacter:
110 case SimpleTypeKind::UnsignedCharacter:
111 case SimpleTypeKind::NarrowCharacter:
113 case SimpleTypeKind::WideCharacter:
114 case SimpleTypeKind::Character16:
116 case SimpleTypeKind::Character32:
120 case SimpleTypeKind::Float16:
122 case SimpleTypeKind::Float32:
124 case SimpleTypeKind::Float48:
126 case SimpleTypeKind::Float64:
128 case SimpleTypeKind::Float80:
130 case SimpleTypeKind::Float128:
134 case SimpleTypeKind::Boolean8:
136 case SimpleTypeKind::Boolean16:
138 case SimpleTypeKind::Boolean32:
140 case SimpleTypeKind::Boolean64:
142 case SimpleTypeKind::Boolean128:
146 case SimpleTypeKind::Complex16:
148 case SimpleTypeKind::Complex32:
150 case SimpleTypeKind::Complex64:
152 case SimpleTypeKind::Complex80:
154 case SimpleTypeKind::Complex128:
164 if (
auto EC = TypeDeserializer::deserializeAs<RecordT>(CVT,
Record)) {
172 switch (CVT.
kind()) {
176 return getUdtSize<ClassRecord>(std::move(CVT));
178 return getUdtSize<UnionRecord>(std::move(CVT));
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
This file defines the SmallVector class.
static ClassOptions getUdtOptions(CVType CVT)
static uint64_t getUdtSize(CVType CVT)
This is a 'vector' (really, a variable-sized array), optimized for the case when the array is small.
SimpleTypeKind getSimpleKind() const
SimpleTypeMode getSimpleMode() const
LLVM_ABI bool isUdtForwardRef(CVType CVT)
Given an arbitrary codeview type, determine if it is an LF_STRUCTURE, LF_CLASS, LF_INTERFACE,...
LLVM_ABI void discoverTypeIndices(ArrayRef< uint8_t > RecordData, SmallVectorImpl< TiReference > &Refs)
LLVM_ABI uint64_t getSizeInBytesForTypeRecord(CVType CVT)
Given an arbitrary codeview type, return the type's size in the case of aggregate (LF_STRUCTURE,...
LLVM_ABI uint64_t getSizeInBytesForTypeIndex(TypeIndex TI)
Given an arbitrary codeview type index, determine its size.
LLVM_ABI TypeIndex getModifiedType(const CVType &CVT)
Given a CVType which is assumed to be an LF_MODIFIER, return the TypeIndex of the type that the LF_MO...
This is an optimization pass for GlobalISel generic memory operations.
void consumeError(Error Err)
Consume a Error without doing anything.