aboutsummaryrefslogtreecommitdiffstats
path: root/include/llvm/CodeGen/PseudoSourceValue.h
diff options
context:
space:
mode:
authorDavid Greene <greened@obbligato.org>2009-11-12 20:25:07 +0000
committerDavid Greene <greened@obbligato.org>2009-11-12 20:25:07 +0000
commitcf62632d835313b720b68669bd1e5682d4d52d0d (patch)
treecb0b6c90f2c7f0856586b7de387eca12f8aea130 /include/llvm/CodeGen/PseudoSourceValue.h
parent1251443929a256c833717e1030c368d3b6e4cb7c (diff)
downloadexternal_llvm-cf62632d835313b720b68669bd1e5682d4d52d0d.zip
external_llvm-cf62632d835313b720b68669bd1e5682d4d52d0d.tar.gz
external_llvm-cf62632d835313b720b68669bd1e5682d4d52d0d.tar.bz2
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
Diffstat (limited to 'include/llvm/CodeGen/PseudoSourceValue.h')
-rw-r--r--include/llvm/CodeGen/PseudoSourceValue.h35
1 files changed, 34 insertions, 1 deletions
diff --git a/include/llvm/CodeGen/PseudoSourceValue.h b/include/llvm/CodeGen/PseudoSourceValue.h
index 26392f5..1a1dde9 100644
--- a/include/llvm/CodeGen/PseudoSourceValue.h
+++ b/include/llvm/CodeGen/PseudoSourceValue.h
@@ -15,6 +15,7 @@
#define LLVM_CODEGEN_PSEUDOSOURCEVALUE_H
#include "llvm/Value.h"
+#include "llvm/Support/raw_ostream.h"
namespace llvm {
class MachineFrameInfo;
@@ -32,7 +33,7 @@ namespace llvm {
virtual void printCustom(raw_ostream &O) const;
public:
- PseudoSourceValue();
+ PseudoSourceValue(enum ValueTy Subclass = PseudoSourceValueVal);
/// isConstant - Test whether the memory pointed to by this
/// PseudoSourceValue has a constant value.
@@ -76,6 +77,38 @@ namespace llvm {
/// constant, this doesn't need to identify a specific jump table.
static const PseudoSourceValue *getJumpTable();
};
+
+ /// 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) :
+ PseudoSourceValue(FixedStackPseudoSourceValueVal), FI(fi) {}
+
+ /// classof - Methods for support type inquiry through isa, cast, and
+ /// dyn_cast:
+ ///
+ static inline bool classof(const FixedStackPseudoSourceValue *) {
+ return true;
+ }
+ static inline bool classof(const Value *V) {
+ return V->getValueID() == FixedStackPseudoSourceValueVal;
+ }
+
+ 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;
+ }
+
+ int getFrameIndex(void) const { return FI; }
+ };
} // End llvm namespace
#endif