@ RUN: llvm-mc %s -triple=armv7-unknown-linux-gnueabi -filetype=obj -o - \ @ RUN: | llvm-readobj -s -sd | FileCheck %s @ Check for different combination of .setfp, .pad, .save and .vsave. .syntax unified @------------------------------------------------------------------------------- @ TEST1: Check .pad before .setfp directive. @------------------------------------------------------------------------------- .section .TEST1 .globl func1 .type func1,%function .align 2 .fnstart func1: .pad #12 sub sp, sp, #12 .setfp fp, sp, #8 add fp, sp, #8 sub sp, fp, #8 add sp, sp, #12 bx lr .personality __gxx_personality_v0 .handlerdata .fnend @ CHECK: Section { @ CHECK: Name: .ARM.extab.TEST1 @ CHECK: SectionData ( @ CHECK: 0000: 00000000 B0009B00 |........| @ CHECK: ) @ CHECK: } @------------------------------------------------------------------------------- @ TEST2: Check .pad after .setfp directive. @------------------------------------------------------------------------------- .section .TEST2 .globl func2 .type func2,%function .align 2 .fnstart func2: .setfp fp, sp, #8 add fp, sp, #8 .pad #12 sub sp, sp, #12 add sp, sp, #12 sub sp, fp, #8 bx lr .personality __gxx_personality_v0 .handlerdata .fnend @ CHECK: Section { @ CHECK: Name: .ARM.extab.TEST2 @ CHECK: SectionData ( @ CHECK: 0000: 00000000 B0419B00 |.....A..| @ CHECK: ) @ CHECK: } @------------------------------------------------------------------------------- @ TEST3: Check .setfp, .pad, .setfp directive. @------------------------------------------------------------------------------- .section .TEST3 .globl func3 .type func3,%function .align 2 .fnstart func3: @ prologue: .setfp fp, sp, #4 add fp, sp, #4 .pad #8 sub sp, sp, #8 .setfp fp, sp, #4 add fp, sp, #4 @ epilogue: add sp, fp, #4 bx lr .personality __gxx_personality_v0 .handlerdata .fnend @ CHECK: Section { @ CHECK: Name: .ARM.extab.TEST3 @ CHECK: SectionData ( @ CHECK: 0000: 00000000 B0009B00 |........| @ CHECK: ) @ CHECK: } @------------------------------------------------------------------------------- @ TEST4: Check ".setfp fp, sp" and ".setfp fp, fp" directive. @------------------------------------------------------------------------------- .section .TEST4 .globl func4 .type func4,%function .align 2 .fnstart func4: @ prologue: .setfp fp, sp, #8 add fp, sp, #8 .setfp fp, fp, #8 add fp, fp, #8 @ epilogue: sub sp, fp, #16 bx lr .personality __gxx_personality_v0 .handlerdata .fnend @ CHECK: Section { @ CHECK: Name: .ARM.extab.TEST4 @ CHECK: SectionData ( @ CHECK: 0000: 00000000 B0439B00 |.....C..| @ CHECK: ) @ CHECK: } @------------------------------------------------------------------------------- @ TEST5: Check .setfp, .save, .setfp directive. @------------------------------------------------------------------------------- .section .TEST5 .globl func5 .type func5,%function .align 2 .fnstart func5: @ prologue: .setfp fp, sp, #16 add fp, sp, #16 .save {r4, r5, r6, r7, r8} push {r4, r5, r6, r7, r8} .pad #8 add sp, sp, #8 .pad #8 sub sp, sp, #8 .save {r9, r10} push {r9, r10} .setfp fp, sp, #24 add fp, sp, #24 @ epilogue: sub sp, fp, #24 pop {r9, r10} add sp, sp, #16 pop {r4, r5, r6, r7, r8} bx lr .personality __gxx_personality_v0 .handlerdata .fnend @ CHECK: Section { @ CHECK: Name: .ARM.extab.TEST5 @ CHECK: SectionData ( @ CHECK: 0000: 00000000 80459B01 B0A40360 |.....E.....`| @ CHECK: ) @ CHECK: }