jhen marked an inline comment as done.

================
Comment at: test/SemaCUDA/kernel-call.cu:27
@@ -26,1 +26,3 @@
+
+  g1<<<undeclared, 1>>>(42); // expected-error {{use of undeclared identifier 
'undeclared'}}
 }
----------------
rsmith wrote:
> jhen wrote:
> > Thanks for bringing this up. While trying to find tests that dealt with 
> > each dependence individually, I came to realize that value and type 
> > dependence should not be set for the CUDAKernelCallExpr node because it's 
> > value is always void. So, I removed the propagation of those two 
> > dependencies.
> > 
> > Then, while looking for a test that could handle the parameter pack 
> > information, I realized that it was opening up a whole new can of worms and 
> > that the triple-angle-bracket syntax does not currently support variadic 
> > templates. I decided that parameter packs should be handled as a separate 
> > bug, so I removed them from this patch.
> > 
> > The instantiation dependence propagation is still valid, though, because it 
> > just represents whether a template parameter is present anywhere in the 
> > expression, so I left it in. Correctly tracking instantiation dependence in 
> > enough to fix the bug this patch was meant to fix, so I think it is the 
> > only change that should be made in this patch.
> What happens if an unexpanded pack is used within the kernel arguments of a 
> CUDA kernel call? Do we already reject that? Are there tests for that 
> somewhere?
There don't seem to be any tests currently that handle this case.

The case I had in mind for an unexpanded parameter pack was something like the 
following:

  __global__ void kernel() {}

  template <int ...Dimensions> kernel_wrapper() {
    kernel<<<Dimensions...>>>();
  }

This currently leads to a warning at the time of parsing that says the closing 
">>>" is not found. I believe the cause is that the argument list is parsed as 
a simple argument list, so it doesn't handle the ellipsis correctly. I 
experimented with using standard (non-simple) parsing for the argument list, 
but that led to failures in other unit tests where ">>" wasn't being warned 
correctly in C++98 mode. I'm planning to file a bug for this (at least to fix 
the warning if not to allow the construction) and deal with it in a later 
patch. Does that sound reasonable?


http://reviews.llvm.org/D15858



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

Reply via email to