Add knowledge of phi-def and phi-kill valnos to MachineVerifier's predecessor

valno verification. The "Different value live out of predecessor" check is
incorrect in the case of phi-def valnos, so just skip that check for phi-def
valnos and instead check that all of the valnos for predecessors have phi-kill.
Fixes PR8863.

llvm-svn: 122581
This commit is contained in:
Cameron Zwarich 2010-12-27 05:17:23 +00:00
parent 9e590024f6
commit b95bfe1667
1 changed files with 17 additions and 1 deletions

View File

@ -1146,7 +1146,23 @@ void MachineVerifier::verifyLiveIntervals() {
*OS << "Valno #" << VNI->id << " live into BB#" << MFI->getNumber()
<< '@' << LiveInts->getMBBStartIdx(MFI) << ", not live at "
<< PEnd << " in " << LI << '\n';
} else if (PVNI != VNI) {
continue;
}
if (VNI->isPHIDef() && VNI->def == LiveInts->getMBBStartIdx(MFI)) {
if (!PVNI->hasPHIKill()) {
report("Value live out of predecessor doesn't have PHIKill", MF);
*OS << "Valno #" << PVNI->id << " live out of BB#"
<< (*PI)->getNumber() << '@' << PEnd
<< " doesn't have PHIKill, but Valno #" << VNI->id
<< " is PHIDef and defined at the beginning of BB#"
<< MFI->getNumber() << '@' << LiveInts->getMBBStartIdx(MFI)
<< " in " << LI << '\n';
}
continue;
}
if (PVNI != VNI) {
report("Different value live out of predecessor", *PI);
*OS << "Valno #" << PVNI->id << " live out of BB#"
<< (*PI)->getNumber() << '@' << PEnd