// RUN: rm -rf %t && mkdir -p %t
// RUN: %target-sil-opt -assume-parsing-unqualified-ownership-sil %s -inline -print-shortest-path-info 2>%t/log >/dev/null
// RUN: %FileCheck %s <%t/log
// REQUIRES: asserts

sil_stage canonical

import Builtin


// CHECK-LABEL: SPA @test_simple
// CHECK-NEXT:    bb0: length=1+0, d-entry=0, d-exit=1

sil @test_simple : $@convention(thin) () -> () {
bb0:
  %c1 = builtin "assert_configuration"() : $Builtin.Int32
  %4 = tuple ()
  return %4 : $()
}

// CHECK-LABEL: SPA @test_if_then_else
// CHECK-NEXT:    bb0: length=1+0, d-entry=0, d-exit=2
// CHECK-NEXT:    bb1: length=3+0, d-entry=1, d-exit=3
// CHECK-NEXT:    bb2: length=1+0, d-entry=1, d-exit=1
// CHECK-NEXT:    bb3: length=0+0, d-entry=2, d-exit=0

sil @test_if_then_else : $@convention(thin) () -> () {
bb0:
  cond_br undef, bb1, bb2

bb1:
  %c1 = builtin "assert_configuration"() : $Builtin.Int32
  %c2 = builtin "assert_configuration"() : $Builtin.Int32
  br bb3

bb2:
  br bb3

bb3:
  %4 = tuple ()
  return %4 : $()
}

// CHECK-LABEL: SPA @test_simple_loop
// CHECK-NEXT:    bb0: length=1+0, d-entry=0, d-exit=34
// CHECK-NEXT:    bb1: length=3+30, d-entry=1, d-exit=33
// CHECK-NEXT:    bb2: length=0+0, d-entry=34, d-exit=0
// CHECK-NEXT:  Loop bb1:
// CHECK-NEXT:    bb1: length=3+0, d-entry=0, d-exit=3

sil @test_simple_loop : $@convention(thin) () -> () {
bb0:
  br bb1

bb1:
  %c1 = builtin "assert_configuration"() : $Builtin.Int32
  %c2 = builtin "assert_configuration"() : $Builtin.Int32
  cond_br undef, bb1, bb2

bb2:
  %4 = tuple ()
  return %4 : $()
}

// CHECK-LABEL: SPA @test_loop_with_bypass_edge
// CHECK-NEXT:    bb0: length=1+30, d-entry=0, d-exit=31
// CHECK-NEXT:    bb1: length=1+0, d-entry=31, d-exit=5
// CHECK-NEXT:    bb2: length=3+0, d-entry=32, d-exit=4
// CHECK-NEXT:    bb3: length=1+0, d-entry=35, d-exit=1
// CHECK-NEXT:    bb4: length=0+0, d-entry=31, d-exit=0
// CHECK-NEXT:  Loop bb2:
// CHECK-NEXT:    bb2: length=3+0, d-entry=0, d-exit=3

sil @test_loop_with_bypass_edge : $@convention(thin) () -> () {
bb0:
  cond_br undef, bb1, bb4

bb1:
  br bb2

bb2:
  %c1 = builtin "assert_configuration"() : $Builtin.Int32
  %c2 = builtin "assert_configuration"() : $Builtin.Int32
  cond_br undef, bb2, bb3

bb3:
  br bb4

bb4:
  %4 = tuple ()
  return %4 : $()
}

// CHECK-LABEL: SPA @test_nested_loops
// CHECK-NEXT:    bb0: length=1+40, d-entry=0, d-exit=41
// CHECK-NEXT:    bb1: length=1+0, d-entry=41, d-exit=6
// CHECK-NEXT:    bb2: length=1+0, d-entry=42, d-exit=5
// CHECK-NEXT:    bb3: length=3+0, d-entry=43, d-exit=5
// CHECK-NEXT:    bb4: length=2+0, d-entry=43, d-exit=4
// CHECK-NEXT:    bb5: length=1+0, d-entry=45, d-exit=2
// CHECK-NEXT:    bb6: length=1+0, d-entry=46, d-exit=1
// CHECK-NEXT:    bb7: length=0+0, d-entry=41, d-exit=0
// CHECK-NEXT:  Loop bb2:
// CHECK-NEXT:    bb2: length=1+0, d-entry=0, d-exit=4
// CHECK-NEXT:    bb4: length=2+0, d-entry=1, d-exit=3
// CHECK-NEXT:    bb3: length=3+30, d-entry=1, d-exit=34
// CHECK-NEXT:    bb5: length=1+0, d-entry=3, d-exit=1
// CHECK-NEXT:  Loop bb3:
// CHECK-NEXT:    bb3: length=3+0, d-entry=0, d-exit=3

sil @test_nested_loops : $@convention(thin) () -> () {
bb0:
  cond_br undef, bb1, bb7

bb1:
  br bb2

bb2:
  cond_br undef, bb3, bb4

bb3:
  %c1 = builtin "assert_configuration"() : $Builtin.Int32
  %c2 = builtin "assert_configuration"() : $Builtin.Int32
  cond_br undef, bb3, bb5

bb4:
  %c3 = builtin "assert_configuration"() : $Builtin.Int32
  br bb5

bb5:
  cond_br undef, bb2, bb6

bb6:
  br bb7

bb7:
  %4 = tuple ()
  return %4 : $()
}

// CHECK-LABEL: SPA @noreturn_func
// CHECK-NEXT:    bb0: length=0+0, d-entry=0, d-exit=536870912
sil @noreturn_func : $@convention(thin) () -> () {
bb0:
  unreachable
}

// CHECK-LABEL: SPA @test_call_of_noreturn_in_loop
// CHECK-NEXT:    bb0: length=1+0, d-entry=0, d-exit=133
// CHECK-NEXT:    bb1: length=12+120, d-entry=1, d-exit=132
// CHECK-NEXT:    bb2: length=0+0, d-entry=133, d-exit=0
// CHECK-NEXT:  Loop bb1:
// CHECK-NEXT:    bb1: length=12+0, d-entry=0, d-exit=12
sil @test_call_of_noreturn_in_loop : $@convention(thin) () -> () {
bb0:
  br bb1

bb1:
  %f = function_ref @noreturn_func : $@convention(thin) () -> ()
  %a = apply %f() : $@convention(thin) () -> ()
  %c1 = builtin "assert_configuration"() : $Builtin.Int32
  cond_br undef, bb1, bb2

bb2:
  %4 = tuple ()
  return %4 : $()
}
