Home | History | Annotate | Download | only in X86
      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