Implement assignment correctness verification.
authorAlkis Evlogimenos <alkis@evlogimenos.com>
Wed, 18 Feb 2004 23:15:23 +0000 (23:15 +0000)
committerAlkis Evlogimenos <alkis@evlogimenos.com>
Wed, 18 Feb 2004 23:15:23 +0000 (23:15 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11609 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/RegAllocLinearScan.cpp

index 01404101f2d682da8b461f427d67835a8bd8316d..679122063a57eb874e3c77b3b4a55a630c178bf0 100644 (file)
@@ -206,6 +206,19 @@ namespace {
                 std::cerr << mri_->getName(reg) << '\n';
             }
         }
+
+        void verifyAssignment() const {
+            for (Virt2PhysMap::const_iterator i = v2pMap_.begin(),
+                     e = v2pMap_.end(); i != e; ++i)
+                for (Virt2PhysMap::const_iterator i2 = i; i2 != e; ++i2)
+                    if (mri_->areAliases(i->second, i2->second)) {
+                        const LiveIntervals::Interval
+                            &in = li_->getInterval(i->second),
+                            &in2 = li_->getInterval(i2->second);
+                        assert(!in.overlaps(in2) &&
+                               "overlapping intervals for same register!");
+                    }
+        }
     };
 }
 
@@ -290,6 +303,8 @@ bool RA::runOnMachineFunction(MachineFunction &fn) {
 
     DEBUG(printVirtRegAssignment());
     DEBUG(std::cerr << "finished register allocation\n");
+    // this is a slow operations do not uncomment
+    // DEBUG(verifyAssignment());
 
     const TargetInstrInfo& tii = tm_->getInstrInfo();