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.