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