http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47855
Steven Bosscher <steven at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Target|arm-linux-androideabi |arm-* Status|UNCONFIRMED |NEW Last reconfirmed| |2011.03.26 17:15:33 Ever Confirmed|0 |1 --- Comment #3 from Steven Bosscher <steven at gcc dot gnu.org> 2011-03-26 17:15:33 UTC --- Confirmed. Many of the lengths are wrong, even for simple instructions. $ arm-eabi-gcc -c -Os -march=armv7-a -mthumb -dAp -Wa,-ahlms=t.lst t.c $ cat t.lst ARM GAS /tmp/ccLnp6gX.s page 1 1 .syntax unified 2 .arch armv7-a 3 .eabi_attribute 27, 3 4 .fpu neon 5 .eabi_attribute 20, 1 6 .eabi_attribute 21, 1 7 .eabi_attribute 23, 3 8 .eabi_attribute 24, 1 9 .eabi_attribute 25, 1 10 .eabi_attribute 26, 1 11 .eabi_attribute 30, 4 12 .eabi_attribute 18, 4 13 .file "t.c" 14 .text 15 .align 1 16 .global pnm_gethdr 17 .thumb 18 .thumb_func 19 .type pnm_gethdr, %function 20 pnm_gethdr: 21 @ args = 0, pretend = 0, frame = 8 22 @ frame_needed = 0, uses_anonymous_args = 0 23 @ basic block 2 24 0000 37B5 push {r0, r1, r2, r4, r5, lr} @ 173 *push_multi [length = 4] 25 0002 0546 mov r5, r0 @ 2 *thumb2_movsi_vfp/1 [length = 4] 26 0004 0C46 mov r4, r1 @ 3 *thumb2_movsi_vfp/1 [length = 4] 27 0006 FFF7FEFF bl foo2 @ 15 *call_value_symbol [length = 4] 28 000a 0028 cmp r0, #0 @ 18 *thumb2_cbnz/1 [length = 8] 29 000c 33D1 bne .L13 30 @ basic block 3 31 000e 211D adds r1, r4, #4 @ 199 *thumb2_addsi_short/1 [length = 2] 32 0010 2846 mov r0, r5 @ 21 *thumb2_movsi_vfp/1 [length = 4] 33 0012 FFF7FEFF bl foo3 @ 23 *call_value_symbol [length = 4] 34 0016 0028 cmp r0, #0 @ 26 *thumb2_cbnz/1 [length = 8] 35 0018 2DD1 bne .L13 36 @ basic block 4 37 001a 04F10801 add r1, r4, #8 @ 28 *arm_addsi3/1 [length = 4] 38 001e 2846 mov r0, r5 @ 29 *thumb2_movsi_vfp/1 [length = 4] 39 0020 FFF7FEFF bl foo1 @ 31 *call_value_symbol [length = 4] 40 0024 38BB cbnz r0, .L13 @ 34 *thumb2_cbnz/1 [length = 2] 41 @ basic block 5 42 0026 2068 ldr r0, [r4, #0] @ 36 *thumb2_movsi_vfp/5 [length = 4] 43 0028 FFF7FEFF bl pnm_type @ 37 *call_value_symbol [length = 4] 44 002c 0228 cmp r0, #2 @ 39 *arm_cmpsi_insn/1 [length = 4] 45 002e 05D0 beq .L3 @ 40 *arm_cond_branch [length = 4] 46 @ basic block 6 47 0030 2846 mov r0, r5 @ 43 *thumb2_movsi_vfp/1 [length = 4] 48 0032 01A9 add r1, sp, #4 @ 44 *arm_addsi3/1 [length = 4] 49 0034 FFF7FEFF bl pnm_getsintstr @ 45 *call_value_symbol [length = 4] 50 0038 10B1 cbz r0, .L4 @ 48 *thumb2_cbz/1 [length = 2] 51 @ basic block 7 52 003a 1CE0 b .L13 @ 201 *arm_jump [length = 4] 53 .L3: 54 @ basic block 8 55 003c 0123 movs r3, #1 @ 198 *thumb2_movsi_shortim [length = 2] 56 003e 0193 str r3, [sp, #4] @ 55 *thumb2_movsi_vfp/7 [length = 4] 57 .L4: ARM GAS /tmp/ccLnp6gX.s page 2 58 @ basic block 9 59 0040 019B ldr r3, [sp, #4] @ 58 *thumb2_movsi_vfp/5 [length = 4] 60 0042 002B cmp r3, #0 @ 59 *arm_cmpsi_insn/1 [length = 4] 61 0044 03DA bge .L5 @ 60 *arm_cond_branch [length = 4] 62 @ basic block 10 63 0046 5B42 negs r3, r3 @ 196 *thumb2_negsi2_short [length = 2] 64 0048 2361 str r3, [r4, #16] @ 63 *thumb2_movsi_vfp/7 [length = 4] 65 004a 0123 movs r3, #1 @ 197 *thumb2_movsi_shortim [length = 2] 66 004c 01E0 b .L14 @ 203 *arm_jump [length = 4] 67 .L5: 68 @ basic block 11 69 004e 2361 str r3, [r4, #16] @ 71 *thumb2_movsi_vfp/7 [length = 4] 70 0050 0023 movs r3, #0 @ 195 *thumb2_movsi_shortim [length = 2] 71 .L14: 72 @ basic block 12 73 0052 2375 strb r3, [r4, #20] @ 74 *arm_movqi_insn/4 [length = 4] 74 0054 2068 ldr r0, [r4, #0] @ 77 *thumb2_movsi_vfp/5 [length = 4] 75 0056 FFF7FEFF bl pnm_type @ 78 *call_value_symbol [length = 4] 76 005a 0028 cmp r0, #0 @ 80 *arm_cmpsi_insn/1 [length = 4] 77 005c 06D0 beq .L8 @ 81 *arm_cond_branch [length = 4] 78 @ basic block 13 79 005e 08DB blt .L7 @ 83 *arm_cond_branch [length = 4] 80 @ basic block 14 81 0060 0228 cmp r0, #2 @ 84 *arm_cmpsi_insn/1 [length = 4] 82 0062 06DC bgt .L7 @ 85 *arm_cond_branch [length = 4] 83 @ basic block 15 84 0064 0123 movs r3, #1 @ 193 *thumb2_movsi_shortim [length = 2] 85 0066 0020 movs r0, #0 @ 194 *thumb2_movsi_shortim [length = 2] 86 0068 E360 str r3, [r4, #12] @ 93 *thumb2_movsi_vfp/7 [length = 4] 87 006a 06E0 b .L2 @ 205 *arm_jump [length = 4] 88 .L8: 89 @ basic block 16 90 006c 0323 movs r3, #3 @ 192 *thumb2_movsi_shortim [length = 2] 91 006e E360 str r3, [r4, #12] @ 99 *thumb2_movsi_vfp/7 [length = 4] 92 0070 03E0 b .L2 @ 207 *arm_jump [length = 4] 93 .L7: 94 @ basic block 17 95 0072 FFF7FEFF bl abort @ 104 *call_symbol [length = 4] 96 .L13: 97 @ basic block 18 98 0076 4FF0FF30 mov r0, #-1 @ 6 *thumb2_movsi_vfp/2 [length = 4] 99 .L2: 100 @ basic block 19 101 007a 3EBD pop {r1, r2, r3, r4, r5, pc} 102 .size pnm_gethdr, .-pnm_gethdr 103 .ident "GCC: (GNU) 4.7.0 20110326 (experimental) [trunk revision 171556]" ARM GAS /tmp/ccLnp6gX.s page 3 DEFINED SYMBOLS *ABS*:0000000000000000 t.c /tmp/ccLnp6gX.s:20 .text:0000000000000000 pnm_gethdr /tmp/ccLnp6gX.s:24 .text:0000000000000000 $t UNDEFINED SYMBOLS foo2 foo3 foo1 pnm_type pnm_getsintstr abort