http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55731
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2012-12-18
Ever Confirmed|0 |1
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> 2012-12-18
15:34:51 UTC ---
The reason is that unrolling early can be harmful to for example vectorization
and thus cunrolli restricts itself to "obviously" profitable cases.
In this case the loop is not an "inner" loop - it doesn't have a containing
loop and so growth is not allowed even with -O3 (we otherwise will fail
to vectorize if the unrolled body ends up as part of other basic-blocks).
It's a know issue that after cunroll there is no strong value-numbering
pass that handles memory (there is DOM which only has weak memory handling).
So, it's a trade-off we make, mostly for the sake of loop optimizations
that do not handle unrolled loops well.