1 ; RUN: llc < %s -mtriple=x86_64-scei-ps4 | FileCheck %s 2 3 declare 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. 7 define 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 19 normal: 20 ret void 21 catch: 22 %1 = landingpad { i8*, i32 } cleanup 23 resume { i8*, i32 } %1 24 } 25 26 declare void @bar() #0 27 28 ; Similar check after an explicit noreturn call. 29 define 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 38 attributes #0 = { noreturn } 39