------- Comment #2 from matz at gcc dot gnu dot org 2010-09-07 14:41 -------
Since the fix for PR44710 we can if-convert the conditions in the inner loop.
With http://gcc.gnu.org/ml/gcc-patches/2010-09/msg00542.html we also
make sure that the latch block isn't filled, which in turn then triggers
the if-conversion. This then reveals the rest of the problems, which are:
* inlining needs to happen (our default parameters don't inline ginteg)
The patch above ensures this by making the functions internal
* a library with vectorized logf needs to be available (libacml_mv for
The patch above works around this by getting rid of calls to log/sqrt
* loop interchange needs to happen, because in the original testcase
G(i,j) = ...
exactly the wrong way around. Our loop-interchange code is only
capable of vectorizing perfect nests, which here doesn't exist
as LIM and PRE move out some loop invariant expressions from the
inner to the outer loop. If we weren't doing that, that itself would
already prevent vectorization.
The patch above works around this by doing the interchange by hand.