Files
swift-mirror/test/IRGen/enum_switch_singleton_enum_in_optional.sil
2023-06-23 06:57:37 -07:00

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 {}