yaxunl added a comment. In D56411#1350233 <https://reviews.llvm.org/D56411#1350233>, @jlebar wrote:
> __host__ void bar() {} > __device__ int bar() { return 0; } > __host__ __device__ void foo() { int x = bar(); } > template <void (*devF)()> __global__ void kernel() { devF();} > > kernel<foo>(); > > > > > > we DTRT for this case. Here __host__ bar needs to return int since foo() > > expects that. will add a test for that. > > `__host__ bar()` should not need to return int if `foo` is inline (or > templated), because then we should never codegen `foo` for host. I guess my > question is, we should be sure that `kernel<foo>()` does not force an > inline/templated `foo` to be codegen'ed for host. (Sorry that wasn't more > clear before.) Sorry I am not quite get it. bar() is a `__host__` function with definition, so clang does codegen for it. clang also does codegen for foo() since it has `__host__ __device__` attribute. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D56411/new/ https://reviews.llvm.org/D56411 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits