24 "Stack",
"GOT",
"JumpTable",
"ConstantPool",
"FixedStack",
25 "GlobalValueCallEntry",
"ExternalSymbolCallEntry"};
31 void PseudoSourceValue::printCustom(
raw_ostream &O)
const {
72 OS <<
"FixedStack" << FI;
109 return &ConstantPoolPSV;
113 return &JumpTablePSV;
117 std::unique_ptr<FixedStackPseudoSourceValue> &V = FSValues[FI];
119 V = llvm::make_unique<FixedStackPseudoSourceValue>(FI);
125 std::unique_ptr<const GlobalValuePseudoSourceValue> &
E =
126 GlobalCallEntries[GV];
128 E = llvm::make_unique<GlobalValuePseudoSourceValue>(GV);
134 std::unique_ptr<const ExternalSymbolPseudoSourceValue> &
E =
135 ExternalCallEntries[ES];
137 E = llvm::make_unique<ExternalSymbolPseudoSourceValue>(ES);
ExternalSymbolPseudoSourceValue(const char *ES)
PseudoSourceValue(PSVKind Kind)
virtual ~PseudoSourceValue()
CallEntryPseudoSourceValue(PSVKind Kind)
The MachineFrameInfo class represents an abstract stack frame until prolog/epilog code is inserted...
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 isImmutableObjectIndex(int ObjectIdx) const
isImmutableObjectIndex - Returns true if the specified index corresponds to an immutable object...
bool isConstant(const MachineFrameInfo *MFI) const override
Test whether the memory pointed to by this PseudoSourceValue has a constant 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 * getFixedStack(int FI)
Return a pseudo source value referencing a fixed stack frame entry, e.g., a spill slot...
static GCRegistry::Add< CoreCLRGC > E("coreclr","CoreCLR-compatible GC")
bool isSpillSlotObjectIndex(int ObjectIdx) const
Returns true if the specified index corresponds to a spill slot.
virtual bool mayAlias(const MachineFrameInfo *) const
Return true if the memory pointed to by this PseudoSourceValue can ever alias an LLVM IR Value...
bool isConstantPool() const
const PseudoSourceValue * getExternalSymbolCallEntry(const char *ES)
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...
GlobalValuePseudoSourceValue(const GlobalValue *GV)
virtual bool isConstant(const MachineFrameInfo *) const
Test whether the memory pointed to by this PseudoSourceValue has a constant value.
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
PseudoSourceValueManager()
Special value supplied for machine level alias analysis.
const PseudoSourceValue * getJumpTable()
Return a pseudo source value referencing a jump table.
const PseudoSourceValue * getGlobalValueCallEntry(const GlobalValue *GV)
const PseudoSourceValue * getGOT()
Return a pseudo source value referencing the global offset table (or something the like)...
static const char *const PSVNames[]
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...
const PseudoSourceValue * getStack()
Return a pseudo source value referencing the area below the stack frame of a function, e.g., the argument space.
bool isConstant(const MachineFrameInfo *) const override
Test whether the memory pointed to by this PseudoSourceValue has a constant value.
void printCustom(raw_ostream &OS) const override
Implement printing for PseudoSourceValue.
This class implements an extremely fast bulk output stream that can only output to a stream...
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 * getConstantPool()
Return a pseudo source value referencing the constant pool.
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...