[RFC, 4.9 patch] Reload alternative weighting vs. wrong class regs

Steven Bosscher stevenb.gcc@gmail.com
Thu Feb 7 22:02:00 GMT 2013


On Thu, Feb 7, 2013 at 4:09 AM, Alan Modra wrote:
> After fixing PR54009 (again), I thought I'd take a look at why reload
> is generating the following correct but poor code
>
>  stw 10,8(1)
>  stw 11 12(1)
>  ...
>  lfd 0,8(1)
>  stfd 0,x+32764@l(9)
>
> rather than
>
>  addi 9,x+32764@l(9)
>  ...
>  stw 10,0(9)
>  stw 11 4(9)

FWIW, left trunk vs. LRA right (with PR54009 patch on rs6000.c):

r:                              r:
        stwu 1,-160(1)                  stwu 1,-160(1)
        lis 9,x+32764@ha                lis 9,x+32764@ha
        la 9,x+32764@l(9)     |         la 8,x+32764@l(9)
        lwz 10,0(9)           <
        lwz 11,4(9)           <
        lis 9,y@ha                      lis 9,y@ha
                              >         lwz 10,0(8)
                              >         lwz 11,4(8)
        stfd ...
        ...
        lfd ...
        ...
        stw 10,y@l(9)                   stw 10,y@l(9)
        stw 11,y+4@l(9)                 stw 11,y+4@l(9)
        addi 1,1,160                    addi 1,1,160
        blr                             blr

w:                              w:
        stwu 1,-160(1)                  stwu 1,-160(1)
        lis 9,y@ha                      lis 9,y@ha
        la 10,y@l(9)                    la 10,y@l(9)
                              >         lis 9,x+32764@ha
        lwz 11,4(10)                    lwz 11,4(10)
        lwz 10,0(10)                    lwz 10,0(10)
        lis 9,x+32764@ha      |         la 8,x+32764@l(9)
        stfd ...
        ...
        lfd ...
        ...
        lfd 31,152(1)                   lfd 31,152(1)
        lfd 0,8(1)            |         stw 10,0(8)
        stfd 0,x+32764@l(9)   |         stw 11,4(8)
        addi 1,1,160                    addi 1,1,160
        blr                             blr

I don't speak POWER but perhaps you can make sense of it :-)

Ciao!
Steven



More information about the Gcc-patches mailing list