Skip to content

Commit f19e413

Browse files
committed
[Test] Adapted SILOptimizer.
1 parent cf08f88 commit f19e413

File tree

2 files changed

+35
-27
lines changed

2 files changed

+35
-27
lines changed

test/SILOptimizer/access_marker_verify.swift

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -53,13 +53,15 @@ struct StructOfInt {
5353
// CHECK: bb0(%0 : $@thin StructOfInt.Type):
5454
// CHECK: [[BOX:%.*]] = alloc_box ${ var StructOfInt }, var, name "self"
5555
// CHECK: [[UNINIT:%.*]] = mark_uninitialized [rootself] [[BOX]] : ${ var StructOfInt }
56-
// CHECK: [[PROJ:%.*]] = project_box [[UNINIT]] : ${ var StructOfInt }, 0
56+
// CHECK: [[UNINIT_LIFETIME:%[^,]+]] = begin_borrow [lexical] [[UNINIT]]
57+
// CHECK: [[PROJ:%.*]] = project_box [[UNINIT_LIFETIME]] : ${ var StructOfInt }, 0
5758
// CHECK: [[ACCESS:%.*]] = begin_access [modify] [unknown] [[PROJ]] : $*StructOfInt
5859
// CHECK: [[ADR:%.*]] = struct_element_addr [[ACCESS]] : $*StructOfInt, #StructOfInt.i
5960
// CHECK: assign %{{.*}} to [[ADR]] : $*Int
6061
// CHECK: end_access [[ACCESS]] : $*StructOfInt
6162
// CHECK-NOT: begin_access
6263
// CHECK: [[VAL:%.*]] = load [trivial] [[PROJ]] : $*StructOfInt
64+
// CHECK: end_borrow [[UNINIT_LIFETIME]]
6365
// CHECK: destroy_value [[UNINIT]] : ${ var StructOfInt }
6466
// CHECK: return [[VAL]] : $StructOfInt
6567
// CHECK-LABEL: } // end sil function '$s20access_marker_verify11StructOfIntVACycfC'
@@ -105,7 +107,8 @@ class SubHasInt : SuperHasInt {
105107
// CHECK: bb0(%0 : @owned $SubHasInt):
106108
// CHECK: [[BOX:%.*]] = alloc_box ${ var SubHasInt }, let, name "self"
107109
// CHECK: [[UNINIT:%.*]] = mark_uninitialized [derivedself] [[BOX]] : ${ var SubHasInt }
108-
// CHECK: [[PROJ:%.*]] = project_box [[UNINIT]] : ${ var SubHasInt }, 0
110+
// CHECK: [[UNINIT_LIFETIME:%[^,]+]] = begin_borrow [lexical] [[UNINIT]]
111+
// CHECK: [[PROJ:%.*]] = project_box [[UNINIT_LIFETIME]] : ${ var SubHasInt }, 0
109112
// CHECK-NOT: begin_access
110113
// CHECK: store %0 to [init] [[PROJ]] : $*SubHasInt
111114
// CHECK-NOT: begin_access
@@ -124,6 +127,7 @@ class SubHasInt : SuperHasInt {
124127
// CHECK-NOT: begin_access
125128
// CHECK: store %{{.*}} to [init] [[PROJ]] : $*SubHasInt
126129
// CHECK: [[VAL:%.*]] = load [copy] [[PROJ]] : $*SubHasInt
130+
// CHECK: end_borrow [[UNINIT_LIFETIME]]
127131
// CHECK: destroy_value [[UNINIT]] : ${ var SubHasInt }
128132
// CHECK: return [[VAL]] : $SubHasInt
129133
// CHECK-LABEL: } // end sil function '$s20access_marker_verify9SubHasIntCACycfc'
@@ -132,7 +136,8 @@ class SubHasInt : SuperHasInt {
132136
// CHECK: bb0(%0 : $Int, %1 : @owned $SubHasInt):
133137
// CHECK: [[BOX:%.*]] = alloc_box ${ var SubHasInt }, let, name "self"
134138
// CHECK: [[UNINIT:%.*]] = mark_uninitialized [derivedself] [[BOX]] : ${ var SubHasInt }
135-
// CHECK: [[PROJ:%.*]] = project_box [[UNINIT]] : ${ var SubHasInt }, 0
139+
// CHECK: [[UNINIT_LIFETIME:%[^,]+]] = begin_borrow [lexical] [[UNINIT]]
140+
// CHECK: [[PROJ:%.*]] = project_box [[UNINIT_LIFETIME]] : ${ var SubHasInt }, 0
136141
// CHECK-NOT: begin_access
137142
// CHECK: store %{{.*}} to [init] [[PROJ]] : $*SubHasInt
138143
// CHECK-NOT: begin_access
@@ -151,6 +156,7 @@ class SubHasInt : SuperHasInt {
151156
// CHECK-NOT: begin_access
152157
// CHECK: store %{{.*}} to [init] [[PROJ]] : $*SubHasInt
153158
// CHECK: [[VAL:%.*]] = load [copy] [[PROJ]] : $*SubHasInt
159+
// CHECK: end_borrow [[UNINIT_LIFETIME]]
154160
// CHECK: destroy_value [[UNINIT]] : ${ var SubHasInt }
155161
// CHECK: return [[VAL]] : $SubHasInt
156162
// CHECK-LABEL: } // end sil function '$s20access_marker_verify9SubHasIntC1xACSi_tcfc'
@@ -215,12 +221,13 @@ func testCaptureLocal() -> ()->() {
215221
}
216222
// CHECK-LABEL: sil hidden [ossa] @$s20access_marker_verify16testCaptureLocalyycyF : $@convention(thin) () -> @owned @callee_guaranteed () -> () {
217223
// CHECK: bb0:
218-
// CHECK: alloc_box ${ var Int }, var, name "x"
219-
// CHECK: [[PROJ:%.*]] = project_box
224+
// CHECK: [[BOX:%.*]] = alloc_box ${ var Int }, var, name "x"
225+
// CHECK: [[LIFETIME:%.*]] = begin_borrow [lexical] [[BOX]]
226+
// CHECK: [[PROJ:%.*]] = project_box [[LIFETIME]]
220227
// CHECK: [[ACCESS:%.*]] = begin_access [modify] [unsafe] [[PROJ]] : $*Int
221228
// CHECK: store %{{.*}} to [trivial] [[ACCESS]]
222229
// CHECK: end_access
223-
// CHECK: [[CAPTURE:%.*]] = copy_value %0 : ${ var Int }
230+
// CHECK: [[CAPTURE:%.*]] = copy_value [[LIFETIME]] : ${ var Int }
224231
// CHECK: partial_apply [callee_guaranteed] %{{.*}}([[CAPTURE]]) : $@convention(thin) (@guaranteed { var Int }) -> ()
225232
// CHECK: begin_access [read] [unknown] [[PROJ]]
226233
// CHECK: [[VAL:%.*]] = load [trivial]
@@ -597,7 +604,7 @@ struct DelegatingInit {
597604
// CHECK-NOT: begin_access
598605
// CHECK: load [trivial] [[BOX]] : $*DelegatingInit
599606
// CHECK: destroy_value
600-
// CHECK: return %10 : $DelegatingInit
607+
// CHECK: return {{%[^,]+}} : $DelegatingInit
601608
// CHECK-LABEL: } // end sil function '$s20access_marker_verify14DelegatingInitV1iACSi_tcfC'
602609

603610
// --- addressor.

test/SILOptimizer/capturepromotion-wrong-lexicalscope.swift

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,27 +4,28 @@
44

55
// CHECK: sil hidden [ossa] @$s4null19captureStackPromoteSiycyF : $@convention(thin) () -> @owned @callee_guaranteed () -> Int {
66
// CHECK: bb0:
7-
// CHECK: %0 = alloc_box ${ var Int }, var, name "x", loc {{.*}}:32:7, scope 3
8-
// CHECK: %1 = project_box %0 : ${ var Int }, 0, loc {{.*}}:32:7, scope 3
9-
// CHECK: %2 = integer_literal $Builtin.IntLiteral, 1, loc {{.*}}:32:11, scope 3
10-
// CHECK: %3 = metatype $@thin Int.Type, loc {{.*}}:32:11, scope 3
11-
// CHECK: %4 = function_ref @$sSi22_builtinIntegerLiteralSiBI_tcfC : $@convention(method) (Builtin.IntLiteral, @thin Int.Type) -> Int, loc {{.*}}:32:11, scope 3
12-
// CHECK: %5 = apply %4(%2, %3) : $@convention(method) (Builtin.IntLiteral, @thin Int.Type) -> Int, loc {{.*}}:32:11, scope 3
13-
// CHECK: store %5 to [trivial] %1 : $*Int, loc {{.*}}:32:11, scope 3
14-
// CHECK: %7 = copy_value %0 : ${ var Int }, loc {{.*}}:33:11, scope 3
15-
// CHECK: %8 = project_box %7 : ${ var Int }, 0, loc {{.*}}:33:11, scope 3
16-
// CHECK: mark_function_escape %1 : $*Int, loc {{.*}}:33:11, scope 3
17-
// CHECK: %10 = function_ref @$s4null19captureStackPromoteSiycyFSiycfU_Tf2i_n : $@convention(thin) (Int) -> Int, loc {{.*}}:33:11, scope 3
18-
// CHECK: %11 = load [trivial] %8 : $*Int, loc {{.*}}:33:11, scope 3
19-
// CHECK: destroy_value %7 : ${ var Int }, loc {{.*}}:33:11, scope 3
20-
// CHECK: %13 = partial_apply [callee_guaranteed] %10(%11) : $@convention(thin) (Int) -> Int, loc {{.*}}:33:11, scope 3
21-
// CHECK: [[BORROW:%.*]] = begin_borrow [lexical] %13
22-
// CHECK: debug_value [[BORROW]] : $@callee_guaranteed () -> Int, let, name "f", loc {{.*}}:33:7, scope 3
23-
// CHECK: %16 = copy_value [[BORROW]] : $@callee_guaranteed () -> Int, loc {{.*}}:34:10, scope 3
7+
// CHECK: [[BOX:%[^,]+]] = alloc_box ${ var Int }, var, name "x", loc {{.*}}:33:7, scope 3
8+
// CHECK: [[BOX_LIFETIME:%[^,]+]] = begin_borrow [lexical] [[BOX]]
9+
// CHECK: [[BOX_ADDR:%[^,]+]] = project_box [[BOX_LIFETIME]] : ${ var Int }, 0, loc {{.*}}:33:7, scope 3
10+
// CHECK: [[ONE:%[^,]+]] = integer_literal $Builtin.IntLiteral, 1, loc {{.*}}:33:11, scope 3
11+
// CHECK: [[THIN_INT_TYPE:%[^,]+]] = metatype $@thin Int.Type, loc {{.*}}:33:11, scope 3
12+
// CHECK: [[INTEGER_LITERAL:%[^,]+]] = function_ref @$sSi22_builtinIntegerLiteralSiBI_tcfC : $@convention(method) (Builtin.IntLiteral, @thin Int.Type) -> Int, loc {{.*}}:33:11, scope 3
13+
// CHECK: [[ONE_INT:%[^,]+]] = apply [[INTEGER_LITERAL]]([[ONE]], [[THIN_INT_TYPE]]) : $@convention(method) (Builtin.IntLiteral, @thin Int.Type) -> Int, loc {{.*}}:33:11, scope 3
14+
// CHECK: store [[ONE_INT]] to [trivial] [[BOX_ADDR]] : $*Int, loc {{.*}}:33:11, scope 3
15+
// CHECK: [[BOX_COPY:%[^,]+]] = copy_value [[BOX_LIFETIME]] : ${ var Int }, loc {{.*}}:34:11, scope 3
16+
// CHECK: [[BOX_COPY_ADDR:%[^,]+]] = project_box [[BOX_COPY]] : ${ var Int }, 0, loc {{.*}}:34:11, scope 3
17+
// CHECK: mark_function_escape [[BOX_ADDR]] : $*Int, loc {{.*}}:34:11, scope 3
18+
// CHECK: [[SPECIALIZED_F:%[^,]+]] = function_ref @$s4null19captureStackPromoteSiycyFSiycfU_Tf2i_n : $@convention(thin) (Int) -> Int, loc {{.*}}:34:11, scope 3
19+
// CHECK: [[REGISTER_11:%[^,]+]] = load [trivial] [[BOX_COPY_ADDR]] : $*Int, loc {{.*}}:34:11, scope 3
20+
// CHECK: destroy_value [[BOX_COPY]] : ${ var Int }, loc {{.*}}:34:11, scope 3
21+
// CHECK: [[CLOSURE:%[^,]+]] = partial_apply [callee_guaranteed] [[SPECIALIZED_F]]([[REGISTER_11]]) : $@convention(thin) (Int) -> Int, loc {{.*}}:34:11, scope 3
22+
// CHECK: [[BORROW:%.*]] = begin_borrow [lexical] [[CLOSURE]]
23+
// CHECK: debug_value [[BORROW]] : $@callee_guaranteed () -> Int, let, name "f", loc {{.*}}:34:7, scope 3
24+
// CHECK: [[CLOSURE_COPY:%[^,]+]] = copy_value [[BORROW]] : $@callee_guaranteed () -> Int, loc {{.*}}:35:10, scope 3
2425
// There used to be an end_borrow here. We leave an emptyline here to preserve line numbers.
25-
// CHECK: destroy_value %13 : $@callee_guaranteed () -> Int, loc {{.*}}:35:1, scope 3
26-
// CHECK: destroy_value %0 : ${ var Int }, loc {{.*}}:35:1, scope 3
27-
// CHECK: return %16 : $@callee_guaranteed () -> Int, loc {{.*}}:34:3, scope 3
26+
// CHECK: destroy_value [[CLOSURE]] : $@callee_guaranteed () -> Int, loc {{.*}}:36:1, scope 3
27+
// CHECK: destroy_value [[BOX]] : ${ var Int }, loc {{.*}}:36:1, scope 3
28+
// CHECK: return [[CLOSURE_COPY]] : $@callee_guaranteed () -> Int, loc {{.*}}:35:3, scope 3
2829
// CHECK: }
2930

3031

0 commit comments

Comments
 (0)