Guard fabs to bfc convert with V6T2 flag
[oota-llvm.git] / test / CodeGen / ARM / tail-call.ll
1 ; RUN: llc -mtriple armv7 -target-abi apcs -O0 -o - < %s \
2 ; RUN:   | FileCheck %s -check-prefix CHECK-TAIL
3 ; RUN: llc -mtriple armv7 -target-abi apcs -O0 -disable-tail-calls -o - < %s \
4 ; RUN:   | FileCheck %s -check-prefix CHECK-NO-TAIL
5
6 declare i32 @callee(i32 %i)
7 declare extern_weak fastcc void @callee_weak()
8
9 define i32 @caller(i32 %i) {
10 entry:
11   %r = tail call i32 @callee(i32 %i)
12   ret i32 %r
13 }
14
15 ; CHECK-TAIL-LABEL: caller
16 ; CHECK-TAIL: b callee
17
18 ; CHECK-NO-TAIL-LABEL: caller
19 ; CHECK-NO-TAIL: push {lr}
20 ; CHECK-NO-TAIL: bl callee
21 ; CHECK-NO-TAIL: pop {lr}
22 ; CHECK-NO-TAIL: bx lr
23
24
25 ; Weakly-referenced extern functions cannot be tail-called, as AAELF does
26 ; not define the behaviour of branch instructions to undefined weak symbols.
27 define fastcc void @caller_weak() {
28 ; CHECK-LABEL: caller_weak:
29 ; CHECK: bl callee_weak
30   tail call void @callee_weak()
31   ret void
32 }