1# RUN: llvm-mc -triple=wasm32-unknown-unknown -mattr=+exception-handling < %s | FileCheck %s 2 3# Tests if block/loop/try/catch/end/branch/rethrow instructions are correctly 4# printed with their annotations. 5 6 .text 7 .section .text.test_annotation,"",@ 8 .type test_annotation,@function 9test_annotation: 10 .functype test_annotation () -> () 11 .eventtype __cpp_exception i32 12 try 13 br 0 14 catch 15 block 16 br_if 0 17 loop 18 br_if 1 19 end_loop 20 end_block 21 try 22 rethrow 23 catch 24 block 25 try 26 br 0 27 catch 28 local.set 0 29 block i32 30 local.get 0 31 br_on_exn 0, __cpp_exception 32 rethrow 33 end_block 34 end_try 35 end_block 36 rethrow 37 end_try 38 end_try 39 end_function 40 41 42# CHECK: test_annotation: 43# CHECK: try 44# CHECK-NEXT: br 0 # 0: down to label0 45# CHECK-NEXT: catch # catch0: 46# CHECK-NEXT: block 47# CHECK-NEXT: br_if 0 # 0: down to label1 48# CHECK-NEXT: loop # label2: 49# CHECK-NEXT: br_if 1 # 1: down to label1 50# CHECK-NEXT: end_loop 51# CHECK-NEXT: end_block # label1: 52# CHECK-NEXT: try 53# CHECK-NEXT: rethrow # down to catch1 54# CHECK-NEXT: catch # catch1: 55# CHECK-NEXT: block 56# CHECK-NEXT: try 57# CHECK-NEXT: br 0 # 0: down to label5 58# CHECK-NEXT: catch # catch2: 59# CHECK-NEXT: local.set 0 60# CHECK-NEXT: block i32 61# CHECK-NEXT: local.get 0 62# CHECK-NEXT: br_on_exn 0, __cpp_exception # 0: down to label6 63# CHECK-NEXT: rethrow # to caller 64# CHECK-NEXT: end_block # label6: 65# CHECK-NEXT: end_try # label5: 66# CHECK-NEXT: end_block # label4: 67# CHECK-NEXT: rethrow # to caller 68# CHECK-NEXT: end_try # label3: 69# CHECK-NEXT: end_try # label0: 70# CHECK-NEXT: end_function 71 72