llvm/test/CodeGen/Thumb/pop.ll
Quentin Colombet b2dab382ce [ARM] Refactor the prologue/epilogue emission to be more robust.
This is the first step toward supporting shrink-wrapping for this target.

The changes could be summarized by these items:
- Expand the tail-call return as part of the expand pseudo pass.
- Get rid of the assumptions that the epilogue is the exit block:
  * Do not assume which registers are free in the epilogue. (This indirectly
    improve the lowering of the code for the segmented stacks, see the test
    cases.)
  * Take into account that the basic block can be empty.

Related to <rdar://problem/20821730>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242714 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-20 21:42:14 +00:00

16 lines
365 B
LLVM

; RUN: llc < %s -mtriple=thumb-apple-darwin | FileCheck %s
; rdar://7268481
define void @t(i8* %a, ...) nounwind {
; CHECK-LABEL: t:
; CHECK: pop {[[POP_REG:r[0-3]]]}
; CHECK-NEXT: add sp, #12
; CHECK-NEXT: bx [[POP_REG]]
entry:
%a.addr = alloca i8, i32 4
call void @llvm.va_start(i8* %a.addr)
ret void
}
declare void @llvm.va_start(i8*) nounwind