[clang] Handle __declspec() attributes in using
[llvm-project.git] / clang / test / SemaCUDA / bad-calls-on-same-line.cu
blob941452470dc7a939a0665aefc9d8be01104f40d6
1 // RUN: %clang_cc1 -fsyntax-only -verify %s
3 // The hd function template is instantiated three times.
4 //
5 // Two of those instantiations call a device function, which is an error when
6 // compiling for host.  Clang should report both errors.
8 #include "Inputs/cuda.h"
10 template <typename T>
11 struct Selector {};
13 template <>
14 struct Selector<int> {
15   __host__ void f() {}
18 template <>
19 struct Selector<float> {
20   __device__ void f() {} // expected-note {{declared here}}
23 template <>
24 struct Selector<double> {
25   __device__ void f() {} // expected-note {{declared here}}
28 template <typename T>
29 inline __host__ __device__ void hd() {
30   Selector<T>().f();
31   // expected-error@-1 2 {{reference to __device__ function}}
34 void host_fn() {
35   hd<int>();
36   hd<double>();
37   // expected-note@-1 {{called by 'host_fn'}}
38   hd<float>();
39   // expected-note@-1 {{called by 'host_fn'}}