[llvm-readelf/llvm-objdump] - Improve/refactor the implementation of SHT_LLVM_ADDRSIG...
[llvm-complete.git] / test / CodeGen / Hexagon / noreturn-noepilog.ll
blob243c0e1dcc3ddfb8372a4ee7ed3d8fa9167fdaee
1 ; RUN: llc -march=hexagon < %s | FileCheck %s
3 ; XFAIL: *
4 ; This test is failing after post-ra machine sinking.
6 ; Check that no epilogue is inserted after a noreturn call.
8 ; CHECK-LABEL: f1:
9 ; CHECK: allocframe(r29,#0):raw
10 ; CHECK-NOT: deallocframe
12 target triple = "hexagon"
14 %s.0 = type <{ i16, i8, i8, i8 }>
16 @g0 = internal constant %s.0 <{ i16 1, i8 2, i8 3, i8 4 }>, align 4
18 ; Function Attrs: noreturn
19 declare void @f0(%s.0*, i32) #0
21 define i64 @f1(i32 %a0, i32 %a1) {
22 b0:
23   %v0 = icmp ugt i32 %a0, 3
24   br i1 %v0, label %b1, label %b2
26 b1:                                               ; preds = %b0
27   call void @f0(%s.0* nonnull @g0, i32 %a0) #0
28   unreachable
30 b2:                                               ; preds = %b0
31   %v1 = mul i32 %a1, 7
32   %v2 = zext i32 %v1 to i64
33   ret i64 %v2
36 attributes #0 = { noreturn }