rjmccall added inline comments.
================ Comment at: lib/CodeGen/CGClass.cpp:2025 + ThisPtr = + Builder.CreatePointerBitCastOrAddrSpaceCast(This.getPointer(), NewType); } ---------------- brunodf wrote: > rjmccall wrote: > > Anastasia wrote: > > > I am a bit unsure if `performAddrSpaceCast` should be used, but > > > considering that we know that we are not casting a constant it should be > > > fine? > > > > > > If not any suggestions how to propagate `LangAS` of 'this' here. Some > > > thoughts I have are: > > > - Try to list the conversion up in the call stack > > > - Pass `LangAS` all the way to here > > I feel like `This` should just be in the right address space for the > > constructor at the point `EmitCXXConstructorCall` is called. We don't > > expect this function to do any other semantic conversions. Or is this > > necessary to handle special-case use of things like trivial default / copy > > constructors? > Where could the conversion of `this` be listed in the clang AST? `this` seems > implicit there. > > Passing along `LangAS` seems to have some precedent. `EmitCXXConstructExpr` > (which calls `EmitCXXConstructorCall`) works on `AggValueSlot` which carries > the original qualifiers. Currently not yet used for address space (but this > seems similar to me): > > ``` > /// \param quals - The qualifiers that dictate how the slot should > /// be initialied. Only 'volatile' and the Objective-C lifetime > /// qualifiers matter. > ``` > Passing down the address space also works, whether in an `AggValueSlot` or an `LValue` or whatever, and I suppose it's better for the special cases for trivial constructors. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D59988/new/ https://reviews.llvm.org/D59988 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits