------- Comment #2 from rguenth at gcc dot gnu dot org 2007-11-28 16:06 ------- GCC doesn't have a facility to split the inner loop and move it out of the outer loops by introducing a array temporary.
As for completely unrolling, this only happens for innermost loops(?) and you can tune the heuristics with --param max-completely-peeled-insns=N (defaults to 400) and --param max-completely-peel-times (defaults to 16). Use -funroll-loops to enable this. Note that complete unrolling happens too late to help LIM or vectorization. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34265