Skip to content

Commit 0b48ca9

Browse files
committed
Update tests
1 parent 2f8e7db commit 0b48ca9

File tree

1 file changed

+61
-37
lines changed

1 file changed

+61
-37
lines changed

test/IRGen/package_resilience.swift

Lines changed: 61 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -10,24 +10,35 @@
1010
// RUN: %target-swift-frontend -package-name MyPkg -emit-module -enable-library-evolution -emit-module-path=%t/resilient_struct.swiftmodule -module-name=resilient_struct %S/Inputs/package_types/resilient_struct.swift
1111
// RUN: %target-swift-frontend -package-name MyPkg -emit-module -enable-library-evolution -emit-module-path=%t/resilient_enum.swiftmodule -module-name=resilient_enum -I %t %S/Inputs/package_types/resilient_enum.swift
1212
// RUN: %target-swift-frontend -package-name MyPkg -emit-module -enable-library-evolution -emit-module-path=%t/resilient_class.swiftmodule -module-name=resilient_class -I %t %S/Inputs/package_types/resilient_class.swift
13-
// RUN: %target-swift-frontend -package-name MyPkg -enable-objc-interop -I %t -emit-ir -enable-library-evolution %t/package_resilience.swift | %FileCheck %t/package_resilience.swift --check-prefixes=CHECK,CHECK-objc,CHECK-objc%target-ptrsize,CHECK-%target-ptrsize,CHECK-%target-cpu,CHECK-%target-import-type-objc-STABLE-ABI-%target-mandates-stable-abi,CHECK-%target-sdk-name -DINT=i%target-ptrsize -D#MDWORDS=7 -D#MDSIZE32=52 -D#MDSIZE64=80 -D#WORDSIZE=%target-alignment
14-
// RUN: %target-swift-frontend -package-name MyPkg -disable-objc-interop -I %t -emit-ir -enable-library-evolution %t/package_resilience.swift | %FileCheck %t/package_resilience.swift --check-prefixes=CHECK,CHECK-native,CHECK-native%target-ptrsize,CHECK-%target-ptrsize,CHECK-%target-cpu,CHECK-native-STABLE-ABI-%target-mandates-stable-abi,CHECK-%target-sdk-name -DINT=i%target-ptrsize -D#MDWORDS=4 -D#MDSIZE32=40 -D#MDSIZE64=56 -D#WORDSIZE=%target-alignment
13+
14+
// RUN: %target-swift-frontend -package-name MyPkg -enable-objc-interop -I %t -emit-ir -enable-library-evolution %t/package_resilience.swift > %t/ir-result-objc-interop-enabled.txt
15+
// RUN: %FileCheck %t/package_resilience.swift --check-prefixes=CHECK,CHECK-objc,CHECK-objc%target-ptrsize,CHECK-%target-ptrsize,CHECK-%target-cpu,CHECK-%target-import-type-objc-STABLE-ABI-%target-mandates-stable-abi,CHECK-%target-sdk-name -DINT=i%target-ptrsize -D#MDWORDS=7 -D#MDSIZE32=52 -D#MDSIZE64=80 -D#WORDSIZE=%target-alignment < %t/ir-result-objc-interop-enabled.txt
16+
17+
// RUN: %target-swift-frontend -package-name MyPkg -disable-objc-interop -I %t -emit-ir -enable-library-evolution %t/package_resilience.swift > %t/ir-result-objc-interop-disabled.txt
18+
// RUN: %FileCheck %t/package_resilience.swift --check-prefixes=CHECK,CHECK-native,CHECK-native%target-ptrsize,CHECK-%target-ptrsize,CHECK-%target-cpu,CHECK-native-STABLE-ABI-%target-mandates-stable-abi,CHECK-%target-sdk-name -DINT=i%target-ptrsize -D#MDWORDS=4 -D#MDSIZE32=40 -D#MDSIZE64=56 -D#WORDSIZE=%target-alignment < %t/ir-result-objc-interop-disabled.txt
19+
1520
// RUN: %target-swift-frontend -package-name MyPkg -I %t -emit-ir -enable-library-evolution -O %t/package_resilience.swift -package-name MyPkg
1621
// REQUIRES: objc_codegen
1722
// REQUIRES: OS=macosx || OS=ios || OS=tvos || OS=watchos
1823
// REQUIRES: CPU=x86_64 || CPU=arm64
1924

20-
// CHECK: @"$s18package_resilience26ClassWithResilientPropertyC1p16resilient_struct5PointVvpWvd" = constant [[INT]] {{8|16}}, align [[#WORDSIZE]]
21-
// CHECK: @"$s18package_resilience26ClassWithResilientPropertyC1s16resilient_struct4SizeVvpWvd" = constant [[INT]] {{32|16}}, align [[#WORDSIZE]]
25+
// CHECK: @"$s18package_resilience26ClassWithResilientPropertyC1p16resilient_struct5PointVvpWvd" = hidden global [[INT]] 0,
26+
// CHECK: @"$s18package_resilience26ClassWithResilientPropertyC1s16resilient_struct4SizeVvpWvd" = hidden global [[INT]] 0,
27+
// CHECK: @"$s18package_resilience26ClassWithResilientPropertyC5colors5Int32VvpWvd" = hidden global i64 0, align 8
28+
// CHECK: @"$s18package_resilience33ClassWithResilientlySizedPropertyC1r16resilient_struct9RectangleVvpWvd" = hidden global i64 0, align 8
29+
// CHECK: @"$s18package_resilience33ClassWithResilientlySizedPropertyC5colors5Int32VvpWvd" = hidden global i64 0, align 8
30+
// CHECK: @"$s18package_resilience30ClassWithIndirectResilientEnumC1s14resilient_enum10FunnyShapeOvpWvd" = hidden global i64 0, align 8
31+
// CHECK: @"$s18package_resilience30ClassWithIndirectResilientEnumC5colors5Int32VvpWvd" = hidden global i64 0, align 8
2232

23-
// CHECK: @"$s18package_resilience33ClassWithResilientlySizedPropertyC1r16resilient_struct9RectangleVvpWvd" = constant [[INT]] {{8|16}}, align [[#WORDSIZE]]
24-
// CHECK: @"$s18package_resilience33ClassWithResilientlySizedPropertyC5colors5Int32VvpWvd" = constant [[INT]] 56, align [[#WORDSIZE]]
33+
// CHECK: @"$s18package_resilience27ClassWithEmptyThenResilientC9resilient0H7_struct0G3IntVvpWvd" = hidden global [[INT]] 0,
34+
// CHECK: @"$s18package_resilience27ClassWithResilientThenEmptyC9resilient0H7_struct0E3IntVvpWvd" = hidden global [[INT]] 0,
2535

36+
// CHECK: @"$s18package_resilience17MyResilientParentC1sAA0cD6StructVvpWvd" = hidden constant [[INT]] [[#WORDSIZE + WORDSIZE]]
2637
// CHECK: @"$s18package_resilience17MyResilientParentCMo" = constant [[BOUNDS:{ (i32|i64), i32, i32 }]]
2738
// CHECK-32-SAME: { [[INT]] [[#MDSIZE32]], i32 3, i32 [[#MDWORDS + 6 + 2]] }, align [[#WORDSIZE]]
2839
// CHECK-64-SAME: { [[INT]] [[#MDSIZE64]], i32 3, i32 [[#MDWORDS + 3 + 2]] }, align [[#WORDSIZE]]
2940

30-
// CHECK: @"$s18package_resilience16MyResilientChildC5fields5Int32VvpWvd" = constant [[INT]] [[#WORDSIZE + WORDSIZE + 4]], align [[#WORDSIZE]]
41+
// CHECK: @"$s18package_resilience16MyResilientChildC5fields5Int32VvpWvd" = hidden constant [[INT]] [[#WORDSIZE + WORDSIZE + 4]],
3142

3243
// CHECK: @"$s18package_resilience16MyResilientChildCMo" = {{(protected )?}}{{(dllexport )?}}constant [[BOUNDS]]
3344
// CHECK-32-SAME: { [[INT]] [[#MDSIZE32 + WORDSIZE + WORDSIZE]], i32 3, i32 [[#MDWORDS + 6 + 3]] }
@@ -41,10 +52,8 @@
4152
// CHECK-32-SAME: { [[INT]] [[#MDSIZE32 + WORDSIZE + WORDSIZE + WORDSIZE]], i32 3, i32 [[#MDWORDS + 6 + 5]] }
4253
// CHECK-64-SAME: { [[INT]] [[#MDSIZE64 + WORDSIZE + WORDSIZE + WORDSIZE]], i32 3, i32 [[#MDWORDS + 3 + 5]] }
4354

44-
// CHECK: @"$s18package_resilience27ClassWithEmptyThenResilientC5emptyAA0E0VvpWvd" = constant [[INT]] 0,
45-
// CHECK: @"$s18package_resilience27ClassWithEmptyThenResilientC9resilient0H7_struct0G3IntVvpWvd" = constant [[INT]] [[#WORDSIZE + WORDSIZE]], align [[#WORDSIZE]]
46-
// CHECK: @"$s18package_resilience27ClassWithResilientThenEmptyC9resilient0H7_struct0E3IntVvpWvd" = constant [[INT]] [[#WORDSIZE + WORDSIZE]], align [[#WORDSIZE]]
47-
// CHECK: @"$s18package_resilience27ClassWithResilientThenEmptyC5emptyAA0G0VvpWvd" = constant [[INT]] 0,
55+
// CHECK: @"$s18package_resilience27ClassWithEmptyThenResilientC5emptyAA0E0VvpWvd" = hidden constant [[INT]] 0,
56+
// CHECK: @"$s18package_resilience27ClassWithResilientThenEmptyC5emptyAA0G0VvpWvd" = hidden constant [[INT]] 0,
4857

4958
import resilient_class
5059
import resilient_struct
@@ -172,24 +181,27 @@ package class ClassWithResilientThenEmpty {
172181
// ClassWithResilientProperty.color getter
173182

174183
// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc i32 @"$s18package_resilience26ClassWithResilientPropertyC5colors5Int32Vvg"(ptr swiftself %0)
175-
// CHECK: [[FIELD_ADDR:%.*]] = getelementptr inbounds %T18package_resilience26ClassWithResilientPropertyC, ptr %0,
176-
// CHECK-NEXT: [[FIELD_PAYLOAD:%.*]] = getelementptr inbounds %Ts5Int32V, ptr [[FIELD_ADDR]], i32 0, i32 0
177-
// CHECK-NEXT: [[FIELD_VALUE:%.*]] = load i32, ptr [[FIELD_PAYLOAD]]
178-
// CHECK: ret i32 [[FIELD_VALUE]]
184+
// CHECK: [[OFFSET:%.*]] = load [[INT]], ptr @"$s18package_resilience26ClassWithResilientPropertyC5colors5Int32VvpWvd",
185+
// CHECK-NEXT: [[FIELD_ADDR:%.*]] = getelementptr inbounds i8, ptr %0, [[INT]] [[OFFSET]]
186+
// CHECK-NEXT: [[FIELD_VALUE:%.*]] = getelementptr inbounds %Ts5Int32V, ptr [[FIELD_ADDR]], i32 0, i32 0
187+
// CHECK-NEXT: [[FIELD_PAYLOAD:%.*]] = load i32, ptr [[FIELD_VALUE]]
188+
// CHECK: ret i32 [[FIELD_PAYLOAD]]
179189

180190
// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc i32 @"$s18package_resilience33ClassWithResilientlySizedPropertyC5colors5Int32Vvg"(ptr swiftself %0)
181-
// CHECK: [[FIELD_ADDR:%.*]] = getelementptr inbounds %T18package_resilience33ClassWithResilientlySizedPropertyC, ptr %0,
182-
// CHECK-NEXT: [[FIELD_PAYLOAD:%.*]] = getelementptr inbounds %Ts5Int32V, ptr [[FIELD_ADDR]], i32 0, i32 0
183-
// CHECK-NEXT: [[FIELD_VALUE:%.*]] = load i32, ptr [[FIELD_PAYLOAD]]
184-
// CHECK: ret i32 [[FIELD_VALUE]]
191+
// CHECK: [[OFFSET:%.*]] = load [[INT]], ptr @"$s18package_resilience33ClassWithResilientlySizedPropertyC5colors5Int32VvpWvd",
192+
// CHECK-NEXT: [[FIELD_ADDR:%.*]] = getelementptr inbounds i8, ptr %0, [[INT]] [[OFFSET]]
193+
// CHECK-NEXT: [[FIELD_VALUE:%.*]] = getelementptr inbounds %Ts5Int32V, ptr [[FIELD_ADDR]], i32 0, i32 0
194+
// CHECK-NEXT: [[FIELD_PAYLOAD:%.*]] = load i32, ptr [[FIELD_VALUE]]
195+
// CHECK: ret i32 [[FIELD_PAYLOAD]]
185196

186197
// ClassWithIndirectResilientEnum.color getter
187198

188199
// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc i32 @"$s18package_resilience30ClassWithIndirectResilientEnumC5colors5Int32Vvg"(ptr swiftself %0)
189-
// CHECK: [[FIELD_PTR:%.*]] = getelementptr inbounds %T18package_resilience30ClassWithIndirectResilientEnumC, ptr %0, i32 0, i32 2
190-
// CHECK-NEXT: [[FIELD_PAYLOAD:%.*]] = getelementptr inbounds %Ts5Int32V, ptr [[FIELD_PTR]], i32 0, i32 0
191-
// CHECK-NEXT: [[FIELD_VALUE:%.*]] = load i32, ptr [[FIELD_PAYLOAD]]
192-
// CHECK-NEXT: ret i32 [[FIELD_VALUE]]
200+
// CHECK: [[OFFSET:%.*]] = load [[INT]], ptr @"$s18package_resilience30ClassWithIndirectResilientEnumC5colors5Int32VvpWvd",
201+
// CHECK-NEXT: [[FIELD_PTR:%.*]] = getelementptr inbounds i8, ptr %0, [[INT]] [[OFFSET]]
202+
// CHECK-NEXT: [[FIELD_VALUE:%.*]] = getelementptr inbounds %Ts5Int32V, ptr [[FIELD_PTR]], i32 0, i32 0
203+
// CHECK-NEXT: [[FIELD_PAYLOAD:%.*]] = load i32, ptr [[FIELD_VALUE]]
204+
// CHECK-NEXT: ret i32 [[FIELD_PAYLOAD]]
193205

194206
// Make sure that MemoryLayout always emits constants
195207

@@ -214,29 +226,43 @@ package class ClassWithResilientThenEmpty {
214226

215227
// CHECK-LABEL: define{{.*}} swiftcc {{i32|i64}} @"$s18package_resilience38memoryLayoutDotSizeWithResilientStructSiyF"()
216228
public func memoryLayoutDotSizeWithResilientStruct() -> Int {
217-
// CHECK: ret [[INT]] [[#WORDSIZE + WORDSIZE]]
229+
// CHECK: [[FIELD_VALUE:%.*]] = load ptr, ptr {{.*}},
230+
// CHECK-NEXT: [[FIELD_PTR:%.*]] = getelementptr inbounds %swift.vwtable, ptr [[FIELD_VALUE]],
231+
// CHECK-NEXT: [[SIZE:%.*]] = load [[INT]], ptr [[FIELD_PTR]],
232+
// CHECK-NEXT: ret [[INT]] [[SIZE]]
218233
return MemoryLayout<Size>.size
219234
}
220235

221236
// CHECK-LABEL: define{{.*}} swiftcc {{i32|i64}} @"$s18package_resilience40memoryLayoutDotStrideWithResilientStructSiyF"()
222237
public func memoryLayoutDotStrideWithResilientStruct() -> Int {
223-
// CHECK: ret [[INT]] [[#WORDSIZE + WORDSIZE]]
238+
// CHECK: [[FIELD_VALUE:%.*]] = load ptr, ptr {{.*}},
239+
// CHECK-NEXT: [[FIELD_PTR:%.*]] = getelementptr inbounds %swift.vwtable, ptr [[FIELD_VALUE]],
240+
// CHECK-NEXT: [[SIZE:%.*]] = load [[INT]], ptr [[FIELD_PTR]],
241+
// CHECK-NEXT: ret [[INT]] [[SIZE]]
224242
return MemoryLayout<Size>.size
225243
}
226244

227245
// CHECK-LABEL: define{{.*}} swiftcc {{i32|i64}} @"$s18package_resilience43memoryLayoutDotAlignmentWithResilientStructSiyF"()
228246
public func memoryLayoutDotAlignmentWithResilientStruct() -> Int {
229-
// CHECK: ret [[INT]] [[#WORDSIZE]]
247+
// CHECK: [[FIELD_VALUE:%.*]] = load ptr, ptr {{.*}},
248+
// CHECK-NEXT: [[FIELD_PTR:%.*]] = getelementptr inbounds %swift.vwtable, ptr [[FIELD_VALUE]],
249+
// CHECK-NEXT: [[FIELD_FLAGS:%.*]] = load i32, ptr [[FIELD_PTR]],
250+
// CHECK-NEXT: [[FIELD_ADDR:%.*]] = zext i32 [[FIELD_FLAGS]] to [[INT]]
251+
// CHECK-NEXT: [[FIELD_MASK:%.*]] = and [[INT]] [[FIELD_ADDR]], 255
252+
// CHECK-NEXT: [[FIELD_PAYLOAD:%.*]] = add [[INT]] [[FIELD_MASK]], 1
253+
// CHECK-NEXT: ret [[INT]] [[FIELD_PAYLOAD]]
230254
return MemoryLayout<Size>.alignment
231255
}
232256

233-
// CHECK: define{{( dllexport)?}}{{( protected)?}} swiftcc [[BOUNDS:{ (i32|i64), (i32|i64), i8 }]] @"$s18package_resilience31constructResilientEnumNoPayload14resilient_enum6MediumOyF"
257+
// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc [[BOUNDS:{ (i32|i64), (i32|i64), i8 }]] @"$s18package_resilience31constructResilientEnumNoPayload14resilient_enum6MediumOyF"
234258
package func constructResilientEnumNoPayload() -> Medium {
235-
// CHECK: ret [[BOUNDS]] { {{i32|i64}} 0, {{i32|i64}} 0, i8 2 }
259+
// CHECK: [[FIELD_TAG:%.*]] = load ptr, ptr {{.*}},
260+
// CHECK-NEXT: call void [[FIELD_TAG]](ptr noalias
261+
// CHECK-NEXT: ret void
236262
return Medium.Paper
237263
}
238264

239-
// CHECK: define{{( dllexport)?}}{{( protected)?}} swiftcc [[BOUNDS:{ (i32|i64), (i32|i64), i8 }]] @"$s18package_resilience39constructExhaustiveWithResilientMembers14resilient_enum11SimpleShapeOyF"() #0 {
265+
// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc [[BOUNDS:{ (i32|i64), (i32|i64), i8 }]] @"$s18package_resilience39constructExhaustiveWithResilientMembers14resilient_enum11SimpleShapeOyF"() #0 {
240266
package func constructExhaustiveWithResilientMembers() -> SimpleShape {
241267
// CHECK: ret [[BOUNDS]] { {{i32|i64}} 0, {{i32|i64}} 0, i8 1 }
242268
return .KleinBottle
@@ -245,20 +271,18 @@ package func constructExhaustiveWithResilientMembers() -> SimpleShape {
245271
// ClassWithResilientProperty metadata accessor
246272

247273
// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc %swift.metadata_response @"$s18package_resilience26ClassWithResilientPropertyCMa"(
248-
// CHECK-objc: [[METADATA:%.*]] = call ptr {{.*}}@"$s18package_resilience26ClassWithResilientPropertyCMf"{{.*}}
249-
// CHECK-objc-NEXT: [[T0:%.*]] = insertvalue %swift.metadata_response undef, ptr [[METADATA]], 0
250-
// CHECK-objc-NEXT: [[T1:%.*]] = insertvalue %swift.metadata_response [[T0]], i64 0, 1
251-
// CHECK-objc-NEXT: ret %swift.metadata_response [[T1]]
274+
// CHECK-objc: [[T0:%.*]] = load ptr, ptr @"$s18package_resilience26ClassWithResilientPropertyCMl",
275+
// CHECK-objc-NEXT: [[T1:%.*]] = icmp eq ptr [[T0]], null
276+
// CHECK-objc-NEXT: br i1 [[T1]], label %cacheIsNull, label %cont
252277

253278
// CHECK-native: ret %swift.metadata_response
254279

255280
// ClassWithResilientlySizedProperty metadata accessor
256281

257282
// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc %swift.metadata_response @"$s18package_resilience33ClassWithResilientlySizedPropertyCMa"(
258-
// CHECK-objc: [[METADATA:%.*]] = call ptr {{.*}}@"$s18package_resilience33ClassWithResilientlySizedPropertyCMf"{{.*}}
259-
// CHECK-objc-NEXT: [[T0:%.*]] = insertvalue %swift.metadata_response undef, ptr [[METADATA]], 0
260-
// CHECK-objc-NEXT: [[T1:%.*]] = insertvalue %swift.metadata_response [[T0]], i64 0, 1
261-
// CHECK-objc-NEXT: ret %swift.metadata_response [[T1]]
283+
// CHECK-objc: [[T0:%.*]] = load ptr, ptr @"$s18package_resilience33ClassWithResilientlySizedPropertyCMl",
284+
// CHECK-objc-NEXT: [[T1:%.*]] = icmp eq ptr [[T0]], null
285+
// CHECK-objc-NEXT: br i1 [[T1]], label %cacheIsNull, label %cont
262286

263287
// CHECK-native: ret %swift.metadata_response
264288

0 commit comments

Comments
 (0)