diff options
Diffstat (limited to 'llvm/test')
-rw-r--r-- | llvm/test/CodeGen/WebAssembly/exception.ll | 9 | ||||
-rw-r--r-- | llvm/test/CodeGen/WebAssembly/wasmehprepare.ll | 30 | ||||
-rw-r--r-- | llvm/test/MC/WebAssembly/event-section.ll | 7 |
3 files changed, 37 insertions, 9 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 } diff --git a/llvm/test/CodeGen/WebAssembly/wasmehprepare.ll b/llvm/test/CodeGen/WebAssembly/wasmehprepare.ll index 67e198eb058..6df7175b1ca 100644 --- a/llvm/test/CodeGen/WebAssembly/wasmehprepare.ll +++ b/llvm/test/CodeGen/WebAssembly/wasmehprepare.ll @@ -298,6 +298,34 @@ try.cont10: ; preds = %invoke.cont3, %catc ret void } +; Tests if instructions after a call to @llvm.wasm.throw are deleted and the +; BB's dead children are deleted. + +; CHECK-LABEL: @test6 +define i32 @test6(i1 %b, i8* %p) { +entry: + br i1 %b, label %bb.true, label %bb.false + +; CHECK: bb.true: +; CHECK-NEXT: call void @llvm.wasm.throw(i32 0, i8* %p) +; CHECK-NEXT: unreachable +bb.true: ; preds = %entry + call void @llvm.wasm.throw(i32 0, i8* %p) + br label %bb.true.0 + +; CHECK-NOT: bb.true.0 +bb.true.0: ; preds = %bb.true + br label %merge + +; CHECK: bb.false +bb.false: ; preds = %entry + br label %merge + +; CHECK: merge +merge: ; preds = %bb.true.0, %bb.false + ret i32 0 +} + declare void @foo() declare void @func(i32) declare %struct.Cleanup* @_ZN7CleanupD1Ev(%struct.Cleanup* returned) @@ -305,6 +333,7 @@ declare i32 @__gxx_wasm_personality_v0(...) declare i8* @llvm.wasm.get.exception(token) declare i32 @llvm.wasm.get.ehselector(token) declare i32 @llvm.eh.typeid.for(i8*) +declare void @llvm.wasm.throw(i32, i8*) declare i8* @__cxa_begin_catch(i8*) declare void @__cxa_end_catch() declare void @__cxa_rethrow() @@ -314,4 +343,3 @@ declare void @__clang_call_terminate(i8*) ; CHECK-DAG: declare void @llvm.wasm.landingpad.index(token, i32) ; CHECK-DAG: declare i8* @llvm.wasm.lsda() ; CHECK-DAG: declare i32 @_Unwind_CallPersonality(i8*) - diff --git a/llvm/test/MC/WebAssembly/event-section.ll b/llvm/test/MC/WebAssembly/event-section.ll index 1257196240f..59cfe113280 100644 --- a/llvm/test/MC/WebAssembly/event-section.ll +++ b/llvm/test/MC/WebAssembly/event-section.ll @@ -1,6 +1,5 @@ -; XFAIL: * -; RUN: llc -filetype=obj -exception-model=wasm -mattr=+exception-handling -verify-machineinstrs %s -o - | obj2yaml | FileCheck %s -; RUN: llc -filetype=obj -exception-model=wasm -mattr=+exception-handling -verify-machineinstrs %s -o - | llvm-readobj -s | FileCheck -check-prefix=SEC %s +; RUN: llc -filetype=obj -exception-model=wasm -mattr=+exception-handling %s -o - | obj2yaml | FileCheck %s +; RUN: llc -filetype=obj -exception-model=wasm -mattr=+exception-handling %s -o - | llvm-readobj -s | FileCheck -check-prefix=SEC %s target triple = "wasm32-unknown-unknown" @@ -41,7 +40,7 @@ define i32 @test_throw1(i8* %p) { ; CHECK-NEXT: Offset: 0x00000006 ; CHECK-NEXT: - Type: R_WEBASSEMBLY_EVENT_INDEX_LEB ; CHECK-NEXT: Index: 1 -; CHECK-NEXT: Offset: 0x00000013 +; CHECK-NEXT: Offset: 0x00000011 ; CHECK: - Type: CUSTOM ; CHECK-NEXT: Name: linking |