Revision 42e827e6e7247224c068a9dce8f6eabd2ab892ba authored by Devin Coughlin on 21 January 2016, 00:12:56 UTC, committed by Devin Coughlin on 21 January 2016, 01:22:15 UTC
1 parent ac1f5a6
Raw File
optional_metatype.sil
// RUN: rm -rf %t && mkdir %t
// RUN: %build-irgen-test-overlays
// RUN: %target-swift-frontend -sdk %S/Inputs -I %t -emit-ir %s | FileCheck %s --check-prefix=%target-cpu

// REQUIRES: objc_interop

import Builtin
import Swift
import gizmo

// x86_64-LABEL: define void @optional_objc_metatype(i64)
// x86_64:         icmp eq i64 %0, 0
// i386-LABEL:   define void @optional_objc_metatype(i32)
// i386:           icmp eq i32 %0, 0
// arm64-LABEL:  define void @optional_objc_metatype(i64)
// arm64:          icmp eq i64 %0, 0
// armv7-LABEL:  define void @optional_objc_metatype(i32)
// armv7:           icmp eq i32 %0, 0
// armv7k-LABEL: define void @optional_objc_metatype(i32)
// armv7k:          icmp eq i32 %0, 0

sil @optional_objc_metatype : $@convention(thin) (Optional<@objc_metatype Gizmo.Type>) -> () {
bb0(%0 : $Optional<@objc_metatype Gizmo.Type>):
  switch_enum %0 : $Optional<@objc_metatype Gizmo.Type>, case #Optional.Some!enumelt.1: some, case #Optional.None!enumelt: none
some(%m : $@objc_metatype Gizmo.Type):
  br cont
none:
  br cont
cont:
  return undef : $()
}

// x86_64-LABEL: define void @optional_swift_metatype(i64)
// x86_64:           icmp eq i64 %0, 0
// i386-LABEL:   define void @optional_swift_metatype(i32)
// i386:             icmp eq i32 %0, 0
// arm64-LABEL:  define void @optional_swift_metatype(i64)
// arm64:            icmp eq i64 %0, 0
// armv7-LABEL:  define void @optional_swift_metatype(i32)
// armv7:            icmp eq i32 %0, 0
// armv7k-LABEL: define void @optional_swift_metatype(i32)
// armv7k:           icmp eq i32 %0, 0

sil @optional_swift_metatype : $@convention(thin) (Optional<@thick Gizmo.Type>) -> () {
bb0(%0 : $Optional<@thick Gizmo.Type>):
  switch_enum %0 : $Optional<@thick Gizmo.Type>, case #Optional.Some!enumelt.1: some, case #Optional.None!enumelt: none
some(%m : $@thick Gizmo.Type):
  br cont
none:
  br cont
cont:
  return undef : $()
}

back to top