mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
34 lines
843 B
Plaintext
34 lines
843 B
Plaintext
// RUN: %target-swift-frontend -emit-ir %s | %FileCheck %s
|
|
sil_stage canonical
|
|
|
|
enum Optional<T> { case some(T), none }
|
|
|
|
class AClass {
|
|
}
|
|
|
|
protocol AProto {
|
|
}
|
|
|
|
enum AnEnum {
|
|
case ACase(a: AClass, b: AProto)
|
|
}
|
|
|
|
// CHECK-LABEL: define {{.*}} @switch_singleton_enum_in_optional
|
|
// CHECK: [[GEP:%.*]] = getelementptr inbounds {{.*}}, ptr %0, i32 0, i32 0
|
|
// CHECK: [[FIRSTWORD:%.*]] = load {{.*}}, ptr [[GEP]]
|
|
// CHECK: [[TEST:%.*]] = icmp eq {{.*}} [[FIRSTWORD]], 0
|
|
// CHECK: br i1 [[TEST]]
|
|
sil public @switch_singleton_enum_in_optional :
|
|
$@convention(thin) (@in Optional<AnEnum>) -> () {
|
|
entry(%a : $*Optional<AnEnum>):
|
|
switch_enum_addr %a : $*Optional<AnEnum>,
|
|
case #Optional.some!enumelt: some,
|
|
case #Optional.none!enumelt: none
|
|
some:
|
|
unreachable
|
|
none:
|
|
unreachable
|
|
}
|
|
|
|
sil_vtable AClass {}
|