http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50904
Eric Botcazou <ebotcazou at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |ebotcazou at gcc dot
| |gnu.org
--- Comment #6 from Eric Botcazou <ebotcazou at gcc dot gnu.org> 2011-11-01
13:52:48 UTC ---
> I don't see why RTL invariant motion should move the one variant but not
> the other. Of course this also shows that we should, after loop unrolling
> on the tree level, also perform loop invariant motion again ...
The problem seems to be in RTL PRE, which hoists simple loads but not loads
that are wrapped up in a PLUS or a MINUS. Even with -fprotect-parens, load
hoisting opportunities are lost because of this.