forked from OSchip/llvm-project
[MSSA] Make EXPENSIVE_CHECKS check more.
checkClobberSanity will now be run for all results of `ClobberWalk`, instead of just the crazy phi-optimized ones. This can help us catch cases where our cache is being wonky. llvm-svn: 276553
This commit is contained in:
parent
0e100998fc
commit
93ea19b9a6
|
@ -236,9 +236,6 @@ checkClobberSanity(MemoryAccess *Start, MemoryAccess *ClobberAt,
|
|||
return;
|
||||
}
|
||||
|
||||
assert((isa<MemoryPhi>(Start) || Start != ClobberAt) &&
|
||||
"Start can't clobber itself!");
|
||||
|
||||
bool FoundClobber = false;
|
||||
DenseSet<MemoryAccessPair> VisitedPhis;
|
||||
SmallVector<MemoryAccessPair, 8> Worklist;
|
||||
|
@ -818,22 +815,23 @@ public:
|
|||
// Fast path for the overly-common case (no crazy phi optimization
|
||||
// necessary)
|
||||
UpwardsWalkResult WalkResult = walkToPhiOrClobber(FirstDesc);
|
||||
MemoryAccess *Result;
|
||||
if (WalkResult.IsKnownClobber) {
|
||||
cacheDefPath(FirstDesc, WalkResult.Result);
|
||||
return WalkResult.Result;
|
||||
Result = WalkResult.Result;
|
||||
} else {
|
||||
OptznResult OptRes = tryOptimizePhi(cast<MemoryPhi>(FirstDesc.Last),
|
||||
Current, Q.StartingLoc);
|
||||
verifyOptResult(OptRes);
|
||||
cacheOptResult(OptRes);
|
||||
resetPhiOptznState();
|
||||
Result = OptRes.PrimaryClobber.Clobber;
|
||||
}
|
||||
|
||||
OptznResult OptRes =
|
||||
tryOptimizePhi(cast<MemoryPhi>(FirstDesc.Last), Current, Q.StartingLoc);
|
||||
verifyOptResult(OptRes);
|
||||
cacheOptResult(OptRes);
|
||||
resetPhiOptznState();
|
||||
|
||||
#ifdef EXPENSIVE_CHECKS
|
||||
checkClobberSanity(Current, OptRes.PrimaryClobber.Clobber, Q.StartingLoc,
|
||||
MSSA, Q, AA);
|
||||
checkClobberSanity(Current, Result, Q.StartingLoc, MSSA, Q, AA);
|
||||
#endif
|
||||
return OptRes.PrimaryClobber.Clobber;
|
||||
return Result;
|
||||
}
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue