mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
'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
76 lines
2.2 KiB
Swift
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]]
|
|
}
|