[llvm] r345888 - [WebAssembly] Fix signature parsing for 'try' in AsmParser

Heejin Ahn via llvm-commits llvm-commits at lists.llvm.org
Thu Nov 1 13:32:16 PDT 2018


Author: aheejin
Date: Thu Nov  1 13:32:15 2018
New Revision: 345888

URL: http://llvm.org/viewvc/llvm-project?rev=345888&view=rev
Log:
[WebAssembly] Fix signature parsing for 'try' in AsmParser

Summary:
Like `block` or `loop`, `try` can take an optional signature which can
be omitted. This patch allows `try`'s signature to be omitted. Also
added some tests for EH instructions.

Reviewers: aardappel

Subscribers: dschuff, sbc100, jgravelle-google, sunfish, llvm-commits

Differential Revision: https://reviews.llvm.org/D53873

Modified:
    llvm/trunk/lib/Target/WebAssembly/AsmParser/WebAssemblyAsmParser.cpp
    llvm/trunk/test/MC/WebAssembly/basic-assembly.s

Modified: llvm/trunk/lib/Target/WebAssembly/AsmParser/WebAssemblyAsmParser.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/WebAssembly/AsmParser/WebAssemblyAsmParser.cpp?rev=345888&r1=345887&r2=345888&view=diff
==============================================================================
--- llvm/trunk/lib/Target/WebAssembly/AsmParser/WebAssemblyAsmParser.cpp (original)
+++ llvm/trunk/lib/Target/WebAssembly/AsmParser/WebAssemblyAsmParser.cpp Thu Nov  1 13:32:15 2018
@@ -303,7 +303,7 @@ public:
     // assembly, so we add a dummy one explicitly (since we have no control
     // over signature tables here, we assume these will be regenerated when
     // the wasm module is generated).
-    if (BaseName == "block" || BaseName == "loop") {
+    if (BaseName == "block" || BaseName == "loop" || BaseName == "try") {
       Operands.push_back(make_unique<WebAssemblyOperand>(
           WebAssemblyOperand::Integer, NameLoc, NameLoc,
           WebAssemblyOperand::IntOp{-1}));

Modified: llvm/trunk/test/MC/WebAssembly/basic-assembly.s
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/WebAssembly/basic-assembly.s?rev=345888&r1=345887&r2=345888&view=diff
==============================================================================
--- llvm/trunk/test/MC/WebAssembly/basic-assembly.s (original)
+++ llvm/trunk/test/MC/WebAssembly/basic-assembly.s Thu Nov  1 13:32:15 2018
@@ -1,4 +1,4 @@
-# RUN: llvm-mc -triple=wasm32-unknown-unknown -mattr=+simd128,+nontrapping-fptoint < %s | FileCheck %s
+# RUN: llvm-mc -triple=wasm32-unknown-unknown -mattr=+simd128,+nontrapping-fptoint,+exception-handling < %s | FileCheck %s
 
     .text
     .type    test0, at function
@@ -46,6 +46,13 @@ test0:
     # TODO: enable once instruction has been added.
     #i32x4.trunc_s/f32x4:sat
     i32.trunc_s/f32
+    try
+.LBB0_3:
+    i32.catch   0
+.LBB0_4:
+    catch_all
+.LBB0_5:
+    end_try
     #i32.trunc_s:sat/f32
     get_global  __stack_pointer at GLOBAL
     end_function
@@ -88,5 +95,12 @@ test0:
 # CHECK-NEXT:      get_local   5
 # CHECK-NEXT:      f32x4.add
 # CHECK-NEXT:      i32.trunc_s/f32
+# CHECK-NEXT:      try
+# CHECK-NEXT:  .LBB0_3:
+# CHECK-NEXT:      i32.catch   0
+# CHECK-NEXT:  .LBB0_4:
+# CHECK-NEXT:      catch_all
+# CHECK-NEXT:  .LBB0_5:
+# CHECK-NEXT:      end_try
 # CHECK-NEXT:      get_global  __stack_pointer at GLOBAL
 # CHECK-NEXT:      end_function




More information about the llvm-commits mailing list