diff options
Diffstat (limited to 'llvm/lib/Transforms/Vectorize/VPlanCFG.h')
| -rw-r--r-- | llvm/lib/Transforms/Vectorize/VPlanCFG.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/Vectorize/VPlanCFG.h b/llvm/lib/Transforms/Vectorize/VPlanCFG.h index 89e2e7514dac..8fbdacd1ea77 100644 --- a/llvm/lib/Transforms/Vectorize/VPlanCFG.h +++ b/llvm/lib/Transforms/Vectorize/VPlanCFG.h @@ -13,6 +13,7 @@ #define LLVM_TRANSFORMS_VECTORIZE_VPLANCFG_H #include "VPlan.h" +#include "VPlanUtils.h" #include "llvm/ADT/DepthFirstIterator.h" #include "llvm/ADT/GraphTraits.h" #include "llvm/ADT/SmallVector.h" @@ -306,6 +307,15 @@ template <> struct GraphTraits<VPlan *> { } }; +inline auto VPlan::getExitBlocks() { + VPBlockBase *ScalarHeader = getScalarHeader(); + return make_filter_range( + VPBlockUtils::blocksOnly<VPIRBasicBlock>( + vp_depth_first_shallow(getVectorLoopRegion()->getSingleSuccessor())), + [ScalarHeader](VPIRBasicBlock *VPIRBB) { + return VPIRBB != ScalarHeader && VPIRBB->getNumSuccessors() == 0; + }); +} } // namespace llvm #endif // LLVM_TRANSFORMS_VECTORIZE_VPLANCFG_H |
