[PATCH] D11690: [CUDA] Added stubs for new attributes used by CUDA headers.

Aaron Ballman aaron at aaronballman.com
Fri Jul 31 13:09:39 PDT 2015


On Fri, Jul 31, 2015 at 4:01 PM, Artem Belevich <tra at google.com> wrote:
> tra created this revision.
> tra added reviewers: echristo, jholewinski, eliben.
> tra added a subscriber: cfe-commits.
>
> http://reviews.llvm.org/D11690
>
> Files:
>   include/clang/Basic/Attr.td
>   test/Index/attributes-cuda.cu

Some background about what you are trying to accomplish would be nice.
I notice that these are all ignored attributes; are there plans to
support them in the future, or will they always be ignored?

There should not be a need to set the Documentation field for anything
inheriting from IgnoredAttr as that specifies an undocumented
attribute by default.

>
> Index: test/Index/attributes-cuda.cu
> ===================================================================
> --- test/Index/attributes-cuda.cu
> +++ test/Index/attributes-cuda.cu
> @@ -7,6 +7,14 @@
>  __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 @@
>  // 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
> Index: include/clang/Basic/Attr.td
> ===================================================================
> --- include/clang/Basic/Attr.td
> +++ include/clang/Basic/Attr.td
> @@ -557,13 +557,37 @@
>    let Documentation = [Undocumented];
>  }
>
> +def CUDACudartBuiltin : IgnoredAttr {
> +  let Spellings = [GNU<"cudart_builtin">];
> +  let LangOpts = [CUDA];
> +  let Documentation = [Undocumented];
> +}
> +
>  def CUDADevice : InheritableAttr {
>    let Spellings = [GNU<"device">];
>    let Subjects = SubjectList<[Function, Var]>;
>    let LangOpts = [CUDA];
>    let Documentation = [Undocumented];
>  }
>
> +def CUDADeviceBuiltin : IgnoredAttr {
> +  let Spellings = [GNU<"device_builtin">];
> +  let LangOpts = [CUDA];
> +  let Documentation = [Undocumented];
> +}
> +
> +def CUDADeviceBuiltinSurfaceType : IgnoredAttr {
> +  let Spellings = [GNU<"device_builtin_surface_type">];
> +  let LangOpts = [CUDA];
> +  let Documentation = [Undocumented];
> +}
> +
> +def CUDADeviceBuiltinTextureType : IgnoredAttr {
> +  let Spellings = [GNU<"device_builtin_texture_type">];
> +  let LangOpts = [CUDA];
> +  let Documentation = [Undocumented];
> +}
> +
>  def CUDAGlobal : InheritableAttr {
>    let Spellings = [GNU<"global">];
>    let Subjects = SubjectList<[Function]>;
> @@ -1015,6 +1039,11 @@
>    let Documentation = [Undocumented];
>  }
>
> +def NvWeak : IgnoredAttr {
> +  let Spellings = [GCC<"nv_weak">];
> +  let Documentation = [Undocumented];
> +}

Is this attribute supported by gcc? I did a quick test of
[[gnu::nv_weak]] and it seemed to be an unknown attribute.

~Aaron

> +
>  def ObjCBridge : InheritableAttr {
>    let Spellings = [GNU<"objc_bridge">];
>    let Subjects = SubjectList<[Record, TypedefName], ErrorDiag,
>
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>



More information about the cfe-commits mailing list