------- Comment #7 from steven at gcc dot gnu dot org 2010-01-02 00:49 ------- With "GCC: (GNU) 4.5.0 20090808 (experimental) [trunk revision 150579]" I get:
.arch armv5te .fpu softvfp .eabi_attribute 20, 1 .eabi_attribute 21, 1 .eabi_attribute 23, 3 .eabi_attribute 24, 1 .eabi_attribute 25, 1 .eabi_attribute 26, 1 .eabi_attribute 30, 4 .eabi_attribute 18, 4 .code 16 .file "t.c" .text .align 1 .global test .code 16 .thumb_func .type test, %function test: push {r3, r4, r5, r6, r7, lr} ldr r3, .L7 ldr r5, .L7+4 .LPIC0: add r3, pc add r5, r3, r5 mov r7, r5 mov r4, r0 ldr r6, [r0] add r7, r7, #8 b .L2 .L4: ldr r1, [r4, #4] ldrb r3, [r1] cmp r3, #0 bne .L5 mov r3, r5 b .L3 .L5: add r3, r5, #4 .L3: add r1, r1, r6 mov r0, r7 mov r2, r6 bl func ldr r3, [r4] sub r3, r3, #1 str r3, [r4] .L2: ldr r3, [r4] cmp r3, #0 bge .L4 @ sp needed for prologue pop {r3, r4, r5, r6, r7, pc} .L8: .align 2 .L7: .word _GLOBAL_OFFSET_TABLE_-(.LPIC0+4) .word .LANCHOR0(GOTOFF) .size test, .-test .section .rodata .set .LANCHOR0,. + 0 .LC0: .ascii "xyz\000" .LC1: .ascii "pqr\000" .LC2: .ascii "abcde\000" .ident "GCC: (GNU) 4.5.0 20090808 (experimental) [trunk revision 150579]" I have no idea whether that is better or worse. Alexander, could you give this a look please? -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39839