r244497 - [CUDA] Added stubs for new attributes used by CUDA headers.

Artem Belevich via cfe-commits cfe-commits at lists.llvm.org
Mon Aug 10 13:33:57 PDT 2015


Author: tra
Date: Mon Aug 10 15:33:56 2015
New Revision: 244497

URL: http://llvm.org/viewvc/llvm-project?rev=244497&view=rev
Log:
[CUDA] Added stubs for new attributes used by CUDA headers.

The main purpose is to avoid errors and warnings while parsing CUDA
header files. The attributes are currently unused otherwise.

Differential version: http://reviews.llvm.org/D11690

Added:
    cfe/trunk/test/SemaCUDA/attributes.cu
Modified:
    cfe/trunk/include/clang/Basic/Attr.td
    cfe/trunk/test/Index/attributes-cuda.cu

Modified: cfe/trunk/include/clang/Basic/Attr.td
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/Attr.td?rev=244497&r1=244496&r2=244497&view=diff
==============================================================================
--- cfe/trunk/include/clang/Basic/Attr.td (original)
+++ cfe/trunk/include/clang/Basic/Attr.td Mon Aug 10 15:33:56 2015
@@ -557,6 +557,11 @@ def CUDAConstant : InheritableAttr {
   let Documentation = [Undocumented];
 }
 
+def CUDACudartBuiltin : IgnoredAttr {
+  let Spellings = [GNU<"cudart_builtin">];
+  let LangOpts = [CUDA];
+}
+
 def CUDADevice : InheritableAttr {
   let Spellings = [GNU<"device">];
   let Subjects = SubjectList<[Function, Var]>;
@@ -564,6 +569,21 @@ def CUDADevice : InheritableAttr {
   let Documentation = [Undocumented];
 }
 
+def CUDADeviceBuiltin : IgnoredAttr {
+  let Spellings = [GNU<"device_builtin">];
+  let LangOpts = [CUDA];
+}
+
+def CUDADeviceBuiltinSurfaceType : IgnoredAttr {
+  let Spellings = [GNU<"device_builtin_surface_type">];
+  let LangOpts = [CUDA];
+}
+
+def CUDADeviceBuiltinTextureType : IgnoredAttr {
+  let Spellings = [GNU<"device_builtin_texture_type">];
+  let LangOpts = [CUDA];
+}
+
 def CUDAGlobal : InheritableAttr {
   let Spellings = [GNU<"global">];
   let Subjects = SubjectList<[Function]>;
@@ -1015,6 +1035,11 @@ def NoThrow : InheritableAttr {
   let Documentation = [Undocumented];
 }
 
+def NvWeak : IgnoredAttr {
+  let Spellings = [GNU<"nv_weak">];
+  let LangOpts = [CUDA];
+}
+
 def ObjCBridge : InheritableAttr {
   let Spellings = [GNU<"objc_bridge">];
   let Subjects = SubjectList<[Record, TypedefName], ErrorDiag,

Modified: cfe/trunk/test/Index/attributes-cuda.cu
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/attributes-cuda.cu?rev=244497&r1=244496&r2=244497&view=diff
==============================================================================
--- cfe/trunk/test/Index/attributes-cuda.cu (original)
+++ cfe/trunk/test/Index/attributes-cuda.cu Mon Aug 10 15:33:56 2015
@@ -7,6 +7,14 @@ __attribute__((global)) void f_global();
 __attribute__((constant)) int* g_constant;
 __attribute__((shared)) float *g_shared;
 __attribute__((host)) void f_host();
+__attribute__((device_builtin)) void f_device_builtin();
+typedef __attribute__((device_builtin)) const void *t_device_builtin;
+enum __attribute__((device_builtin)) e_device_builtin {};
+__attribute__((device_builtin)) int v_device_builtin;
+__attribute__((cudart_builtin)) void f_cudart_builtin();
+__attribute__((nv_weak)) void f_nv_weak();
+__attribute__((device_builtin_surface_type)) unsigned long long surface_var;
+__attribute__((device_builtin_texture_type)) unsigned long long texture_var;
 
 // CHECK:       attributes-cuda.cu:5:30: FunctionDecl=f_device:5:30
 // CHECK-NEXT:  attributes-cuda.cu:5:16: attribute(device)
@@ -18,3 +26,11 @@ __attribute__((host)) void f_host();
 // CHECK-NEXT:  attributes-cuda.cu:8:16: attribute(shared)
 // CHECK:       attributes-cuda.cu:9:28: FunctionDecl=f_host:9:28
 // CHECK-NEXT:  attributes-cuda.cu:9:16: attribute(host)
+// CHECK:	attributes-cuda.cu:10:38: FunctionDecl=f_device_builtin:10:38
+// CHECK:	attributes-cuda.cu:11:53: TypedefDecl=t_device_builtin:11:53
+// CHECK:	attributes-cuda.cu:12:38: EnumDecl=e_device_builtin:12:38
+// CHECK:	attributes-cuda.cu:13:37: VarDecl=v_device_builtin:13:37
+// CHECK:	attributes-cuda.cu:14:38: FunctionDecl=f_cudart_builtin:14:38
+// CHECK:	attributes-cuda.cu:15:31: FunctionDecl=f_nv_weak:15:31
+// CHECK:	attributes-cuda.cu:16:65: VarDecl=surface_var:16:65
+// CHECK:	attributes-cuda.cu:17:65: VarDecl=texture_var:17:65

Added: cfe/trunk/test/SemaCUDA/attributes.cu
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCUDA/attributes.cu?rev=244497&view=auto
==============================================================================
--- cfe/trunk/test/SemaCUDA/attributes.cu (added)
+++ cfe/trunk/test/SemaCUDA/attributes.cu Mon Aug 10 15:33:56 2015
@@ -0,0 +1,33 @@
+// Tests handling of CUDA attributes.
+//
+// RUN: %clang_cc1 -fsyntax-only -verify %s
+// RUN: %clang_cc1 -fsyntax-only -fcuda-is-device -verify %s
+// Now pretend that we're compiling a C file. There should be warnings.
+// RUN: %clang_cc1 -DEXPECT_WARNINGS -fsyntax-only -verify -x c %s
+
+#if defined(EXPECT_WARNINGS)
+// expected-warning at +12 {{'device' attribute ignored}}
+// expected-warning at +12 {{'global' attribute ignored}}
+// expected-warning at +12 {{'constant' attribute ignored}}
+// expected-warning at +12 {{'shared' attribute ignored}}
+// expected-warning at +12 {{'host' attribute ignored}}
+//
+// NOTE: IgnoredAttr in clang which is used for the rest of
+// attributes ignores LangOpts, so there are no warnings.
+#else
+// expected-no-diagnostics
+#endif
+
+__attribute__((device)) void f_device();
+__attribute__((global)) void f_global();
+__attribute__((constant)) int* g_constant;
+__attribute__((shared)) float *g_shared;
+__attribute__((host)) void f_host();
+__attribute__((device_builtin)) void f_device_builtin();
+typedef __attribute__((device_builtin)) const void *t_device_builtin;
+enum __attribute__((device_builtin)) e_device_builtin {E};
+__attribute__((device_builtin)) int v_device_builtin;
+__attribute__((cudart_builtin)) void f_cudart_builtin();
+__attribute__((nv_weak)) void f_nv_weak();
+__attribute__((device_builtin_surface_type)) unsigned long long surface_var;
+__attribute__((device_builtin_texture_type)) unsigned long long texture_var;




More information about the cfe-commits mailing list