yaxunl abandoned this revision.
yaxunl added a comment.

In D101389#2724757 <https://reviews.llvm.org/D101389#2724757>, @rjmccall wrote:

> In D101389#2724700 <https://reviews.llvm.org/D101389#2724700>, @yaxunl wrote:
>
>> In D101389#2724636 <https://reviews.llvm.org/D101389#2724636>, @rjmccall 
>> wrote:
>>
>>> I think this is intentional; requiring the indirect-result parameter to be 
>>> in the alloca address space would prevent direct initialization of 
>>> non-temporary memory, which is an important optimization in C++.
>>
>> You mean situations like this? https://godbolt.org/z/KnPs6znK8
>>
>> Address of a global variable is directly passed as the sret arg to the 
>> function returning a struct, instead of creating a temporary struct variable 
>> and passing its address as the sret arg?
>
> That's one specific case of copy-elision, but there are others, e.g.: 
> https://godbolt.org/z/boTeMseaM
>
> I suppose you could disable general copy-elision.  But don't you have 
> aggressive optimizations to strength-reduce generic pointer operations?

Thanks for the example. I agree that sret should be in default addr space.


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

https://reviews.llvm.org/D101389

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

Reply via email to