So I'm wondering if it'd be better that we move all this logic of computing additional lateral references within PHVs to get_memoize_path, where we can examine only PHVs that are evaluated at innerrel. And considering that these lateral refs are only used by Memoize, it seems more sensible to compute them there. But I'm a little worried that doing this would make get_memoize_path too expensive.
Please see v4 patch for this change.
I'd like to add that not checking PHVs for lateral references can lead to performance regressions with Memoize node.
The v4 patch does not apply any more. I've rebased it on master. Nothing else has changed.