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(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
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
bool isUdtForwardRef(CVType CVT)
Given an arbitrary codeview type, determine if it is an LF_STRUCTURE, LF_CLASS, LF_INTERFACE,...
void discoverTypeIndices(ArrayRef< uint8_t > RecordData, SmallVectorImpl< TiReference > &Refs)
uint64_t getSizeInBytesForTypeRecord(CVType CVT)
Given an arbitrary codeview type, return the type's size in the case of aggregate (LF_STRUCTURE,...
uint64_t getSizeInBytesForTypeIndex(TypeIndex TI)
Given an arbitrary codeview type index, determine its size.
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.