blob: b5d6f210e4094eafceeec370aecd1c58fe2551b6 [file] [log] [blame]
// RUN: %target-sil-opt -enable-sil-verify-all -compute-dominance-info -compute-loop-info -loop-canonicalizer %s | %FileCheck %s
sil_stage canonical
import Builtin
// Test insertBackedgeBlock.
//
// CHECK-LABEL: insert_backedge_block
// CHECK: bb2:
// CHECK: cond_br undef, bb3, bb5
// CHECK: bb3:
// CHECK: br bb4
// CHECK: bb5:
// CHECK: cond_br undef, bb6, bb7
// CHECK: bb6:
// CHECK: br bb4
sil @insert_backedge_block : $@convention(thin) () -> () {
bb0:
br bb1
bb1:
br bb2
bb2:
cond_br undef, bb3, bb4
bb3:
br bb1
bb4:
cond_br undef, bb5, bb7
bb5:
br bb1
bb7:
return undef : $()
}
// CHECK-LABEL: sil @insert_backedge_block_inner_loop : $@convention(thin) () -> () {
// CHECK: bb1:
// CHECK: br bb2
// CHECK: bb2:
// CHECK: br bb3
// CHECK: bb3:
// CHECK: cond_br undef, bb4, bb6
// CHECK: bb4:
// CHECK: br bb5
// CHECK: bb5:
// CHECK: br bb2
// CHECK: bb6:
// CHECK: cond_br undef, bb7, bb8
// CHECK: bb7:
// CHECK: br bb5
// CHECK: bb8:
// CHECK: cond_br undef, bb9, bb10
// CHECK: bb9:
// CHECK: br bb1
// CHECK: bb10:
// CHECK: return undef
sil @insert_backedge_block_inner_loop : $@convention(thin) () -> () {
bb0:
br bb1
bb1:
br bb2
bb2:
br bb3
bb3:
cond_br undef, bb4, bb5
bb4:
br bb2
bb5:
cond_br undef, bb6, bb7
bb6:
br bb2
bb7:
cond_br undef, bb8, bb9
bb8:
br bb1
bb9:
return undef : $()
}