1 @ RUN: llvm-mc %s -triple=armv7-unknown-linux-gnueabi -filetype=obj -o - \ 2 @ RUN: | llvm-readobj -s -sd | FileCheck %s 3 4 @ Check for different combination of .setfp, .pad, .save and .vsave. 5 6 .syntax unified 7 8 @------------------------------------------------------------------------------- 9 @ TEST1: Check .pad before .setfp directive. 10 @------------------------------------------------------------------------------- 11 .section .TEST1 12 .globl func1 13 .type func1,%function 14 .align 2 15 .fnstart 16 func1: 17 .pad #12 18 sub sp, sp, #12 19 .setfp fp, sp, #8 20 add fp, sp, #8 21 sub sp, fp, #8 22 add sp, sp, #12 23 bx lr 24 .personality __gxx_personality_v0 25 .handlerdata 26 .fnend 27 28 @ CHECK: Section { 29 @ CHECK: Name: .ARM.extab.TEST1 30 @ CHECK: SectionData ( 31 @ CHECK: 0000: 00000000 B0009B00 |........| 32 @ CHECK: ) 33 @ CHECK: } 34 35 36 37 @------------------------------------------------------------------------------- 38 @ TEST2: Check .pad after .setfp directive. 39 @------------------------------------------------------------------------------- 40 .section .TEST2 41 .globl func2 42 .type func2,%function 43 .align 2 44 .fnstart 45 func2: 46 .setfp fp, sp, #8 47 add fp, sp, #8 48 .pad #12 49 sub sp, sp, #12 50 add sp, sp, #12 51 sub sp, fp, #8 52 bx lr 53 .personality __gxx_personality_v0 54 .handlerdata 55 .fnend 56 57 @ CHECK: Section { 58 @ CHECK: Name: .ARM.extab.TEST2 59 @ CHECK: SectionData ( 60 @ CHECK: 0000: 00000000 B0419B00 |.....A..| 61 @ CHECK: ) 62 @ CHECK: } 63 64 65 66 @------------------------------------------------------------------------------- 67 @ TEST3: Check .setfp, .pad, .setfp directive. 68 @------------------------------------------------------------------------------- 69 .section .TEST3 70 .globl func3 71 .type func3,%function 72 .align 2 73 .fnstart 74 func3: 75 @ prologue: 76 .setfp fp, sp, #4 77 add fp, sp, #4 78 .pad #8 79 sub sp, sp, #8 80 .setfp fp, sp, #4 81 add fp, sp, #4 82 83 @ epilogue: 84 add sp, fp, #4 85 bx lr 86 .personality __gxx_personality_v0 87 .handlerdata 88 .fnend 89 90 @ CHECK: Section { 91 @ CHECK: Name: .ARM.extab.TEST3 92 @ CHECK: SectionData ( 93 @ CHECK: 0000: 00000000 B0009B00 |........| 94 @ CHECK: ) 95 @ CHECK: } 96 97 98 99 @------------------------------------------------------------------------------- 100 @ TEST4: Check ".setfp fp, sp" and ".setfp fp, fp" directive. 101 @------------------------------------------------------------------------------- 102 .section .TEST4 103 .globl func4 104 .type func4,%function 105 .align 2 106 .fnstart 107 func4: 108 @ prologue: 109 .setfp fp, sp, #8 110 add fp, sp, #8 111 .setfp fp, fp, #8 112 add fp, fp, #8 113 114 @ epilogue: 115 sub sp, fp, #16 116 bx lr 117 .personality __gxx_personality_v0 118 .handlerdata 119 .fnend 120 121 @ CHECK: Section { 122 @ CHECK: Name: .ARM.extab.TEST4 123 @ CHECK: SectionData ( 124 @ CHECK: 0000: 00000000 B0439B00 |.....C..| 125 @ CHECK: ) 126 @ CHECK: } 127 128 129 130 @------------------------------------------------------------------------------- 131 @ TEST5: Check .setfp, .save, .setfp directive. 132 @------------------------------------------------------------------------------- 133 .section .TEST5 134 .globl func5 135 .type func5,%function 136 .align 2 137 .fnstart 138 func5: 139 @ prologue: 140 .setfp fp, sp, #16 141 add fp, sp, #16 142 .save {r4, r5, r6, r7, r8} 143 push {r4, r5, r6, r7, r8} 144 .pad #8 145 add sp, sp, #8 146 .pad #8 147 sub sp, sp, #8 148 .save {r9, r10} 149 push {r9, r10} 150 .setfp fp, sp, #24 151 add fp, sp, #24 152 153 @ epilogue: 154 sub sp, fp, #24 155 pop {r9, r10} 156 add sp, sp, #16 157 pop {r4, r5, r6, r7, r8} 158 bx lr 159 .personality __gxx_personality_v0 160 .handlerdata 161 .fnend 162 163 @ CHECK: Section { 164 @ CHECK: Name: .ARM.extab.TEST5 165 @ CHECK: SectionData ( 166 @ CHECK: 0000: 00000000 80459B01 B0A40360 |.....E.....`| 167 @ CHECK: ) 168 @ CHECK: } 169