1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 11:02:59 +02: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:
George Burgess IV 2016-07-24 07:03:49 +00:00
parent 6fcc59853f
commit e1009d96f5

View File

@ -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;
}
};