------- Comment #2 from ramana at gcc dot gnu dot org 2010-03-20 10:51 ------- TARGET_MD_ASSEMBLE_CLOBBERS might just be the help we need on this one - I think I have a patch which generates the following code. Does that look any better to you ?
foo: @ args = 0, pretend = 0, frame = 8 @ frame_needed = 0, uses_anonymous_args = 0 @ link register save eliminated. fmsr s13, r0 fmsr s14, r0 fmacs s13, s14, s14 fstmfdd sp!, {d8, d9, d10, d11, d12, d13, d14, d15} movw r3, #:lower16:y sub sp, sp, #8 movt r3, #:upper16:y fsts s13, [sp, #4] fsts s13, [r3, #0] @ 5 "/tmp/fail.c" 1 vmov.i8 q0, #0 @ 6 "/tmp/fail.c" 1 vmov.i8 q1, #0 @ 7 "/tmp/fail.c" 1 vmov.i8 q2, #0 @ 8 "/tmp/fail.c" 1 vmov.i8 q3, #0 @ 9 "/tmp/fail.c" 1 vmov.i8 q4, #0 @ 10 "/tmp/fail.c" 1 vmov.i8 q5, #0 @ 11 "/tmp/fail.c" 1 vmov.i8 q6, #0 @ 12 "/tmp/fail.c" 1 vmov.i8 q7, #0 ldr r0, [sp, #4] @ float add sp, sp, #8 fldmfdd sp!, {d8, d9, d10, d11, d12, d13, d14, d15} bx lr .size foo, .-foo .comm y,4,4 .ident "GCC: (GNU) 4.5.0 20100319 (experimental)" -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43440