1
- // RUN: %target-swift-frontend -O -emit-sil -Xllvm -debug-only=cowarray-opts -primary-file %s 2>&1 | FileCheck %s
2
- // REQUIRES: rdar://23681223
1
+ // RUN: %target-swift-frontend -O -emit-sil -Xllvm -debug-only=cowarray-opts -primary-file %s 2>&1 | FileCheck %s --check-prefix=TEST1
2
+ // RUN: %target-swift-frontend -O -emit-sil -Xllvm -debug-only=cowarray-opts -primary-file %s 2>&1 | FileCheck %s --check-prefix=TEST2
3
+ // RUN: %target-swift-frontend -O -emit-sil -Xllvm -debug-only=cowarray-opts -primary-file %s 2>&1 | FileCheck %s --check-prefix=TEST3
4
+ // RUN: %target-swift-frontend -O -emit-sil -Xllvm -debug-only=cowarray-opts -primary-file %s 2>&1 | FileCheck %s --check-prefix=TEST4
5
+ // RUN: %target-swift-frontend -O -emit-sil -Xllvm -debug-only=cowarray-opts -primary-file %s 2>&1 | FileCheck %s --check-prefix=TEST5
6
+ // RUN: %target-swift-frontend -O -emit-sil -Xllvm -debug-only=cowarray-opts -primary-file %s 2>&1 | FileCheck %s --check-prefix=TEST6
7
+ // RUN: %target-swift-frontend -O -emit-sil -Xllvm -debug-only=cowarray-opts -primary-file %s 2>&1 | FileCheck %s --check-prefix=TEST7
8
+ // RUN: %target-swift-frontend -O -emit-sil -Xllvm -debug-only=cowarray-opts -primary-file %s 2>&1 | FileCheck %s --check-prefix=TEST8
9
+ // RUN: %target-swift-frontend -O -emit-sil -Xllvm -debug-only=cowarray-opts -primary-file %s 2>&1 | FileCheck %s --check-prefix=TEST9
10
+ // RUN: %target-swift-frontend -O -emit-sil -Xllvm -debug-only=cowarray-opts -primary-file %s 2>&1 | FileCheck %s --check-prefix=TEST10
11
+ // RUN: %target-swift-frontend -O -emit-sil -Xllvm -debug-only=cowarray-opts -primary-file %s 2>&1 | FileCheck %s --check-prefix=TEST11
12
+ // RUN: %target-swift-frontend -O -emit-sil -Xllvm -debug-only=cowarray-opts -primary-file %s 2>&1 | FileCheck %s --check-prefix=TEST12
13
+ // RUN: %target-swift-frontend -O -emit-sil -Xllvm -debug-only=cowarray-opts -primary-file %s 2>&1 | FileCheck %s --check-prefix=TEST13
3
14
// asserts,swift_stdlib_no_asserts,optimized_stdlib
4
15
5
- // CHECK-LABEL: COW Array Opts in Func {{.*}}inoutarr{{.*}}
6
- // CHECK: Hoisting make_mutable
7
- // CHECK: COW Array Opts
16
+ // TEST1-LABEL: COW Array Opts in Func {{.*}}inoutarr{{.*}}
17
+ // TEST1: Hoisting make_mutable
18
+ // TEST1: COW Array Opts
19
+
8
20
func inoutarr( inout a: [ Int ] ) {
9
21
for i in 0 ..< a. count {
10
22
a [ i] = 0
@@ -15,15 +27,16 @@ struct S {
15
27
var a : [ Int ]
16
28
}
17
29
18
- // CHECK -LABEL: COW Array Opts in Func {{.*}}arrelt{{.*}}
19
- // CHECK : Hoisting make_mutable
20
- // CHECK : COW Array Opts
30
+ // TEST2 -LABEL: COW Array Opts in Func {{.*}}arrelt{{.*}}
31
+ // TEST2 : Hoisting make_mutable
32
+ // TEST2 : COW Array Opts
21
33
func arrelt( inout s: S ) {
22
34
for i in 0 ..< s. a. count {
23
35
s. a [ i] = 0
24
36
}
25
37
}
26
38
39
+
27
40
class ArrayInClass {
28
41
final var A : [ Int ]
29
42
final var B : [ Int ]
@@ -35,26 +48,28 @@ class ArrayInClass {
35
48
C = [ [ ] ]
36
49
}
37
50
38
- // CHECK-LABEL: COW Array Opts in Func {{.*}}hoistInClass{{.*}}
39
- // CHECK: Hoisting make_mutable
51
+ // TEST3-LABEL: COW Array Opts in Func {{.*}}hoistInClass{{.*}}
52
+ // TEST3: Hoisting make_mutable
53
+ // TEST3: COW Array Opts
40
54
func hoistInClass( ) {
41
55
for i in 0 ..< A . count {
42
56
A [ i] = 0
43
57
}
44
58
}
45
59
46
- // CHECK-LABEL: COW Array Opts in Func {{.*}}hoistInClass2Arr{{.*}}
47
- // CHECK: Hoisting make_mutable
60
+ // TEST4-LABEL: COW Array Opts in Func {{.*}}hoistInClass2Arr{{.*}}
61
+ // TEST4: Hoisting make_mutable
62
+ // TEST4: COW Array Opts
48
63
func hoistInClass2Arr( ) {
49
64
for i in 0 ..< A . count {
50
65
A [ i] = 0
51
66
B [ i] = 2
52
67
}
53
68
}
54
69
55
- // CHECK -LABEL: COW Array Opts in Func {{.*}}dontHoistInClassAppend{{.*}}
56
- // CHECK -NOT: Hoisting make_mutable
57
- // CHECK : COW Array Opts in Func
70
+ // TEST5 -LABEL: COW Array Opts in Func {{.*}}dontHoistInClassAppend{{.*}}
71
+ // TEST5 -NOT: Hoisting make_mutable
72
+ // TEST5 : COW Array Opts in Func
58
73
func dontHoistInClassAppend( ) {
59
74
for i in 0 ..< A . count {
60
75
A [ i] = 0
@@ -69,13 +84,14 @@ struct Array2d {
69
84
var rows : Int
70
85
}
71
86
72
- // CHECK-LABEL: COW Array Opts in Func {{.*}}test2DArrayLoop{{.*}}
73
- // CHECK: Array Opts in Loop Loop at depth 2
74
- // CHECK-NOT: COW Array Opts in
75
- // CHECK: Hoisting make_mutable
76
- // CHECK: Array Opts in Loop Loop at depth 1
77
- // CHECK-NOT: COW Array Opts in
78
- // CHECK: Hoisting make_mutable
87
+ // TEST6-LABEL: COW Array Opts in Func {{.*}}test2DArrayLoop{{.*}}
88
+ // TEST6: Array Opts in Loop Loop at depth 2
89
+ // TEST6-NOT: COW Array Opts in
90
+ // TEST6: Hoisting make_mutable
91
+ // TEST6: Array Opts in Loop Loop at depth 1
92
+ // TEST6-NOT: COW Array Opts in
93
+ // TEST6: Hoisting make_mutable
94
+ // TEST6: COW Array Opts in
79
95
80
96
func test2DArrayLoop( inout A : Array2d ) {
81
97
for r in 0 ..< A . rows {
@@ -87,18 +103,18 @@ func test2DArrayLoop(inout A : Array2d) {
87
103
88
104
class AClass { }
89
105
90
- // CHECK -LABEL: COW Array Opts in Func {{.*}}hoistArrayOfClasses{{.*}}
91
- // CHECK : Hoisting make_mutable
92
-
106
+ // TEST7 -LABEL: COW Array Opts in Func {{.*}}hoistArrayOfClasses{{.*}}
107
+ // TEST7 : Hoisting make_mutable
108
+ // TEST7: COW Array Opts
93
109
func hoistArrayOfClasses( inout A : [ AClass ] , x: AClass ) {
94
110
for i in 0 ..< A . count {
95
111
A [ i] = x
96
112
}
97
113
}
98
114
99
- // CHECK -LABEL: COW Array Opts in Func {{.*}}hoistMutableOfAppend{{.*}}
100
- // CHECK : Hoisting make_mutable
101
- // CHECK : COW Array Opts
115
+ // TEST8 -LABEL: COW Array Opts in Func {{.*}}hoistMutableOfAppend{{.*}}
116
+ // TEST8 : Hoisting make_mutable
117
+ // TEST8 : COW Array Opts
102
118
103
119
func hoistMutableOfAppend( inout A : [ Int ] ) {
104
120
for i in 0 ..< 10 {
@@ -114,9 +130,9 @@ class ArrayHolder {
114
130
final var A : [ [ Int ] ]
115
131
init ( ) { A = [ ] }
116
132
117
- // CHECK -LABEL: COW Array Opts in Func {{.*}}hoist2DArrayInClass
118
- // CHECK : Hoisting make_mutable
119
- // CHECK : COW Array Opts
133
+ // TEST9 -LABEL: COW Array Opts in Func {{.*}}hoist2DArrayInClass
134
+ // TEST9 : Hoisting make_mutable
135
+ // TEST9 : COW Array Opts
120
136
121
137
func hoist2DArrayInClass( ) {
122
138
for i in 0 ..< 10 {
@@ -126,8 +142,9 @@ class ArrayHolder {
126
142
}
127
143
}
128
144
129
- // CHECK-LABEL: COW Array Opts in Func {{.*}}dontHoist2DArray
130
- // CHECK-NOT: Hoisting make_mutable
145
+ // TEST10-LABEL: COW Array Opts in Func {{.*}}dontHoist2DArray
146
+ // TEST10-NOT: Hoisting make_mutable
147
+ // TEST10: COW Array Opts
131
148
132
149
func dontHoist2DArray( ) {
133
150
var escape : [ Int ] = [ ]
@@ -140,8 +157,9 @@ class ArrayHolder {
140
157
use ( escape)
141
158
}
142
159
143
- // CHECK-LABEL: COW Array Opts in Func {{.*}}dontHoist2DArray2
144
- // CHECK-NOT: Hoisting make_mutable
160
+ // TEST11-LABEL: COW Array Opts in Func {{.*}}dontHoist2DArray2
161
+ // TEST11-NOT: Hoisting make_mutable
162
+ // TEST11: COW Array Opts
145
163
146
164
func dontHoist2DArray2( ) {
147
165
let b = [ 0 ]
@@ -153,9 +171,9 @@ class ArrayHolder {
153
171
}
154
172
}
155
173
156
- // CHECK -LABEL: COW Array Opts in Func {{.*}}dontHoist2DArray3
157
- // CHECK -NOT: Hoisting make_mutable
158
- // CHECK : COW Array Opts
174
+ // TEST12 -LABEL: COW Array Opts in Func {{.*}}dontHoist2DArray3
175
+ // TEST12 -NOT: Hoisting make_mutable
176
+ // TEST12 : COW Array Opts
159
177
160
178
func dontHoist2DArray3( ) {
161
179
for i in 0 ..< A . count {
@@ -167,9 +185,9 @@ class ArrayHolder {
167
185
}
168
186
}
169
187
170
- // CHECK -LABEL: COW Array Opts in Func {{.*}}hoist2DArray
171
- // CHECK : Hoisting make_mutable
172
- // CHECK : COW Array Opts
188
+ // TEST13 -LABEL: COW Array Opts in Func {{.*}}hoist2DArray
189
+ // TEST13 : Hoisting make_mutable
190
+ // TEST13 : COW Array Opts
173
191
174
192
func hoist2DArray( inout a: [ [ Int ] ] ) {
175
193
for i in 0 ..< a. count {
0 commit comments