sam-mccall wrote:

This has been dormant in part while thinking about the memcpy half, I think.
Something like https://github.com/llvm/llvm-project/pull/86512 solves that well 
but likely needs this change too.

> I am a bit concerned that this does not actually have the desired semantics 
> at all, but @zygoloid seemed to be "happy" with it. I will admit I struggle 
> understanding the motivation of adding a builtin that does...less than it 
> should.

This does something both useful and correct with `-fno-strict-aliasing`. I 
think we're far from alone in building in this mode (in part precisely because 
of existing TBAA soundness questions!)[1].

I think it gets us incrementally closer to fully supporting 
std::start_lifetime_as: if there are specific miscompiles this would produce 
with strict-aliasing enabled, we can now observe them and use them to validate 
e.g. the `llvm.tbaa.fence` proposal. (It looks like what we need here but I 
also don't understand the LLVM change deeply).

> Similarly, do you have plans for the array version of start_lifetime_as?

I think we need a similar parallel version of this, e.g.: 
`__start_dynamic_array_lifetime(T*, size_t) -> T*`.
This seems like a purely mechanical extension that could be done in this patch 
or subsequently. Preferences?

[1] I hope this is the year we can put some work into strict-aliasing and turn 
it on. By coincidence, our best estimate of the overall performance win is 
roughly the same as applying this optimization to one widely-used library...

https://github.com/llvm/llvm-project/pull/82776
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to