forked from OSchip/llvm-project
[WebAssembly] Split EH MIR tests into two files
Currently exception.mir runs LateEHPrepare and CFGStackify, but some tests I'm planning to add shouldn't be run with LateEHPrepare, because it is convenient to only run CFGStackify when testing things like unwind mismatches and it is easier to add tests that are in phase right before CFGStackify. This splits existing exception.mir into two files; cfg-stackify-eh.mir will only run CFGStackify. Note that `eh_label_tests` tests both LateEHPrepare and CFGStackify, so it is still in exception.mir. `rethrow_arg_tests` has been converted to the post-LateEHPrepare form to be moved into cfg-stackify-eh.mir, like removing `CATCHRET` and such, because it does not really test anything in LateEHPrepare. Reviewed By: dschuff Differential Revision: https://reviews.llvm.org/D97175
This commit is contained in:
parent
9a4dd4de9d
commit
908643ada0
|
@ -0,0 +1,55 @@
|
|||
# RUN: llc -mtriple=wasm32-unknown-unknown -exception-model=wasm -mattr=+exception-handling -run-pass wasm-cfg-stackify %s -o - | FileCheck %s
|
||||
|
||||
--- |
|
||||
target datalayout = "e-m:e-p:32:32-i64:64-n32:64-S128"
|
||||
target triple = "wasm32-unknown-unknown"
|
||||
|
||||
declare i32 @__gxx_wasm_personality_v0(...)
|
||||
declare void @foo()
|
||||
define void @rethrow_arg_test() personality i8* bitcast (i32 (...)* @__gxx_wasm_personality_v0 to i8*) {
|
||||
ret void
|
||||
}
|
||||
...
|
||||
|
||||
---
|
||||
# CHECK-LABEL: name: rethrow_arg_test
|
||||
name: rethrow_arg_test
|
||||
liveins:
|
||||
- { reg: '$arguments' }
|
||||
body: |
|
||||
bb.0:
|
||||
successors: %bb.1, %bb.3
|
||||
; CHECK: bb.0:
|
||||
; CHECK: TRY
|
||||
EH_LABEL <mcsymbol .Ltmp0>
|
||||
CALL @foo, implicit-def dead $arguments, implicit $sp32, implicit $sp64
|
||||
EH_LABEL <mcsymbol .Ltmp1>
|
||||
BR %bb.3, implicit-def dead $arguments
|
||||
|
||||
bb.1 (landing-pad):
|
||||
successors: %bb.2
|
||||
; CHECK: bb.1 (landing-pad):
|
||||
; CHECK: CATCH
|
||||
; CHECK: TRY
|
||||
; This RETHROW rethrows the exception caught by this BB's CATCH, but after
|
||||
; CFGStackify a TRY is placed between the CATCH and this RETHROW, so after
|
||||
; CFGStackify its immediate argument should become not 0, but 1.
|
||||
; CHECK: RETHROW 1
|
||||
EH_LABEL <mcsymbol .Ltmp2>
|
||||
%0:i32 = CATCH &__cpp_exception, implicit-def dead $arguments
|
||||
RETHROW 0, implicit-def dead $arguments
|
||||
|
||||
bb.2 (landing-pad):
|
||||
; CHECK: bb.2 (landing-pad):
|
||||
; CHECK: CATCH
|
||||
; CHECK: RETHROW 0
|
||||
EH_LABEL <mcsymbol .Ltmp5>
|
||||
%1:i32 = CATCH &__cpp_exception, implicit-def dead $arguments
|
||||
RETHROW 0, implicit-def dead $arguments
|
||||
|
||||
bb.3:
|
||||
; CHECK: bb.3:
|
||||
; CHECK: END_TRY
|
||||
; CHECK: END_TRY
|
||||
RETURN implicit-def dead $arguments
|
||||
...
|
|
@ -12,9 +12,6 @@
|
|||
define void @unreachable_ehpad_test() personality i8* bitcast (i32 (...)* @__gxx_wasm_personality_v0 to i8*) {
|
||||
ret void
|
||||
}
|
||||
define void @rethrow_arg_test() personality i8* bitcast (i32 (...)* @__gxx_wasm_personality_v0 to i8*) {
|
||||
ret void
|
||||
}
|
||||
...
|
||||
|
||||
---
|
||||
|
@ -84,56 +81,3 @@ body: |
|
|||
; predecessors: %bb.0, %bb.1
|
||||
RETURN implicit-def dead $arguments
|
||||
...
|
||||
|
||||
---
|
||||
# CHECK-LABEL: name: rethrow_arg_test
|
||||
name: rethrow_arg_test
|
||||
liveins:
|
||||
- { reg: '$arguments' }
|
||||
body: |
|
||||
bb.0:
|
||||
successors: %bb.1, %bb.4
|
||||
; CHECK: bb.0
|
||||
; CHECK: TRY
|
||||
EH_LABEL <mcsymbol .Ltmp0>
|
||||
CALL @foo, implicit-def dead $arguments, implicit $sp32, implicit $sp64
|
||||
EH_LABEL <mcsymbol .Ltmp1>
|
||||
BR %bb.4, implicit-def dead $arguments
|
||||
|
||||
bb.1 (landing-pad):
|
||||
; predecessors: %bb.0
|
||||
successors: %bb.2
|
||||
; CHECK: bb.1
|
||||
; CHECK: CATCH
|
||||
; CHECK: TRY
|
||||
; This RETHROW rethrows the exception caught by this BB's CATCH, but after
|
||||
; CFGStackify a TRY is placed between the CATCH and this RETHROW, so after
|
||||
; CFGStackify its immediate argument should become not 0, but 1.
|
||||
; CHECK: RETHROW 1
|
||||
EH_LABEL <mcsymbol .Ltmp2>
|
||||
%0:i32 = CATCH &__cpp_exception, implicit-def dead $arguments
|
||||
RETHROW 0, implicit-def dead $arguments
|
||||
|
||||
bb.2 (landing-pad):
|
||||
; predecessors: %bb.1
|
||||
successors: %bb.3
|
||||
; CHECK: bb.2
|
||||
; CHECK: CATCH
|
||||
; CHECK: RETHROW 0
|
||||
EH_LABEL <mcsymbol .Ltmp5>
|
||||
%1:i32 = CATCH &__cpp_exception, implicit-def dead $arguments
|
||||
RETHROW 0, implicit-def dead $arguments
|
||||
CATCHRET %bb.3, %bb.2, implicit-def dead $arguments
|
||||
|
||||
bb.3:
|
||||
; predecessors: %bb.2
|
||||
successors: %bb.4
|
||||
CATCHRET %bb.4, %bb.1, implicit-def dead $arguments
|
||||
|
||||
bb.4:
|
||||
; predecessors: %bb.0, %bb.3
|
||||
; CHECK: bb.4
|
||||
; CHECK: END_TRY
|
||||
; CHECK: END_TRY
|
||||
RETURN implicit-def dead $arguments
|
||||
|
||||
|
|
Loading…
Reference in New Issue