# RUN: llc -mtriple=wasm32-unknown-unknown -exception-model=wasm -mattr=+exception-handling -run-pass wasm-late-eh-prepare -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 @eh_label_test() personality i8* bitcast (i32 (...)* @__gxx_wasm_personality_v0 to i8*) {
    ret void
  }
  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
  }
...

---
# This tests 'try' and 'catch' instructions are correctly placed with respect to
# EH_LABEL instructions.
# CHECK-LABEL: name: eh_label_test
name: eh_label_test
liveins:
  - { reg: '$arguments' }
frameInfo:
  hasCalls: true
body: |
  bb.0:
    ; TRY should be before EH_LABEL wrappers of throwing calls
    ; CHECK:      bb.0
    ; CHECK:      TRY
    ; CHECK-NEXT: EH_LABEL
    ; CHECK-NEXT: CALL @foo
    ; CHECK-NEXT: EH_LABEL
    successors: %bb.1, %bb.2
    EH_LABEL <mcsymbol .Ltmp0>
    CALL @foo, implicit-def dead $arguments, implicit $sp32, implicit $sp64
    EH_LABEL <mcsymbol .Ltmp1>
    BR %bb.2, implicit-def dead $arguments

  bb.1 (landing-pad):
  ; predecessors: %bb.0
    successors: %bb.2
    ; CATCH_ALL should be after EH_LABELs in the beginning of an EH pad.
    ; (Sometimes there are multiple EH_LABELs in an EH pad. This test tests
    ; that.) GLOBAL_SET should follow right after that.
    ; CHECK:      bb.1
    ; CHECK:      EH_LABEL
    ; CHECK:      EH_LABEL
    ; CHECK-NEXT: CATCH_ALL
    ; CHECK-NEXT: GLOBAL_SET_I32
    EH_LABEL <mcsymbol .Ltmp2>
    EH_LABEL <mcsymbol .Ltmp2>
    CATCHRET %bb.2, %bb.1, implicit-def dead $arguments

  bb.2:
  ; predecessors: %bb.0, %bb.1
    RETURN implicit-def dead $arguments
...

---
# Unreachable EH pads should be removed by LateEHPrepare.
# CHECK-LABEL: name: unreachable_ehpad_test
name: unreachable_ehpad_test
liveins:
  - { reg: '$arguments' }
body: |
  ; CHECK: bb.0
  bb.0:
    successors: %bb.2
    BR %bb.2, implicit-def dead $arguments

  ; This EH pad is unreachable, so it should be removed by LateEHPrepare
  ; CHECK-NOT: bb.1 (landing-pad)
  bb.1 (landing-pad):
    successors: %bb.2
    EH_LABEL <mcsymbol .Ltmp2>
    CATCHRET %bb.2, %bb.1, implicit-def dead $arguments

  ; CHECK: bb.2
  bb.2:
  ; 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

