# RUN: llc -mtriple=wasm32-unknown-unknown -exception-model=wasm -mattr=+exception-handling -run-pass wasm-cfg-stackify %s -o - | FileCheck %s

--- |
  target triple = "wasm32-unknown-unknown"

  declare i32 @__gxx_wasm_personality_v0(...)
  declare void @foo()
  define void @rethrow_arg_test() personality ptr @__gxx_wasm_personality_v0 {
    ret void
  }
  define i32 @fix_end_function_test() personality ptr @__gxx_wasm_personality_v0 {
    ret i32 0
  }
...

---
# 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 .Ltmp3>
    %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
...

---
# This function has i32 return type and the end of the function is unreachable,
# so CFGStackify's fixEndsAtEndOfFunction() propagates the return type while
# they encounter 'end' or 'delegate'. This is a regression test for a bug that
# we only handled 'end' but not 'delegate'.
# CHECK-LABEL: name: fix_end_function_test
name: fix_end_function_test
liveins:
  - { reg: '$arguments' }
machineFunctionInfo:
  params:          [  ]
  results:         [ i32 ]
  wasmEHFuncInfo:
    3:               4
body: |
  ; CHECK: TRY 127
  ; CHECK:   TRY 127
  ; CHECK:     CALL @foo
  ; CHECK:     TRY 64
  ; CHECK:       CALL @foo
  ; CHECK:     DELEGATE
  ; CHECK:     RETURN
  ; CHECK:   CATCH
  ;; This TRY should have the return type i32 (127)
  ; CHECK:     TRY 127
  ; CHECK:       RETHROW
  ; CHECK:     DELEGATE
  ; CHECK:   END_TRY
  ; CHECK: CATCH
  ; CHECK:   RETHROW
  ; CHECK: END_TRY
  bb.0:
    successors: %bb.1, %bb.3
    EH_LABEL <mcsymbol .Ltmp0>
    CALL @foo, implicit-def dead $arguments, implicit $sp32, implicit $sp64
    EH_LABEL <mcsymbol .Ltmp1>

  bb.1:
    successors: %bb.2, %bb.4
    EH_LABEL <mcsymbol .Ltmp2>
    CALL @foo, implicit-def dead $arguments, implicit $sp32, implicit $sp64
    EH_LABEL <mcsymbol .Ltmp3>

  bb.2:
    %0:i32 = CONST_I32 3, implicit-def dead $arguments
    RETURN %0:i32, implicit-def dead $arguments

  bb.3 (landing-pad):
    EH_LABEL <mcsymbol .Ltmp4>
    %0:i32 = CATCH &__cpp_exception, implicit-def dead $arguments
    RETHROW 0, implicit-def dead $arguments

  bb.4 (landing-pad):
    EH_LABEL <mcsymbol .Ltmp5>
    %1:i32 = CATCH &__cpp_exception, implicit-def dead $arguments
    RETHROW 0, implicit-def dead $arguments
...
