// RUN: rm -rf %t && mkdir %t
// RUN: %target-swift-frontend -module-name main -primary-file %s %S/Inputs/objc_enum_multi_file_helper.swift -emit-ir | FileCheck %s

// RUN: %target-swift-frontend -disable-objc-attr-requires-foundation-module -emit-module %S/Inputs/objc_enum_multi_file_helper.swift -o %t
// RUN: %target-swift-frontend -module-name main -primary-file %s -I %t -DIMPORT -emit-ir | FileCheck %s

#if IMPORT
import objc_enum_multi_file_helper
#endif

// CHECK-LABEL: define hidden i32 @_TF4main6useFooFO{{S_|27objc_enum_multi_file_helper}}3FooVs5Int32(i32) {{.*}} {
func useFoo(_ x: Foo) -> Int32 {
  // CHECK: switch i32 %0, label %[[DEFAULT:.+]] [
  // CHECK-DAG: i32 1, label %[[CASE_B:.+]]
  // CHECK-DAG: i32 2, label %[[CASE_C:.+]]
  // CHECK-DAG: i32 0, label %[[CASE_A:.+]]
  // CHECK: ]

  // CHECK: <label>:[[DEFAULT]]
  // CHECK-NEXT: unreachable

  switch x {
    // CHECK: <label>:[[CASE_B]]
    // CHECK-NEXT: br label %[[FINAL:.+]]
  case .B:
    return 11

    // CHECK: <label>:[[CASE_C]]
    // CHECK-NEXT: br label %[[FINAL]]
  case .C:
    return 15

    // CHECK: <label>:[[CASE_A]]
    // CHECK-NEXT: br label %[[FINAL]]
  case .A:
    return 10
  }

  // CHECK: <label>:[[FINAL]]
  // CHECK: %[[RETVAL:.+]] = phi i32 [ 10, %[[CASE_A]] ], [ 15, %[[CASE_C]] ], [ 11, %[[CASE_B]] ]
  // CHECK: ret i32 %[[RETVAL]]
}

// CHECK-LABEL: define hidden i32 @_TF4main6useBarFO{{S_|27objc_enum_multi_file_helper}}3BarVs5Int32(i32) {{.*}} {
func useBar(_ x: Bar) -> Int32 {
  // CHECK: switch i32 %0, label %[[DEFAULT:.+]] [
  // CHECK-DAG: i32 6, label %[[CASE_B:.+]]
  // CHECK-DAG: i32 7, label %[[CASE_C:.+]]
  // CHECK-DAG: i32 5, label %[[CASE_A:.+]]
  // CHECK: ]

  // CHECK: <label>:[[DEFAULT]]
  // CHECK-NEXT: unreachable

  switch x {
  // CHECK: <label>:[[CASE_B]]
  // CHECK-NEXT: br label %[[FINAL:.+]]
  case .B:
    return 11

  // CHECK: <label>:[[CASE_C]]
  // CHECK-NEXT: br label %[[FINAL]]
  case .C:
    return 15

  // CHECK: <label>:[[CASE_A]]
  // CHECK-NEXT: br label %[[FINAL]]
  case .A:
    return 10
  }

  // CHECK: <label>:[[FINAL]]
  // CHECK: %[[RETVAL:.+]] = phi i32 [ 10, %[[CASE_A]] ], [ 15, %[[CASE_C]] ], [ 11, %[[CASE_B]] ]
  // CHECK: ret i32 %[[RETVAL]]
}
