diff options
| author | Heejin Ahn <aheejin@gmail.com> | 2018-11-01 20:32:15 +0000 |
|---|---|---|
| committer | Heejin Ahn <aheejin@gmail.com> | 2018-11-01 20:32:15 +0000 |
| commit | 2e398976bac3d8a5ba70567c13d396d50ee393d2 (patch) | |
| tree | eac1294e105a4c1f44f7e17e86ff36686031a06e /llvm | |
| parent | c22b988e59b79d9b67956cd9711bb37c5a88c59f (diff) | |
| download | bcm5719-llvm-2e398976bac3d8a5ba70567c13d396d50ee393d2.tar.gz bcm5719-llvm-2e398976bac3d8a5ba70567c13d396d50ee393d2.zip | |
[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
llvm-svn: 345888
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/lib/Target/WebAssembly/AsmParser/WebAssemblyAsmParser.cpp | 2 | ||||
| -rw-r--r-- | llvm/test/MC/WebAssembly/basic-assembly.s | 16 |
2 files changed, 16 insertions, 2 deletions
diff --git a/llvm/lib/Target/WebAssembly/AsmParser/WebAssemblyAsmParser.cpp b/llvm/lib/Target/WebAssembly/AsmParser/WebAssemblyAsmParser.cpp index 60f82fac5de..c257e98d55d 100644 --- a/llvm/lib/Target/WebAssembly/AsmParser/WebAssemblyAsmParser.cpp +++ b/llvm/lib/Target/WebAssembly/AsmParser/WebAssemblyAsmParser.cpp @@ -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})); diff --git a/llvm/test/MC/WebAssembly/basic-assembly.s b/llvm/test/MC/WebAssembly/basic-assembly.s index a22fe7962d4..cfffda57bcc 100644 --- a/llvm/test/MC/WebAssembly/basic-assembly.s +++ b/llvm/test/MC/WebAssembly/basic-assembly.s @@ -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,@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@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@GLOBAL # CHECK-NEXT: end_function |

