[PATCH] D150746: [CodeGen]Translating pointer arguments can require an address space cast
Alex Voicu via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed May 17 11:34:06 PDT 2023
AlexVlx added a comment.
In D150746#4350288 <https://reviews.llvm.org/D150746#4350288>, @efriedma wrote:
> At first glance, this seems like the wrong place to put this cast. If an expression in the AST produces a pointer with generic pointer type, then CodeGen should generate code for that expression that returns a generic pointer type. We shouldn't wait until the pointer is used to force a cast to the correct type.
Thanks for the feedback. I believe what is going on is that for something like HIP, unless one goes outside of the language / touches builtins or intrinsics, one will never obtain anything but generic pointers as functiona arguments. However, it is possible to bind e.g. a global (the VTT case I mentioned), and we emit those in the global address space, so there's a bit of impedance mismatch for lack of a better word. I guess two alternative approaches here could be either: a) hoist the cast into `GetVTTParameter`, so that the GEP is formed over a casted pointer; b) modify `buildStructorSignature` so that it inserts VTT as a pointer to a pointer to void* in the target's GlobalAS. Seems like the latter is closer to the spirit of what is being suggested, unless I'm reading you wrong?
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D150746/new/
https://reviews.llvm.org/D150746
More information about the cfe-commits
mailing list