Files
swift-mirror/test/SILOptimizer/range_unit.sil
Andrew Trick 32fc6ad623 Add InstructionRange.overlapsWithPath() utility.
(cherry picked from commit 28daec01a7)
2025-04-16 23:23:54 -07:00

421 lines
11 KiB
Plaintext

// RUN: %target-sil-opt -test-runner %s -o /dev/null 2>&1 | %FileCheck %s
// REQUIRES: swift_in_compiler
sil_stage canonical
class C {}
// CHECK-LABEL: testIdentity: range_overlaps_path
// CHECK: Overlap kind: containsBegin
sil [ossa] @testIdentity : $@convention(thin) (@guaranteed C) -> () {
entry(%0 : @guaranteed $C):
specify_test "range_overlaps_path %range %range"
%range = begin_borrow %0
end_borrow %range
%retval = tuple ()
return %retval : $()
}
// CHECK-LABEL: testContainsPath1: range_overlaps_path
// CHECK: Overlap kind: containsPath
sil [ossa] @testContainsPath1 : $@convention(thin) (@guaranteed C) -> () {
entry(%0 : @guaranteed $C):
specify_test "range_overlaps_path %range %path"
%range = begin_borrow %0
%path = begin_borrow %0
end_borrow %path
end_borrow %range
%retval = tuple ()
return %retval : $()
}
// CHECK-LABEL: testContainsPath2: range_overlaps_path
// CHECK: Overlap kind: containsPath
sil [ossa] @testContainsPath2 : $@convention(thin) (@guaranteed C) -> () {
entry(%0 : @guaranteed $C):
specify_test "range_overlaps_path %range %path"
%range = begin_borrow %0
br bb1
bb1:
%path = begin_borrow %0
end_borrow %path
end_borrow %range
%retval = tuple ()
return %retval : $()
}
// CHECK-LABEL: testContainsPath3: range_overlaps_path
// CHECK: Overlap kind: containsPath
sil [ossa] @testContainsPath3 : $@convention(thin) (@guaranteed C) -> () {
entry(%0 : @guaranteed $C):
specify_test "range_overlaps_path %range %path"
%range = begin_borrow %0
br bb1
bb1:
%path = begin_borrow %0
br bb2
bb2:
end_borrow %path
end_borrow %range
%retval = tuple ()
return %retval : $()
}
// CHECK-LABEL: testContainsPath4: range_overlaps_path
// CHECK: Overlap kind: containsPath
sil [ossa] @testContainsPath4 : $@convention(thin) (@guaranteed C) -> () {
entry(%0 : @guaranteed $C):
specify_test "range_overlaps_path %range %path"
%range = begin_borrow %0
br bb1
bb1:
%path = begin_borrow %0
br bb2
bb2:
end_borrow %path
br bb3
bb3:
end_borrow %range
%retval = tuple ()
return %retval : $()
}
// CHECK-LABEL: testContainsBegin1: range_overlaps_path
// CHECK: Overlap kind: containsBegin
sil [ossa] @testContainsBegin1 : $@convention(thin) (@guaranteed C) -> () {
entry(%0 : @guaranteed $C):
specify_test "range_overlaps_path %range %path"
%range = begin_borrow %0
%path = begin_borrow %0
end_borrow %range
end_borrow %path
%retval = tuple ()
return %retval : $()
}
// CHECK-LABEL: testContainsBegin2: range_overlaps_path
// CHECK: Overlap kind: containsBegin
sil [ossa] @testContainsBegin2 : $@convention(thin) (@guaranteed C) -> () {
entry(%0 : @guaranteed $C):
specify_test "range_overlaps_path %range %path"
%range = begin_borrow %0
br bb1
bb1:
%path = begin_borrow %0
end_borrow %range
end_borrow %path
%retval = tuple ()
return %retval : $()
}
// CHECK-LABEL: testContainsBegin3: range_overlaps_path
// CHECK: Overlap kind: containsBegin
sil [ossa] @testContainsBegin3 : $@convention(thin) (@guaranteed C) -> () {
entry(%0 : @guaranteed $C):
specify_test "range_overlaps_path %range %path"
%range = begin_borrow %0
br bb1
bb1:
%path = begin_borrow %0
br bb2
bb2:
end_borrow %range
end_borrow %path
%retval = tuple ()
return %retval : $()
}
// CHECK-LABEL: testContainsBegin4: range_overlaps_path
// CHECK: Overlap kind: containsBegin
sil [ossa] @testContainsBegin4 : $@convention(thin) (@guaranteed C) -> () {
entry(%0 : @guaranteed $C):
specify_test "range_overlaps_path %range %path"
%range = begin_borrow %0
br bb1
bb1:
%path = begin_borrow %0
br bb2
bb2:
end_borrow %range
br bb3
bb3:
end_borrow %path
%retval = tuple ()
return %retval : $()
}
// CHECK-LABEL: testContainsEnd1: range_overlaps_path
// CHECK: Overlap kind: containsEnd
sil [ossa] @testContainsEnd1 : $@convention(thin) (@guaranteed C) -> () {
entry(%0 : @guaranteed $C):
specify_test "range_overlaps_path %range %path"
%path = begin_borrow %0
%range = begin_borrow %0
end_borrow %path
end_borrow %range
%retval = tuple ()
return %retval : $()
}
// CHECK-LABEL: testContainsEnd2: range_overlaps_path
// CHECK: Overlap kind: containsEnd
sil [ossa] @testContainsEnd2 : $@convention(thin) (@guaranteed C) -> () {
entry(%0 : @guaranteed $C):
specify_test "range_overlaps_path %range %path"
%path = begin_borrow %0
br bb1
bb1:
%range = begin_borrow %0
end_borrow %path
end_borrow %range
%retval = tuple ()
return %retval : $()
}
// CHECK-LABEL: testContainsEnd3: range_overlaps_path
// CHECK: Overlap kind: containsEnd
sil [ossa] @testContainsEnd3 : $@convention(thin) (@guaranteed C) -> () {
entry(%0 : @guaranteed $C):
specify_test "range_overlaps_path %range %path"
%path = begin_borrow %0
br bb1
bb1:
%range = begin_borrow %0
br bb2
bb2:
end_borrow %path
end_borrow %range
%retval = tuple ()
return %retval : $()
}
// CHECK-LABEL: testContainsEnd4: range_overlaps_path
// CHECK: Overlap kind: containsEnd
sil [ossa] @testContainsEnd4 : $@convention(thin) (@guaranteed C) -> () {
entry(%0 : @guaranteed $C):
specify_test "range_overlaps_path %range %path"
%path = begin_borrow %0
br bb1
bb1:
%range = begin_borrow %0
br bb2
bb2:
end_borrow %path
br bb3
bb3:
end_borrow %range
%retval = tuple ()
return %retval : $()
}
// CHECK-LABEL: testOverlappedByPath1: range_overlaps_path
// CHECK: Overlap kind: overlappedByPath
sil [ossa] @testOverlappedByPath1 : $@convention(thin) (@guaranteed C) -> () {
entry(%0 : @guaranteed $C):
specify_test "range_overlaps_path %range %path"
%path = begin_borrow %0
%range = begin_borrow %0
end_borrow %range
end_borrow %path
%retval = tuple ()
return %retval : $()
}
// CHECK-LABEL: testOverlappedByPath2: range_overlaps_path
// CHECK: Overlap kind: overlappedByPath
sil [ossa] @testOverlappedByPath2 : $@convention(thin) (@guaranteed C) -> () {
entry(%0 : @guaranteed $C):
specify_test "range_overlaps_path %range %path"
%path = begin_borrow %0
br bb1
bb1:
%range = begin_borrow %0
end_borrow %range
end_borrow %path
%retval = tuple ()
return %retval : $()
}
// CHECK-LABEL: testOverlappedByPath3: range_overlaps_path
// CHECK: Overlap kind: overlappedByPath
sil [ossa] @testOverlappedByPath3 : $@convention(thin) (@guaranteed C) -> () {
entry(%0 : @guaranteed $C):
specify_test "range_overlaps_path %range %path"
%path = begin_borrow %0
br bb1
bb1:
%range = begin_borrow %0
br bb2
bb2:
end_borrow %range
end_borrow %path
%retval = tuple ()
return %retval : $()
}
// CHECK-LABEL: testOverlappedByPath4: range_overlaps_path
// CHECK: Overlap kind: overlappedByPath
sil [ossa] @testOverlappedByPath4 : $@convention(thin) (@guaranteed C) -> () {
entry(%0 : @guaranteed $C):
specify_test "range_overlaps_path %range %path"
%path = begin_borrow %0
br bb1
bb1:
%range = begin_borrow %0
br bb2
bb2:
end_borrow %range
br bb3
bb3:
end_borrow %path
%retval = tuple ()
return %retval : $()
}
// CHECK-LABEL: testOverlappedByPath5: range_overlaps_path
// CHECK: Overlap kind: overlappedByPath
sil [ossa] @testOverlappedByPath5 : $@convention(thin) (@owned C, @owned C) -> () {
entry(%0 : @owned $C, %1 : @owned $C):
specify_test "range_overlaps_path %range %path"
%path = move_value %0
%range = move_value %1
%tuple = tuple (%path, %range)
destroy_value %tuple
%retval = tuple ()
return %retval : $()
}
// CHECK-LABEL: testDisjoint1: range_overlaps_path
// CHECK: Overlap kind: disjoint
sil [ossa] @testDisjoint1 : $@convention(thin) (@guaranteed C) -> () {
entry(%0 : @guaranteed $C):
specify_test "range_overlaps_path %range %path"
%path = begin_borrow %0
end_borrow %path
%range = begin_borrow %0
end_borrow %range
%retval = tuple ()
return %retval : $()
}
// CHECK-LABEL: testDisjoint2: range_overlaps_path
// CHECK: Overlap kind: disjoint
sil [ossa] @testDisjoint2 : $@convention(thin) (@guaranteed C) -> () {
entry(%0 : @guaranteed $C):
specify_test "range_overlaps_path %range %path"
%range = begin_borrow %0
end_borrow %range
%path = begin_borrow %0
end_borrow %path
%retval = tuple ()
return %retval : $()
}
// CHECK-LABEL: testDisjoint3: range_overlaps_path
// CHECK: Overlap kind: disjoint
sil [ossa] @testDisjoint3 : $@convention(thin) (@guaranteed C) -> () {
entry(%0 : @guaranteed $C):
specify_test "range_overlaps_path %range %path"
%range = begin_borrow %0
end_borrow %range
%path = begin_borrow %0
br bb1
bb1:
end_borrow %path
%retval = tuple ()
return %retval : $()
}
// CHECK-LABEL: testDisjoint4: range_overlaps_path
// CHECK: Overlap kind: disjoint
sil [ossa] @testDisjoint4 : $@convention(thin) (@guaranteed C) -> () {
entry(%0 : @guaranteed $C):
specify_test "range_overlaps_path %range %path"
%path = begin_borrow %0
br bb1
bb1:
end_borrow %path
%range = begin_borrow %0
end_borrow %range
%retval = tuple ()
return %retval : $()
}
// CHECK-LABEL: testDisjoint5: range_overlaps_path
// CHECK: Overlap kind: disjoint
sil [ossa] @testDisjoint5 : $@convention(thin) (@guaranteed C) -> () {
entry(%0 : @guaranteed $C):
specify_test "range_overlaps_path %range %path"
%range = begin_borrow %0
br bb1
bb1:
end_borrow %range
%path = begin_borrow %0
br bb2
bb2:
end_borrow %path
%retval = tuple ()
return %retval : $()
}
// CHECK-LABEL: testDisjoint6: range_overlaps_path
// CHECK: Overlap kind: disjoint
sil [ossa] @testDisjoint6 : $@convention(thin) (@guaranteed C) -> () {
entry(%0 : @guaranteed $C):
specify_test "range_overlaps_path %range %path"
%path = begin_borrow %0
br bb1
bb1:
end_borrow %path
%range = begin_borrow %0
br bb2
bb2:
end_borrow %range
%retval = tuple ()
return %retval : $()
}
// CHECK-LABEL: testDisjoint7: range_overlaps_path
// CHECK: Overlap kind: disjoint
sil [ossa] @testDisjoint7 : $@convention(thin) (@guaranteed C) -> () {
entry(%0 : @guaranteed $C):
specify_test "range_overlaps_path %range %path"
%path = begin_borrow %0
br bb1
bb1:
end_borrow %path
br bb2
bb2:
%range = begin_borrow %0
br bb3
bb3:
end_borrow %range
%retval = tuple ()
return %retval : $()
}
// CHECK-LABEL: testDisjoint8: range_overlaps_path
// CHECK: Overlap kind: disjoint
sil [ossa] @testDisjoint8 : $@convention(thin) (@owned C) -> () {
entry(%0 : @owned $C):
specify_test "range_overlaps_path %range %path"
%path = move_value %0
%range = move_value %path
destroy_value %range
%retval = tuple ()
return %retval : $()
}
// CHECK-LABEL: testDisjoint9: range_overlaps_path
// CHECK: Overlap kind: disjoint
sil [ossa] @testDisjoint9 : $@convention(thin) (@owned C) -> () {
entry(%0 : @owned $C):
specify_test "range_overlaps_path %range %path"
%range = move_value %0
%path = move_value %range
destroy_value %path
%retval = tuple ()
return %retval : $()
}