------- Comment #2 from gunnar at greyhound-data dot com 2008-05-28 16:28
-------
(In reply to comment #1)
> It would have been nice to check at least gcc 4.3 (or better current trunk).
>
I have verified this with the most current GCC source trunk.
GCC 4.4 code snapshot 2008-05-23
The problem is still persistant.
GCC sets up his work registers inside the work loop.
write_32x4:
link.w %fp,#0
move.l 16(%fp),%d0
move.l 8(%fp),%a0
lsr.l #4,%d0
jra .L50
.L51:
moveq #1,%d1
move.l %d1,(%a0)
move.l %d1,4(%a0)
move.l %d1,8(%a0)
move.l %d1,12(%a0)
lea (16,%a0),%a0
subq.l #1,%d0
.L50:
tst.l %d0
jne .L51
unlk %fp
rts
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36136