Skip to content

Commit eb1d5f4

Browse files
committed
[NFC] SwiftCompilerSources: add a correctly named filterUsers API
Rename existing filterUsers to filterUses.
1 parent 44bd40d commit eb1d5f4

File tree

12 files changed

+30
-26
lines changed

12 files changed

+30
-26
lines changed

SwiftCompilerSources/Sources/Optimizer/FunctionPasses/AllocBoxToStack.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -449,7 +449,7 @@ private func hoistMarkUnresolvedInsts(stackAddress: Value,
449449
builder = Builder(atBeginOf: stackAddress.parentBlock, context)
450450
}
451451
let mu = builder.createMarkUnresolvedNonCopyableValue(value: stackAddress, checkKind: checkKind, isStrict: false)
452-
stackAddress.uses.ignore(user: mu).ignoreDebugUses.ignoreUsers(ofType: DeallocStackInst.self)
452+
stackAddress.uses.ignore(user: mu).ignoreDebugUses.ignoreUses(ofType: DeallocStackInst.self)
453453
.replaceAll(with: mu, context)
454454
}
455455

SwiftCompilerSources/Sources/Optimizer/FunctionPasses/DestroyHoisting.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ let destroyHoisting = FunctionPass(name: "destroy-hoisting") {
8383
private func optimize(value: Value, _ context: FunctionPassContext) {
8484
guard value.ownership == .owned,
8585
// Avoid all the analysis effort if there are no destroys to hoist.
86-
!value.uses.filterUsers(ofType: DestroyValueInst.self).isEmpty
86+
!value.uses.filterUses(ofType: DestroyValueInst.self).isEmpty
8787
else {
8888
return
8989
}

SwiftCompilerSources/Sources/Optimizer/FunctionPasses/LifetimeDependenceScopeFixup.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -902,14 +902,14 @@ extension ExtendableScope {
902902
break
903903
}
904904
case let .owned(value):
905-
return builder.createDestroyValue(operand: value)
905+
return SingleInlineArray(element: builder.createDestroyValue(operand: value))
906906
case let .local(varInst):
907907
switch varInst {
908908
case let .beginBorrow(beginBorrow):
909909
// FIXME: we may need to rewrite the dealloc_stack.
910-
return builder.createEndBorrow(of: beginBorrow)
910+
return SingleInlineArray(element: builder.createEndBorrow(of: beginBorrow))
911911
case let .moveValue(moveValue):
912-
return builder.createDestroyValue(operand: moveValue)
912+
return SingleInlineArray(element: builder.createDestroyValue(operand: moveValue))
913913
}
914914
default:
915915
break

SwiftCompilerSources/Sources/Optimizer/FunctionPasses/TempRValueElimination.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ private extension AllocStackInst {
245245
var liferange = InstructionRange(begin: self, context)
246246
defer { liferange.deinitialize() }
247247

248-
liferange.insert(contentsOf: uses.ignoreUsers(ofType: DeallocStackInst.self).lazy.map { $0.instruction })
248+
liferange.insert(contentsOf: uses.ignoreUses(ofType: DeallocStackInst.self).lazy.map { $0.instruction })
249249

250250
for use in uses {
251251
switch use.instruction {

SwiftCompilerSources/Sources/Optimizer/InstructionSimplification/SimplifyAllocStack.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ private extension AllocStackInst {
206206
iea.replace(with: newAlloc, context)
207207
}
208208
case let oea as OpenExistentialAddrInst:
209-
assert(oea.uses.ignoreUsers(ofType: DestroyAddrInst.self).isEmpty)
209+
assert(oea.uses.ignoreUses(ofType: DestroyAddrInst.self).isEmpty)
210210
oea.replace(with: newAlloc, context)
211211
case let cab as CheckedCastAddrBranchInst:
212212
let builder = Builder(before: cab, context)
@@ -246,7 +246,7 @@ private extension AllocStackInst {
246246
is DebugValueInst:
247247
break
248248
case let oea as OpenExistentialAddrInst:
249-
if !oea.uses.ignoreUsers(ofType: DestroyAddrInst.self).isEmpty {
249+
if !oea.uses.ignoreUses(ofType: DestroyAddrInst.self).isEmpty {
250250
return nil
251251
}
252252
case let iea as InitExistentialAddrInst:

SwiftCompilerSources/Sources/Optimizer/InstructionSimplification/SimplifyBeginAndLoadBorrow.swift

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ extension BeginBorrowInst : OnoneSimplifiable, SILCombineSimplifiable {
2929

3030
extension LoadBorrowInst : Simplifiable, SILCombineSimplifiable {
3131
func simplify(_ context: SimplifyContext) {
32-
if uses.ignoreDebugUses.ignoreUsers(ofType: EndBorrowInst.self).isEmpty {
32+
if uses.ignoreDebugUses.ignoreUses(ofType: EndBorrowInst.self).isEmpty {
3333
context.erase(instructionIncludingAllUsers: self)
3434
return
3535
}
@@ -52,7 +52,7 @@ extension LoadBorrowInst : Simplifiable, SILCombineSimplifiable {
5252

5353
private func tryCombineWithCopy(_ context: SimplifyContext) {
5454
let forwardedValue = lookThroughSingleForwardingUses()
55-
guard let singleUser = forwardedValue.uses.ignoreUsers(ofType: EndBorrowInst.self).singleUse?.instruction,
55+
guard let singleUser = forwardedValue.uses.ignoreUses(ofType: EndBorrowInst.self).singleUse?.instruction,
5656
let copy = singleUser as? CopyValueInst,
5757
copy.parentBlock == self.parentBlock else {
5858
return
@@ -81,13 +81,13 @@ private func tryReplaceBorrowWithOwnedOperand(beginBorrow: BeginBorrowInst, _ co
8181
private func removeBorrowOfThinFunction(beginBorrow: BeginBorrowInst, _ context: SimplifyContext) {
8282
guard let thin2thickFn = beginBorrow.borrowedValue as? ThinToThickFunctionInst,
8383
// For simplicity don't go into the trouble of removing reborrow phi arguments.
84-
beginBorrow.uses.filterUsers(ofType: BranchInst.self).isEmpty else
84+
beginBorrow.uses.filterUses(ofType: BranchInst.self).isEmpty else
8585
{
8686
return
8787
}
8888
// `thin_to_thick_function` has "none" ownership and is compatible with guaranteed values.
8989
// Therefore the `begin_borrow` is not needed.
90-
beginBorrow.uses.ignoreUsers(ofType: EndBorrowInst.self).replaceAll(with: thin2thickFn, context)
90+
beginBorrow.uses.ignoreUses(ofType: EndBorrowInst.self).replaceAll(with: thin2thickFn, context)
9191
context.erase(instructionIncludingAllUsers: beginBorrow)
9292
}
9393

@@ -110,7 +110,7 @@ private func tryReplaceCopy(
110110
withCopiedOperandOf beginBorrow: BeginBorrowInst,
111111
_ context: SimplifyContext
112112
) -> Bool {
113-
guard let singleUser = forwardedValue.uses.ignoreUsers(ofType: EndBorrowInst.self).singleUse?.instruction,
113+
guard let singleUser = forwardedValue.uses.ignoreUses(ofType: EndBorrowInst.self).singleUse?.instruction,
114114
let copy = singleUser as? CopyValueInst,
115115
copy.parentBlock == beginBorrow.parentBlock else {
116116
return false
@@ -153,7 +153,7 @@ private extension Value {
153153
/// ```
154154
/// Returns self if this value has no uses which are ForwardingInstructions.
155155
func lookThroughSingleForwardingUses() -> Value {
156-
if let singleUse = uses.ignoreUsers(ofType: EndBorrowInst.self).singleUse,
156+
if let singleUse = uses.ignoreUses(ofType: EndBorrowInst.self).singleUse,
157157
let fwdInst = singleUse.instruction as? (SingleValueInstruction & ForwardingInstruction),
158158
fwdInst.canConvertToOwned,
159159
fwdInst.isSingleForwardedOperand(singleUse),
@@ -165,7 +165,7 @@ private extension Value {
165165
}
166166

167167
var allUsesCanBeConvertedToOwned: Bool {
168-
let relevantUses = uses.ignoreUsers(ofType: EndBorrowInst.self)
168+
let relevantUses = uses.ignoreUses(ofType: EndBorrowInst.self)
169169
return relevantUses.allSatisfy { $0.canAccept(ownership: .owned) }
170170
}
171171

@@ -175,7 +175,7 @@ private extension Value {
175175
}
176176

177177
func replaceAllDestroys(with replacement: Value, _ context: SimplifyContext) {
178-
uses.filterUsers(ofType: DestroyValueInst.self).replaceAll(with: replacement, context)
178+
uses.filterUses(ofType: DestroyValueInst.self).replaceAll(with: replacement, context)
179179
}
180180
}
181181

@@ -187,7 +187,7 @@ private extension Instruction {
187187
// The value and instruction are in the same block. All uses are dominated by both.
188188
return true
189189
}
190-
let destroys = value.uses.filterUsers(ofType: DestroyValueInst.self)
190+
let destroys = value.uses.filterUses(ofType: DestroyValueInst.self)
191191
return destroys.allSatisfy({ $0.instruction.parentBlock == parentBlock})
192192
}
193193
}

SwiftCompilerSources/Sources/Optimizer/ModulePasses/MandatoryPerformanceOptimizations.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -400,7 +400,7 @@ private extension Value {
400400
// var p = Point(x: 10, y: 20)
401401
// let o = UnsafePointer(&p)
402402
// Therefore ignore the `end_access` use of a `begin_access`.
403-
let relevantUses = singleUseValue.uses.ignoreDebugUses.ignoreUsers(ofType: EndAccessInst.self)
403+
let relevantUses = singleUseValue.uses.ignoreDebugUses.ignoreUses(ofType: EndAccessInst.self)
404404

405405
guard let use = relevantUses.singleUse else {
406406
return nil

SwiftCompilerSources/Sources/Optimizer/ModulePasses/StackProtection.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -365,7 +365,7 @@ private struct StackProtectionOptimization {
365365
let builder = Builder(after: beginAccess, location: beginAccess.location.asAutoGenerated, context)
366366
let temporary = builder.createAllocStack(beginAccess.type)
367367

368-
beginAccess.uses.ignoreUsers(ofType: EndAccessInst.self).replaceAll(with: temporary, context)
368+
beginAccess.uses.ignoreUses(ofType: EndAccessInst.self).replaceAll(with: temporary, context)
369369

370370
for endAccess in beginAccess.endInstructions {
371371
let endBuilder = Builder(before: endAccess, location: endAccess.location.asAutoGenerated, context)

SwiftCompilerSources/Sources/Optimizer/Utilities/OwnershipLiveness.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -717,7 +717,7 @@ extension InteriorUseWalker: AddressUseVisitor {
717717
if handleInner(borrowed: sb) == .abortWalk {
718718
return .abortWalk
719719
}
720-
return sb.uses.filterUsers(ofType: EndBorrowInst.self).walk {
720+
return sb.uses.filterUses(ofType: EndBorrowInst.self).walk {
721721
useVisitor($0)
722722
}
723723
case let load as LoadBorrowInst:

SwiftCompilerSources/Sources/SIL/Operand.swift

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -164,11 +164,15 @@ extension Sequence where Element == Operand {
164164
self.lazy.filter { !($0.instruction is DebugValueInst) }
165165
}
166166

167-
public func filterUsers<I: Instruction>(ofType: I.Type) -> LazyFilterSequence<Self> {
167+
public func filterUses<I: Instruction>(ofType: I.Type) -> LazyFilterSequence<Self> {
168168
self.lazy.filter { $0.instruction is I }
169169
}
170170

171-
public func ignoreUsers<I: Instruction>(ofType: I.Type) -> LazyFilterSequence<Self> {
171+
public func filterUsers<I: Instruction>(ofType: I.Type) -> LazyMapSequence<LazyFilterSequence<Self>, I> {
172+
self.lazy.filter { $0.instruction is I }.lazy.map { $0.instruction as! I }
173+
}
174+
175+
public func ignoreUses<I: Instruction>(ofType: I.Type) -> LazyFilterSequence<Self> {
172176
self.lazy.filter { !($0.instruction is I) }
173177
}
174178

@@ -177,11 +181,11 @@ extension Sequence where Element == Operand {
177181
}
178182

179183
public func getSingleUser<I: Instruction>(ofType: I.Type) -> I? {
180-
filterUsers(ofType: I.self).singleUse?.instruction as? I
184+
filterUses(ofType: I.self).singleUse?.instruction as? I
181185
}
182186

183187
public func getSingleUser<I: Instruction>(notOfType: I.Type) -> Instruction? {
184-
ignoreUsers(ofType: I.self).singleUse?.instruction
188+
ignoreUses(ofType: I.self).singleUse?.instruction
185189
}
186190

187191
public var endingLifetime: LazyFilterSequence<Self> {

0 commit comments

Comments
 (0)