Doloop transform resulting in extra code
Andrew Pinski
pinskia@physics.uc.edu
Tue May 11 20:13:00 GMT 2004
On May 11, 2004, at 16:05, Pat Haugen wrote:
Zdenek,
Has anyone pointed out to you that the doloop transform in mainline
results
in extra code when compared to the 3.4 branch? Actually, that's not
true
for the -m64 case since 3.4 didn't generate a doloop for -m64 but I've
included it anyway since it suffers from the same problem.
Following is example source (trimmed down from bzip2.c) and generated
code
for PowerPC target. The extra tests (one for -m32, two for -m64) will
never be true since the first test guarantees the loop count is > 0.
I think the reason why nobody pointed it out is because it works
correctly
already on the tree-ssa (which should be merged in tomorrow into the
mainline)
so this will be magically fixed.
Thanks,
Andrew Pinski
someone who does look at code gen on PPC
For an example with your code on the tree-ssa on powerpc-apple-darwin:
_hbAssignCodes:
mr. r0,r5
mtctr r0
blelr- cr0
li r2,0
L4:
slwi r0,r2,2
addi r2,r2,1
stwx r4,r3,r0
bdnz L4
blr
and on the mainline:
_hbAssignCodes:
li r2,0
cmpw cr7,r2,r5
bgelr- cr7
cmpwi cr7,r5,0
mtctr r5
ble- cr7,L13
L8:
slwi r0,r2,2
addi r2,r2,1
stwx r4,r3,r0
bdnz L8
blr
L13:
li r0,1
mtctr r0
b L8
More information about the Gcc
mailing list