// RUN: %target-swift-frontend %s -emit-ir | FileCheck %s

// REQUIRES: CPU=x86_64
// REQUIRES: objc_interop

import Builtin

// ObjC payloads can be nullable too.
enum NullableObjCRefcounted {
  case Ref(Builtin.UnknownObject)
  case None
}
// CHECK-LABEL: define linkonce_odr hidden void @_TwxxO39enum_value_semantics_special_cases_objc22NullableObjCRefcounted(%swift.opaque* %object, %swift.type* %NullableObjCRefcounted) {{.*}} {
// CHECK: entry:
// CHECK:   %0 = bitcast %swift.opaque* %object to %O39enum_value_semantics_special_cases_objc22NullableObjCRefcounted*
// CHECK:   %1 = bitcast %O39enum_value_semantics_special_cases_objc22NullableObjCRefcounted* %0 to %objc_object**
// CHECK:   %2 = load %objc_object*, %objc_object** %1, align 8
// CHECK:   call void @objc_release(%objc_object* %2) {{#[0-9]+}}
// CHECK:   ret void
// CHECK: }

class C {}
sil_vtable C {}

sil @_TFC39enum_value_semantics_special_cases_objc1CD : $@convention(method) (C) -> ()

enum AllMixedRefcounted {
  case Ref(Builtin.NativeObject)
  case CRef(C)
  case ORef(Builtin.UnknownObject)
  case None
}

// CHECK-LABEL: define linkonce_odr hidden void @_TwxxO39enum_value_semantics_special_cases_objc18AllMixedRefcounted(%swift.opaque* %object, %swift.type* %AllMixedRefcounted) {{.*}} {
// CHECK: entry:
// CHECK:   %0 = bitcast %swift.opaque* %object to %O39enum_value_semantics_special_cases_objc18AllMixedRefcounted*
// CHECK:   %1 = bitcast %O39enum_value_semantics_special_cases_objc18AllMixedRefcounted* %0 to i64*
// CHECK:   %2 = load i64, i64* %1, align 8
// --                         0x3fffffffffffffff
// CHECK:   %3 = and i64 %2, 4611686018427387903
// CHECK:   %4 = inttoptr i64 %3 to %objc_object*
// CHECK:   call void @swift_unknownRelease(%objc_object* %4) {{#[0-9]+}}
// CHECK:   ret void
// CHECK: }

enum AllMixedRefcountedTwoSimple {
  case Ref(Builtin.NativeObject)
  case CRef(C)
  case ORef(Builtin.UnknownObject)
  case None
  case Nothing
}

// CHECK-LABEL: define linkonce_odr hidden void @_TwxxO39enum_value_semantics_special_cases_objc27AllMixedRefcountedTwoSimple
// CHECK:   switch
