================
@@ -94,6 +94,11 @@ bool Qualifiers::isTargetAddressSpaceSupersetOf(LangAS A, 
LangAS B,
          (A == LangAS::Default &&
           (B == LangAS::cuda_constant || B == LangAS::cuda_device ||
            B == LangAS::cuda_shared)) ||
+         // In HLSL, the this pointer for member functions is in the default
+         // address space. This causes problem if the structure is in
+         // hlsl_device. We want to allow casting from hlsl_device to default
+         // until a proper solution for that issue is found.
+         (A == LangAS::Default && B == LangAS::hlsl_device) ||
----------------
llvm-beanz wrote:

Can we make any member function that has an addressspace cast on the implicit 
object also `alwaysinline` at the call site? That would allow us to side-step 
any issues with `noinline`.

To avoid the language being completely unwieldy I think we're going to need to 
support some mechanism for allowing implicit objects in different address 
spaces.

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

Reply via email to