[PATCH] D68031: [CUDA][HIP] Enable kernel function return type deduction.
Michael Liao via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Sep 25 09:51:55 PDT 2019
hliao added a comment.
In D68031#1682822 <https://reviews.llvm.org/D68031#1682822>, @tra wrote:
> Nice. I'd mention in the commit message that NVCC does not support deduced return type for kernel functions.
Just tried with NVCC from CUDA 10, except auto-based deduced type is not supported, type deduction in a template is supported, the following test code passes compilation with NVCC
#include <cuda.h>
template <typename T>
__global__ T foo() {
}
void f0() {
foo<void><<<0, 0>>>();
#if 0
foo<int><<<0, 0>>>();
#endif
}
template <bool Cond, typename T = void> struct enable_if { typedef T type; };
template <typename T> struct enable_if<false, T> {};
template <int N>
__global__
auto bar() -> typename enable_if<N == 1>::type {
}
template <int N>
__global__
auto bar() -> typename enable_if<N == 2>::type {
}
void f3() {
bar<1><<<0, 0>>>();
bar<2><<<0, 0>>>();
#if 0
bar<3><<<0, 0>>>();
#endif
}
`s/#if 0/#if 1` also shows NVCC could give the error on the correct position but the message, IMHO, is misleading compared to the one from clang.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D68031/new/
https://reviews.llvm.org/D68031
More information about the cfe-commits
mailing list