mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-05 13:09:10 +00:00
Verify that the CFG hasn't changed during invalidate().
The MachineTraceMetrics analysis must be invalidated before modifying the CFG. This will catch some of the violations of that rule. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160969 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
f192b507a3
commit
ee31ae12e8
@ -420,10 +420,15 @@ MachineTraceMetrics::Ensemble::invalidate(const MachineBasicBlock *BadMBB) {
|
||||
for (MachineBasicBlock::const_pred_iterator
|
||||
I = MBB->pred_begin(), E = MBB->pred_end(); I != E; ++I) {
|
||||
TraceBlockInfo &TBI = BlockInfo[(*I)->getNumber()];
|
||||
if (TBI.hasValidHeight() && TBI.Succ == MBB) {
|
||||
if (!TBI.hasValidHeight())
|
||||
continue;
|
||||
if (TBI.Succ == MBB) {
|
||||
TBI.invalidateHeight();
|
||||
WorkList.push_back(*I);
|
||||
continue;
|
||||
}
|
||||
// Verify that TBI.Succ is actually a *I successor.
|
||||
assert((!TBI.Succ || (*I)->isSuccessor(TBI.Succ)) && "CFG changed");
|
||||
}
|
||||
} while (!WorkList.empty());
|
||||
}
|
||||
@ -441,10 +446,15 @@ MachineTraceMetrics::Ensemble::invalidate(const MachineBasicBlock *BadMBB) {
|
||||
for (MachineBasicBlock::const_succ_iterator
|
||||
I = MBB->succ_begin(), E = MBB->succ_end(); I != E; ++I) {
|
||||
TraceBlockInfo &TBI = BlockInfo[(*I)->getNumber()];
|
||||
if (TBI.hasValidDepth() && TBI.Pred == MBB) {
|
||||
if (!TBI.hasValidDepth())
|
||||
continue;
|
||||
if (TBI.Pred == MBB) {
|
||||
TBI.invalidateDepth();
|
||||
WorkList.push_back(*I);
|
||||
continue;
|
||||
}
|
||||
// Verify that TBI.Pred is actually a *I predecessor.
|
||||
assert((!TBI.Pred || (*I)->isPredecessor(TBI.Pred)) && "CFG changed");
|
||||
}
|
||||
} while (!WorkList.empty());
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user