Patch: enabling 1st insn scheduling for sh4.

Vladimir Makarov vmakarov@redhat.com
Wed Mar 3 23:40:00 GMT 2004


DJ Delorie wrote:

>Sorry for the delay.  Here's 22.life, from the call to the insn after
>which gets mis-scheduled.  In 23.sched the sequence is 1202, 1207,
>1203, 1204.
>
>
>(call_insn:HI 1202 1201 1203 126 ../../../../../../devo/newlib/libc/stdio/vfprintf.c:1257 (parallel [
>            (set (reg:SI 0 r0)
>                (call (mem:SI (reg/f:SI 553) [0 S4 A32])
>                    (const_int 8 [0x8])))
>            (use (reg:PSI 151 ))
>            (clobber (reg:SI 146 pr))
>        ]) 170 {call_valuei} (insn_list 1196 (insn_list 1197 (insn_list 1198 (insn_list 1199 (insn_list 1200 (insn_list 1201 (nil)))))))
>    (expr_list:REG_DEAD (reg:SI 4 r4 [ data ])
>        (expr_list:REG_DEAD (reg:SF 68 fr4 [ value ])
>            (expr_list:REG_DEAD (reg:SI 5 r5 [ mode ])
>                (expr_list:REG_DEAD (reg:SI 6 r6 [ ndigits ])
>                    (expr_list:REG_DEAD (reg:SI 7 r7 [ decpt ])
>                        (expr_list:REG_DEAD (reg:PSI 151 )
>                            (expr_list:REG_DEAD (reg/f:SI 553)
>                                (expr_list:REG_UNUSED (reg:SI 146 pr)
>                                    (nil)))))))))
>    (expr_list (use (reg:SI 7 r7 [ decpt ]))
>        (expr_list (use (reg:SI 6 r6 [ ndigits ]))
>            (expr_list (use (reg:SI 5 r5 [ mode ]))
>                (expr_list (use (reg:SF 68 fr4 [ value ]))
>                    (expr_list (use (reg:SI 4 r4 [ data ]))
>                        (nil)))))))
>
>(insn:HI 1203 1202 1204 126 ../../../../../../devo/newlib/libc/stdio/vfprintf.c:1257 (set (reg/f:SI 15 r15)
>        (plus:SI (reg/f:SI 15 r15)
>            (const_int 8 [0x8]))) 23 {*addsi3_compact} (nil)
>    (nil))
>
>(insn:HI 1204 1203 1206 126 ../../../../../../devo/newlib/libc/stdio/vfprintf.c:1257 (set (reg/v/f:SI 538 [ digits ])
>        (reg:SI 0 r0)) 123 {movsi_ie} (insn_list 1202 (nil))
>    (expr_list:REG_DEAD (reg:SI 0 r0)
>        (nil)))
>
>(note:HI 1206 1204 1207 126 ("../../../../../../devo/newlib/libc/stdio/vfprintf.c") 1269)
>
>(insn:HI 1207 1206 1208 126 ../../../../../../devo/newlib/libc/stdio/vfprintf.c:1269 (set (reg:SI 147 t)
>        (eq:SI (reg/v:SI 163 [ ch ])
>            (const_int 103 [0x67]))) 1 {cmpeqsi_t} (nil)
>    (nil))
>  
>
Thanks, DJ.  I tought about a solution.  I think that insn changing 
stack pointer is more preferable than one using it (because in the 
second case there is bigger probability that insn which is not really a 
part of call sequence will be a part of the schedule group).  So the 
patch should insert the insn changing the stack pointer into the 
schedule group.

I could write the patch and submit it on Friday.  In this case somebody 
should review it.  If you prefer to write the patch yourself,  I review 
and approve it as soon as I get it.  What do you prefer?

Vlad




More information about the Gcc-patches mailing list