aboutsummaryrefslogtreecommitdiffstats
path: root/include/llvm/CodeGen/MachineFunction.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/llvm/CodeGen/MachineFunction.h')
-rw-r--r--include/llvm/CodeGen/MachineFunction.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/include/llvm/CodeGen/MachineFunction.h b/include/llvm/CodeGen/MachineFunction.h
index 4f2f8d8..f4a5180 100644
--- a/include/llvm/CodeGen/MachineFunction.h
+++ b/include/llvm/CodeGen/MachineFunction.h
@@ -10,6 +10,7 @@
#define LLVM_CODEGEN_MACHINEFUNCTION_H
#include "llvm/CodeGen/MachineBasicBlock.h"
+#include "llvm/CodeGen/SSARegMap.h"
#include "llvm/Annotation.h"
#include "Support/HashExtras.h"
#include "Support/hash_set"
@@ -46,6 +47,9 @@ class MachineFunction : private Annotation {
bool compiledAsLeaf;
bool spillsAreaFrozen;
bool automaticVarsAreaFrozen;
+
+ // Keeping track of mapping from SSA values to registers
+ SSARegMap *SSARegMapping;
public:
MachineFunction(const Function *Fn, const TargetMachine& target);
@@ -86,6 +90,15 @@ public:
static void destruct(const Function *F);
static MachineFunction& get(const Function *F);
+ // Getting and storing SSARegMap information
+ const TargetRegisterClass* getRegClass(unsigned Reg) {
+ return SSARegMapping->getRegClass(Reg);
+ }
+ void addRegMap(unsigned Reg, const TargetRegisterClass *RegClass) {
+ SSARegMapping->addRegMap(Reg, RegClass);
+ }
+ void clearSSARegMap() { delete SSARegMapping; }
+
// Provide accessors for the MachineBasicBlock list...
typedef iplist<MachineBasicBlock> BasicBlockListType;
typedef BasicBlockListType::iterator iterator;