| // RUN: %clang_cc1 -fsyntax-only -verify -x hip %s |
| // RUN: %clang_cc1 -fsyntax-only -fcuda-is-device -verify -x hip %s |
| // RUN: %clang_cc1 -fsyntax-only -fgpu-rdc -verify -x hip %s |
| // RUN: %clang_cc1 -fsyntax-only -fgpu-rdc -fcuda-is-device -verify -x hip %s |
| |
| #include "Inputs/cuda.h" |
| |
| struct A { |
| int a; |
| A() { a = 1; } |
| }; |
| |
| __managed__ int m1; |
| |
| __managed__ __managed__ int m2; |
| |
| __managed__ __device__ int m3; |
| __device__ __managed__ int m3a; |
| |
| __managed__ __constant__ int m4; |
| // expected-error@-1 {{'constant' and 'managed' attributes are not compatible}} |
| // expected-note@-2 {{conflicting attribute is here}} |
| |
| __constant__ __managed__ int m4a; |
| // expected-error@-1 {{'managed' and 'constant' attributes are not compatible}} |
| // expected-note@-2 {{conflicting attribute is here}} |
| |
| __managed__ __shared__ int m5; |
| // expected-error@-1 {{'shared' and 'managed' attributes are not compatible}} |
| // expected-note@-2 {{conflicting attribute is here}} |
| |
| __shared__ __managed__ int m5a; |
| // expected-error@-1 {{'managed' and 'shared' attributes are not compatible}} |
| // expected-note@-2 {{conflicting attribute is here}} |
| |
| __managed__ __global__ int m6; |
| // expected-warning@-1 {{'global' attribute only applies to functions}} |
| |
| void func() { |
| __managed__ int m7; |
| // expected-error@-1 {{__constant__, __device__, and __managed__ are not allowed on non-static local variables}} |
| } |
| |
| __attribute__((managed(1))) int m8; |
| // expected-error@-1 {{'managed' attribute takes no arguments}} |
| |
| __managed__ void func2() {} |
| // expected-warning@-1 {{'managed' attribute only applies to variables}} |
| |
| typedef __managed__ int managed_int; |
| // expected-warning@-1 {{'managed' attribute only applies to variables}} |
| |
| __managed__ A a; |
| // expected-error@-1 {{dynamic initialization is not supported for __device__, __constant__, __shared__, and __managed__ variables}} |