1*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -verify %s 2*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -fcuda-is-device -verify %s 3*67e74705SXin Li 4*67e74705SXin Li #include "Inputs/cuda.h" 5*67e74705SXin Li 6*67e74705SXin Li __host__ void h1h(void); 7*67e74705SXin Li __device__ void h1d(void); // expected-note {{candidate function not viable: call to __device__ function from __host__ function}} 8*67e74705SXin Li __host__ __device__ void h1hd(void); 9*67e74705SXin Li __global__ void h1g(void); 10*67e74705SXin Li 11*67e74705SXin Li struct h1ds { // expected-note {{requires 1 argument}} 12*67e74705SXin Li __device__ h1ds(); // expected-note {{candidate constructor not viable: call to __device__ function from __host__ function}} 13*67e74705SXin Li }; 14*67e74705SXin Li h1(void)15*67e74705SXin Li__host__ void h1(void) { 16*67e74705SXin Li h1h(); 17*67e74705SXin Li h1d(); // expected-error {{no matching function}} 18*67e74705SXin Li h1hd(); 19*67e74705SXin Li h1g<<<1, 1>>>(); 20*67e74705SXin Li h1ds x; // expected-error {{no matching constructor}} 21*67e74705SXin Li } 22*67e74705SXin Li 23*67e74705SXin Li __host__ void d1h(void); // expected-note {{candidate function not viable: call to __host__ function from __device__ function}} 24*67e74705SXin Li __device__ void d1d(void); 25*67e74705SXin Li __host__ __device__ void d1hd(void); 26*67e74705SXin Li __global__ void d1g(void); // expected-note {{'d1g' declared here}} 27*67e74705SXin Li d1(void)28*67e74705SXin Li__device__ void d1(void) { 29*67e74705SXin Li d1h(); // expected-error {{no matching function}} 30*67e74705SXin Li d1d(); 31*67e74705SXin Li d1hd(); 32*67e74705SXin Li d1g<<<1, 1>>>(); // expected-error {{reference to __global__ function 'd1g' in __device__ function}} 33*67e74705SXin Li } 34