[PATCH] D99100: [WIP] Implement RFC: Decomposing deref(N) into deref(N) + nofree

Nikita Popov via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Jul 14 15:18:49 PDT 2021


nikic added a comment.

In D99100#2878486 <https://reviews.llvm.org/D99100#2878486>, @reames wrote:

> In D99100#2878416 <https://reviews.llvm.org/D99100#2878416>, @nikic wrote:
>
>> From a quick look at canBeFreed(), it seems like the case of a `nofree` argument isn't handled yet.
>
> That's because there was disagreement as to what the semantics of such an argument were.  I got frustrated in trying to drive that towards any useful conclusion, and don't plan to return to the topic.
>
> On the general topic, https://reviews.llvm.org/D101701 is still open, but that doesn't seem to directly involve the parameter attribute.   I can't find what I'm thinking of, so maybe I just misremembered that particular sub-piece being controversial?

I think the controversy was about the function attribute only. It's pretty important to me that using `dereferenceable` plus `nofree` on an argument works (and does so without any additional nosync requirements), because that means you can get the current `dereferenceable` semantics back simply by emitting `dereferenceable nofree` in your frontend wherever you used plain `dereferenceable` before. That gives a clear migration path for which no regressions should be expected (is that right?)


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D99100/new/

https://reviews.llvm.org/D99100



More information about the llvm-commits mailing list