Mercurial > hg > Members > tobaru > cbc > CbC_llvm
view test/CodeGen/ARM/tail-call.ll @ 100:7d135dc70f03
LLVM 3.9
author | Miyagi Mitsuki <e135756@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 26 Jan 2016 22:53:40 +0900 |
parents | 60c9769439b8 |
children | 1172e4bd9c6f |
line wrap: on
line source
; RUN: llc -mtriple armv7 -target-abi apcs -O0 -o - < %s \ ; RUN: | FileCheck %s -check-prefix CHECK-TAIL ; RUN: llc -mtriple armv7 -target-abi apcs -O0 -disable-tail-calls -o - < %s \ ; RUN: | FileCheck %s -check-prefix CHECK-NO-TAIL declare i32 @callee(i32 %i) declare extern_weak fastcc void @callee_weak() define i32 @caller(i32 %i) { entry: %r = tail call i32 @callee(i32 %i) ret i32 %r } ; CHECK-TAIL-LABEL: caller ; CHECK-TAIL: b callee ; CHECK-NO-TAIL-LABEL: caller ; CHECK-NO-TAIL: push {lr} ; CHECK-NO-TAIL: bl callee ; CHECK-NO-TAIL: pop {lr} ; CHECK-NO-TAIL: bx lr ; Weakly-referenced extern functions cannot be tail-called, as AAELF does ; not define the behaviour of branch instructions to undefined weak symbols. define fastcc void @caller_weak() { ; CHECK-LABEL: caller_weak: ; CHECK: bl callee_weak tail call void @callee_weak() ret void }