Index: include/clang-c/Index.h =================================================================== --- include/clang-c/Index.h +++ include/clang-c/Index.h @@ -32,7 +32,7 @@ * compatible, thus CINDEX_VERSION_MAJOR is expected to remain stable. */ #define CINDEX_VERSION_MAJOR 0 -#define CINDEX_VERSION_MINOR 37 +#define CINDEX_VERSION_MINOR 38 #define CINDEX_VERSION_ENCODE(major, minor) ( \ ((major) * 10000) \ @@ -2411,7 +2411,8 @@ CXCursor_VisibilityAttr = 417, CXCursor_DLLExport = 418, CXCursor_DLLImport = 419, - CXCursor_LastAttr = CXCursor_DLLImport, + CXCursor_NoReturnAttr = 420, + CXCursor_LastAttr = CXCursor_NoReturnAttr, /* Preprocessing */ CXCursor_PreprocessingDirective = 500, Index: test/Index/noreturn.c =================================================================== --- /dev/null +++ test/Index/noreturn.c @@ -0,0 +1,5 @@ +// RUN: c-index-test -index-file %s | FileCheck %s -check-prefix CHECK + +void __attribute__ (( noreturn )) noreturn_function(); +// CHECK: : attribute(noreturn) + Index: tools/libclang/CIndex.cpp =================================================================== --- tools/libclang/CIndex.cpp +++ tools/libclang/CIndex.cpp @@ -4391,6 +4391,10 @@ return cxstring::createRef("packed"); } + if (C.kind == CXCursor_NoReturnAttr) { + return cxstring::createRef("noreturn"); + } + if (C.kind == CXCursor_VisibilityAttr) { const VisibilityAttr *AA = cast(cxcursor::getCursorAttr(C)); switch (AA->getVisibility()) { @@ -4890,6 +4894,8 @@ return cxstring::createRef("attribute(dllexport)"); case CXCursor_DLLImport: return cxstring::createRef("attribute(dllimport)"); + case CXCursor_NoReturnAttr: + return cxstring::createRef("attribute(noreturn)"); case CXCursor_PreprocessingDirective: return cxstring::createRef("preprocessing directive"); case CXCursor_MacroDefinition: Index: tools/libclang/CXCursor.cpp =================================================================== --- tools/libclang/CXCursor.cpp +++ tools/libclang/CXCursor.cpp @@ -59,6 +59,9 @@ case attr::CUDAHost: return CXCursor_CUDAHostAttr; case attr::CUDAShared: return CXCursor_CUDASharedAttr; case attr::Visibility: return CXCursor_VisibilityAttr; + case attr::NoReturn: return CXCursor_NoReturnAttr; + case attr::C11NoReturn: return CXCursor_NoReturnAttr; + case attr::CXX11NoReturn: return CXCursor_NoReturnAttr; case attr::DLLExport: return CXCursor_DLLExport; case attr::DLLImport: return CXCursor_DLLImport; }