http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51244

Oleg Endo <olegendo at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
  Attachment #30889|0                           |1
        is obsolete|                            |

--- Comment #69 from Oleg Endo <olegendo at gcc dot gnu.org> ---
Created attachment 30953
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=30953&action=edit
RTL pass

(In reply to Oleg Endo from comment #68)
> Created attachment 30889 [details]
> RTL pass
> 
> An updated patch that adds an SH specific RTL pass against current trunk
> (rev 202873), not fully tested.
> 
> CSiBE for '-m2a-single -O2' and '-m4-single -mpretend-cmove -O2' look OK. 
> There are only 2 cases that got actually worse in the set:
> 
> 
> linux-2.4.23-pre3-testplatform/net/ipv4/igmp.s (add_grec):
> 
> before:
> .L459:
>       bt      .L294
>       mov.l   @(24,r13),r1
>       tst     r1,r1
>       bt/s    .L295
>       add     #64,r1
>       mov     r13,r2
>       add     #64,r2
>       mov.l   @(36,r1),r1
>       mov.l   @(32,r2),r2
>       sub     r2,r1
>       mov     #11,r2
>       cmp/hs  r1,r2
> .L296:
>       bf/s    .L294
>       mov     r13,r4
>       mov.l   .L408,r0
>       jsr     @r0
>       mov     #0,r13
> 
> after:
> .L459:
>       bt      .L294
>       mov.l   @(24,r13),r1
>       tst     r1,r1
>       bt      .L295
>       add     #64,r1
>       mov     r13,r2
>       add     #64,r2
>       mov.l   @(36,r1),r1
>       mov.l   @(32,r2),r2
>       sub     r2,r1
>       mov     #11,r2
>       cmp/hs  r1,r2
>       movt    r1
> .L296:
>       tst     r1,r1
>       bt/s    .L294
>       mov     r13,r4
>       mov.l   .L408,r0
>       jsr     @r0
>       mov     #0,r13


That case didn't get worse, it actually improved.  The 'before' code is wrong
code, due to a missed BB that sets the tested 'r1' reg to '1'.

Testing the previous version of the RTL pass (attachment 30889) against trunk
rev 202876 revealed a defect in the function 'trace_reg_uses'.  The attached
updated version fixes this.

Reply via email to