brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.5 KiB · f20b4c9 Raw
87 lines · plain
1; RUN: llc < %s -asm-verbose=false -verify-machineinstrs | FileCheck %s2 3target triple = "wasm32-unknown-unknown"4 5; Test that switches are lowered correctly in the presence of an6; unreachable default branch target.7 8; CHECK-LABEL: foo:9; CHECK-NEXT:    .functype foo (i32) -> (i32)10; CHECK-NEXT:    block11; CHECK-NEXT:    block12; CHECK-NEXT:    local.get 013; CHECK-NEXT:    br_table {0, 1, 0}14; CHECK-NEXT:  .LBB0_1:15; CHECK-NEXT:    end_block16; CHECK-NEXT:    i32.const 017; CHECK-NEXT:    return18; CHECK-NEXT:  .LBB0_2:19; CHECK-NEXT:    end_block20; CHECK-NEXT:    i32.const 121; CHECK-NEXT:    end_function22define i32 @foo(i32 %x) {23entry:24  switch i32 %x, label %unreachable [25    i32 0, label %bb026    i32 1, label %bb127  ]28 29bb0:30  ret i32 031 32bb1:33  ret i32 134 35unreachable:36  unreachable37}38 39; CHECK-LABEL: split:40; CHECK:    .functype split (i32) -> ()41; CHECK:    block42; CHECK:    br_if 043; CHECK:    block44; CHECK:    block45; CHECK:    br_table {1, 1, 0}46; CHECK: .LBB1_247; CHECK:    end_block48; CHECK:    br_table {0, 0, 0, 0, 0, 0, 0, 0}49; CHECK: .LBB1_350; CHECK:    end_block51; CHECK:    unreachable52; CHECK: .LBB1_453; CHECK:    end_block54; CHECK:    end_function55define void @split(i8 %c) {56entry:57  switch i8 %c, label %sw.default [58    i8 114, label %return59    i8 103, label %sw.bb160    i8 98, label %sw.bb261    i8 97, label %sw.bb362    i8 48, label %sw.bb463    i8 49, label %sw.bb564  ]65 66sw.bb1:67  unreachable68 69sw.bb2:70  unreachable71 72sw.bb3:73  unreachable74 75sw.bb4:76  unreachable77 78sw.bb5:79  unreachable80 81sw.default:82  unreachable83 84return:85  ret void86}87