// RUN: %target-sil-opt -enable-sil-verify-all -compute-dominance-info -compute-loop-info -loop-canonicalizer %s | FileCheck %s

sil_stage canonical

import Builtin

// CHECK-LABEL: sil @insert_preheader_1 : $@convention(thin) () -> () {
// CHECK: bb0:
// CHECK: cond_br undef, bb1, bb4
// CHECK: bb1:
// CHECK: br bb2
// CHECK: bb2:
// CHECK: cond_br undef, bb2, bb3
// CHECK: bb3:
// CHECK: br bb4
// CHECK: bb4:
// CHECK: return undef
sil @insert_preheader_1 : $@convention(thin) () -> () {
bb0:
  cond_br undef, bb1, bb3

// A bb will be inserted along the edge from bb0 -> bb1.
bb1:
  cond_br undef, bb1, bb2

// This is the exit block of the loop on bb1. We do this so this test *only*
// tests the preheader insertion vs the exit block canonicalization.
bb2:
  br bb3

bb3:
  return undef : $()
}

// Make sure that we insert the pre-header correctly given a header with
// multiple predecessors.
//
// CHECK-LABEL: sil @insert_preheader_2 : $@convention(thin) () -> () {
// CHECK: bb0:
// CHECK: cond_br undef, bb1, [[PREHEADER:bb[0-9]+]]
// CHECK: bb1:
// CHECK: br [[PREHEADER]]
// CHECK: [[PREHEADER]]:
// CHECK: br bb3
// CHECK: bb3:
// CHECK: cond_br undef, bb3, bb4
// CHECK: return undef : $()
sil @insert_preheader_2 : $@convention(thin) () -> () {
bb0:
  cond_br undef, bb1, bb2

bb1:
  br bb2

bb2:
  cond_br undef, bb2, bb3

bb3:
  return undef : $()
}

// Make sure that we can handle pre-header insertion for loops in sequence
// (i.e. where one loop branches into another loop) correctly in terms of
// updating loop info.
//
// CHECK-LABEL: sil @insert_preheader_3 : $@convention(thin) () -> () {
// CHECK: bb0:
// CHECK: cond_br undef, bb1, bb4
// CHECK: bb1:
// CHECK: br bb2
// CHECK: bb2:
// CHECK: cond_br undef, bb2, bb3
// CHECK: bb3:
// CHECK: br bb7
// CHECK: bb4:
// CHECK: br bb5
// CHECK: bb5:
// CHECK: cond_br undef, bb5, bb6
// CHECK: bb6:
// CHECK: br bb7
// CHECK: bb7
// CHECK: br bb8
// CHECK: bb8:
// CHECK: cond_br undef, bb8, bb9
// CHECK: bb9:
// CHECK: return undef
sil @insert_preheader_3 : $@convention(thin) () -> () {
bb0:
  cond_br undef, bb1, bb2

bb1:
  cond_br undef, bb1, bb3

bb2:
  cond_br undef, bb2, bb3

bb3:
  cond_br undef, bb3, bb4

bb4:
  return undef : $()
}

// Make sure that we insert pre-headers correctly for nested loops I am using
// patterns in more places than I need to, to make the test case more obvious to
// the reader.
//
// CHECK-LABEL: sil @insert_preheader_4 : $@convention(thin) () -> () {
// CHECK: bb0:
// CHECK: br bb1
// CHECK: bb1:
// CHECK: cond_br undef, bb2, [[PREHEADER_1:bb[0-9]+]]
// CHECK: bb2:
// CHECK: br [[PREHEADER_1]]
// First pre-header
// CHECK: [[PREHEADER_1]]:
// CHECK: br bb4
// CHECK: bb4:
// CHECK: cond_br undef, bb8, [[PREHEADER_2:bb[0-9]+]]
// CHECK: [[PREHEADER_2]]:
// CHECK: br bb6
// CHECK: bb6:
// CHECK: cond_br undef, bb6, bb7
// This is an exit bb for bb6.
// CHECK: bb7:
// CHECK: cond_br undef, bb8, bb9
// CHECK: bb8:
// CHECK: br bb4
// CHECK: bb9:
// CHECK: return undef
sil @insert_preheader_4 : $@convention(thin) () -> () {
bb0:
  br bb1

bb1:
  cond_br undef, bb2, bb3

bb2:
  br bb3

bb3:
  cond_br undef, bb3, bb4

bb4:
  cond_br undef, bb4, bb5

bb5:
  cond_br undef, bb3, bb6

bb6:
  return undef : $()
}

// Test insertBackedgeBlock.
//
// CHECK-LABEL: insert_backedge_block
// CHECK: bb2:
// CHECK: cond_br undef, bb3, bb4
// CHECK: bb3:
// CHECK: br bb1
// CHECK: bb4:
// CHECK: cond_br undef, bb3, bb5
sil @insert_backedge_block : $@convention(thin) () -> () {
bb0:
  br bb1

bb1:
  br bb2

bb2:
  cond_br undef, bb1, bb3

bb3:
  cond_br undef, bb1, bb4

bb4:
  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, bb5
// CHECK: bb4:
// CHECK: br bb2
// CHECK: bb5:
// CHECK: cond_br undef, bb4, bb6
// CHECK: bb6:
// CHECK: cond_br undef, bb1, bb7
// CHECK: bb7:
// CHECK: return undef
sil @insert_backedge_block_inner_loop : $@convention(thin) () -> () {
bb0:
  br bb1

bb1:
  br bb2

bb2:
  br bb3

bb3:
  cond_br undef, bb2, bb4

bb4:
  cond_br undef, bb2, bb5

bb5:
  cond_br undef, bb1, bb6

bb6:
  return undef : $()
}

// CHECK-LABEL: sil @exit_blocks_should_only_have_exiting_blocks_as_predecessors : $@convention(thin) () -> () {
// CHECK: bb0:
// CHECK: cond_br undef, bb1, bb4
// CHECK: bb1:
// CHECK: br bb2
// CHECK: bb2:
// CHECK: cond_br undef, bb2, bb3
// CHECK: bb3:
// CHECK: br bb4
// CHECK: bb4:
// CHECK: return undef
sil @exit_blocks_should_only_have_exiting_blocks_as_predecessors : $@convention(thin) () -> () {
bb0:
  cond_br undef, bb1, bb3

// Header
bb1:
  br bb2

bb2:
  cond_br undef, bb2, bb3

// Exit with multiple predecessors. The edge from bb2 -> bb3 will be split.
bb3:
  return undef : $()
}
