Go to the documentation of this file.
21 "Stack",
"GOT",
"JumpTable",
"ConstantPool",
"FixedStack",
22 "GlobalValueCallEntry",
"ExternalSymbolCallEntry"};
31 void PseudoSourceValue::printCustom(
raw_ostream &
O)
const {
35 O <<
"TargetCustom" << Kind;
75 OS <<
"FixedStack" << FI;
117 return &ConstantPoolPSV;
121 return &JumpTablePSV;
126 std::unique_ptr<FixedStackPseudoSourceValue> &V = FSValues[FI];
128 V = std::make_unique<FixedStackPseudoSourceValue>(FI, TII);
134 std::unique_ptr<const GlobalValuePseudoSourceValue> &
E =
135 GlobalCallEntries[GV];
137 E = std::make_unique<GlobalValuePseudoSourceValue>(GV, TII);
143 std::unique_ptr<const ExternalSymbolPseudoSourceValue> &
E =
144 ExternalCallEntries[ES];
146 E = std::make_unique<ExternalSymbolPseudoSourceValue>(ES, TII);
const PseudoSourceValue * getGOT()
Return a pseudo source value referencing the global offset table (or something the like).
This is an optimization pass for GlobalISel generic memory operations.
virtual bool isAliased(const MachineFrameInfo *) const
Test whether the memory pointed to by this PseudoSourceValue may also be pointed to by an LLVM IR Val...
virtual bool mayAlias(const MachineFrameInfo *) const
Return true if the memory pointed to by this PseudoSourceValue can ever alias an LLVM IR Value.
bool mayAlias(const MachineFrameInfo *) const override
Return true if the memory pointed to by this PseudoSourceValue can ever alias an LLVM IR Value.
const PseudoSourceValue * getStack()
Return a pseudo source value referencing the area below the stack frame of a function,...
TargetInstrInfo - Interface to description of machine instruction set.
static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")
const HexagonInstrInfo * TII
PseudoSourceValueManager(const TargetInstrInfo &TII)
This class implements an extremely fast bulk output stream that can only output to a stream.
bool isAliasedObjectIndex(int ObjectIdx) const
Returns true if the specified index corresponds to an object that might be pointed to by an LLVM IR v...
Special value supplied for machine level alias analysis.
bool isConstant(const MachineFrameInfo *MFI) const override
Test whether the memory pointed to by this PseudoSourceValue has a constant value.
bool isAliased(const MachineFrameInfo *) const override
Test whether the memory pointed to by this PseudoSourceValue may also be pointed to by an LLVM IR Val...
bool isAliased(const MachineFrameInfo *MFI) const override
Test whether the memory pointed to by this PseudoSourceValue may also be pointed to by an LLVM IR Val...
bool isConstant(const MachineFrameInfo *) const override
Test whether the memory pointed to by this PseudoSourceValue has a constant value.
PseudoSourceValue(unsigned Kind, const TargetInstrInfo &TII)
virtual ~PseudoSourceValue()
GlobalValuePseudoSourceValue(const GlobalValue *GV, const TargetInstrInfo &TII)
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
CallEntryPseudoSourceValue(unsigned Kind, const TargetInstrInfo &TII)
const PseudoSourceValue * getJumpTable()
Return a pseudo source value referencing a jump table.
const PseudoSourceValue * getGlobalValueCallEntry(const GlobalValue *GV)
const PseudoSourceValue * getFixedStack(int FI)
Return a pseudo source value referencing a fixed stack frame entry, e.g., a spill slot.
MIPS Relocation Principles In there are several elements of the llvm::ISD::NodeType enum that deal with addresses and or relocations These are defined in include llvm Target TargetSelectionDAG td JumpTable
bool mayAlias(const MachineFrameInfo *) const override
Return true if the memory pointed to by this PseudoSourceValue can ever alias an LLVM IR Value.
bool isSpillSlotObjectIndex(int ObjectIdx) const
Returns true if the specified index corresponds to a spill slot.
void printCustom(raw_ostream &OS) const override
Implement printing for PseudoSourceValue.
bool isConstantPool() const
bool isImmutableObjectIndex(int ObjectIdx) const
Returns true if the specified index corresponds to an immutable object.
The MachineFrameInfo class represents an abstract stack frame until prolog/epilog code is inserted.
static const char *const PSVNames[]
const PseudoSourceValue * getExternalSymbolCallEntry(const char *ES)
virtual bool isConstant(const MachineFrameInfo *) const
Test whether the memory pointed to by this PseudoSourceValue has a constant value.
const PseudoSourceValue * getConstantPool()
Return a pseudo source value referencing the constant pool.
ExternalSymbolPseudoSourceValue(const char *ES, const TargetInstrInfo &TII)