[llvm] [VPlan] Add incoming_[blocks,values] iterators to VPPhiAccessors (NFC) (PR #138472)
Florian Hahn via llvm-commits
llvm-commits at lists.llvm.org
Wed Aug 6 13:34:44 PDT 2025
================
@@ -1224,6 +1224,42 @@ class VPPhiAccessors {
return getAsRecipe()->getNumOperands();
}
+ /// Returns an interator range over the incoming values.
+ VPUser::const_operand_range incoming_values() const {
+ return make_range(getAsRecipe()->op_begin(),
+ getAsRecipe()->op_begin() + getNumIncoming());
+ }
+
+ using const_incoming_block_iterator =
+ mapped_iterator<detail::index_iterator,
+ std::function<const VPBasicBlock *(size_t)>>;
+ using const_incoming_blocks_range =
+ iterator_range<const_incoming_block_iterator>;
+
+ const_incoming_block_iterator incoming_block_begin() const {
+ return const_incoming_block_iterator(
+ detail::index_iterator(0),
+ [this](size_t Idx) { return getIncomingBlock(Idx); });
+ }
+ const_incoming_block_iterator incoming_block_end() const {
+ return const_incoming_block_iterator(
+ detail::index_iterator(getNumIncoming()),
+ [this](size_t Idx) { return getIncomingBlock(Idx); });
+ }
+
+ /// Returns an iterator range over the incoming blocks.
+ const_incoming_blocks_range incoming_blocks() const {
+ return make_range(incoming_block_begin(), incoming_block_end());
+ }
+
+ /// Returns an iterator range over pairs of incoming values and corresponding
+ /// incoming blocks.
+ detail::zippy<llvm::detail::zip_first, VPUser::const_operand_range,
+ const_incoming_blocks_range>
----------------
fhahn wrote:
In the past I think we generally preferred to spell out the types for clarity if possible
https://github.com/llvm/llvm-project/pull/138472
More information about the llvm-commits
mailing list