// RUN: %target-sil-opt -enable-sil-verify-all -inline %s | %FileCheck %s // Check if cloning of select_value and switch_value works correctly without // producing illegal SIL. sil_stage canonical import Builtin sil [always_inline] @callee : $@convention(thin) () -> () { bb0: %1 = integer_literal $Builtin.Word, 1 %2 = integer_literal $Builtin.Word, 2 %3 = integer_literal $Builtin.Word, 3 %4 = select_value %1: $Builtin.Word, case %1: %2, case %2: %1, default %3 : $Builtin.Word switch_value %1 : $Builtin.Word, case %1: bb1, case %2: bb2 bb1: br bb3 bb2: br bb3 bb3: %5 = tuple () return %5 : $() } // CHECK-LABEL: sil @caller : $@convention(thin) () -> () // CHECK: select_value // CHECK: switch_value sil @caller : $@convention(thin) () -> () { bb0: %0 = function_ref @callee : $@convention(thin) () -> () %1 = apply %0() : $@convention(thin) () -> () %2 = tuple () return %2 : $() }