[llvm] 908643a - [WebAssembly] Split EH MIR tests into two files

Heejin Ahn via llvm-commits llvm-commits at lists.llvm.org
Mon Feb 22 12:05:16 PST 2021


Author: Heejin Ahn
Date: 2021-02-22T12:05:00-08:00
New Revision: 908643ada0e9cb6bce975212624052025716bf99

URL: https://github.com/llvm/llvm-project/commit/908643ada0e9cb6bce975212624052025716bf99
DIFF: https://github.com/llvm/llvm-project/commit/908643ada0e9cb6bce975212624052025716bf99.diff

LOG: [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

Added: 
    llvm/test/CodeGen/WebAssembly/cfg-stackify-eh.mir

Modified: 
    llvm/test/CodeGen/WebAssembly/exception.mir

Removed: 
    


################################################################################
diff  --git a/llvm/test/CodeGen/WebAssembly/cfg-stackify-eh.mir b/llvm/test/CodeGen/WebAssembly/cfg-stackify-eh.mir
new file mode 100644
index 000000000000..be40d79e697e
--- /dev/null
+++ b/llvm/test/CodeGen/WebAssembly/cfg-stackify-eh.mir
@@ -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
+...

diff  --git a/llvm/test/CodeGen/WebAssembly/exception.mir b/llvm/test/CodeGen/WebAssembly/exception.mir
index a66e2e01e522..d5011c4f24a2 100644
--- a/llvm/test/CodeGen/WebAssembly/exception.mir
+++ b/llvm/test/CodeGen/WebAssembly/exception.mir
@@ -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
-


        


More information about the llvm-commits mailing list