1; RUN: llc < %s -mtriple=x86_64-scei-ps4 | FileCheck %s
2
3declare i32 @personality(...)
4
5; Check that after the (implicitly noreturn) unwind call, there is
6; another instruction. It was easy to produce 'ud2' so we check for that.
7define void @foo1() personality i32 (...)* @personality {
8; CHECK-LABEL: foo1:
9; CHECK: .cfi_startproc
10; CHECK: callq bar
11; CHECK: retq
12; Check for 'ud2' between noreturn call and function end.
13; CHECK: callq _Unwind_Resume
14; CHECK-NEXT: ud2
15; CHECK-NEXT: .Lfunc_end0:
16    invoke void @bar()
17        to label %normal
18        unwind label %catch
19normal:
20    ret void
21catch:
22    %1 = landingpad { i8*, i32 } cleanup
23    resume { i8*, i32 } %1
24}
25
26declare void @bar() #0
27
28; Similar check after an explicit noreturn call.
29define void @foo2() {
30; CHECK-LABEL: foo2:
31; CHECK: callq bar
32; CHECK-NEXT: ud2
33; CHECK-NEXT: .Lfunc_end1:
34    tail call void @bar()
35    unreachable
36}
37
38attributes #0 = { noreturn }
39