; RUN: llc < %s -mtriple=x86_64-scei-ps4 | FileCheck %s

declare i32 @personality(...)

; Check that after the (implicitly noreturn) unwind call, there is
; another instruction. It was easy to produce 'ud2' so we check for that.
define void @foo1() personality i32 (...)* @personality {
; CHECK-LABEL: foo1:
; CHECK: .cfi_startproc
; CHECK: callq bar
; CHECK: retq
; Check for 'ud2' between noreturn call and function end.
; CHECK: callq _Unwind_Resume
; CHECK-NEXT: ud2
; CHECK-NEXT: .Lfunc_end0:
    invoke void @bar()
        to label %normal
        unwind label %catch
normal:
    ret void
catch:
    %1 = landingpad { i8*, i32 } cleanup
    resume { i8*, i32 } %1
}

declare void @bar() #0

; Similar check after an explicit noreturn call.
define void @foo2() {
; CHECK-LABEL: foo2:
; CHECK: callq bar
; CHECK-NEXT: ud2
; CHECK-NEXT: .Lfunc_end1:
    tail call void @bar()
    unreachable
}

attributes #0 = { noreturn }
