1 // RUN: %clang_cc1 -fsyntax-only -verify -x hip %s 2 // RUN: %clang_cc1 -fsyntax-only -fcuda-is-device -verify -x hip %s 3 // RUN: %clang_cc1 -fsyntax-only -fgpu-rdc -verify -x hip %s 4 // RUN: %clang_cc1 -fsyntax-only -fgpu-rdc -fcuda-is-device -verify -x hip %s 5 6 #include "Inputs/cuda.h" 7 8 struct A { 9 int a; AA10 A() { a = 1; } 11 }; 12 13 __managed__ int m1; 14 15 __managed__ __managed__ int m2; 16 17 __managed__ __device__ int m3; 18 __device__ __managed__ int m3a; 19 20 __managed__ __constant__ int m4; 21 // expected-error@-1 {{'constant' and 'managed' attributes are not compatible}} 22 // expected-note@-2 {{conflicting attribute is here}} 23 24 __constant__ __managed__ int m4a; 25 // expected-error@-1 {{'managed' and 'constant' attributes are not compatible}} 26 // expected-note@-2 {{conflicting attribute is here}} 27 28 __managed__ __shared__ int m5; 29 // expected-error@-1 {{'shared' and 'managed' attributes are not compatible}} 30 // expected-note@-2 {{conflicting attribute is here}} 31 32 __shared__ __managed__ int m5a; 33 // expected-error@-1 {{'managed' and 'shared' attributes are not compatible}} 34 // expected-note@-2 {{conflicting attribute is here}} 35 36 __managed__ __global__ int m6; 37 // expected-warning@-1 {{'global' attribute only applies to functions}} 38 func()39void func() { 40 __managed__ int m7; 41 // expected-error@-1 {{__constant__, __device__, and __managed__ are not allowed on non-static local variables}} 42 } 43 44 __attribute__((managed(1))) int m8; 45 // expected-error@-1 {{'managed' attribute takes no arguments}} 46 func2()47__managed__ void func2() {} 48 // expected-warning@-1 {{'managed' attribute only applies to variables}} 49 50 typedef __managed__ int managed_int; 51 // expected-warning@-1 {{'managed' attribute only applies to variables}} 52 53 __managed__ A a; 54 // expected-error@-1 {{dynamic initialization is not supported for __device__, __constant__, __shared__, and __managed__ variables}} 55