Check for extra kill flags on live-out virtual registers.

This would previously get reported as the misleading "Virtual register
def doesn't dominate all uses."

llvm-svn: 159460
This commit is contained in:
Jakob Stoklund Olesen 2012-06-29 21:00:00 +00:00
parent a33b078e73
commit da9ea1d6bc
1 changed files with 14 additions and 0 deletions

View File

@ -1049,6 +1049,20 @@ void MachineVerifier::visitMachineFunctionAfter() {
// Now check liveness info if available
calcRegsRequired();
// Check for killed virtual registers that should be live out.
for (MachineFunction::const_iterator MFI = MF->begin(), MFE = MF->end();
MFI != MFE; ++MFI) {
BBInfo &MInfo = MBBInfoMap[MFI];
for (RegSet::iterator
I = MInfo.vregsRequired.begin(), E = MInfo.vregsRequired.end(); I != E;
++I)
if (MInfo.regsKilled.count(*I)) {
report("Virtual register killed in block, but needed live out.", MFI);
*OS << "Virtual register " << PrintReg(*I)
<< " is used after the block.\n";
}
}
if (!MF->empty()) {
BBInfo &MInfo = MBBInfoMap[&MF->front()];
for (RegSet::iterator