split scalarization out to its own file.
[oota-llvm.git] / lib / CodeGen / PhysRegTracker.h
index d2ff82a237d59b7a59b9caa6a505ced7c1cd7f98..2717e337687a81bbd9eb4ede75b60bbddcc44219 100644 (file)
 #ifndef LLVM_CODEGEN_PHYSREGTRACKER_H
 #define LLVM_CODEGEN_PHYSREGTRACKER_H
 
-#include "llvm/CodeGen/MachineFunction.h"
-#include <vector>
+#include "llvm/Target/MRegisterInfo.h"
 
 namespace llvm {
 
     class PhysRegTracker {
-    private:
         const MRegisterInfo* mri_;
         std::vector<unsigned> regUse_;
 
     public:
-        PhysRegTracker(MachineFunction* mf)
-            : mri_(mf ? mf->getTarget().getRegisterInfo() : NULL) {
-            if (mri_) {
-                regUse_.assign(mri_->getNumRegs(), 0);
-            }
+        explicit PhysRegTracker(const MRegisterInfo& mri)
+            : mri_(&mri),
+              regUse_(mri_->getNumRegs(), 0) {
         }
 
         PhysRegTracker(const PhysRegTracker& rhs)
@@ -50,10 +46,8 @@ namespace llvm {
             assert(MRegisterInfo::isPhysicalRegister(physReg) &&
                    "should be physical register!");
             ++regUse_[physReg];
-            for (const unsigned* as = mri_->getAliasSet(physReg); *as; ++as) {
-                physReg = *as;
-                ++regUse_[physReg];
-            }
+            for (const unsigned* as = mri_->getAliasSet(physReg); *as; ++as)
+                ++regUse_[*as];
         }
 
         void delRegUse(unsigned physReg) {
@@ -62,9 +56,8 @@ namespace llvm {
             assert(regUse_[physReg] != 0);
             --regUse_[physReg];
             for (const unsigned* as = mri_->getAliasSet(physReg); *as; ++as) {
-                physReg = *as;
-                assert(regUse_[physReg] != 0);
-                --regUse_[physReg];
+                assert(regUse_[*as] != 0);
+                --regUse_[*as];
             }
         }