brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.0 KiB · f761ef3 Raw
131 lines · plain
1# RUN: llvm-mc -triple=wasm32-unknown-unknown -mattr=+exception-handling < %s | FileCheck %s2 3# Tests if block/loop/try/catch/end/branch/rethrow instructions are correctly4# printed with their annotations.5 6  .text7  .section .text.test_annotation,"",@8  .type    test_annotation,@function9test_annotation:10  .functype   test_annotation (exnref) -> ()11  .tagtype  __cpp_exception i3212  .tagtype  __c_longjmp i3213  try14    br        015  catch     __cpp_exception16    drop17    block18      i32.const 019      br_if     020      loop21        i32.const 022        br_if     123      end_loop24    end_block25    try26      rethrow   027    catch     __cpp_exception28      drop29    catch_all30      block31        try32          br        033          try34          delegate  135        catch_all36        end_try37      end_block38      rethrow   039    end_try40  end_try41 42  block exnref43    block44      block () -> (i32, exnref)45        block i3246          try_table (catch __cpp_exception 0) (catch_ref __c_longjmp 1) (catch_all 2) (catch_all_ref 3)47          end_try_table48          return49        end_block50        return51      end_block52      return53    end_block54    return55  end_block56  drop57 58  i32.const 059  loop (i32) -> ()60    local.get 061    loop (exnref) -> ()62      try_table (catch __cpp_exception 1) (catch_all_ref 0)63      end_try_table64      drop65    end_loop66    drop67  end_loop68  end_function69 70# CHECK:      test_annotation:71# CHECK:        try72# CHECK-NEXT:   br        0               # 0: down to label073# CHECK-NEXT:   catch     __cpp_exception # catch0:74# CHECK-NEXT:   drop75# CHECK-NEXT:   block76# CHECK-NEXT:   i32.const       077# CHECK-NEXT:   br_if     0               # 0: down to label178# CHECK-NEXT:   loop                      # label2:79# CHECK-NEXT:   i32.const       080# CHECK-NEXT:   br_if     1               # 1: down to label181# CHECK-NEXT:   end_loop82# CHECK-NEXT:   end_block                 # label1:83# CHECK-NEXT:   try84# CHECK-NEXT:   rethrow   0               # down to catch385# CHECK-NEXT:   catch     __cpp_exception # catch3:86# CHECK-NEXT:   drop87# CHECK-NEXT:   catch_all{{$}}88# CHECK-NEXT:   block89# CHECK-NEXT:   try90# CHECK-NEXT:   br        0               # 0: down to label591# CHECK-NEXT:   try92# CHECK-NEXT:   delegate    1             # label/catch6: down to catch493# CHECK-NEXT:   catch_all                 # catch5:94# CHECK-NEXT:   end_try                   # label5:95# CHECK-NEXT:   end_block                 # label4:96# CHECK-NEXT:   rethrow   0               # to caller97# CHECK-NEXT:   end_try                   # label3:98# CHECK-NEXT:   end_try                   # label0:99 100# CHECK:        block           exnref101# CHECK-NEXT:   block102# CHECK-NEXT:   block           () -> (i32, exnref)103# CHECK-NEXT:   block           i32104# CHECK-NEXT:   try_table        (catch __cpp_exception 0) (catch_ref __c_longjmp 1) (catch_all 2) (catch_all_ref 3) # 0: down to label10105# CHECK-NEXT:                             # 1: down to label9106# CHECK-NEXT:                             # 2: down to label8107# CHECK-NEXT:                             # 3: down to label7108# CHECK-NEXT:   end_try_table                           # label11:109# CHECK-NEXT:   return110# CHECK-NEXT:   end_block                               # label10:111# CHECK-NEXT:   return112# CHECK-NEXT:   end_block                               # label9:113# CHECK-NEXT:   return114# CHECK-NEXT:   end_block                               # label8:115# CHECK-NEXT:   return116# CHECK-NEXT:   end_block                               # label7:117# CHECK-NEXT:   drop118 119# CHECK:        i32.const       0120# CHECK-NEXT:   loop            (i32) -> ()                     # label12:121# CHECK-NEXT:   local.get       0122# CHECK-NEXT:   loop            (exnref) -> ()                  # label13:123# CHECK-NEXT:   try_table        (catch __cpp_exception 1) (catch_all_ref 0) # 1: up to label12124# CHECK-NEXT:                                 # 0: up to label13125# CHECK-NEXT:   end_try_table                           # label14:126# CHECK-NEXT:   drop127# CHECK-NEXT:   end_loop128# CHECK-NEXT:   drop129# CHECK-NEXT:   end_loop130# CHECK-NEXT:   end_function131