@@ -133,8 +133,7 @@ entry(%0 : @owned $C, %1 : @owned $D, %2 : @guaranteed $D, %3 : $*D, %4 : $*D):
133
133
// CHECK-LABEL: dependence_scope: lifetime_dependence_scope with: %trivial_mark
134
134
// CHECK-NEXT: Unknown: %{{.*}} = integer_literal $Builtin.Int1, 0
135
135
// CHECK-NEXT: Dependent: %{{.*}} = mark_dependence [nonescaping]
136
- // CHECK-NEXT: begin: %{{.*}} = integer_literal $Builtin.Int1, 0
137
- // CHECK-NEXT: ends:{{[ ]+$}}
136
+ // CHECK-NEXT: Caller range
138
137
// CHECK: dependence_scope: lifetime_dependence_scope with: %trivial_mark
139
138
140
139
%f = ref_element_addr %borrow : $D, #D.object
@@ -166,8 +165,10 @@ entry(%0 : @owned $C, %1 : @owned $D, %2 : @guaranteed $D, %3 : $*D, %4 : $*D):
166
165
167
166
%inout_arg_mark = mark_dependence [nonescaping] %inguaranteed_arg_mark : $C on %4 : $*D
168
167
specify_test "lifetime_dependence_scope %inout_arg_mark"
168
+ // We do not expect a direct dependence on in inout argument. Treat it as unknown.
169
+ // Instead, mutable variable access should have an access scope.
169
170
// CHECK-LABEL: dependence_scope: lifetime_dependence_scope with: %inout_arg_mark
170
- // CHECK-NEXT: Caller : %4 = argument of bb0 : $*D
171
+ // CHECK-NEXT: Unknown : %4 = argument of bb0 : $*D
171
172
// CHECK-NEXT: Dependent: %{{.*}} = mark_dependence [nonescaping] %{{.*}} : $C on %4 : $*D
172
173
// CHECK: dependence_scope: lifetime_dependence_scope with: %inout_arg_mark
173
174
@@ -180,37 +181,6 @@ entry(%0 : @owned $C, %1 : @owned $D, %2 : @guaranteed $D, %3 : $*D, %4 : $*D):
180
181
return %99 : $()
181
182
}
182
183
183
- sil [ossa] @dependence_root : $@convention(thin) (@owned D, @owned C) -> () {
184
- entry(%0 : @owned $D, %1 : @owned $C):
185
- %copy = copy_value %0 : $D
186
- %move = move_value %copy : $D
187
- %borrow = begin_borrow %move : $D
188
- %d2c = upcast %borrow : $D to $C
189
- %pair = struct $PairC(%d2c : $C, %d2c : $C)
190
- %mark_pair = mark_dependence [nonescaping] %1 : $C on %pair : $PairC
191
- specify_test "lifetime_dependence_root %mark_pair"
192
- // CHECK-LABEL: dependence_root: lifetime_dependence_root with: %mark_pair
193
- // CHECK-NEXT: Scope: Owned: %0 = argument of bb0 : $D
194
- // CHECK-NEXT: dependence_root: lifetime_dependence_root with: %mark_pair
195
-
196
- %f = ref_element_addr %borrow : $D, #D.object
197
- %access = begin_access [read] [static] %f : $*C
198
- %load = load [copy] %access : $*C
199
- specify_test "lifetime_dependence_root %load"
200
- // CHECK-LABEL: dependence_root: lifetime_dependence_root with: %load
201
- // CHECK-NEXT: Scope: Unknown: %{{.*}} = ref_element_addr %{{.*}} : $D, #D.object
202
- // CHECK-NEXT: dependence_root: lifetime_dependence_root with: %load
203
-
204
- destroy_value %load : $C
205
- end_access %access : $*C
206
- destroy_value %mark_pair : $C
207
- end_borrow %borrow : $D
208
- destroy_value %move : $D
209
- destroy_value %0 : $D
210
- %99 = tuple()
211
- return %99 : $()
212
- }
213
-
214
184
// CHECK-LABEL: dependence_access: lifetime_dependence_use with: %0
215
185
// CHECK: LifetimeDependence uses of: %0 = argument of bb0 : $*NE
216
186
// CHECK-NEXT: Leaf use: operand #0 of end_access %{{.*}} : $*NE
0 commit comments