tra added inline comments.

================
Comment at: clang/lib/CodeGen/CGCUDANV.cpp:239
+    CGM.Error(CGF.CurFuncDecl->getLocation(),
+              "Can't find declaration for cudaLaunchKernel()"); // FIXME.
+    return;
----------------
jlebar wrote:
> Unfixed FIXME?
Fixed the comment. :-)
There's not much we can do if we have no declaration for cudaLaunchKernel, so 
throwing the error here is the best we can do.


================
Comment at: clang/lib/CodeGen/CGCUDANV.cpp:260
+                              /*isVarArg=*/false),
+      "__cudaPopCallConfiguration");
+
----------------
jlebar wrote:
> I see lots of references to `__cudaPushCallConfiguration`, but this is the 
> only reference I see to `__cudaPopCallConfiguration`.  Is this a typo?  Also 
> are we supposed to emit matching push and pop function calls?  Kind of weird 
> to do one without the other...
the `pop` part is indeed used only here. 
`Push` is something that takes user-specified parameters, so we get Sema to 
check them.
`Pop` is much simpler and does not have any direct user exposure, so we can 
just create and use it here.

As for matching, it is balanced. `Push` is called at the kernel launch site 
with the parameters of `<<<>>>` .`Pop` is done  in the host-side kernel stub 
where we retrieve those parameters and pass them to the CUDA runtime.

Essentially, push/pop are poor names for these functions are the nesting is 
never more than one level deep. We could've just stashed the arguments in a 
fixed buffer somewhere.


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

https://reviews.llvm.org/D57488



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

Reply via email to