[PATCH] D12414: [NVPTX] add an NVPTX-specific alias analysis

hfinkel@anl.gov via llvm-commits llvm-commits at lists.llvm.org
Sun Sep 6 22:24:07 PDT 2015


hfinkel added inline comments.

================
Comment at: lib/Target/NVPTX/NVPTXAliasAnalysis.cpp:71
@@ +70,3 @@
+      if (auto A = dyn_cast<Argument>(Obj)) {
+        if (TM && TM->getDrvInterface() == NVPTX::CUDA &&
+            isKernelFunction(*A->getParent()))
----------------
jingyue wrote:
> hfinkel wrote:
> > Can you please explain why this DvrInterface == CUDA check is necessary? isKernelFunction always checks for NVVM metadata, and lacking that, a specific calling convention. Is that not enough?
> > 
> Sure. As mentioned in the comment, if `Obj` is a **CUDA** kernel parameter, it must reside in global memory. But if the driver interface is NVCL, for example, a kernel parameter is not guaranteed to point to global memory. 
> 
> This is also why we have a similar check in `NVPTXLowerKernelArgs`: https://github.com/llvm-mirror/llvm/blob/master/lib/Target/NVPTX/NVPTXLowerKernelArgs.cpp#L201. 
Okay; I did not realize this might not hold for NVCL.

This it the only place you use TM in this pass, and thus, the only check that can't be done early in the pipeline. However, the driver interface variable is (at least currently) completely determined by the target triple. Is it worth checking the triple directly and dropping the direct TM dependency?



http://reviews.llvm.org/D12414





More information about the llvm-commits mailing list