From ff5ce639deb23595b4c4c9b995d6d6d47dda64fb Mon Sep 17 00:00:00 2001 From: Michael Zolotukhin Date: Wed, 27 Jul 2016 23:35:53 +0000 Subject: Add verifyAnalysis for LCSSA. Summary: LCSSAWrapperPass currently doesn't override verifyAnalysis method, so pass manager doesn't verify LCSSA. This patch adds the method so that we start verifying LCSSA between loop passes. Reviewers: chandlerc, sanjoy, hfinkel Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D22888 llvm-svn: 276941 --- llvm/lib/Transforms/Utils/LCSSA.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'llvm/lib') diff --git a/llvm/lib/Transforms/Utils/LCSSA.cpp b/llvm/lib/Transforms/Utils/LCSSA.cpp index 0d5a25b8ebc..1c8990fcc78 100644 --- a/llvm/lib/Transforms/Utils/LCSSA.cpp +++ b/llvm/lib/Transforms/Utils/LCSSA.cpp @@ -315,6 +315,11 @@ struct LCSSAWrapperPass : public FunctionPass { ScalarEvolution *SE; bool runOnFunction(Function &F) override; + void verifyAnalysis() const override { + assert( + all_of(*LI, [&](Loop *L) { return L->isRecursivelyLCSSAForm(*DT); }) && + "LCSSA form is broken!"); + }; /// This transformation requires natural loop information & requires that /// loop preheaders be inserted into the CFG. It maintains both of these, -- cgit v1.2.3