Don't try to verify LiveIntervals for physical registers.
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Fri, 6 Aug 2010 18:04:14 +0000 (18:04 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Fri, 6 Aug 2010 18:04:14 +0000 (18:04 +0000)
When a physical register is in use, some alias of that register has a live
interval with a relevant live range. That is the sad state of intervals after
physreg coalescing of subregs, and it is good enough for correct register
allocation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110452 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/MachineVerifier.cpp

index 4b87ba53dadd35ec15b2a8b0b260756b8e5ff41a..c8007b44bfe5d94ebc322481a61f2c65b379a2c7 100644 (file)
@@ -630,8 +630,9 @@ MachineVerifier::visitMachineOperand(const MachineOperand *MO, unsigned MONum) {
       else
         addRegWithSubRegs(regsDefined, Reg);
 
-      // Check LiveInts for a live range.
-      if (LiveInts && !LiveInts->isNotInMIMap(MI)) {
+      // Check LiveInts for a live range, but only for virtual registers.
+      if (LiveInts && TargetRegisterInfo::isVirtualRegister(Reg) &&
+          !LiveInts->isNotInMIMap(MI)) {
         SlotIndex DefIdx = LiveInts->getInstructionIndex(MI).getDefIndex();
         if (LiveInts->hasInterval(Reg)) {
           const LiveInterval &LI = LiveInts->getInterval(Reg);
@@ -642,16 +643,11 @@ MachineVerifier::visitMachineOperand(const MachineOperand *MO, unsigned MONum) {
               *OS << "Valno " << LR->valno->id << " is not defined at "
                   << DefIdx << " in " << LI << '\n';
             }
-            if (LR->start != DefIdx) {
-              report("Live range doesn't start at def", MO, MONum);
-              LR->print(*OS);
-              *OS << " should start at " << DefIdx << " in " << LI << '\n';
-            }
           } else {
             report("No live range at def", MO, MONum);
             *OS << DefIdx << " is not live in " << LI << '\n';
           }
-        } else if (TargetRegisterInfo::isVirtualRegister(Reg)) {
+        } else {
           report("Virtual register has no Live interval", MO, MONum);
         }
       }