rjmccall added inline comments.

================
Comment at: lib/AST/DeclCXX.cpp:2187
   ClassTy = C.getQualifiedType(ClassTy,
                                Qualifiers::fromCVRUMask(getTypeQualifiers()));
+
----------------
I feel like the right design now is for `getTypeQualifiers()` to return a 
`Qualifiers` and not just a mask.

That will also help identify other places that need to be updated to support 
address-space qualification.


================
Comment at: lib/CodeGen/CGCall.cpp:71
 /// Derives the 'this' type for codegen purposes, i.e. ignoring method
 /// qualification.
+static CanQualType GetThisType(ASTContext &Context, const CXXRecordDecl *RD, 
const CXXMethodDecl *MD) {
----------------
Please update the comment to say "ignoring method CVR qualification" instead.

Also, maybe we should just eliminate this and use `CXXMethodDecl::getThisType`. 
 If we want to preserve the micro-optimization of sharing `CGFunctionInfo`s for 
method types that only differ by CV qualification, maybe we should add a 
parameter to `getThisType` to not add ABI-compatible qualification.


================
Comment at: lib/CodeGen/CGClass.cpp:2020
+    unsigned TargetAS = getContext().getTargetAddressSpace(AS);
+    llvm::Type *NewType = ThisPtr->getType()->getPointerTo(TargetAS);
+    ThisPtr = getTargetHooks().performAddrSpaceCast(
----------------
This is adding an extra level of pointer, I think.


================
Comment at: lib/CodeGen/CGClass.cpp:2023
+        *this, This.getPointer(),
+        getLangASFromTargetAS(This.getAddressSpace()), AS,
+        NewType);
----------------
...I'm not sure when `getLangASFromTargetAS` was added, but it shouldn't exist; 
you need to pass down the language address space of `This`, which in general 
will come from the pointer type.  And then the `AS != LangAS::Default` check 
should just be comparing the constructor's address space to that address space, 
not specifically `LangAS::Default`.

Same comments apply to the code in `commonEmitCXXMemberOrOperatorCall`.


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

https://reviews.llvm.org/D54862



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

Reply via email to