// RUN: %target-sil-opt -module-name Swift -enable-sil-verify-all -arc-sequence-opts -enable-loop-arc=0 %s | %FileCheck %s
// RUN: %target-sil-opt -module-name Swift -enable-sil-verify-all -arc-sequence-opts -enable-loop-arc=1 %s | %FileCheck %s

import Builtin

public enum Optional<T> {
  case none
  case some(T)
}

class C {
  init()
}

// Simple test that stripping works.
// CHECK-LABEL: sil @test1 : $@convention(thin) (C) -> () {
// CHECK-NOT: strong_retain
// CHECK-NOT: strong_release
sil @test1 : $@convention(thin) (C) -> () {
bb0(%0 : $C):
  strong_retain %0 : $C
  %1 = unchecked_ref_cast %0 : $C to $Builtin.NativeObject
  strong_release %1 : $Builtin.NativeObject
  %2 = tuple()
  return %2 : $()
}

// We allow for matching up of retain_value, strong_release now that we
// have unchecked_ref_cast.

// CHECK-LABEL: sil @test2 : $@convention(thin) (Optional<C>, Optional<C>) -> () {
// CHECK-NOT: strong_retain
// CHECK-NOT: strong_release
// CHECK-NOT: retain_value
// CHECK-NOT: release_value
sil @test2 : $@convention(thin) (Optional<C>, Optional<C>) -> () {
bb0(%0 : $Optional<C>, %1 : $Optional<C>):
  retain_value %0 : $Optional<C>
  %2 = unchecked_ref_cast %0 : $Optional<C> to $C
  strong_release %2 : $C
  %3 = unchecked_ref_cast %1 : $Optional<C> to $C
  strong_retain %3 : $C
  release_value %1 : $Optional<C>
  %9999 = tuple()
  return %9999 : $()
}
