diff options
author | Owen Anderson <resistor@mac.com> | 2009-03-13 05:55:11 +0000 |
---|---|---|
committer | Owen Anderson <resistor@mac.com> | 2009-03-13 05:55:11 +0000 |
commit | dd56ab74dc5d05c3eb05814f2009e41b34e1a095 (patch) | |
tree | 31ef4e50cfa4efb10053a46a57c64ee2837fc3a2 /lib/CodeGen/VirtRegMap.h | |
parent | a054e8435d6844d3cbbef02de6a56e2461bdf560 (diff) | |
download | external_llvm-dd56ab74dc5d05c3eb05814f2009e41b34e1a095.zip external_llvm-dd56ab74dc5d05c3eb05814f2009e41b34e1a095.tar.gz external_llvm-dd56ab74dc5d05c3eb05814f2009e41b34e1a095.tar.bz2 |
Convert VirtRegMap to a MachineFunctionPass.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@66870 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/VirtRegMap.h')
-rw-r--r-- | lib/CodeGen/VirtRegMap.h | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/lib/CodeGen/VirtRegMap.h b/lib/CodeGen/VirtRegMap.h index 7627d67..2e9c899 100644 --- a/lib/CodeGen/VirtRegMap.h +++ b/lib/CodeGen/VirtRegMap.h @@ -17,6 +17,7 @@ #ifndef LLVM_CODEGEN_VIRTREGMAP_H #define LLVM_CODEGEN_VIRTREGMAP_H +#include "llvm/CodeGen/MachineFunctionPass.h" #include "llvm/Target/TargetRegisterInfo.h" #include "llvm/ADT/BitVector.h" #include "llvm/ADT/IndexedMap.h" @@ -30,7 +31,7 @@ namespace llvm { class MachineFunction; class TargetInstrInfo; - class VirtRegMap { + class VirtRegMap : public MachineFunctionPass { public: enum { NO_PHYS_REG = 0, @@ -43,9 +44,9 @@ namespace llvm { std::pair<unsigned, ModRef> > MI2VirtMapTy; private: - const TargetInstrInfo &TII; + const TargetInstrInfo *TII; - MachineFunction &MF; + MachineFunction *MF; /// Virt2PhysMap - This is a virtual to physical register /// mapping. Each virtual register is required to have an entry in /// it; even spilled virtual registers (the register mapped to a @@ -125,7 +126,19 @@ namespace llvm { void operator=(const VirtRegMap&); // DO NOT IMPLEMENT public: - explicit VirtRegMap(MachineFunction &mf); + static char ID; + VirtRegMap() : MachineFunctionPass(&ID), Virt2PhysMap(NO_PHYS_REG), + Virt2StackSlotMap(NO_STACK_SLOT), + Virt2ReMatIdMap(NO_STACK_SLOT), Virt2SplitMap(0), + Virt2SplitKillMap(0), ReMatMap(NULL), + ReMatId(MAX_STACK_SLOT+1), + LowSpillSlot(NO_STACK_SLOT), HighSpillSlot(NO_STACK_SLOT) { } + virtual bool runOnMachineFunction(MachineFunction &MF); + + virtual void getAnalysisUsage(AnalysisUsage &AU) const { + AU.setPreservesAll(); + MachineFunctionPass::getAnalysisUsage(AU); + } void grow(); @@ -417,7 +430,7 @@ namespace llvm { /// the folded instruction map and spill point map. void RemoveMachineInstrFromMaps(MachineInstr *MI); - void print(std::ostream &OS) const; + void print(std::ostream &OS, const Module* M = 0) const; void print(std::ostream *OS) const { if (OS) print(*OS); } void dump() const; }; |