Here are initial patches that expose the inheritable attributes for
OpenCL in libclang, including the python bindings.
I initially posted these on the dev mailing list, but since they
received no response, I presume that this list is a better place for them.
As far as I can tell, since the address space attributes are type
attributes, exposing them will require adding to the libclang API. Along
these lines, it might be useful to have a generalized way to query type
attributes so that more semantic analysis can be done through libclang.
Any thoughts on this?
Paul Fox
---
include/clang-c/Index.h | 7 ++++++-
tools/libclang/CIndex.cpp | 10 ++++++++++
tools/libclang/CXCursor.cpp | 5 +++++
3 files changed, 21 insertions(+), 1 deletion(-)
diff --git a/include/clang-c/Index.h b/include/clang-c/Index.h
index 4deb60b..6861a1e 100644
--- a/include/clang-c/Index.h
+++ b/include/clang-c/Index.h
@@ -2176,7 +2176,12 @@ enum CXCursorKind {
CXCursor_CUDADeviceAttr = 413,
CXCursor_CUDAGlobalAttr = 414,
CXCursor_CUDAHostAttr = 415,
- CXCursor_LastAttr = CXCursor_CUDAHostAttr,
+ CXCursor_OpenCLKernelAttr = 416,
+ CXCursor_OpenCLImageAccessAttr = 417,
+ CXCursor_ReqdWorkGroupSizeAttr = 418,
+ CXCursor_WorkGroupSizeHintAttr = 419,
+ CXCursor_VecTypeHintAttr = 420,
+ CXCursor_LastAttr = CXCursor_VecTypeHintAttr,
/* Preprocessing */
CXCursor_PreprocessingDirective = 500,
diff --git a/tools/libclang/CIndex.cpp b/tools/libclang/CIndex.cpp
index 787c28b..8baa7a6 100644
--- a/tools/libclang/CIndex.cpp
+++ b/tools/libclang/CIndex.cpp
@@ -3911,6 +3911,16 @@ CXString clang_getCursorKindSpelling(enum CXCursorKind Kind) {
return cxstring::createRef("attribute(global)");
case CXCursor_CUDAHostAttr:
return cxstring::createRef("attribute(host)");
+ case CXCursor_OpenCLKernelAttr:
+ return cxstring::createRef("kernel");
+ case CXCursor_OpenCLImageAccessAttr:
+ return cxstring::createRef("image access");
+ case CXCursor_ReqdWorkGroupSizeAttr:
+ return cxstring::createRef("attribute(reqd_work_group_size)");
+ case CXCursor_WorkGroupSizeHintAttr:
+ return cxstring::createRef("attribute(work_group_size_hint)");
+ case CXCursor_VecTypeHintAttr:
+ return cxstring::createRef("attribute(vec_type_hint)");
case CXCursor_PreprocessingDirective:
return cxstring::createRef("preprocessing directive");
case CXCursor_MacroDefinition:
diff --git a/tools/libclang/CXCursor.cpp b/tools/libclang/CXCursor.cpp
index 7418c29..b313d2c 100644
--- a/tools/libclang/CXCursor.cpp
+++ b/tools/libclang/CXCursor.cpp
@@ -57,6 +57,11 @@ static CXCursorKind GetCursorKind(const Attr *A) {
case attr::CUDADevice: return CXCursor_CUDADeviceAttr;
case attr::CUDAGlobal: return CXCursor_CUDAGlobalAttr;
case attr::CUDAHost: return CXCursor_CUDAHostAttr;
+ case attr::OpenCLKernel: return CXCursor_OpenCLKernelAttr;
+ case attr::OpenCLImageAccess: return CXCursor_OpenCLImageAccessAttr;
+ case attr::ReqdWorkGroupSize: return CXCursor_ReqdWorkGroupSizeAttr;
+ case attr::WorkGroupSizeHint: return CXCursor_WorkGroupSizeHintAttr;
+ case attr::VecTypeHint: return CXCursor_VecTypeHintAttr;
}
return CXCursor_UnexposedAttr;
--
1.9.3
---
bindings/python/clang/cindex.py | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/bindings/python/clang/cindex.py b/bindings/python/clang/cindex.py
index 517b3c1..b9bc80b 100644
--- a/bindings/python/clang/cindex.py
+++ b/bindings/python/clang/cindex.py
@@ -1086,6 +1086,11 @@ CursorKind.CUDACONSTANT_ATTR = CursorKind(412)
CursorKind.CUDADEVICE_ATTR = CursorKind(413)
CursorKind.CUDAGLOBAL_ATTR = CursorKind(414)
CursorKind.CUDAHOST_ATTR = CursorKind(415)
+CursorKind.OPENCL_KERNEL_ATTR = CursorKind(416)
+CursorKind.OPENCL_IMAGE_ACCESS_ATTR = CursorKind(417)
+CursorKind.REQD_WORK_GROUP_SIZE_ATTR = CursorKind(418)
+CursorKind.WORK_GROUP_SIZE_HINT_ATTR = CursorKind(419)
+CursorKind.VEC_TYPE_HIND_ATTR = CursorKind(420)
###
# Preprocessing
--
1.9.3
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits