| ; The "target-abi" module flag selects the ABI used for codegen. APCS uses |
| ; 4-byte stack alignment while AAPCS uses 8-byte alignment, which is observable |
| ; in the emitted prologue. The flag drives this with no -target-abi option. |
| ; RUN: split-file %s %t |
| ; RUN: llc -mtriple=armv7-none-eabi -filetype=asm < %t/apcs.ll | FileCheck %s --check-prefix=APCS |
| ; RUN: llc -mtriple=armv7-none-eabi -filetype=asm < %t/aapcs.ll | FileCheck %s --check-prefix=AAPCS |
| |
| ;--- apcs.ll |
| ; APCS: push {lr} |
| ; APCS: sub sp, sp, #4 |
| declare void @use(ptr) |
| define void @f() { |
| %a = alloca i32 |
| call void @use(ptr %a) |
| ret void |
| } |
| !llvm.module.flags = !{!0} |
| !0 = !{i32 1, !"target-abi", !"apcs"} |
| |
| ;--- aapcs.ll |
| ; AAPCS: push {r11, lr} |
| ; AAPCS: sub sp, sp, #8 |
| declare void @use(ptr) |
| define void @f() { |
| %a = alloca i32 |
| call void @use(ptr %a) |
| ret void |
| } |
| !llvm.module.flags = !{!0} |
| !0 = !{i32 1, !"target-abi", !"aapcs"} |