summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/WebAssembly/exception.ll
diff options
context:
space:
mode:
authorHeejin Ahn <aheejin@gmail.com>2018-11-16 00:47:18 +0000
committerHeejin Ahn <aheejin@gmail.com>2018-11-16 00:47:18 +0000
commit095796a391e5e8343ce462ce97fdc493d20478cd (patch)
tree53daa4333ce0a05d5da5f3b9b8998d4ed88ef4c9 /llvm/test/CodeGen/WebAssembly/exception.ll
parent2f5683e6b0d3c7348929e05a2a781690e598c533 (diff)
downloadbcm5719-llvm-095796a391e5e8343ce462ce97fdc493d20478cd.tar.gz
bcm5719-llvm-095796a391e5e8343ce462ce97fdc493d20478cd.zip
[WebAssembly] Split BBs after throw instructions
Summary: `throw` instruction is a terminator in wasm, but BBs were not splitted after `throw` instructions, causing machine instruction verifier to fail. This patch - Splits BBs after `throw` instructions in WasmEHPrepare and adding an unreachable instruction after `throw`, which will be deleted in LateEHPrepare pass - Refactors WasmEHPrepare into two member functions - Changes the semantics of `eraseBBsAndChildren` in LateEHPrepare pass to match that of WasmEHPrepare pass, which is newly added. Now `eraseBBsAndChildren` does not delete BBs with remaining predecessors. - Fixes style nits, making static function names conform to clang-tidy - Re-enables the test temporarily disabled by rL346840 && rL346845 Reviewers: dschuff Subscribers: sbc100, jgravelle-google, sunfish, llvm-commits Differential Revision: https://reviews.llvm.org/D54571 llvm-svn: 347003
Diffstat (limited to 'llvm/test/CodeGen/WebAssembly/exception.ll')
-rw-r--r--llvm/test/CodeGen/WebAssembly/exception.ll9
1 files changed, 5 insertions, 4 deletions
diff --git a/llvm/test/CodeGen/WebAssembly/exception.ll b/llvm/test/CodeGen/WebAssembly/exception.ll
index 0577cd43b97..b53cd0cb544 100644
--- a/llvm/test/CodeGen/WebAssembly/exception.ll
+++ b/llvm/test/CodeGen/WebAssembly/exception.ll
@@ -1,5 +1,5 @@
; RUN: not llc < %s -asm-verbose=false -disable-wasm-fallthrough-return-opt -wasm-keep-registers -exception-model=wasm
-; RUN: llc < %s -asm-verbose=false -disable-wasm-fallthrough-return-opt -wasm-keep-registers -exception-model=wasm -mattr=+exception-handling | FileCheck -allow-deprecated-dag-overlap %s
+; RUN: llc < %s -asm-verbose=false -disable-wasm-fallthrough-return-opt -wasm-keep-registers -exception-model=wasm -mattr=+exception-handling -verify-machineinstrs | FileCheck -allow-deprecated-dag-overlap %s
; RUN: llc < %s -disable-wasm-fallthrough-return-opt -wasm-keep-registers -exception-model=wasm -mattr=+exception-handling
target datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128"
@@ -12,10 +12,11 @@ target triple = "wasm32-unknown-unknown"
declare void @llvm.wasm.throw(i32, i8*)
; CHECK-LABEL: test_throw:
-; CHECK-NEXT: i32.const $push0=, 0
+; CHECK: get_local $push0=, 0
; CHECK-NEXT: throw __cpp_exception@EVENT, $pop0
-define void @test_throw() {
- call void @llvm.wasm.throw(i32 0, i8* null)
+; CHECK-NOT: unreachable
+define void @test_throw(i8* %p) {
+ call void @llvm.wasm.throw(i32 0, i8* %p)
ret void
}
OpenPOWER on IntegriCloud