diff options
author | George Burgess IV <george.burgess.iv@gmail.com> | 2016-07-24 07:03:49 +0000 |
---|---|---|
committer | George Burgess IV <george.burgess.iv@gmail.com> | 2016-07-24 07:03:49 +0000 |
commit | 93ea19b9a63f6c3f5d60d211b518051e2c714803 (patch) | |
tree | 4b234ad1dbe73b003ae007994381ab0662547a6a /llvm/lib/Transforms | |
parent | 0e100998fcd25917f3e517d832e1a2c3790a6367 (diff) | |
download | bcm5719-llvm-93ea19b9a63f6c3f5d60d211b518051e2c714803.tar.gz bcm5719-llvm-93ea19b9a63f6c3f5d60d211b518051e2c714803.zip |
[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
Diffstat (limited to 'llvm/lib/Transforms')
-rw-r--r-- | llvm/lib/Transforms/Utils/MemorySSA.cpp | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/llvm/lib/Transforms/Utils/MemorySSA.cpp b/llvm/lib/Transforms/Utils/MemorySSA.cpp index e304084251d..13ddd835c4d 100644 --- a/llvm/lib/Transforms/Utils/MemorySSA.cpp +++ b/llvm/lib/Transforms/Utils/MemorySSA.cpp @@ -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; } }; |