Skip to content

Commit 379cff4

Browse files
committed
Fix final set of tests not moved to opaque pointers
1 parent d2c8ede commit 379cff4

13 files changed

+282
-352
lines changed

test/IRGen/used.swift

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,11 @@
11
// RUN: %target-swift-frontend -enable-experimental-feature SymbolLinkageMarkers -primary-file %s -emit-sil | %FileCheck %s --check-prefix=SIL
22
// RUN: %target-swift-frontend -enable-experimental-feature SymbolLinkageMarkers -primary-file %s -O -emit-sil | %FileCheck %s --check-prefix=SIL
3-
// RUN: %target-swift-frontend %use_no_opaque_pointers -enable-experimental-feature SymbolLinkageMarkers -primary-file %s -emit-ir | %FileCheck %s --check-prefix=IR
4-
// RUN: %target-swift-frontend %use_no_opaque_pointers -enable-experimental-feature SymbolLinkageMarkers -primary-file %s -O -emit-ir | %FileCheck %s --check-prefix=IR
5-
// RUN: %target-swift-frontend -enable-experimental-feature SymbolLinkageMarkers -primary-file %s -emit-ir
6-
// RUN: %target-swift-frontend -enable-experimental-feature SymbolLinkageMarkers -primary-file %s -O -emit-ir
3+
// RUN: %target-swift-frontend -enable-experimental-feature SymbolLinkageMarkers -primary-file %s -emit-ir | %FileCheck %s --check-prefix=IR
4+
// RUN: %target-swift-frontend -enable-experimental-feature SymbolLinkageMarkers -primary-file %s -O -emit-ir | %FileCheck %s --check-prefix=IR
75
// RUN: %target-swift-frontend -enable-experimental-feature SymbolLinkageMarkers -primary-file %s -emit-sil -parse-as-library | %FileCheck %s --check-prefix=SIL
86
// RUN: %target-swift-frontend -enable-experimental-feature SymbolLinkageMarkers -primary-file %s -O -emit-sil -parse-as-library | %FileCheck %s --check-prefix=SIL
9-
// RUN: %target-swift-frontend %use_no_opaque_pointers -enable-experimental-feature SymbolLinkageMarkers -primary-file %s -emit-ir -parse-as-library | %FileCheck %s --check-prefix=IR
10-
// RUN: %target-swift-frontend %use_no_opaque_pointers -enable-experimental-feature SymbolLinkageMarkers -primary-file %s -O -emit-ir -parse-as-library | %FileCheck %s --check-prefix=IR
11-
// RUN: %target-swift-frontend -enable-experimental-feature SymbolLinkageMarkers -primary-file %s -emit-ir -parse-as-library
12-
// RUN: %target-swift-frontend -enable-experimental-feature SymbolLinkageMarkers -primary-file %s -O -emit-ir -parse-as-library
7+
// RUN: %target-swift-frontend -enable-experimental-feature SymbolLinkageMarkers -primary-file %s -emit-ir -parse-as-library | %FileCheck %s --check-prefix=IR
8+
// RUN: %target-swift-frontend -enable-experimental-feature SymbolLinkageMarkers -primary-file %s -O -emit-ir -parse-as-library | %FileCheck %s --check-prefix=IR
139

1410
// REQUIRES: swift_in_compiler
1511

@@ -29,8 +25,8 @@
2925

3026
// SIL: sil hidden [used] @$s4used3fooyyF : $@convention(thin)
3127

32-
// IR: @llvm{{(\.compiler)?}}.used = appending global [{{.*}} x i8*] [
33-
// IR-SAME: i8* bitcast (%TSi* @"$s4used2g0Sivp" to i8*)
34-
// IR-SAME: i8* bitcast (<{ %TSi, %TSi }>* @"$s4used2g1Si_Sitvp" to i8*)
35-
// IR-SAME: i8* bitcast (%TSb* @"$s4used2g2Sbvp" to i8*)
36-
// IR-SAME: i8* bitcast (void ()* @"$s4used3fooyyF" to i8*)
28+
// IR: @llvm{{(\.compiler)?}}.used = appending global [{{.*}} x ptr] [
29+
// IR-SAME: ptr @"$s4used2g0Sivp"
30+
// IR-SAME: ptr @"$s4used2g1Si_Sitvp"
31+
// IR-SAME: ptr @"$s4used2g2Sbvp"
32+
// IR-SAME: ptr @"$s4used3fooyyF"

test/IRGen/variadic_generic_captures.swift

Lines changed: 26 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,78 +1,60 @@
1-
// RUN: %target-swift-frontend %use_no_opaque_pointers -emit-ir %s | %FileCheck %s -DINT=i%target-ptrsize
2-
// RUN: %target-swift-frontend -emit-ir %s
1+
// RUN: %target-swift-frontend -emit-ir %s | %FileCheck %s -DINT=i%target-ptrsize
32

43
public func takesNoEscape(_: () -> ()) {}
54

65
public func has_metadata_pack<each T>(t: repeat each T) -> () -> () {
76
return { _ = (repeat each T).self }
87
}
98

10-
// CHECK-LABEL: define{{( protected)?}}{{( dllexport)?}} swiftcc { i8*, %swift.refcounted* } @"$s25variadic_generic_captures17has_metadata_pack1tyycxxQp_tRvzlF"(%swift.opaque** noalias nocapture %0, i{{32|64}} %1, %swift.type** %"each T") #0 {
11-
// CHECK: [[CONTEXT0:%.*]] = call noalias %swift.refcounted* @swift_allocObject(
12-
// CHECK: [[CONTEXT:%.*]] = bitcast %swift.refcounted* [[CONTEXT0]] to <{{.*}}>*
9+
// CHECK-LABEL: define{{( protected)?}}{{( dllexport)?}} swiftcc { ptr, ptr } @"$s25variadic_generic_captures17has_metadata_pack1tyycxxQp_tRvzlF"(ptr noalias nocapture %0, i{{32|64}} %1, ptr %"each T") #0 {
10+
// CHECK: [[CONTEXT0:%.*]] = call noalias ptr @swift_allocObject(
1311

14-
// CHECK: [[GENERIC_ARGS_ADDR:%.*]] = getelementptr inbounds {{.*}}* [[CONTEXT]], i32 0, i32 {{(1|2)}}
15-
// CHECK: [[GENERIC_ARGS:%.*]] = bitcast {{.*}} [[GENERIC_ARGS_ADDR]] to %swift.type**
16-
// CHECK: [[SHAPE_PTR:%.*]] = bitcast %swift.type** [[GENERIC_ARGS]] to [[INT]]*
17-
// CHECK: store [[INT]] %1, [[INT]]* [[SHAPE_PTR]]
12+
// CHECK: [[GENERIC_ARGS_ADDR:%.*]] = getelementptr inbounds {{.*}} [[CONTEXT0]], i32 0, i32 {{(1|2)}}
13+
// CHECK: store [[INT]] %1, ptr [[GENERIC_ARGS_ADDR]]
1814

19-
// CHECK: [[T_ADDR:%.*]] = getelementptr inbounds %swift.type*, %swift.type** [[GENERIC_ARGS]], i32 1
20-
// CHECK: [[T_HEAP:%.*]] = call swiftcc %swift.type** @swift_allocateMetadataPack(%swift.type** %"each T", [[INT]] %1)
21-
// CHECK: [[T_ADDR2:%.*]] = bitcast %swift.type** [[T_ADDR]] to %swift.type***
22-
// CHECK: store %swift.type** [[T_HEAP]], %swift.type*** [[T_ADDR2]]
15+
// CHECK: [[T_ADDR:%.*]] = getelementptr inbounds ptr, ptr [[GENERIC_ARGS_ADDR]], i32 1
16+
// CHECK: [[T_HEAP:%.*]] = call swiftcc ptr @swift_allocateMetadataPack(ptr %"each T", [[INT]] %1)
17+
// CHECK: store ptr [[T_HEAP]], ptr [[T_ADDR]]
2318

2419
// CHECK: [[CONTEXT1:%.*]] = insertvalue {{.*}} @"$s25variadic_generic_captures17has_metadata_pack1tyycxxQp_tRvzlFyycfU_TA{{(\.ptrauth)?}}"
25-
// CHECK: ret { i8*, %swift.refcounted* } [[CONTEXT1]]
20+
// CHECK: ret { ptr, ptr } [[CONTEXT1]]
2621

27-
// CHECK-LABEL: define internal swiftcc void @"$s25variadic_generic_captures17has_metadata_pack1tyycxxQp_tRvzlFyycfU_TA"(%swift.refcounted* swiftself %0)
28-
// CHECK: [[CONTEXT:%.*]] = bitcast %swift.refcounted* %0 to {{.*}}*
29-
// CHECK: [[GENERIC_ARGS_ADDR:%.*]] = getelementptr inbounds {{.*}}* [[CONTEXT]], i32 0, i32 {{(1|2)}}
30-
// CHECK: [[GENERIC_ARGS:%.*]] = bitcast {{.*}} to %swift.type**
22+
// CHECK-LABEL: define internal swiftcc void @"$s25variadic_generic_captures17has_metadata_pack1tyycxxQp_tRvzlFyycfU_TA"(ptr swiftself %0)
23+
// CHECK: [[GENERIC_ARGS:%.*]] = getelementptr inbounds {{.*}} %0, i32 0, i32 {{(1|2)}}
3124

32-
// CHECK: [[SHAPE_PTR:%.*]] = bitcast %swift.type** [[GENERIC_ARGS]] to [[INT]]*
33-
// CHECK: [[SHAPE:%.*]] = load [[INT]], [[INT]]* [[SHAPE_PTR]]
25+
// CHECK: [[SHAPE:%.*]] = load [[INT]], ptr [[GENERIC_ARGS]]
3426

35-
// CHECK: [[T_ADDR:%.*]] = getelementptr inbounds %swift.type*, %swift.type** [[GENERIC_ARGS]], i32 1
36-
// CHECK: [[T_PTR:%.*]] = bitcast %swift.type** [[T_ADDR]] to %swift.type***
37-
// CHECK: [[T:%.*]] = load %swift.type**, %swift.type*** [[T_PTR]]
27+
// CHECK: [[T_ADDR:%.*]] = getelementptr inbounds ptr, ptr [[GENERIC_ARGS]], i32 1
28+
// CHECK: [[T:%.*]] = load ptr, ptr [[T_ADDR]]
3829

39-
// CHECK: tail call swiftcc void @"$s25variadic_generic_captures17has_metadata_pack1tyycxxQp_tRvzlFyycfU_"([[INT]] [[SHAPE]], %swift.type** [[T]])
30+
// CHECK: tail call swiftcc void @"$s25variadic_generic_captures17has_metadata_pack1tyycxxQp_tRvzlFyycfU_"([[INT]] [[SHAPE]], ptr [[T]])
4031
// CHECK: ret void
4132

4233
public func has_metadata_pack_noescape<each T>(t: repeat each T) {
4334
takesNoEscape { _ = (repeat each T).self }
4435
}
4536

46-
// CHECK-LABEL: define{{( protected)?}}{{( dllexport)?}} swiftcc void @"$s25variadic_generic_captures26has_metadata_pack_noescape1tyxxQp_tRvzlF"(%swift.opaque** noalias nocapture %0, i{{32|64}} %1, %swift.type** %"each T") #0 {
37+
// CHECK-LABEL: define{{( protected)?}}{{( dllexport)?}} swiftcc void @"$s25variadic_generic_captures26has_metadata_pack_noescape1tyxxQp_tRvzlF"(ptr noalias nocapture %0, i{{32|64}} %1, ptr %"each T") #0 {
4738
// CHECK: [[CONTEXT0:%.*]] = alloca i8, [[INT]]
48-
// CHECK: [[CONTEXT1:%.*]] = bitcast i8* [[CONTEXT0]] to %swift.opaque*
49-
// CHECK: [[CONTEXT:%.*]] = bitcast %swift.opaque* [[CONTEXT1]] to <{{.*}}>*
5039

51-
// CHECK: [[GENERIC_ARGS_ADDR:%.*]] = getelementptr inbounds {{.*}}* [[CONTEXT]], i32 0, i32 {{(1|2)}}
52-
// CHECK: [[GENERIC_ARGS:%.*]] = bitcast {{.*}} [[GENERIC_ARGS_ADDR]] to %swift.type**
53-
// CHECK: [[SHAPE_PTR:%.*]] = bitcast %swift.type** [[GENERIC_ARGS]] to [[INT]]*
54-
// CHECK: store [[INT]] %1, [[INT]]* [[SHAPE_PTR]]
40+
// CHECK: [[GENERIC_ARGS:%.*]] = getelementptr inbounds {{.*}} [[CONTEXT0]], i32 0, i32 {{(1|2)}}
41+
// CHECK: store [[INT]] %1, ptr [[GENERIC_ARGS]]
5542

56-
// CHECK: [[T_ADDR:%.*]] = getelementptr inbounds %swift.type*, %swift.type** [[GENERIC_ARGS]], i32 1
57-
// CHECK: [[T_ADDR2:%.*]] = bitcast %swift.type** [[T_ADDR]] to %swift.type***
58-
// CHECK: store %swift.type** %"each T", %swift.type*** [[T_ADDR2]]
43+
// CHECK: [[T_ADDR:%.*]] = getelementptr inbounds ptr, ptr [[GENERIC_ARGS]], i32 1
44+
// CHECK: store ptr %"each T", ptr [[T_ADDR]]
5945

6046
// CHECK: call swiftcc void @"$s25variadic_generic_captures13takesNoEscapeyyyyXEF"(
6147
// CHECK: ret void
6248

63-
// CHECK-LABEL: define internal swiftcc void @"$s25variadic_generic_captures26has_metadata_pack_noescape1tyxxQp_tRvzlFyyXEfU_TA"(%swift.refcounted* swiftself %0)
64-
// CHECK: [[CONTEXT:%.*]] = bitcast %swift.refcounted* %0 to {{.*}}*
65-
// CHECK: [[GENERIC_ARGS_ADDR:%.*]] = getelementptr inbounds {{.*}}* [[CONTEXT]], i32 0, i32 {{(1|2)}}
66-
// CHECK: [[GENERIC_ARGS:%.*]] = bitcast {{.*}} to %swift.type**
49+
// CHECK-LABEL: define internal swiftcc void @"$s25variadic_generic_captures26has_metadata_pack_noescape1tyxxQp_tRvzlFyyXEfU_TA"(ptr swiftself %0)
50+
// CHECK: [[GENERIC_ARGS:%.*]] = getelementptr inbounds {{.*}} %0, i32 0, i32 {{(1|2)}}
6751

68-
// CHECK: [[SHAPE_PTR:%.*]] = bitcast %swift.type** [[GENERIC_ARGS]] to [[INT]]*
69-
// CHECK: [[SHAPE:%.*]] = load [[INT]], [[INT]]* [[SHAPE_PTR]]
52+
// CHECK: [[SHAPE:%.*]] = load [[INT]], ptr [[GENERIC_ARGS]]
7053

71-
// CHECK: [[T_ADDR:%.*]] = getelementptr inbounds %swift.type*, %swift.type** [[GENERIC_ARGS]], i32 1
72-
// CHECK: [[T_PTR:%.*]] = bitcast %swift.type** [[T_ADDR]] to %swift.type***
73-
// CHECK: [[T:%.*]] = load %swift.type**, %swift.type*** [[T_PTR]]
54+
// CHECK: [[T_ADDR:%.*]] = getelementptr inbounds ptr, ptr [[GENERIC_ARGS]], i32 1
55+
// CHECK: [[T:%.*]] = load ptr, ptr [[T_ADDR]]
7456

75-
// CHECK: tail call swiftcc void @"$s25variadic_generic_captures26has_metadata_pack_noescape1tyxxQp_tRvzlFyyXEfU_"([[INT]] [[SHAPE]], %swift.type** [[T]])
57+
// CHECK: tail call swiftcc void @"$s25variadic_generic_captures26has_metadata_pack_noescape1tyxxQp_tRvzlFyyXEfU_"([[INT]] [[SHAPE]], ptr [[T]])
7658
// CHECK: ret void
7759

7860
public func has_witness_table_pack<each T: Sequence>(t: repeat each T) -> () -> () {
Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
// RUN: %target-swift-frontend %use_no_opaque_pointers -emit-ir %s -disable-availability-checking | %FileCheck %s -DINT=i%target-ptrsize
2-
// RUN: %target-swift-frontend -emit-ir %s -disable-availability-checking
1+
// RUN: %target-swift-frontend -emit-ir %s -disable-availability-checking | %FileCheck %s -DINT=i%target-ptrsize
32

43
public struct G<T> {}
54

@@ -11,19 +10,18 @@ public struct GG<each T> {
1110
}
1211
}
1312

14-
// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc void @"$s28variadic_generic_fulfillment2GGV7doStuff5inputyxxQp_tF"(%swift.opaque** noalias nocapture %0, %swift.type* %"GG<repeat each T>", %T28variadic_generic_fulfillment2GGV* noalias nocapture swiftself %1)
15-
// CHECK: [[METADATA:%.*]] = bitcast %swift.type* %"GG<repeat each T>" to %swift.type***
16-
// CHECK: [[T_PTR:%.*]] = getelementptr inbounds %swift.type**, %swift.type*** [[METADATA]]
17-
// CHECK: [[T:%.*]] = load %swift.type**, %swift.type*** [[T_PTR]]
13+
// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc void @"$s28variadic_generic_fulfillment2GGV7doStuff5inputyxxQp_tF"(ptr noalias nocapture %0, ptr %"GG<repeat each T>", ptr noalias nocapture swiftself %1)
14+
// CHECK: [[T_PTR:%.*]] = getelementptr inbounds ptr, ptr %"GG<repeat each T>"
15+
// CHECK: [[T:%.*]] = load ptr, ptr [[T_PTR]]
1816

1917
// CHECK: [[INDEX:%.*]] = phi [[INT]] [ 0, %entry ], [ {{%.*}}, {{%.*}} ]
2018

2119
// Make sure we mask off the LSB since we have an on-heap pack here.
2220

23-
// CHECK: [[T_ADDR:%.*]] = ptrtoint %swift.type** [[T]] to [[INT]]
21+
// CHECK: [[T_ADDR:%.*]] = ptrtoint ptr [[T]] to [[INT]]
2422
// CHECK-NEXT: [[T_ADDR2:%.*]] = and [[INT]] [[T_ADDR]], -2
25-
// CHECK-NEXT: [[T2:%.*]] = inttoptr [[INT]] [[T_ADDR2]] to %swift.type**
26-
// CHECK-NEXT: [[T_ELT_PTR:%.*]] = getelementptr inbounds %swift.type*, %swift.type** [[T2]], [[INT]] [[INDEX]]
27-
// CHECK-NEXT: [[T_ELT:%.*]] = load %swift.type*, %swift.type** [[T_ELT_PTR]]
23+
// CHECK-NEXT: [[T2:%.*]] = inttoptr [[INT]] [[T_ADDR2]] to ptr
24+
// CHECK-NEXT: [[T_ELT_PTR:%.*]] = getelementptr inbounds ptr, ptr [[T2]], [[INT]] [[INDEX]]
25+
// CHECK-NEXT: [[T_ELT:%.*]] = load ptr, ptr [[T_ELT_PTR]]
2826

2927
// CHECK: ret void

0 commit comments

Comments
 (0)