# 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 @empty_cleanuppad_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
...

---
# Regression test for a bug that LateEHPrepare::addCatchAll didn't handle empty
# cleanup pads. (It tried to get debug info from end() iterator.)
name: empty_cleanuppad_test
liveins:
  - { reg: '$arguments' }
body: |
  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>
    BR %bb.3, implicit-def dead $arguments

  ;; Empty cleanuppad
  bb.1 (landing-pad):
    successors: %bb.2
    EH_LABEL <mcsymbol .Ltmp2>

  bb.2:
    successors: %bb.3
    CLEANUPRET implicit-def dead $arguments

  bb.3:
    RETURN implicit-def dead $arguments
...
