Files
swift-mirror/test/IRGen/objc_enum_multi_file.swift
Joe Groff 0cd5aa8c7c Change mangling for the Swift module from 'Ss' to 's'.
'Ss' appears in manglings tens of thousands of times in the standard library and is also incredibly frequent in other modules. This alone is enough to shrink the standard library by 59KB.

Swift SVN r32409
2015-10-02 22:39:44 +00:00

76 lines
2.2 KiB
Swift

// 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]]
}