Skip to content

Commit d50f220

Browse files
committed
Add a makeUserIteratorRange API
To allow a value's use-list to be pased into an LLVM API that expects an llvm::iterator_range<SILInstruction *>.
1 parent 2434891 commit d50f220

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

include/swift/SILOptimizer/Utils/InstOptUtils.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,14 @@ inline TransformRange<Range, UserTransform> makeUserRange(Range range) {
4747
return makeTransformRange(range, UserTransform(toUser));
4848
}
4949

50+
/// Transform a use_iterator range (Operand*) into an llvm::iterator_range
51+
/// of users (SILInstruction *)
52+
inline iterator_range<llvm::mapped_iterator<ValueBase::use_iterator, UserTransform>>
53+
makeUserIteratorRange(iterator_range<ValueBase::use_iterator> useRange) {
54+
auto toUser = [](Operand *operand) { return operand->getUser(); };
55+
return llvm::map_range(useRange, UserTransform(toUser));
56+
}
57+
5058
using DeadInstructionSet = llvm::SmallSetVector<SILInstruction *, 8>;
5159

5260
/// Create a retain of \p Ptr before the \p InsertPt.

0 commit comments

Comments
 (0)