blob: e5eb366a6ea80ecc7dfa5829f433083f6bd0ee9c [file] [log] [blame]
; RUN: llc -march=hexagon < %s | FileCheck %s
;
; Check that we are emitting a regular call instead of a tail call for a
; noreturn call in a function with a non-empty frame (to save instructions).
;
; CHECK: call f0
; CHECK-NOT: deallocframe
target triple = "hexagon"
; Function Attrs: noreturn
declare void @f0(i32, i32*) #0
declare void @f1(i32*)
define i64 @f2(i32 %a0, i32 %a1) {
b0:
%v0 = alloca i32
call void @f1(i32* %v0)
%v1 = icmp ugt i32 %a0, 3
br i1 %v1, label %b1, label %b2
b1: ; preds = %b0
tail call void @f0(i32 %a0, i32* %v0) #0
unreachable
b2: ; preds = %b0
%v2 = mul i32 %a1, 7
%v3 = zext i32 %v2 to i64
ret i64 %v3
}
attributes #0 = { noreturn }