Go to the documentation of this file.
84 case SimpleTypeMode::NearPointer:
85 case SimpleTypeMode::FarPointer:
86 case SimpleTypeMode::HugePointer:
88 case SimpleTypeMode::NearPointer32:
89 case SimpleTypeMode::FarPointer32:
91 case SimpleTypeMode::NearPointer64:
93 case SimpleTypeMode::NearPointer128:
96 assert(
false &&
"invalid simple type mode!");
111 return Record->getMode() == PointerMode::LValueReference;
117 return Record->getMode() == PointerMode::RValueReference;
123 return Record->getMode() == PointerMode::PointerToDataMember;
129 return Record->getMode() == PointerMode::PointerToMemberFunction;
141 return (
Record->getOptions() & PointerOptions::Restrict) !=
148 return (
Record->getOptions() & PointerOptions::Volatile) !=
155 return (
Record->getOptions() & PointerOptions::Unaligned) !=
170 PointerToMemberRepresentation::SingleInheritanceData,
171 PointerToMemberRepresentation::SingleInheritanceFunction);
179 PointerToMemberRepresentation::MultipleInheritanceData,
180 PointerToMemberRepresentation::MultipleInheritanceFunction);
188 PointerToMemberRepresentation::VirtualInheritanceData,
189 PointerToMemberRepresentation::VirtualInheritanceFunction);
void dump(raw_ostream &OS, int Indent, PdbSymbolIdField ShowIdFields, PdbSymbolIdField RecurseIdFields) const override
bool isRestrictedType() const override
This is an optimization pass for GlobalISel generic memory operations.
bool isReference() const override
bool isPointerToMemberFunction() const override
NativeTypePointer(NativeSession &Session, SymIndexId Id, codeview::TypeIndex TI)
PDB_SymType
These values correspond to the SymTagEnum enumeration, and are documented here: https://msdn....
bool isPointerToDataMember() const override
bool isRValueReference() const override
SymIndexId getTypeId() const override
TypeIndex makeDirect() const
SymIndexId getClassParentId() const override
This might compile to this xmm1 xorps xmm0 movss xmm0 ret Now consider if the code caused xmm1 to get spilled This might produce this xmm1 movaps xmm0 movaps xmm1 movss xmm0 ret since the reload is only used by these we could fold it into the producing something like xmm1 movaps xmm0 ret saving two instructions The basic idea is that a reload from a spill if only one byte chunk is bring in zeros the one element instead of elements This can be used to simplify a variety of shuffle where the elements are fixed zeros This code generates ugly probably due to costs being off or< 4 x float > * P2
This class implements an extremely fast bulk output stream that can only output to a stream.
bool isMultipleInheritance() const override
void dumpSymbolField(raw_ostream &OS, StringRef Name, T Value, int Indent)
Class to represent pointers.
void dumpSymbolIdField(raw_ostream &OS, StringRef Name, SymIndexId Value, int Indent, const IPDBSession &Session, PdbSymbolIdField FieldId, PdbSymbolIdField ShowFlags, PdbSymbolIdField RecurseFlags)
static bool isInheritanceKind(const MemberPointerInfo &MPI, PointerToMemberRepresentation P1, PointerToMemberRepresentation P2)
SymbolCache & getSymbolCache()
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
OutputIt move(R &&Range, OutputIt Out)
Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.
bool isVirtualInheritance() const override
SimpleTypeMode getSimpleMode() const
bool isVolatileType() const override
PointerToMemberRepresentation
Equivalent to CV_pmtype_e.
uint64_t getLength() const override
SymIndexId findSymbolByTypeIndex(codeview::TypeIndex TI) const
bool isConstType() const override
constexpr std::nullopt_t None
bool isUnalignedType() const override
bool isMemberPointer() const
PointerToMemberRepresentation getRepresentation() const
void dump(raw_ostream &OS, int Indent, PdbSymbolIdField ShowIdFields, PdbSymbolIdField RecurseIdFields) const override
bool isSingleInheritance() const override
~NativeTypePointer() override