mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 12:12:47 +01:00
[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
6fcc59853f
commit
e1009d96f5
@ -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
Block a user