// RUN: %target-sil-opt -enable-sil-verify-all %s -sil-combine -remove-runtime-asserts | FileCheck %s

sil_stage canonical

import Builtin
import Swift

class RawBuffer {}
class HeapBufferStorage<T, U> : RawBuffer {}

class C {
}
class D : C {
}
class E {
}

// CHECK-LABEL: sil @test_unconditional_checked_cast
// CHECK: bb0
// CHECK-NEXT: unchecked_ref_cast
// CHECK-NEXT: return
sil @test_unconditional_checked_cast : $@convention(thin) <T_0_0, T_0_1> (RawBuffer) -> HeapBufferStorage<T_0_0, T_0_1> {
bb0(%0 : $RawBuffer):
  %3 = unconditional_checked_cast %0 : $RawBuffer to $HeapBufferStorage<T_0_0, T_0_1>
  return %3 : $HeapBufferStorage<T_0_0, T_0_1>
}

// CHECK-LABEL: sil @test_cond_fail
// CHECK: bb0
// CHECK-NEXT: tuple ()
// CHECK-NEXT: return
sil @test_cond_fail : $@convention(thin) (Builtin.Int1) -> () {
bb0(%0 : $Builtin.Int1):
  cond_fail %0 : $Builtin.Int1
  %2 = tuple ()
  return %2 : $()
}

// CHECK-LABEL: sil @test_unconditional_checked_cast_addr_fail
// CHECK: bb0
// CHECK-NEXT: store undef
// CHECK-NEXT: builtin "int_trap"
// CHECK: unreachable
// CHECK: }
sil @test_unconditional_checked_cast_addr_fail : $@convention(thin) (@in E, @in D) -> @out D {
bb0(%0 : $*D, %1 : $*E, %2 : $*D):
  unconditional_checked_cast_addr take_always E in %1 : $*E to D in %0 : $*D
  %4 = load %2 : $*D
  strong_release %4 : $D
  %6 = tuple ()
  return %6 : $()
}

// CHECK-LABEL: sil @test_unconditional_checked_cast_other_use
// CHECK: bb0([[ARG:%.*]] : $C
// CHECK-NOT: unconditional_checked_cast
// CHECK: return [[ARG]]

sil @test_unconditional_checked_cast_other_use : $@convention(thin) (@owned C) -> @owned C {
bb0(%0 : $C):
  strong_retain %0 : $C
  %3 = unconditional_checked_cast %0 : $C to $C
  strong_release %0 : $C
  return %3 : $C
}

protocol Class : class {
}

class G : Class {
}

// CHECK-LABEL: sil @test_unconditional_checked_cast_class_exist
// CHECK: unchecked_ref_cast
// CHECK: return
sil @test_unconditional_checked_cast_class_exist : $@convention(thin) (@owned Class) -> @owned G {
bb0(%0 : $Class):
  strong_retain %0 : $Class
  %2 = unconditional_checked_cast %0 : $Class to $G
  strong_release %0 : $Class
  return %2 : $G
}
