rjmccall added a comment. In D92361#2433775 <https://reviews.llvm.org/D92361#2433775>, @Quuxplusone wrote:
> In D92361#2433190 <https://reviews.llvm.org/D92361#2433190>, @rjmccall wrote: > >> There is no such thing as an object "teleporting" in C++. Objects are >> always observed in memory with a specific address. When an argument is >> passed in registers, its address can be observed to be different on both >> sides, and that is not permitted; there must be some operation that creates >> the object at the new address and destroys it at the old. > > That's where you're wrong (about C++). You might be right about C or > Objective-C, I don't know. In C++, that "teleporting" happens //without// any > call to a special member — there is no move happening, and no destroy > happening. You can actually observe this: https://godbolt.org/z/zojooc The > object is simply "bitwise-teleported" from one place to another. Standard > C++17 says that this is a "guaranteed-copy-elision" context; there is indeed > only one C++ "object" here. It just happens to blit around in memory > //beyond// what the C++ code is doing to it. I think perhaps we are talking past each other and have reached the limits of what this sub-thread can hope to achieve. John. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D92361/new/ https://reviews.llvm.org/D92361 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits