Hi, On Tue, Jun 29 2021, Richard Biener via Gcc-patches wrote: > On Mon, Jun 28, 2021 at 8:07 PM Martin Sebor <mse...@gmail.com> wrote:
[...] >> >> vNULL can bind to a const vec& (via the vec conversion ctor) but >> not to vec&. The three functions that in the patch are passed >> vNULL modify the argument when it's not vNULL but not otherwise. >> An alternate design is to have them take a vec* and pass in >> a plain NULL (or nullptr) instead of vNULL. That would require >> some surgery on the function bodies that I've been trying to >> avoid in the first pass. > > But I wonder if since you now identified them they could be massaged > prior to doing the change. > > I do hope we end up not needing .to_vec () after all, if no users remain ;) I am afraid that the decay from ipa_auto_call_arg_values to ipa_call_arg_values would still need them. The auto variant is very useful for ipa-cp but the non-auto one is necessary because of how ipa_cached_call_context is structured and how it operates. I tried to rework ipa_cached_call_context last summer - though I do not remember it enough to be 100% sure that it would avoid the need for to_vec - but Honza strongly preferred how it works now. Martin