From 79e702086510fa7b52de178354eab34a7f641025 Mon Sep 17 00:00:00 2001 From: Michael Zolotukhin Date: Wed, 27 Jul 2016 23:35:53 +0000 Subject: [PATCH] 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 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@276941 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Transforms/Utils/LCSSA.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/Transforms/Utils/LCSSA.cpp b/lib/Transforms/Utils/LCSSA.cpp index 0d5a25b8ebc..1c8990fcc78 100644 --- a/lib/Transforms/Utils/LCSSA.cpp +++ b/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, -- 2.11.0