ymandel added a comment.

In D150653#4346025 <https://reviews.llvm.org/D150653#4346025>, @mboehme wrote:

> In D150653#4345771 <https://reviews.llvm.org/D150653#4345771>, @ymandel wrote:
>
>> I'm a little confused by one of the points in the description:
>>
>>> `setValueStrict()`: The RFC proposes that this should always create the 
>>> same StorageLocation for a given Value, but, in fact, the transfer 
>>> functions that exist today don't guarantee this; almost all transfer 
>>> functions unconditionally create a new `StorageLocation` when associating 
>>> an expression with a `Value`.
>>
>> Since values are immutable, we (intentionally) share them between different 
>> storage locations. So, it makes sense that a single value could be 
>> associated with multiple storage locations. Now, there's a bug in that 
>> values aren't really immutable since you can update the fields, so we have a 
>> false sharing bug in the framework, but maybe that only applies to glvalues?
>
> Yes, values are and should definitely be shared between different storage 
> locations.
>
> The comment in the RFC is specifically in the context of the "fake" storage 
> locations that we create for prvalues (since `setValueStrict()` only deals 
> with prvalues). I call these storage locations "fake" because a prvalue 
> doesn't actually have a storage location. During the review of the RFC, one 
> of the reviewers asked whether we should guarantee that a given `Value`, when 
> associated with a prvalue `Expr`, should always use the same "fake" storage 
> location, instead of creating a new storage location every time. The idea was 
> that this might be required for convergence. This argument made sense to me 
> at the time, but having looked at what the existing code does, almost every 
> place that associates a `Value` with a prvalue expression unconditionally 
> create a new "fake" storage location. So this implies to me that creating 
> durable fake storage locations isn't necessary.
>
> Does this make sense?

Yes, makes sense.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D150653

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to