xref: /llvm-project/llvm/test/CodeGen/ARM/ipra-no-csr.ll (revision 4b7239ebaca72f2cd92682019fbe0bef5b46cd4e)
1; RUN: llc -mtriple armv7a--none-eabi < %s              | FileCheck %s
2; RUN: llc -mtriple armv7a--none-eabi < %s -enable-ipra | FileCheck %s
3
4; Other targets disable callee-saved registers for internal functions when
5; using IPRA, but that isn't profitable for ARM because the PUSH/POP
6; instructions can more efficiently save registers than using individual
7; LDR/STRs in the caller.
8
9define internal void @callee() norecurse {
10; CHECK-LABEL: callee:
11entry:
12; CHECK: push {r4, lr}
13; CHECK: pop {r4, pc}
14  tail call void asm sideeffect "", "~{r4}"()
15  ret void
16}
17
18define void @caller() {
19entry:
20  call void @callee()
21  ret void
22}
23