[PATCH] D70605: [OpenCL] Fix address space for implicit conversion (PR43145)

Sven van Haastregt via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Jul 7 10:03:20 PDT 2020


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


================
Comment at: clang/lib/Sema/SemaExprCXX.cpp:4106
+      NewToType = Context.getAddrSpaceQualType(NewToType,
+                                               FromPteeType.getAddressSpace());
+      if (ToType->isObjCObjectPointerType())
----------------
ebevhan wrote:
> I don't think this will manage to properly repack the type if it's hidden behind enough sugar. When I enable C++ address space conversions in a non-OpenCL context, this breaks the derived-to-base example in CodeGenCXX/address-space-cast.cpp.
> 
> IsPointerConversion doesn't have an issue with this since it reconstructs the destination type with the appropriate qualifiers through BuildSimilarlyQualifiedPointerType.
> 
> Wouldn't it make more sense to have *PointerConversion only handle the derived-to-base and leave the address space conversion to *QualificationConversion?
> Wouldn't it make more sense to have *PointerConversion only handle the derived-to-base and leave the address space conversion to *QualificationConversion?

I didn't have a thorough look to understand all implications of that, but maybe it's worth trying.  Not sure I'll be able to follow up on this any time soon, would you be able to give it a try?


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D70605





More information about the cfe-commits mailing list