[PATCH] D59988: [PR41276] Generate address space cast of 'this' for objects attributed by an address space in C++

Anastasia Stulova via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri May 3 07:46:26 PDT 2019


Anastasia marked an inline comment as done.
Anastasia added inline comments.


================
Comment at: test/CodeGenCXX/address-space-of-this.cpp:9
+//CHECK: call void @_ZN6MyTypeC1Ei(%struct.MyType* addrspacecast (%struct.MyType addrspace(10)* @m to %struct.MyType*), i32 123)
+MyType __attribute__((address_space(10))) m = 123;
----------------
rjmccall wrote:
> Sorry I didn't catch this before, but I don't see why this test is expected to work.  We can't actually pass a pointer in address space 10 to that constructor.
Ok, I have created a bug to follow up on this issues:
https://bugs.llvm.org/show_bug.cgi?id=41730

It seems that the check is missing here for allowing the address space conversions implicitly, but I am afraid if I add it now addr spaces will become less usable because implicit conversions can't be setup by the target yet. And everyone is using no address space as some sort of `__generic` but unofficially. :(

I have some thoughts about adding something like `__generic` address space to C++ that can either be resolved by the compiler or supported by HW. I think it might help to implement those cases correctly without modifying too much of code base. I just struggled to find enough bandwidth to send an RFC but I will try to progress on this asap.


Repository:
  rC Clang

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

https://reviews.llvm.org/D59988





More information about the cfe-commits mailing list