[clang] Handle __declspec() attributes in using
[llvm-project.git] / clang / test / SemaCUDA / global-initializers-host.cu
blob810c6b9777860b09600bd8ed048d2980e8301c0a
1 // RUN: %clang_cc1 %s --std=c++11 -triple x86_64-linux-unknown -fsyntax-only -o - -verify
3 #include "Inputs/cuda.h"
5 // Check that we get an error if we try to call a __device__ function from a
6 // module initializer.
8 struct S {
9   __device__ S() {}
10   // expected-note@-1 {{'S' declared here}}
13 S s;
14 // expected-error@-1 {{reference to __device__ function 'S' in global initializer}}
16 struct T {
17   __host__ __device__ T() {}
19 T t;  // No error, this is OK.
21 struct U {
22   __host__ U() {}
23   __device__ U(int) {}
24   // expected-note@-1 {{'U' declared here}}
26 U u(42);
27 // expected-error@-1 {{reference to __device__ function 'U' in global initializer}}
29 __device__ int device_fn() { return 42; }
30 // expected-note@-1 {{'device_fn' declared here}}
31 int n = device_fn();
32 // expected-error@-1 {{reference to __device__ function 'device_fn' in global initializer}}