diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2018-08-02 17:32:43 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2018-08-02 17:32:43 +0000 | 
| commit | b7eb8e35e481a74962664b63dfb09483b200209a (patch) | |
| tree | 1937fb4a348458ce2d02ade03ac3bb0aa18d2fcd /lib/Transforms/Vectorize/VPlanHCFGBuilder.cpp | |
| parent | eb11fae6d08f479c0799db45860a98af528fa6e7 (diff) | |
Notes
Diffstat (limited to 'lib/Transforms/Vectorize/VPlanHCFGBuilder.cpp')
| -rw-r--r-- | lib/Transforms/Vectorize/VPlanHCFGBuilder.cpp | 21 | 
1 files changed, 18 insertions, 3 deletions
diff --git a/lib/Transforms/Vectorize/VPlanHCFGBuilder.cpp b/lib/Transforms/Vectorize/VPlanHCFGBuilder.cpp index 08129b74cddf..b6307acb9474 100644 --- a/lib/Transforms/Vectorize/VPlanHCFGBuilder.cpp +++ b/lib/Transforms/Vectorize/VPlanHCFGBuilder.cpp @@ -324,13 +324,28 @@ VPRegionBlock *PlainCFGBuilder::buildPlainCFG() {    return TopRegion;  } +VPRegionBlock *VPlanHCFGBuilder::buildPlainCFG() { +  PlainCFGBuilder PCFGBuilder(TheLoop, LI, Plan); +  return PCFGBuilder.buildPlainCFG(); +} +  // Public interface to build a H-CFG. -void VPlanHCFGBuilder::buildHierarchicalCFG(VPlan &Plan) { +void VPlanHCFGBuilder::buildHierarchicalCFG() {    // Build Top Region enclosing the plain CFG and set it as VPlan entry. -  PlainCFGBuilder PCFGBuilder(TheLoop, LI, Plan); -  VPRegionBlock *TopRegion = PCFGBuilder.buildPlainCFG(); +  VPRegionBlock *TopRegion = buildPlainCFG();    Plan.setEntry(TopRegion);    LLVM_DEBUG(Plan.setName("HCFGBuilder: Plain CFG\n"); dbgs() << Plan);    Verifier.verifyHierarchicalCFG(TopRegion); + +  // Compute plain CFG dom tree for VPLInfo. +  VPDomTree.recalculate(*TopRegion); +  LLVM_DEBUG(dbgs() << "Dominator Tree after building the plain CFG.\n"; +             VPDomTree.print(dbgs())); + +  // Compute VPLInfo and keep it in Plan. +  VPLoopInfo &VPLInfo = Plan.getVPLoopInfo(); +  VPLInfo.analyze(VPDomTree); +  LLVM_DEBUG(dbgs() << "VPLoop Info After buildPlainCFG:\n"; +             VPLInfo.print(dbgs()));  }  | 
