------- 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