// RUN: %swift -target i386-apple-ios7 %s -gnone -emit-ir | %FileCheck %s
// RUN: %swift -target armv7-apple-ios7 %s -gnone -emit-ir | %FileCheck %s

// REQUIRES: CODEGENERATOR=X86
// REQUIRES: CODEGENERATOR=ARM

// Check that we correctly lay out single-payload enums with a class reference
// payload as nullable pointers. <rdar://problem/16093103>

sil_stage canonical

import Builtin

class C {}
sil_vtable C {}

sil @_T011enum_32_bit1CCfD : $@convention(thin) (@owned C) -> ()

// CHECK-LABEL: %T11enum_32_bit3FooO = type <{ [4 x i8] }>
enum Foo {
  case A(C)
  case B
}

@objc protocol ClassExistential {}

// CHECK-LABEL: %T11enum_32_bit3BarO = type <{ [4 x i8] }>
enum Bar {
  case A(ClassExistential)
  case B
}

// CHECK-LABEL: %T11enum_32_bit3BasO = type <{ [4 x i8] }>
enum Bas {
  case A(ClassExistential)
  case B(C)
  case Z
}

// CHECK-LABEL: define{{( protected)?}} swiftcc void @foo(i32)
sil @foo : $@convention(thin) (@owned Foo) -> () {
entry(%0 : $Foo):
  return undef : $()
}

// CHECK-LABEL: define{{( protected)?}} swiftcc void @bar(i32)
sil @bar : $@convention(thin) (@owned Bar) -> () {
entry(%0 : $Bar):
  return undef : $()
}

// CHECK-LABEL: define{{( protected)?}} swiftcc void @bas(i32)
sil @bas : $@convention(thin) (@owned Bas) -> () {
entry(%0 : $Bas):
  return undef : $()
}

// Force instantiation of the IR types
sil @indirect_foo : $@convention(thin) (@in Foo) -> ()
sil @indirect_bar : $@convention(thin) (@in Bar) -> ()
sil @indirect_bas : $@convention(thin) (@in Bas) -> ()
