Skip to content

Commit efa07a7

Browse files
authored
Merge pull request #81702 from eeckstein/fix-test
InitializeStaticGlobals: handle `InlineArray.init(repeating:)` also for arm64_32
2 parents 262a53f + 9e70eb8 commit efa07a7

File tree

3 files changed

+13
-8
lines changed

3 files changed

+13
-8
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: 4 additions & 4 deletions
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
@@ -314,9 +314,9 @@ private extension BuiltinInst {
314314

315315
private extension Builder {
316316
func createCastIfNeeded(of index: Value, toIndexTypeOf indexRawPtr: IndexRawPointerInst) -> Value {
317-
if let truncOrBitCast = indexRawPtr.index as? BuiltinInst {
318-
assert(truncOrBitCast.id == .TruncOrBitCast)
319-
return createBuiltin(name: truncOrBitCast.name, type: truncOrBitCast.type, arguments: [index])
317+
if let cast = indexRawPtr.index as? BuiltinInst {
318+
assert(cast.id == .TruncOrBitCast || cast.id == .SExtOrBitCast)
319+
return createBuiltin(name: cast.name, type: cast.type, arguments: [index])
320320
}
321321
return index
322322
}

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)