export fn main() c_int { var cond: c_int = 0; const a: c_int = switch (cond) { 1 => 1, 2 => 2, 99...300, 12 => 3, 0 => 4, 13 => unreachable, else => 5, }; return a - 4; } ZIR fn_body main %0 = block({ %1 = dbg_stmt_node() node_offset:2:5 %2 = alloc_mut(@Ref.c_int_type) node_offset:2:5 %3 = store_node(%2, @Ref.zero) node_offset:2:23 %4 = dbg_stmt_node() node_offset:3:5 %6 = load(%2) node_offset:3:30 %7 = typeof(%6) node_offset:3:30 %12 = as_node(%7, @Ref.one) node_offset:4:9 %15 = int(2) %16 = as_node(%7, %15) node_offset:5:9 %20 = int(12) %21 = as_node(%7, %20) node_offset:6:19 %22 = int(99) %23 = as_node(%7, %22) node_offset:6:9 %24 = int(300) %25 = as_node(%7, %24) node_offset:6:14 %29 = as_node(%7, @Ref.zero) node_offset:7:9 %33 = int(13) %34 = as_node(%7, %33) node_offset:8:9 %8 = switch_block_else_multi(%6, else => { %9 = int(5) %11 = break(%8, %9) }, %12 => { %14 = break(%8, @Ref.one) }, %16 => { %17 = int(2) %19 = break(%8, %17) }, %29 => { %30 = int(4) %32 = break(%8, %30) }, %34 => { %35 = unreachable(safe) node_offset:8:15 }, %21, %23...%25 => { %26 = int(3) %28 = break(%8, %26) }) node_offset:3:22 %37 = as_node(@Ref.c_int_type, %8) node_offset:3:14 %38 = dbg_stmt_node() node_offset:11:5 %39 = ret_type() node_offset:11:5 %40 = int(4) %41 = sub(%37, %40) node_offset:11:14 %42 = as_node(%39, %41) node_offset:11:14 %43 = ret_node(%42) node_offset:11:5 %44 = ret_coerce(@Ref.void_value) token_offset:12:1 }) node_offset:1:8 // end ZIR fn_body main