http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60039
Oleg Endo <olegendo at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |kkojima at gcc dot gnu.org --- Comment #5 from Oleg Endo <olegendo at gcc dot gnu.org> --- On 4.9 r208592 and my newlib cross setup, I've tried compiling the pre-processed source from attachment 32020 with '-std=gnu99 -O2 -m3 -ml -fpic' and I get dt r1 bt.s .L44 mov r7,r2 .L45: mov r2,r3 add r13,r3 // r3 = op + sz mov.l r3,@r2 // op->ov_next = ... dt r1 // r1 = nblks - 1 bf.s .L45 mov r3,r2 // op = op + sz mov r7,r2 .L44: tst r2,r2 bf .L39 so the code is basically the same, just the mem store is placed before the branch instead of the delay slot. As far as I can see, that's what is written in the C code. Am I missing something?