------- Comment #47 from pthaugen at gcc dot gnu dot org 2008-05-01 19:26
-------
Created an attachment (id=15557)
--> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=15557&action=view)
Testcase
Found some more cases, which are contributing to the missing 25%. Looks like
similar code, but obviously something different about it since it's not getting
caught with the latest patch. Compiled with -O2 -m64.
>From first nested loop in FLUXI():
DO I = I1,I2
QS(I) = UAV(I,J,K) * XAREA
END DO
Base:
.L185:
ld 10,168(1) # pretmp.1065,
ld 4,424(1) # D.1331,
sldi 11,9,3 # tmp667, i,
mulld 0,10,9 # tmp669,, i
add 0,0,25 # tmp670, tmp669, ivtmp.1093
addi 9,9,1 # tmp675, i,
sldi 0,0,3 # tmp671, tmp670,
lfdx 0,4,0 #, tmp673
extsw 9,9 # i.1073, tmp675
fmul 0,0,28 # tmp674, tmp673, xarea.63
stfdx 0,26,11 #, tmp674
bdnz .L185 #
With --param max-aliased-vops=10000:
.L185:
lfd 0,0(11) #* ivtmp.886, tmp667
add 11,11,18 # ivtmp.886, ivtmp.886, D.3744
fmul 0,0,27 # tmp668, tmp667, xarea.63
stfdx 0,31,9 #* ivtmp.889, tmp668
addi 9,9,8 # ivtmp.889, ivtmp.889,
cmpd 7,9,29 # tmp787, tmp673, ivtmp.889
bne 7,.L185 #
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32921