14 #ifndef LLVM_CODEGEN_PSEUDOSOURCEVALUE_H
15 #define LLVM_CODEGEN_PSEUDOSOURCEVALUE_H
25 class MachineFrameInfo;
26 class MachineMemOperand;
29 raw_ostream &
operator<<(raw_ostream &OS,
const MachineMemOperand &MMO);
30 class PseudoSourceValue;
31 raw_ostream &
operator<<(raw_ostream &OS,
const PseudoSourceValue* PSV);
153 std::map<int, std::unique_ptr<FixedStackPseudoSourceValue>> FSValues;
157 std::unique_ptr<const GlobalValuePseudoSourceValue>>
ExternalSymbolPseudoSourceValue(const char *ES)
PseudoSourceValue(PSVKind Kind)
virtual ~PseudoSourceValue()
FixedStackPseudoSourceValue(int FI)
CallEntryPseudoSourceValue(PSVKind Kind)
A description of a memory reference used in the backend.
unsigned getTargetCustom() const
The MachineFrameInfo class represents an abstract stack frame until prolog/epilog code is inserted...
const char * getSymbol() const
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 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...
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)
GlobalValuePseudoSourceValue(const GlobalValue *GV)
virtual bool isConstant(const MachineFrameInfo *) const
Test whether the memory pointed to by this PseudoSourceValue has a constant value.
static bool classof(const PseudoSourceValue *V)
PseudoSourceValueManager()
int getFrameIndex() const
StringMap - This is an unconventional map that is specialized for handling keys that are "strings"...
A specialized pseudo source value for holding external symbol values.
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)...
A specialized pseudo soruce value for holding GlobalValue values.
static bool classof(const PseudoSourceValue *V)
static bool classof(const PseudoSourceValue *V)
raw_ostream & operator<<(raw_ostream &OS, const APInt &I)
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...
Manages creation of pseudo source values.
A specialized PseudoSourceValue for holding FixedStack values, which must include a frame index...
bool mayAlias(const MachineFrameInfo *) const override
Return true if the memory pointed to by this PseudoSourceValue can ever alias an LLVM IR Value...
const GlobalValue * getValue() const
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...