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