https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103168
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Last reconfirmed| |2021-11-11
Summary|Value numbering of pure |Value numbering for PRE of
|functions can be improved |pure functions can be
| |improved
Ever confirmed|0 |1
Status|UNCONFIRMED |NEW
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
loop invariant motion can only move const calls right now. Not sure what
value-numbering has to do with this? There is probably a duplicate somewhere.
The odd thing is that PRE doesn't handle it - it fails to discover that on the
backedge
the value is the same. Ah, that's because ao_ref_init_from_vn_reference does
not handle calls - hmm, yeah we can't represent calls in an ao_ref, at least
not easily. I suppose for a 'pure' call an ao_ref could be a dereference of
a pointer to global memory, but we'd have to build a fake SSA for the pointer
and fake points-to-info for this.
So let's have this PR track the lack of PRE of pure calls.