OSDN Git Service

Add verifyAnalysis for LCSSA.
authorMichael Zolotukhin <mzolotukhin@apple.com>
Wed, 27 Jul 2016 23:35:53 +0000 (23:35 +0000)
committerMichael Zolotukhin <mzolotukhin@apple.com>
Wed, 27 Jul 2016 23:35:53 +0000 (23:35 +0000)
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

index 0d5a25b..1c8990f 100644 (file)
@@ -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,