# RUN: llc -mtriple thumbv7m-none-eabi -run-pass prologepilog %s -o - | FileCheck %s

--- |
  define void @throw() noreturn { unreachable }

  define void @ret() nounwind { ret void }

  define void @tables() nounwind noreturn uwtable { ret void }

  define void @noret() noreturn nounwind {
  start:
    %p = alloca i32
    store i32 42, i32* %p
    unreachable
  }
...
---
# This function may return by exception. Check that $r4 is saved and restored.
# CHECK-LABEL: name: throw
# CHECK: killed $r4
# CHECK: def $r4
name: throw
body: |
  bb.0:
    $r4 = IMPLICIT_DEF
    tBX_RET 14, $noreg
---
---
# This function may return. Check that $r4 is saved and restored.
# CHECK-LABEL: name: ret
# CHECK: killed $r4
# CHECK: def $r4
name: ret
body: |
  bb.0:
    $r4 = IMPLICIT_DEF
    tBX_RET 14, $noreg
---
---
# This function needs correct unwind tables anyway. Check that $r4 is saved and
# restored.
# CHECK-LABEL: name: tables
# CHECK: killed $r4
# CHECK: def $r4
name: tables
body: |
  bb.0:
    $r4 = IMPLICIT_DEF
    tBX_RET 14, $noreg
---
---
# This function does not return. We need not save any CSR, but
# other stack adjustments in the prologue are still necessary.
# CHECK-LABEL: name: noret
# CHECK-NOT: killed $r4
# CHECK-NOT: def $r4
# CHECK: $sp = frame-setup
name: noret
stack:
  - { id: 0, name: p, offset: 0, size: 4, alignment: 4, local-offset: -4 }
body: |
  bb.0:
    $r4 = IMPLICIT_DEF
    tBX_RET 14, $noreg
---
