Skip to content

Commit 3b6f7c5

Browse files
committed
InitializeStaticGlobals: handle InlineArray.init(repeating:) also for arm64_32
This needs matching a different builtin for scalar conversion for the `index_addr` index. Fixes a test failure on watchos rdar://151761870
1 parent 278248e commit 3b6f7c5

File tree

3 files changed

+10
-5
lines changed

3 files changed

+10
-5
lines changed

SwiftCompilerSources/Sources/Optimizer/FunctionPasses/InitializeStaticGlobals.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -399,7 +399,7 @@ private extension StoreInst {
399399
let headerBr = vectorBase.parentBlock.terminator as? BranchInst,
400400
headerBr.targetBlock == parentBlock,
401401
let vectorSize = vectorBase.vector.type.builtinFixedArraySizeType.valueOfInteger,
402-
let (start, loopCount, increment) = getLoopInductionInfo(of: indexAddr.index.lookThroughTruncOrBitCast),
402+
let (start, loopCount, increment) = getLoopInductionInfo(of: indexAddr.index.lookThroughIndexScalarCast),
403403
start == 0, loopCount == vectorSize, increment == 1
404404
{
405405
return true

SwiftCompilerSources/Sources/Optimizer/InstructionSimplification/SimplifyPointerToAddress.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ private func removeAddressToPointerToAddressPair(
6969
///
7070
private func simplifyIndexRawPointer(of ptr2Addr: PointerToAddressInst, _ context: SimplifyContext) -> Bool {
7171
guard let indexRawPtr = ptr2Addr.pointer as? IndexRawPointerInst,
72-
let tupleExtract = indexRawPtr.index.lookThroughTruncOrBitCast as? TupleExtractInst,
72+
let tupleExtract = indexRawPtr.index.lookThroughIndexScalarCast as? TupleExtractInst,
7373
let strideMul = tupleExtract.tuple as? BuiltinInst, strideMul.id == .SMulOver,
7474
let (index, strideType) = strideMul.indexAndStrideOfMultiplication,
7575
strideType == ptr2Addr.type.objectType

SwiftCompilerSources/Sources/Optimizer/Utilities/OptUtils.swift

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,14 @@ extension Value {
4545
}
4646
}
4747

48-
var lookThroughTruncOrBitCast: Value {
49-
if let truncOrBitCast = self as? BuiltinInst, truncOrBitCast.id == .TruncOrBitCast {
50-
return truncOrBitCast.arguments[0]
48+
var lookThroughIndexScalarCast: Value {
49+
if let castBuiltin = self as? BuiltinInst {
50+
switch castBuiltin.id {
51+
case .TruncOrBitCast, .SExtOrBitCast:
52+
return castBuiltin.arguments[0]
53+
default:
54+
return self
55+
}
5156
}
5257
return self
5358
}

0 commit comments

Comments
 (0)