[Bug middle-end/29256] [4.2 regression] loop performance regression

pinskia at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Thu Sep 28 14:35:00 GMT 2006



------- Comment #13 from pinskia at gcc dot gnu dot org  2006-09-28 14:34 -------
(In reply to comment #12)
> (In reply to comment #11)
> > (In reply to comment #9)
> > > Oh, didn't I fix this?  See PR26726.
> > This is unrelated to that as the trees produced is defined but just looks weird
> > and really the one IV selection is messed up.  It should have chosen two IVs
> > for this loop instead of just one.
> > Actually unrolling is not need to produced the bad code:
> > .L2:
> >         lwz 0,0(9)
> >         stwx 0,11,9
> >         addi 9,9,4
> >         bdnz .L2
> > I bet a beer that loop.c actually fixed this crap up before.
> 
> I am bad at reading ppc assembler; could you please explain what exactly is
> wrong with the code you present?

One, there are two adds still there (just one is implicated)
so why not do the loop as:
 .L2:
         lwz r0,0(r9)
         stw r0,0(r11)
         addi r9,r9,4
         addi r11,r11,4
         bdnz .L2
Or:
 .L2:
         lwxz r0,r9,r12
         stwx r0,r11,r12
         addi r12,r12,4
         bdnz .L2


-- 


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



More information about the Gcc-bugs mailing list