loop optimizations mark 6
Richard Henderson
rth@cygnus.com
Thu Jan 22 04:12:00 GMT 1998
Of note in this revision:
1) init_alias_analysis in scan_loop, so that the alias code sees
the new pseudo's we created in the inner loop.
2) simplify_giv_expr looks through the movables searching for
arithmetic to unify two invariant registers.
3) express_from matches a few more patterns.
Number 1 is dreadfully important for Fortran. I'm not sure how it
was missed before, but there we go.
Number 2 allows two arrays, either on the stack or in the same COMMON
block to have their givs combined. Cf
subroutine foo
common /bar/ a1(10), a2(10)
do i = 1, 10
a1(i) = 2*a2(i)
end do
return
end
It also has affected (dare I say helped?) the situation with variable
sized arrays. For the first time, our dear old friend resid does not
have a integer multiplication in either of its loops. Things are still
a bit shakey here though -- some wierdness in the loop setup code
creating three copies of N*8 in strange ways.
r~
More information about the Gcc
mailing list