// RUN: %target-swift-frontend -module-name bridged_casts_folding -O -emit-sil %s | %FileCheck %s

// REQUIRES: objc_interop

sil_stage raw

import Swift
import Foundation

class NSObjectSubclass : NSObject {}
sil_vtable NSObjectSubclass {}

// CHECK-LABEL: sil @anyhashable_cast_unconditional
// CHECK:         [[BRIDGED:%.*]] = apply {{.*}}(%0)
// CHECK-NEXT:    destroy_addr %0
// CHECK-NEXT:    [[CAST:%.*]] = unconditional_checked_cast [[BRIDGED]] : $NSObject to $NSObjectSubclass
sil [ossa] @anyhashable_cast_unconditional : $@convention(thin) (@in AnyHashable) -> @owned NSObjectSubclass {
entry(%0 : $*AnyHashable):
  %1 = alloc_stack $NSObjectSubclass
  unconditional_checked_cast_addr AnyHashable in %0 : $*AnyHashable
                               to NSObjectSubclass in %1 : $*NSObjectSubclass
  %3 = load [take] %1 : $*NSObjectSubclass
  dealloc_stack %1 : $*NSObjectSubclass
  return %3 : $NSObjectSubclass
}

// CHECK-LABEL: sil @anyhashable_cast_take_always
// CHECK:         [[BRIDGED:%.*]] = apply {{.*}}(%0)
// CHECK-NEXT:    destroy_addr %0
// CHECK-NEXT:    checked_cast_br [[BRIDGED]] : $NSObject to $NSObjectSubclass, [[YES:bb[0-9]+]], [[NO:bb[0-9]+]]
sil [ossa] @anyhashable_cast_take_always : $@convention(thin) (@in AnyHashable, @owned NSObjectSubclass) -> @owned NSObjectSubclass {
entry(%0 : $*AnyHashable, %1 : @owned $NSObjectSubclass):
  %2 = alloc_stack $NSObjectSubclass
  checked_cast_addr_br take_always AnyHashable in %0 : $*AnyHashable
                 to NSObjectSubclass in %2 : $*NSObjectSubclass, bb1, bb2

bb1:
  %4 = load [take] %2 : $*NSObjectSubclass
  destroy_value %1 : $NSObjectSubclass
  br bb3(%4 : $NSObjectSubclass)

bb2:
  br bb3(%1 : $NSObjectSubclass)

bb3(%8 : @owned $NSObjectSubclass):
  dealloc_stack %2 : $*NSObjectSubclass
  return %8 : $NSObjectSubclass
}

// CHECK-LABEL: sil @anyhashable_cast_take_on_success
// CHECK:         [[BRIDGED:%.*]] = apply {{.*}}(%0)
// CHECK-NEXT:    checked_cast_br [[BRIDGED]] : $NSObject to $NSObjectSubclass, [[YES:bb[0-9]+]], [[NO:bb[0-9]+]]
// CHECK:       [[YES]]{{.*}}:
// CHECK-NEXT:    destroy_addr %0
sil [ossa] @anyhashable_cast_take_on_success : $@convention(thin) (@in AnyHashable, @owned NSObjectSubclass) -> @owned NSObjectSubclass {
entry(%0 : $*AnyHashable, %1 : @owned $NSObjectSubclass):
  %2 = alloc_stack $NSObjectSubclass
  checked_cast_addr_br take_on_success AnyHashable in %0 : $*AnyHashable
                 to NSObjectSubclass in %2 : $*NSObjectSubclass, bb1, bb2

bb1:
  %4 = load [take] %2 : $*NSObjectSubclass
  destroy_value %1 : $NSObjectSubclass
  br bb3(%4 : $NSObjectSubclass)

bb2:
  destroy_addr %0 : $*AnyHashable
  br bb3(%1 : $NSObjectSubclass)

bb3(%8 : @owned $NSObjectSubclass):
  dealloc_stack %2 : $*NSObjectSubclass
  return %8 : $NSObjectSubclass
}

// CHECK-LABEL: sil @anyhashable_cast_copy_on_success
// CHECK-NOT:         copy_addr
// CHECK:    [[BRIDGED:%.*]] = apply {{.*}}(%0)
// CHECK-NOT:    destroy_addr
// CHECK-NEXT:    checked_cast_br [[BRIDGED]] : $NSObject to $NSObjectSubclass, [[YES:bb[0-9]+]], [[NO:bb[0-9]+]]
// CHECK:       [[YES]]{{.*}}:
// CHECK-NOT:    dealloc_stack
// CHECK:       [[NO]]{{.*}}:
// CHECK-NOT:    dealloc_stack
sil [ossa] @anyhashable_cast_copy_on_success : $@convention(thin) (@in_guaranteed AnyHashable, @owned NSObjectSubclass) -> @owned NSObjectSubclass {
entry(%0 : $*AnyHashable, %1 : @owned $NSObjectSubclass):
  %2 = alloc_stack $NSObjectSubclass
  checked_cast_addr_br copy_on_success AnyHashable in %0 : $*AnyHashable
                 to NSObjectSubclass in %2 : $*NSObjectSubclass, bb1, bb2

bb1:
  %4 = load [take] %2 : $*NSObjectSubclass
  destroy_value %1 : $NSObjectSubclass
  br bb3(%4 : $NSObjectSubclass)

bb2:
  br bb3(%1 : $NSObjectSubclass)

bb3(%8 : @owned $NSObjectSubclass):
  dealloc_stack %2 : $*NSObjectSubclass
  return %8 : $NSObjectSubclass
}
