Skip to content

Commit 90c1102

Browse files
drexinaschwaighofer
authored andcommitted
Update more IRGen tests for opaque pointers
1 parent 1adf2ae commit 90c1102

13 files changed

+540
-725
lines changed
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// RUN: %empty-directory(%t)
22
// RUN: %build-irgen-test-overlays
3-
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) %use_no_opaque_pointers %S/eager-class-initialization.swift -target %target-stable-abi-triple -emit-ir | %FileCheck %S/eager-class-initialization.swift -DINT=i%target-ptrsize --check-prefix=CHECK
4-
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) %S/eager-class-initialization.swift -target %target-stable-abi-triple -emit-ir
3+
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) %S/eager-class-initialization.swift -target %target-stable-abi-triple -emit-ir | %FileCheck %S/eager-class-initialization.swift -DINT=i%target-ptrsize --check-prefix=CHECK
54

65
// REQUIRES: objc_interop
76
// REQUIRES: swift_stable_abi

test/IRGen/eager-class-initialization.swift

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// RUN: %empty-directory(%t)
22
// RUN: %build-irgen-test-overlays
3-
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) %use_no_opaque_pointers %s -emit-ir -target %target-pre-stable-abi-triple | %FileCheck %s -DINT=i%target-ptrsize --check-prefix=CHECK --check-prefix=CHECK-OLD
4-
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) %s -emit-ir -target %target-pre-stable-abi-triple
3+
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) %s -emit-ir -target %target-pre-stable-abi-triple | %FileCheck %s -DINT=i%target-ptrsize --check-prefix=CHECK --check-prefix=CHECK-OLD
54

65
// REQUIRES: objc_interop
76
// UNSUPPORTED: swift_only_stable_abi
@@ -28,8 +27,8 @@ class GenericAncestryWithCustomName : Generic<Double> {}
2827
// CHECK-NEXT: entry:
2928
// CHECK-OLD-NEXT: [[RESPONSE:%.*]] = call swiftcc %swift.metadata_response @"$s4main15GenericAncestryCMa"([[INT]] 0)
3029
// CHECK-OLD-NEXT: [[METADATA:%.*]] = extractvalue %swift.metadata_response [[RESPONSE]], 0
31-
// CHECK-OLD-NEXT: call void asm sideeffect "", "r"(%swift.type* [[METADATA]])
30+
// CHECK-OLD-NEXT: call void asm sideeffect "", "r"(ptr [[METADATA]])
3231
// CHECK-NEXT: [[RESPONSE:%.*]] = call swiftcc %swift.metadata_response @"$s4main29GenericAncestryWithCustomNameCMa"([[INT]] 0)
3332
// CHECK-NEXT: [[METADATA:%.*]] = extractvalue %swift.metadata_response [[RESPONSE]], 0
34-
// CHECK-NEXT: call void asm sideeffect "", "r"(%swift.type* [[METADATA]])
33+
// CHECK-NEXT: call void asm sideeffect "", "r"(ptr [[METADATA]])
3534
// CHECK-NEXT: ret

test/IRGen/enum_32_bit.sil

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,21 +18,18 @@ sil_vtable C {}
1818

1919
sil @$s11enum_32_bit1CCfD : $@convention(thin) (@owned C) -> ()
2020

21-
// CHECK-LABEL: %T11enum_32_bit3FooO = type <{ [4 x i8] }>
2221
enum Foo {
2322
case A(C)
2423
case B
2524
}
2625

2726
@objc protocol ClassExistential {}
2827

29-
// CHECK-LABEL: %T11enum_32_bit3BarO = type <{ [4 x i8] }>
3028
enum Bar {
3129
case A(ClassExistential)
3230
case B
3331
}
3432

35-
// CHECK-LABEL: %T11enum_32_bit3BasO = type <{ [4 x i8] }>
3633
enum Bas {
3734
case A(ClassExistential)
3835
case B(C)

test/IRGen/enum_dynamic_multi_payload.sil

Lines changed: 48 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
// RUN: %target-swift-frontend %use_no_opaque_pointers -disable-type-layout %s -gnone -emit-ir -I %S/Inputs | %FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-%target-ptrsize -DINT=i%target-ptrsize
2-
// RUN: %target-swift-frontend -disable-type-layout %s -gnone -emit-ir -I %S/Inputs
1+
// RUN: %target-swift-frontend -disable-type-layout %s -gnone -emit-ir -I %S/Inputs | %FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-%target-ptrsize -DINT=i%target-ptrsize
32

43
import Builtin
54

@@ -42,27 +41,24 @@ entry(%e : $Either<(), ()>):
4241

4342
// CHECK-NEXT: alloca
4443
// CHECK-NEXT: trunc i8 {{.*}} to i1
45-
// CHECK-NEXT: bitcast
4644
// CHECK-NEXT: llvm.lifetime.start
4745
%s = alloc_stack $Either<(), ()>
4846

4947
%l = enum $Either<(), ()>, #Either.Left!enumelt, undef : $()
50-
// CHECK-NEXT: bitcast {{.*}} to i1*
5148
// CHECK-NEXT: store i1 false
5249
store %l to %s : $*Either<(), ()>
5350
%r = enum $Either<(), ()>, #Either.Right!enumelt, undef : $()
54-
// CHECK-NEXT: bitcast {{.*}} to i1*
5551
// CHECK-NEXT: store i1 true
5652
store %r to %s : $*Either<(), ()>
5753

5854
%a = unchecked_enum_data %l : $Either<(), ()>, #Either.Left!enumelt
5955
%b = unchecked_enum_data %r : $Either<(), ()>, #Either.Right!enumelt
6056

61-
// CHECK-NEXT: br i1 {{%.*}}, label %7, label %6
62-
// CHECK: 6:
63-
// CHECK: br label %8
64-
// CHECK: 7:
65-
// CHECK: br label %9
57+
// CHECK-NEXT: br i1 {{%.*}}, label %[[RIGHT_PRE:[0-9]+]], label %[[LEFT_PRE:[0-9]+]]
58+
// CHECK: [[LEFT_PRE]]:
59+
// CHECK: br label [[LEFT:%[0-9]+]]
60+
// CHECK: [[RIGHT_PRE]]:
61+
// CHECK: br label [[RIGHT:%[0-9]+]]
6662
switch_enum %e : $Either<(), ()>,
6763
case #Either.Left!enumelt: left,
6864
case #Either.Right!enumelt: right
@@ -75,7 +71,7 @@ right(%y : $()):
7571
%1 = integer_literal $Builtin.Int8, 1
7672
br next(%1 : $Builtin.Int8)
7773

78-
// CHECK: phi i8 [ 1, %9 ], [ 0, %8 ]
74+
// CHECK: phi i8 [ 1, [[RIGHT]] ], [ 0, [[LEFT]] ]
7975
next(%z : $Builtin.Int8):
8076
dealloc_stack %s : $*Either<(), ()>
8177
return undef : $()
@@ -91,23 +87,18 @@ entry(%e : $EitherOr<(), ()>):
9187
fix_lifetime %e : $EitherOr<(), ()>
9288

9389
// CHECK-NEXT: alloca
94-
// CHECK-NEXT: bitcast
9590
// CHECK-NEXT: llvm.lifetime.start
9691
%s = alloc_stack $EitherOr<(), ()>
9792

98-
// CHECK-NEXT: bitcast {{.*}} to i8*
9993
// CHECK-NEXT: store i8 0
10094
%l = enum $EitherOr<(), ()>, #EitherOr.Left!enumelt, undef : $()
10195
store %l to %s : $*EitherOr<(), ()>
102-
// CHECK-NEXT: bitcast {{.*}} to i8*
10396
// CHECK-NEXT: store i8 1
10497
%r = enum $EitherOr<(), ()>, #EitherOr.Right!enumelt, undef : $()
10598
store %r to %s : $*EitherOr<(), ()>
106-
// CHECK-NEXT: bitcast {{.*}} to i8*
10799
// CHECK-NEXT: store i8 2
108100
%m = enum $EitherOr<(), ()>, #EitherOr.Middle!enumelt
109101
store %m to %s : $*EitherOr<(), ()>
110-
// CHECK-NEXT: bitcast {{.*}} to i8*
111102
// CHECK-NEXT: store i8 3
112103
%k = enum $EitherOr<(), ()>, #EitherOr.Center!enumelt
113104
store %k to %s : $*EitherOr<(), ()>
@@ -265,36 +256,33 @@ entry:
265256
}
266257

267258
// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc void @dynamic_inject
268-
// CHECK: ([[EITHER_OR:%swift.opaque]]* noalias nocapture sret({{.*}}) %0, %swift.type* %T)
259+
// CHECK: (ptr noalias nocapture sret({{.*}}) %0, ptr %T)
269260
sil @dynamic_inject : $@convention(thin) <T> () -> @out EitherOr<T, Builtin.Int64> {
270261
entry(%e : $*EitherOr<T, Builtin.Int64>):
271-
// CHECK: call void @swift_storeEnumTagMultiPayload(%swift.opaque* {{%.*}}, %swift.type* [[TYPE:%.*]], i32 0)
262+
// CHECK: call void @swift_storeEnumTagMultiPayload(ptr {{%.*}}, ptr [[TYPE:%.*]], i32 0)
272263
inject_enum_addr %e : $*EitherOr<T, Builtin.Int64>, #EitherOr.Left!enumelt
273-
// CHECK: call void @swift_storeEnumTagMultiPayload(%swift.opaque* {{%.*}}, %swift.type* [[TYPE]], i32 2)
264+
// CHECK: call void @swift_storeEnumTagMultiPayload(ptr {{%.*}}, ptr [[TYPE]], i32 2)
274265
inject_enum_addr %e : $*EitherOr<T, Builtin.Int64>, #EitherOr.Middle!enumelt
275-
// CHECK: call void @swift_storeEnumTagMultiPayload(%swift.opaque* {{%.*}}, %swift.type* [[TYPE]], i32 3)
266+
// CHECK: call void @swift_storeEnumTagMultiPayload(ptr {{%.*}}, ptr [[TYPE]], i32 3)
276267
inject_enum_addr %e : $*EitherOr<T, Builtin.Int64>, #EitherOr.Center!enumelt
277-
// CHECK: call void @swift_storeEnumTagMultiPayload(%swift.opaque* {{%.*}}, %swift.type* [[TYPE]], i32 1)
268+
// CHECK: call void @swift_storeEnumTagMultiPayload(ptr {{%.*}}, ptr [[TYPE]], i32 1)
278269
inject_enum_addr %e : $*EitherOr<T, Builtin.Int64>, #EitherOr.Right!enumelt
279270

280271
return undef : $()
281272
}
282273

283274
// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc void @dynamic_project
284-
// CHECK: ([[EITHER_OR]]* noalias nocapture sret({{.*}}) %0, %swift.type* %T)
275+
// CHECK: (ptr noalias nocapture sret({{.*}}) %0, ptr %T)
285276
sil @dynamic_project : $@convention(thin) <T> () -> @out EitherOr<T, Builtin.Int64> {
286277
entry(%e : $*EitherOr<T, Builtin.Int64>):
287-
// CHECK: [[ARG:%.*]] = bitcast %swift.opaque* %0 to %T26enum_dynamic_multi_payload8EitherOrO.0
288-
// CHECK: bitcast %T26enum_dynamic_multi_payload8EitherOrO.0* [[ARG]] to %swift.opaque*
289278
%l = unchecked_take_enum_data_addr %e : $*EitherOr<T, Builtin.Int64>, #EitherOr.Left!enumelt
290-
// CHECK: bitcast %T26enum_dynamic_multi_payload8EitherOrO.0* [[ARG]] to i64*
291279
%r = unchecked_take_enum_data_addr %e : $*EitherOr<T, Builtin.Int64>, #EitherOr.Right!enumelt
292280

293281
return undef : $()
294282
}
295283

296284
// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc void @dynamic_switch
297-
// CHECK: ([[EITHER_OR]]* noalias nocapture sret({{.*}}) %0, %swift.type* %T)
285+
// CHECK: (ptr noalias nocapture sret({{.*}}) %0, ptr %T)
298286
sil @dynamic_switch : $@convention(thin) <T> () -> @out EitherOr<T, Builtin.Int64> {
299287
entry(%e : $*EitherOr<T, Builtin.Int64>):
300288
// CHECK: [[TAG:%.*]] = call i32 @swift_getEnumCaseMultiPayload
@@ -335,15 +323,17 @@ next(%x : $Builtin.Int8):
335323
}
336324

337325
// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc void @dynamic_value_semantics
338-
// CHECK: ([[EITHER_OR]]* noalias nocapture sret({{.*}}) %0, %T26enum_dynamic_multi_payload8EitherOrO.0* noalias nocapture %1, %swift.type* %T)
326+
// CHECK: (ptr noalias nocapture sret({{.*}}) %0, ptr noalias nocapture %1, ptr %T)
339327
sil @dynamic_value_semantics : $@convention(thin) <T> (@in EitherOr<T, Builtin.Int64>) -> @out EitherOr<T, Builtin.Int64> {
340328
entry(%a : $*EitherOr<T, Builtin.Int64>, %b : $*EitherOr<T, Builtin.Int64>):
341329
// CHECK: [[TAG:%.*]] = call i32 @swift_getEnumCaseMultiPayload
342330
// -- only the Left branch of this instance needs cleanup
343331
// CHECK: [[COND:%.*]] = icmp ne i32 [[TAG]], 0
344332
// CHECK-NEXT: br i1 [[COND]], label %[[NOOP:[0-9]+]], label %[[LEFT:[0-9]+]]
345333
// CHECK: [[LEFT]]:
346-
// CHECK: call void %destroy(%swift.opaque* noalias {{%.*}}, %swift.type* %T)
334+
// CHECK: [[DESTROYADDR:%[0-9]+]] = getelementptr inbounds ptr, ptr %T.valueWitnesses, i32 1
335+
// CHECK: [[DESTROY:%[0-9]+]] = load ptr, ptr [[DESTROYADDR]]
336+
// CHECK: call void [[DESTROY]](ptr noalias {{%[0-9]+}}, ptr %T)
347337
// CHECK: br label %[[NOOP]]
348338
// CHECK: [[NOOP]]:
349339
destroy_addr %a : $*EitherOr<T, Builtin.Int64>
@@ -353,7 +343,9 @@ entry(%a : $*EitherOr<T, Builtin.Int64>, %b : $*EitherOr<T, Builtin.Int64>):
353343
// CHECK: [[COND:%.*]] = icmp ne i32 [[TAG]], 0
354344
// CHECK-NEXT: br i1 [[COND]], label %[[TRIVIAL:[0-9]+]], label %[[LEFT:[0-9]+]]
355345
// CHECK: [[LEFT]]:
356-
// CHECK: call %swift.opaque* %initializeWithTake(%swift.opaque* noalias {{%.*}}, %swift.type* %T)
346+
// CHECK: [[INITWITHTAKEADDR:%[0-9]+]] = getelementptr inbounds ptr, ptr %T.valueWitnesses, i32 4
347+
// CHECK: [[INITWITHTAKE:%[0-9]+]] = load ptr, ptr [[INITWITHTAKEADDR]]
348+
// CHECK: {{%[0-9]+}} = call ptr [[INITWITHTAKE]](ptr noalias {{%[0-9]+}}, ptr noalias {{%[0-9]+}}, ptr %T)
357349
// CHECK: br label %[[DONE:[0-9]+]]
358350
// CHECK: [[TRIVIAL]]:
359351
// CHECK: call void @llvm.memcpy
@@ -369,7 +361,7 @@ entry(%a : $*EitherOr<T, Builtin.Int64>, %b : $*EitherOr<T, Builtin.Int64>):
369361
}
370362

371363
// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc void @dynamic_value_semantics2
372-
// CHECK: (%swift.opaque* noalias nocapture sret({{.*}}) %0, %T26enum_dynamic_multi_payload8EitherOrO.1* noalias nocapture %1, %swift.type* %T)
364+
// CHECK: (ptr noalias nocapture sret({{.*}}) %0, ptr noalias nocapture %1, ptr %T)
373365
sil @dynamic_value_semantics2 : $@convention(thin) <T> (@in EitherOr<T, C>) -> @out EitherOr<T, C> {
374366
entry(%a : $*EitherOr<T, C>, %b : $*EitherOr<T, C>):
375367
// CHECK: [[TAG:%.*]] = call i32 @swift_getEnumCaseMultiPayload
@@ -378,10 +370,12 @@ entry(%a : $*EitherOr<T, C>, %b : $*EitherOr<T, C>):
378370
// CHECK-NEXT: i32 1, label %[[RIGHT:[0-9]+]]
379371
// CHECK-NEXT: ]
380372
// CHECK: [[LEFT]]:
381-
// CHECK: call void %destroy(%swift.opaque* noalias {{%.*}}, %swift.type* %T)
373+
// CHECK: [[DESTROYADDR:%[0-9]+]] = getelementptr inbounds ptr, ptr %T.valueWitnesses, i32 1
374+
// CHECK: [[DESTROY:%[0-9]+]] = load ptr, ptr [[DESTROYADDR]]
375+
// CHECK: call void [[DESTROY]](ptr noalias {{%[0-9]+}}, ptr %T)
382376
// CHECK: br label %[[NOOP]]
383377
// CHECK: [[RIGHT]]:
384-
// CHECK: call void {{.*}} @swift_release
378+
// CHECK: call void @swift_release
385379
// CHECK: [[NOOP]]:
386380
destroy_addr %a : $*EitherOr<T, C>
387381

@@ -390,7 +384,9 @@ entry(%a : $*EitherOr<T, C>, %b : $*EitherOr<T, C>):
390384
// CHECK: [[COND:%.*]] = icmp ne i32 [[TAG]], 0
391385
// CHECK-NEXT: br i1 [[COND]], label %[[TRIVIAL:[0-9]+]], label %[[LEFT:[0-9]+]]
392386
// CHECK: [[LEFT]]:
393-
// CHECK: call %swift.opaque* %initializeWithTake(%swift.opaque* noalias {{%.*}}, %swift.type* %T)
387+
// CHECK: [[INITWITHTAKEADDR:%[0-9]+]] = getelementptr inbounds ptr, ptr %T.valueWitnesses, i32 4
388+
// CHECK: [[INITWITHTAKE:%[0-9]+]] = load ptr, ptr [[INITWITHTAKEADDR]]
389+
// CHECK: {{%[0-9]+}} = call ptr [[INITWITHTAKE]](ptr noalias {{%[0-9]+}}, ptr noalias {{%[0-9]+}}, ptr %T)
394390
// CHECK: br label %[[DONE:[0-9]+]]
395391
// CHECK: [[TRIVIAL]]:
396392
// CHECK: call void @llvm.memcpy
@@ -405,10 +401,12 @@ entry(%a : $*EitherOr<T, C>, %b : $*EitherOr<T, C>):
405401
// CHECK-NEXT: i32 1, label %[[RIGHT:[0-9]+]]
406402
// CHECK-NEXT: ]
407403
// CHECK: [[LEFT]]:
408-
// CHECK: call %swift.opaque* %initializeWithCopy(%swift.opaque* noalias {{%.*}}, %swift.type* %T)
404+
// CHECK: [[INITWITHCOPYADDR:%[0-9]+]] = getelementptr inbounds ptr, ptr %T.valueWitnesses, i32 2
405+
// CHECK: [[INITWITHCOPY:%[0-9]+]] = load ptr, ptr [[INITWITHCOPYADDR]]
406+
// CHECK: {{%[0-9]+}} = call ptr [[INITWITHCOPY]](ptr noalias {{%[0-9]+}}, ptr noalias {{%[0-9]+}}, ptr %T)
409407
// CHECK: br label %[[DONE:[0-9]+]]
410408
// CHECK: [[RIGHT]]:
411-
// CHECK: call %swift.refcounted* @swift_retain
409+
// CHECK: call ptr @swift_retain
412410
// CHECK: br label %[[DONE:[0-9]+]]
413411
// CHECK: [[TRIVIAL]]:
414412
// CHECK: call void @llvm.memcpy
@@ -419,35 +417,33 @@ entry(%a : $*EitherOr<T, C>, %b : $*EitherOr<T, C>):
419417
return undef : $()
420418
}
421419

422-
// CHECK: define{{( dllexport)?}}{{( protected)?}} internal %swift.type* @"$s26enum_dynamic_multi_payload8EitherOrOMi"(%swift.type_descriptor* %0, i8** %1, i8* %2) {{.*}} {
423-
// CHECK: [[METADATA:%.*]] = call %swift.type* @swift_allocateGenericValueMetadata
420+
// CHECK: define{{( dllexport)?}}{{( protected)?}} internal ptr @"$s26enum_dynamic_multi_payload8EitherOrOMi"(ptr %0, ptr %1, ptr %2) {{.*}} {
421+
// CHECK: [[METADATA:%.*]] = call ptr @swift_allocateGenericValueMetadata
424422

425423
// CHECK: define{{( protected)?}} internal swiftcc %swift.metadata_response @"$s26enum_dynamic_multi_payload8EitherOrOMr"
426-
// CHECK-SAME: (%swift.type* [[METADATA:%.*]], i8* %0, i8** %1) {{.*}} {
424+
// CHECK-SAME: (ptr [[METADATA:%.*]], ptr %0, ptr %1) {{.*}} {
427425

428-
// CHECK: [[BUF:%.*]] = alloca [2 x i8**]
426+
// CHECK: [[BUF:%.*]] = alloca [2 x ptr]
429427
// CHECK: [[BUF0:%.*]] = getelementptr {{.*}} [[BUF]], i32 0, i32 0
430-
// CHECK: [[T0:%.*]] = call{{( tail)?}} swiftcc %swift.metadata_response @swift_checkMetadataState([[INT]] 319, %swift.type* %T)
428+
// CHECK: [[T0:%.*]] = call{{( tail)?}} swiftcc %swift.metadata_response @swift_checkMetadataState([[INT]] 319, ptr %T)
431429
// CHECK-NEXT: [[T_CHECKED:%.*]] = extractvalue %swift.metadata_response [[T0]], 0
432430
// CHECK-NEXT: [[T_STATUS:%.*]] = extractvalue %swift.metadata_response [[T0]], 1
433431
// CHECK-NEXT: [[T_OK:%.*]] = icmp ule [[INT]] [[T_STATUS]], 63
434432
// CHECK-NEXT: br i1 [[T_OK]],
435-
// CHECK: [[T0:%.*]] = bitcast %swift.type* [[T_CHECKED]] to i8***
436-
// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds i8**, i8*** [[T0]]
437-
// CHECK-NEXT: [[VALUE_WITNESSES:%.*]] = load i8**, i8*** [[T1]]
438-
// CHECK-NEXT: [[LAYOUT:%.*]] = getelementptr inbounds i8*, i8** [[VALUE_WITNESSES]], i32 8
439-
// CHECK-NEXT: store i8** [[LAYOUT]], {{.*}} [[BUF0]]
433+
// CHECK: [[T1:%.*]] = getelementptr inbounds ptr, ptr [[T_CHECKED]]
434+
// CHECK-NEXT: [[VALUE_WITNESSES:%.*]] = load ptr, ptr [[T1]]
435+
// CHECK-NEXT: [[LAYOUT:%.*]] = getelementptr inbounds ptr, ptr [[VALUE_WITNESSES]], i32 8
436+
// CHECK-NEXT: store ptr [[LAYOUT]], {{.*}} [[BUF0]]
440437

441438
// CHECK: [[BUF1:%.*]] = getelementptr {{.*}} [[BUF]], i32 0, i32 1
442-
// CHECK: [[T0:%.*]] = call{{( tail)?}} swiftcc %swift.metadata_response @swift_checkMetadataState([[INT]] 319, %swift.type* %U)
439+
// CHECK: [[T0:%.*]] = call{{( tail)?}} swiftcc %swift.metadata_response @swift_checkMetadataState([[INT]] 319, ptr %U)
443440
// CHECK-NEXT: [[U_CHECKED:%.*]] = extractvalue %swift.metadata_response [[T0]], 0
444441
// CHECK-NEXT: [[U_STATUS:%.*]] = extractvalue %swift.metadata_response [[T0]], 1
445442
// CHECK-NEXT: [[U_OK:%.*]] = icmp ule [[INT]] [[U_STATUS]], 63
446443
// CHECK-NEXT: br i1 [[U_OK]],
447-
// CHECK: [[T0:%.*]] = bitcast %swift.type* [[U_CHECKED]] to i8***
448-
// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds i8**, i8*** [[T0]]
449-
// CHECK-NEXT: [[VALUE_WITNESSES:%.*]] = load i8**, i8*** [[T1]]
450-
// CHECK-NEXT: [[LAYOUT:%.*]] = getelementptr inbounds i8*, i8** [[VALUE_WITNESSES]], i32 8
451-
// CHECK-NEXT: store i8** [[LAYOUT]], {{.*}} [[BUF1]]
444+
// CHECK: [[T1:%.*]] = getelementptr inbounds ptr, ptr [[U_CHECKED]]
445+
// CHECK-NEXT: [[VALUE_WITNESSES:%.*]] = load ptr, ptr [[T1]]
446+
// CHECK-NEXT: [[LAYOUT:%.*]] = getelementptr inbounds ptr, ptr [[VALUE_WITNESSES]], i32 8
447+
// CHECK-NEXT: store ptr [[LAYOUT]], {{.*}} [[BUF1]]
452448

453-
// CHECK: call void @swift_initEnumMetadataMultiPayload(%swift.type* [[METADATA]], {{i(32|64)}} 0, {{i(32|64)}} 2, i8*** [[BUF0]])
449+
// CHECK: call void @swift_initEnumMetadataMultiPayload(ptr [[METADATA]], {{i(32|64)}} 0, {{i(32|64)}} 2, ptr [[BUF0]])

0 commit comments

Comments
 (0)