// RUN: %target-swift-frontend -module-name bridged_casts_folding -O -enable-sil-ownership -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
}
