Make FixedStackPseudoSourceValue a first-class PseudoSourceValue by

making it visible to clients and adding LLVM-style cast capability.
This will be used by AsmPrinter to determine when to emit spill comments
for an instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@87019 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
David Greene
2009-11-12 20:25:07 +00:00
parent 1251443929
commit cf62632d83
2 changed files with 36 additions and 24 deletions
+2 -23
View File
@@ -43,35 +43,14 @@ static const char *const PSVNames[] = {
// Eventually these should be uniqued on LLVMContext rather than in a managed
// static. For now, we can safely use the global context for the time being to
// squeak by.
PseudoSourceValue::PseudoSourceValue() :
PseudoSourceValue::PseudoSourceValue(enum ValueTy Subclass) :
Value(Type::getInt8PtrTy(getGlobalContext()),
PseudoSourceValueVal) {}
Subclass) {}
void PseudoSourceValue::printCustom(raw_ostream &O) const {
O << PSVNames[this - *PSVs];
}
namespace {
/// FixedStackPseudoSourceValue - A specialized PseudoSourceValue
/// for holding FixedStack values, which must include a frame
/// index.
class FixedStackPseudoSourceValue : public PseudoSourceValue {
const int FI;
public:
explicit FixedStackPseudoSourceValue(int fi) : FI(fi) {}
virtual bool isConstant(const MachineFrameInfo *MFI) const;
virtual bool isAliased(const MachineFrameInfo *MFI) const;
virtual bool mayAlias(const MachineFrameInfo *) const;
virtual void printCustom(raw_ostream &OS) const {
OS << "FixedStack" << FI;
}
};
}
static ManagedStatic<std::map<int, const PseudoSourceValue *> > FSValues;
const PseudoSourceValue *PseudoSourceValue::getFixedStack(int FI) {