Revert "Introduce RegionInfoAnalysis, which compute Region Tree in the new PassManage...
authorHongbin Zheng <etherzhhb@gmail.com>
Thu, 25 Feb 2016 16:45:37 +0000 (16:45 +0000)
committerHongbin Zheng <etherzhhb@gmail.com>
Thu, 25 Feb 2016 16:45:37 +0000 (16:45 +0000)
This reverts commit 8228b4d374edeb4cc0c5fddf6e1ab876918ee126.

llvm-svn: 261889

22 files changed:
llvm/include/llvm/Analysis/RegionInfo.h
llvm/lib/Analysis/RegionInfo.cpp
llvm/lib/Passes/PassBuilder.cpp
llvm/lib/Passes/PassRegistry.def
llvm/test/Analysis/RegionInfo/20100809_bb_not_in_domtree.ll
llvm/test/Analysis/RegionInfo/block_sort.ll
llvm/test/Analysis/RegionInfo/cond_loop.ll
llvm/test/Analysis/RegionInfo/condition_complicated.ll
llvm/test/Analysis/RegionInfo/condition_complicated_2.ll
llvm/test/Analysis/RegionInfo/condition_forward_edge.ll
llvm/test/Analysis/RegionInfo/condition_same_exit.ll
llvm/test/Analysis/RegionInfo/condition_simple.ll
llvm/test/Analysis/RegionInfo/exit_in_condition.ll
llvm/test/Analysis/RegionInfo/loop_with_condition.ll
llvm/test/Analysis/RegionInfo/loops_1.ll
llvm/test/Analysis/RegionInfo/loops_2.ll
llvm/test/Analysis/RegionInfo/mix_1.ll
llvm/test/Analysis/RegionInfo/nested_loops.ll
llvm/test/Analysis/RegionInfo/next.ll
llvm/test/Analysis/RegionInfo/paper.ll
llvm/test/Analysis/RegionInfo/two_loops_same_header.ll
llvm/test/Analysis/RegionInfo/unreachable_bb.ll

index 394a503..4988386 100644 (file)
 
 namespace llvm {
 
-// FIXME: Replace this brittle forward declaration with the include of the new
-// PassManager.h when doing so doesn't break the PassManagerBuilder.
-template <typename IRUnitT> class AnalysisManager;
-class PreservedAnalyses;
-
 // Class to be specialized for different users of RegionInfo
 // (i.e. BasicBlocks or MachineBasicBlocks). This is only to avoid needing to
 // pass around an unreasonable number of template parameters.
@@ -681,22 +676,6 @@ class RegionInfoBase {
   RegionInfoBase(const RegionInfoBase &) = delete;
   const RegionInfoBase &operator=(const RegionInfoBase &) = delete;
 
-  RegionInfoBase(RegionInfoBase &&Arg)
-    : DT(std::move(Arg.DT)), PDT(std::move(Arg.PDT)), DF(std::move(Arg.DF)),
-      TopLevelRegion(std::move(Arg.TopLevelRegion)),
-      BBtoRegion(std::move(Arg.BBtoRegion)) {
-    Arg.wipe();
-  }
-  RegionInfoBase &operator=(RegionInfoBase &&RHS) {
-    DT = std::move(RHS.DT);
-    PDT = std::move(RHS.PDT);
-    DF = std::move(RHS.DF);
-    TopLevelRegion = std::move(RHS.TopLevelRegion);
-    BBtoRegion = std::move(RHS.BBtoRegion);
-    RHS.wipe();
-    return *this;
-  }
-
   DomTreeT *DT;
   PostDomTreeT *PDT;
   DomFrontierT *DF;
@@ -708,18 +687,6 @@ private:
   /// Map every BB to the smallest region, that contains BB.
   BBtoRegionMap BBtoRegion;
 
-  /// \brief Wipe this region tree's state without releasing any resources.
-  ///
-  /// This is essentially a post-move helper only. It leaves the object in an
-  /// assignable and destroyable state, but otherwise invalid.
-  void wipe() {
-    DT = nullptr;
-    PDT = nullptr;
-    DF = nullptr;
-    TopLevelRegion = nullptr;
-    BBtoRegion.clear();
-  }
-
   // Check whether the entries of BBtoRegion for the BBs of region
   // SR are correct. Triggers an assertion if not. Calls itself recursively for
   // subregions.
@@ -869,19 +836,10 @@ public:
 
 class RegionInfo : public RegionInfoBase<RegionTraits<Function>> {
 public:
-  typedef RegionInfoBase<RegionTraits<Function>> Base;
-
   explicit RegionInfo();
 
   ~RegionInfo() override;
 
-  RegionInfo(RegionInfo &&Arg)
-    : Base(std::move(static_cast<Base &>(Arg))) {}
-  RegionInfo &operator=(RegionInfo &&RHS) {
-    Base::operator=(std::move(static_cast<Base &>(RHS)));
-    return *this;
-  }
-
   // updateStatistics - Update statistic about created regions.
   void updateStatistics(Region *R) final;
 
@@ -926,40 +884,6 @@ public:
   //@}
 };
 
-/// \brief Analysis pass that exposes the \c RegionInfo for a function.
-class RegionInfoAnalysis {
-  static char PassID;
-
-public:
-  typedef RegionInfo Result;
-
-  /// \brief Opaque, unique identifier for this analysis pass.
-  static void *ID() { return (void *)&PassID; }
-
-  /// \brief Provide a name for the analysis for debugging and logging.
-  static StringRef name() { return "RegionInfoAnalysis"; }
-
-  RegionInfo run(Function &F, AnalysisManager<Function> *AM);
-};
-
-/// \brief Printer pass for the \c RegionInfo.
-class RegionInfoPrinterPass {
-  raw_ostream &OS;
-
-public:
-  explicit RegionInfoPrinterPass(raw_ostream &OS);
-  PreservedAnalyses run(Function &F, AnalysisManager<Function> *AM);
-
-  static StringRef name() { return "RegionInfoPrinterPass"; }
-};
-
-/// \brief Verifier pass for the \c RegionInfo.
-struct RegionInfoVerifierPass {
-  PreservedAnalyses run(Function &F, AnalysisManager<Function> *AM);
-
-  static StringRef name() { return "RegionInfoVerifierPass"; }
-};
-
 template <>
 template <>
 inline BasicBlock *
index 72b3217..b4ba5af 100644 (file)
@@ -15,7 +15,6 @@
 #include "llvm/Analysis/LoopInfo.h"
 #include "llvm/Analysis/RegionInfoImpl.h"
 #include "llvm/Analysis/RegionIterator.h"
-#include "llvm/IR/PassManager.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/Debug.h"
 #include "llvm/Support/ErrorHandling.h"
@@ -181,36 +180,3 @@ namespace llvm {
   }
 }
 
-//===----------------------------------------------------------------------===//
-// RegionInfoAnalysis implementation
-//
-
-char RegionInfoAnalysis::PassID;
-
-RegionInfo RegionInfoAnalysis::run(Function &F, AnalysisManager<Function> *AM) {
-  RegionInfo RI;
-  auto *DT = &AM->getResult<DominatorTreeAnalysis>(F);
-  auto *PDT = &AM->getResult<PostDominatorTreeAnalysis>(F);
-  auto *DF = &AM->getResult<DominanceFrontierAnalysis>(F);
-
-  RI.recalculate(F, DT, PDT, DF);
-  return RI;
-}
-
-RegionInfoPrinterPass::RegionInfoPrinterPass(raw_ostream &OS)
-  : OS(OS) {}
-
-PreservedAnalyses
-RegionInfoPrinterPass::run(Function &F, FunctionAnalysisManager *AM) {
-  OS << "Region Tree for function: " << F.getName() << "\n";
-  AM->getResult<RegionInfoAnalysis>(F).print(OS);
-
-  return PreservedAnalyses::all();
-}
-
-PreservedAnalyses RegionInfoVerifierPass::run(Function &F,
-                                              AnalysisManager<Function> *AM) {
-  AM->getResult<RegionInfoAnalysis>(F).verifyAnalysis();
-
-  return PreservedAnalyses::all();
-}
index 93daad7..7d0fe7e 100644 (file)
@@ -26,7 +26,6 @@
 #include "llvm/Analysis/LazyCallGraph.h"
 #include "llvm/Analysis/LoopInfo.h"
 #include "llvm/Analysis/PostDominators.h"
-#include "llvm/Analysis/RegionInfo.h"
 #include "llvm/Analysis/ScalarEvolution.h"
 #include "llvm/Analysis/ScalarEvolutionAliasAnalysis.h"
 #include "llvm/Analysis/ScopedNoAliasAA.h"
index a7e2b90..51d9310 100644 (file)
@@ -60,7 +60,6 @@ FUNCTION_ANALYSIS("domtree", DominatorTreeAnalysis())
 FUNCTION_ANALYSIS("postdomtree", PostDominatorTreeAnalysis())
 FUNCTION_ANALYSIS("domfrontier", DominanceFrontierAnalysis())
 FUNCTION_ANALYSIS("loops", LoopAnalysis())
-FUNCTION_ANALYSIS("regions", RegionInfoAnalysis())
 FUNCTION_ANALYSIS("no-op-function", NoOpFunctionAnalysis())
 FUNCTION_ANALYSIS("scalar-evolution", ScalarEvolutionAnalysis())
 FUNCTION_ANALYSIS("targetlibinfo", TargetLibraryAnalysis())
@@ -95,13 +94,11 @@ FUNCTION_PASS("print<domtree>", DominatorTreePrinterPass(dbgs()))
 FUNCTION_PASS("print<postdomtree>", PostDominatorTreePrinterPass(dbgs()))
 FUNCTION_PASS("print<domfrontier>", DominanceFrontierPrinterPass(dbgs()))
 FUNCTION_PASS("print<loops>", LoopPrinterPass(dbgs()))
-FUNCTION_PASS("print<regions>", RegionInfoPrinterPass(dbgs()))
 FUNCTION_PASS("print<scalar-evolution>", ScalarEvolutionPrinterPass(dbgs()))
 FUNCTION_PASS("simplify-cfg", SimplifyCFGPass())
 FUNCTION_PASS("sroa", SROA())
 FUNCTION_PASS("verify", VerifierPass())
 FUNCTION_PASS("verify<domtree>", DominatorTreeVerifierPass())
-FUNCTION_PASS("verify<regions>", RegionInfoVerifierPass())
 #undef FUNCTION_PASS
 
 #ifndef LOOP_ANALYSIS
index 84e7278..0dfa0bf 100644 (file)
@@ -1,6 +1,4 @@
 ; RUN: opt -regions < %s
-; RUN: opt < %s -passes='print<regions>'
-
 define i32 @main() nounwind {
 entry:
   br label %for.cond
index ce1a481..d7ef79c 100644 (file)
@@ -4,8 +4,6 @@
 ; RUN: opt -regions -print-region-style=bb  -analyze < %s 2>&1 | FileCheck -check-prefix=BBIT %s
 ; RUN: opt -regions -print-region-style=rn  -analyze < %s 2>&1 | FileCheck -check-prefix=RNIT %s
 
-; RUN: opt < %s -passes='print<regions>' 2>&1 | FileCheck %s
-
 define void @BZ2_blockSort() nounwind {
 start:
   br label %while
index 333cdff..0da4e5d 100644 (file)
@@ -4,8 +4,6 @@
 ; RUN: opt -regions -print-region-style=bb  -analyze < %s 2>&1 | FileCheck -check-prefix=BBIT %s
 ; RUN: opt -regions -print-region-style=rn  -analyze < %s 2>&1 | FileCheck -check-prefix=RNIT %s
 
-; RUN: opt < %s -passes='print<regions>' 2>&1 | FileCheck %s
-
 define void @normal_condition() nounwind {
 5:
         br label %"0"
index ba107bf..53f13c1 100644 (file)
@@ -4,8 +4,6 @@
 ; RUN: opt -regions -print-region-style=bb  -analyze < %s 2>&1 | FileCheck -check-prefix=BBIT %s
 ; RUN: opt -regions -print-region-style=rn  -analyze < %s 2>&1 | FileCheck -check-prefix=RNIT %s
 
-; RUN: opt < %s -passes='print<regions>' 2>&1 | FileCheck %s
-
 define internal fastcc zeroext i8 @handle_compress() nounwind {
 end165:
   br i1 1, label %false239, label %true181
index 9071771..fd04afc 100644 (file)
@@ -4,8 +4,6 @@
 ; RUN: opt -regions -print-region-style=bb  -analyze < %s 2>&1 | FileCheck -check-prefix=BBIT %s
 ; RUN: opt -regions -print-region-style=rn  -analyze < %s 2>&1 | FileCheck -check-prefix=RNIT %s
 
-; RUN: opt < %s -passes='print<regions>' 2>&1 | FileCheck %s
-
 define internal fastcc void @compress() nounwind {
 end33:
   br i1 1, label %end124, label %lor.lhs.false95
index 9c1ac75..88c45c2 100644 (file)
@@ -4,8 +4,6 @@
 ; RUN: opt -regions -print-region-style=bb  -analyze < %s 2>&1 | FileCheck -check-prefix=BBIT %s
 ; RUN: opt -regions -print-region-style=rn  -analyze < %s 2>&1 | FileCheck -check-prefix=RNIT %s
 
-; RUN: opt < %s -passes='print<regions>' 2>&1 | FileCheck %s
-
 define void @normal_condition() nounwind {
 0:
        br label %"1"
index 570c772..bfb0df8 100644 (file)
@@ -4,8 +4,6 @@
 ; RUN: opt -regions -print-region-style=bb  -analyze < %s 2>&1 | FileCheck -check-prefix=BBIT %s
 ; RUN: opt -regions -print-region-style=rn  -analyze < %s 2>&1 | FileCheck -check-prefix=RNIT %s
 
-; RUN: opt < %s -passes='print<regions>' 2>&1 | FileCheck %s
-
 define void @normal_condition() nounwind {
 0:
        br i1 1, label %"1", label %"4"
index 46c1b94..3f93a6e 100644 (file)
@@ -4,8 +4,6 @@
 ; RUN: opt -regions -print-region-style=bb  -analyze < %s 2>&1 | FileCheck -check-prefix=BBIT %s
 ; RUN: opt -regions -print-region-style=rn  -analyze < %s 2>&1 | FileCheck -check-prefix=RNIT %s
 
-; RUN: opt < %s -passes='print<regions>' 2>&1 | FileCheck %s
-
 define void @normal_condition() nounwind {
 0:
        br label %"1"
index 4eb3be4..ac409ec 100644 (file)
@@ -4,8 +4,6 @@
 ; RUN: opt -regions -print-region-style=bb  -analyze < %s 2>&1 | FileCheck -check-prefix=BBIT %s
 ; RUN: opt -regions -print-region-style=rn  -analyze < %s 2>&1 | FileCheck -check-prefix=RNIT %s
 
-; RUN: opt < %s -passes='print<regions>' 2>&1 | FileCheck %s
-
 define internal fastcc zeroext i8 @handle_compress() nounwind {
 entry:
   br label %outer
index 4122b20..4c1c865 100644 (file)
@@ -5,8 +5,6 @@
 ; RUN: opt -regions -print-region-style=bb  -analyze < %s 2>&1 | FileCheck -check-prefix=BBIT %s
 ; RUN: opt -regions -print-region-style=rn  -analyze < %s 2>&1 | FileCheck -check-prefix=RNIT %s
 
-; RUN: opt < %s -passes='print<regions>' 2>&1 | FileCheck %s
-
 define void @normal_condition() nounwind {
 0:
         br label %"1"
index aedb484..9efe619 100644 (file)
@@ -4,8 +4,6 @@
 ; RUN: opt -regions -print-region-style=bb  -analyze < %s 2>&1 | FileCheck -check-prefix=BBIT %s
 ; RUN: opt -regions -print-region-style=rn  -analyze < %s 2>&1 | FileCheck -check-prefix=RNIT %s
 
-; RUN: opt < %s -passes='print<regions>' 2>&1 | FileCheck %s
-
 define internal fastcc zeroext i8 @loops_1() nounwind {
 entry:
   br i1 1, label %outer , label %a
index 3ac83b0..ca7eca7 100644 (file)
@@ -4,8 +4,6 @@
 ; RUN: opt -regions -print-region-style=bb  -analyze < %s 2>&1 | FileCheck -check-prefix=BBIT %s
 ; RUN: opt -regions -print-region-style=rn  -analyze < %s 2>&1 | FileCheck -check-prefix=RNIT %s
 
-; RUN: opt < %s -passes='print<regions>' 2>&1 | FileCheck %s
-
 define void @meread_() nounwind {
 entry:
   br label %bb23
index 3ae22af..55001c7 100644 (file)
@@ -5,8 +5,6 @@
 ; RUN: opt -regions -print-region-style=bb  -analyze < %s 2>&1 | FileCheck -check-prefix=BBIT %s
 ; RUN: opt -regions -print-region-style=rn  -analyze < %s 2>&1 | FileCheck -check-prefix=RNIT %s
 
-; RUN: opt < %s -passes='print<regions>' 2>&1 | FileCheck %s
-
 define void @a_linear_impl_fig_1() nounwind {
 0:
 
index 6db3237..3e73b3a 100644 (file)
@@ -5,8 +5,6 @@
 ; RUN: opt -regions -print-region-style=bb  -analyze < %s 2>&1 | FileCheck -check-prefix=BBIT %s
 ; RUN: opt -regions -print-region-style=rn  -analyze < %s 2>&1 | FileCheck -check-prefix=RNIT %s
 
-; RUN: opt < %s -passes='print<regions>' 2>&1 | FileCheck %s
-
 define internal fastcc zeroext i8 @handle_compress() nounwind {
 entry:
   br label %outer
index 617273f..b22bbcc 100644 (file)
@@ -4,8 +4,6 @@
 ; RUN: opt -regions -print-region-style=bb  -analyze < %s 2>&1 | FileCheck -check-prefix=BBIT %s
 ; RUN: opt -regions -print-region-style=rn  -analyze < %s 2>&1 | FileCheck -check-prefix=RNIT %s
 
-; RUN: opt < %s -passes='print<regions>' 2>&1 | FileCheck %s
-
 define void @MAIN__() nounwind {
 entry:
   br label %__label_002001.outer
index 3e592f4..0398d2b 100644 (file)
@@ -4,8 +4,6 @@
 ; RUN: opt -regions -print-region-style=bb  -analyze < %s 2>&1 | FileCheck -check-prefix=BBIT %s
 ; RUN: opt -regions -print-region-style=rn  -analyze < %s 2>&1 | FileCheck -check-prefix=RNIT %s
 
-; RUN: opt < %s -passes='print<regions>' 2>&1 | FileCheck %s
-
 define void @a_linear_impl_fig_1() nounwind {
 0:
         br label %"1"
index 2d5fa08..2571342 100644 (file)
@@ -4,8 +4,6 @@
 ; RUN: opt -regions -print-region-style=bb  -analyze < %s 2>&1 | FileCheck -check-prefix=BBIT %s
 ; RUN: opt -regions -print-region-style=rn  -analyze < %s 2>&1 | FileCheck -check-prefix=RNIT %s
 
-; RUN: opt < %s -passes='print<regions>' 2>&1 | FileCheck %s
-
 define internal fastcc zeroext i8 @handle_compress() nounwind {
 entry:
   br label %outer
index 5dd1be9..626ccbe 100644 (file)
@@ -1,5 +1,4 @@
 ; RUN: opt -regions -analyze < %s | FileCheck %s
-; RUN: opt < %s -passes='print<regions>' 2>&1 | FileCheck %s
 
 ; We should not crash if there are some bbs that are not reachable.
 define void @f() {