Skip to content

Commit 662a051

Browse files
committed
fix the readonly_arrays.swift test
Also, add a comment for the changed metadata symbol name for static read-only arrays.
1 parent 1d66c33 commit 662a051

File tree

2 files changed

+10
-8
lines changed

2 files changed

+10
-8
lines changed

lib/IRGen/GenConstant.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -288,8 +288,10 @@ llvm::Constant *irgen::emitConstantObject(IRGenModule &IGM, ObjectInst *OI,
288288
IGM.swiftImmortalRefCount = var;
289289
}
290290
if (!IGM.swiftStaticArrayMetadata) {
291-
// HACK: This should be an alias to this symbol rather than a direct
292-
// reference.
291+
292+
// Static arrays can only contain trivial elements. Therefore we can reuse
293+
// the metadata of the empty array buffer. The important thing is that its
294+
// deinit is a no-op and does not actually destroy any elements.
293295
auto *var = new llvm::GlobalVariable(IGM.Module, IGM.TypeMetadataStructTy,
294296
/*constant*/ true, llvm::GlobalValue::ExternalLinkage,
295297
/*initializer*/ nullptr, "$ss19__EmptyArrayStorageCN");

test/SILOptimizer/readonly_arrays.swift

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@
99

1010
// Check if the optimizer is able to convert array literals to constant statically initialized arrays.
1111

12-
// CHECK: @"$s4test11arrayLookupyS2iFTv_r" = {{.*}} constant {{.*}} @_swiftStaticArrayMetadata, {{.*}} @_swiftImmortalRefCount
13-
// CHECK: @"$s4test11returnArraySaySiGyFTv_r" = {{.*}} constant {{.*}} @_swiftStaticArrayMetadata, {{.*}} @_swiftImmortalRefCount
14-
// CHECK: @"$s4test9passArrayyyFTv_r" = {{.*}} constant {{.*}} @_swiftStaticArrayMetadata, {{.*}} @_swiftImmortalRefCount
15-
// CHECK: @"$s4test9passArrayyyFTv0_r" = {{.*}} constant {{.*}} @_swiftStaticArrayMetadata, {{.*}} @_swiftImmortalRefCount
16-
// CHECK: @"$s4test10storeArrayyyFTv_r" = {{.*}} constant {{.*}} @_swiftStaticArrayMetadata, {{.*}} @_swiftImmortalRefCount
17-
// CHECK: @"$s4test3StrV14staticVariable_WZTv_r" = {{.*}} constant {{.*}} @_swiftStaticArrayMetadata, {{.*}} @_swiftImmortalRefCount
12+
// CHECK: @"$s4test11arrayLookupyS2iFTv_r" = {{.*}} constant {{.*}} @"$ss19__EmptyArrayStorageCN", {{.*}} @_swiftImmortalRefCount
13+
// CHECK: @"$s4test11returnArraySaySiGyFTv_r" = {{.*}} constant {{.*}} @"$ss19__EmptyArrayStorageCN", {{.*}} @_swiftImmortalRefCount
14+
// CHECK: @"$s4test9passArrayyyFTv_r" = {{.*}} constant {{.*}} @"$ss19__EmptyArrayStorageCN", {{.*}} @_swiftImmortalRefCount
15+
// CHECK: @"$s4test9passArrayyyFTv0_r" = {{.*}} constant {{.*}} @"$ss19__EmptyArrayStorageCN", {{.*}} @_swiftImmortalRefCount
16+
// CHECK: @"$s4test10storeArrayyyFTv_r" = {{.*}} constant {{.*}} @"$ss19__EmptyArrayStorageCN", {{.*}} @_swiftImmortalRefCount
17+
// CHECK: @"$s4test3StrV14staticVariable_WZTv_r" = {{.*}} constant {{.*}} @"$ss19__EmptyArrayStorageCN", {{.*}} @_swiftImmortalRefCount
1818
// CHECK-NOT: swift_initStaticObject
1919

2020
// UNSUPPORTED: use_os_stdlib

0 commit comments

Comments
 (0)