http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50955

Richard Guenther <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |rakdver at gcc dot gnu.org

--- Comment #5 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-11-02 
13:33:21 UTC ---
It's not easy to detect this situation from IVOPTs (well, conservatively
at least).  Given that this is another case of alias analysis being
confused (TMR[&p1 + ivtmp] does not refer to object p1), dumbing down
that analysis would seem like a "solution" to this issue ... :/

That's of course not a sustainable approach ...

pointer analysis on MEM[symbol: p1, index: ivtmp.161_200, offset: 0B]
would figure that &p1 + ivtmp.161_200 also points to NONLOCAL, not only
to p1, but we do not have a SSA name to store points-to info in this
case (one more argument against TARGET_MEM_REF and an argument for
more complex address-computation trees instead).  Thus we'd for now
have to assume that a TARGET_MEM_REF points to anything ... that's
pretty bad for RTL optimization, for exactly which we improved alias
analysis for TARGET_MEM_REF in the first place.

Hum.

The issue only pops up because of the ->consider_all_candidates path.
Otherwise we do not apply this awkward choice.

Thus you can avoid the issue by --param iv-consider-all-candidates-bound=1.

Maybe we shouldn't really consider _all_ candidates, but only all bivs?

Reply via email to