------- Comment #8 from rask at gcc dot gnu dot org 2007-11-22 13:54 ------- Created an attachment (id=14607) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=14607&action=view) patch v2 for GC 4.2.2
Weird. I don't understand why GCC 4.2.2 is having problems with that. This patch tries to fix fr30_move_double(), which has been broken ever since it was added seven and a half years ago. The instruction sequence now looks like this: ldi:32 a, r3 ; 13 movsi_internal/4 [length = 6] ldi:8 #248, r1 ; 52 movsi_internal/1 [length = 2] extsb r1 ; 53 extendqisi2 [length = 2] addn fp, r1 ; 16 addsi_regs [length = 2] mov r1, r2 ; 74 movsi_internal/5 [length = 2] ld @r1, r1 ; 75 movsi_internal/7 [length = 2] addn 4, r2 ; 76 addsi_small_int/1 [length = 2] ld @r2, r2 ; 77 movsi_internal/7 [length = 2] st r1, @r3 ; 78 movsi_internal/6 [length = 2] mov r3, r0 ; 79 movsi_internal/5 [length = 2] addn 4, r0 ; 80 addsi_small_int/1 [length = 2] st r2, @r0 ; 81 movsi_internal/6 [length = 2] -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34174