forked from OSchip/llvm-project
[NewPM] Verify LoopAnalysisResults after a loop pass
All loop passes should preserve all analyses in LoopAnalysisResults. Add checks for those. Note that due to PR44815, we don't check LAR's ScalarEvolution. Apparently calling SE.verify() can change its results. Only verify MSSA when VerifyMemorySSA, normally it's very expensive. Reviewed By: asbirlea Differential Revision: https://reviews.llvm.org/D98820
This commit is contained in:
parent
a531bbd9ad
commit
94c269baf5
|
@ -14,6 +14,7 @@
|
|||
#include "llvm/Analysis/MemorySSA.h"
|
||||
#include "llvm/Analysis/ScalarEvolutionAliasAnalysis.h"
|
||||
#include "llvm/Analysis/TargetLibraryInfo.h"
|
||||
#include "llvm/Support/Debug.h"
|
||||
#include "llvm/Support/TimeProfiler.h"
|
||||
|
||||
using namespace llvm;
|
||||
|
@ -291,8 +292,15 @@ PreservedAnalyses FunctionToLoopPassAdaptor::run(Function &F,
|
|||
else
|
||||
PI.runAfterPass<Loop>(*Pass, *L, PassPA);
|
||||
|
||||
// FIXME: We should verify the set of analyses relevant to Loop passes
|
||||
// are preserved.
|
||||
#ifndef NDEBUG
|
||||
// LoopAnalysisResults should always be valid.
|
||||
// Note that we don't LAR.SE.verify() because that can change observed SE
|
||||
// queries. See PR44815.
|
||||
LAR.DT.verify();
|
||||
LAR.LI.verify(LAR.DT);
|
||||
if (LAR.MSSA && VerifyMemorySSA)
|
||||
LAR.MSSA->verifyMemorySSA();
|
||||
#endif
|
||||
|
||||
// If the loop hasn't been deleted, we need to handle invalidation here.
|
||||
if (!Updater.skipCurrentLoop())
|
||||
|
|
Loading…
Reference in New Issue