[libclang] Add attribute support for 'convergent'.

This bumps CINDEX_VERSION_MINOR up (to 51).

Patch by Hsin-Hsiao Lin.

Differential Revision: https://reviews.llvm.org/D57946

llvm-svn: 353690
This commit is contained in:
Sven van Haastregt 2019-02-11 11:00:56 +00:00
parent 3fbacd4964
commit dc2c93017f
5 changed files with 13 additions and 3 deletions

View File

@ -1342,6 +1342,7 @@ CursorKind.VISIBILITY_ATTR = CursorKind(417)
CursorKind.DLLEXPORT_ATTR = CursorKind(418) CursorKind.DLLEXPORT_ATTR = CursorKind(418)
CursorKind.DLLIMPORT_ATTR = CursorKind(419) CursorKind.DLLIMPORT_ATTR = CursorKind(419)
CursorKind.CONVERGENT_ATTR = CursorKind(420)
### ###
# Preprocessing # Preprocessing

View File

@ -32,7 +32,7 @@
* compatible, thus CINDEX_VERSION_MAJOR is expected to remain stable. * compatible, thus CINDEX_VERSION_MAJOR is expected to remain stable.
*/ */
#define CINDEX_VERSION_MAJOR 0 #define CINDEX_VERSION_MAJOR 0
#define CINDEX_VERSION_MINOR 50 #define CINDEX_VERSION_MINOR 51
#define CINDEX_VERSION_ENCODE(major, minor) ( \ #define CINDEX_VERSION_ENCODE(major, minor) ( \
((major) * 10000) \ ((major) * 10000) \
@ -2586,7 +2586,8 @@ enum CXCursorKind {
CXCursor_ObjCRuntimeVisible = 435, CXCursor_ObjCRuntimeVisible = 435,
CXCursor_ObjCBoxable = 436, CXCursor_ObjCBoxable = 436,
CXCursor_FlagEnum = 437, CXCursor_FlagEnum = 437,
CXCursor_LastAttr = CXCursor_FlagEnum, CXCursor_ConvergentAttr = 438,
CXCursor_LastAttr = CXCursor_ConvergentAttr,
/* Preprocessing */ /* Preprocessing */
CXCursor_PreprocessingDirective = 500, CXCursor_PreprocessingDirective = 500,

View File

@ -12,6 +12,8 @@ enum __attribute((flag_enum)) FlagEnum {
Foo Foo
}; };
void convergent_fn() __attribute__((convergent));
// CHECK: attributes.c:3:32: StructDecl=Test2:3:32 (Definition) Extent=[3:1 - 5:2] // CHECK: attributes.c:3:32: StructDecl=Test2:3:32 (Definition) Extent=[3:1 - 5:2]
// CHECK: attributes.c:3:23: attribute(packed)=packed Extent=[3:23 - 3:29] // CHECK: attributes.c:3:23: attribute(packed)=packed Extent=[3:23 - 3:29]
// CHECK: attributes.c:4:8: FieldDecl=a:4:8 (Definition) Extent=[4:3 - 4:9] [access=public] // CHECK: attributes.c:4:8: FieldDecl=a:4:8 (Definition) Extent=[4:3 - 4:9] [access=public]
@ -24,3 +26,6 @@ enum __attribute((flag_enum)) FlagEnum {
// CHECK: attributes.c:9:38: attribute(noduplicate)= Extent=[9:38 - 9:49] // CHECK: attributes.c:9:38: attribute(noduplicate)= Extent=[9:38 - 9:49]
// CHECK: attributes.c:11:31: EnumDecl=FlagEnum:11:31 (Definition) Extent=[11:1 - 13:2] // CHECK: attributes.c:11:31: EnumDecl=FlagEnum:11:31 (Definition) Extent=[11:1 - 13:2]
// CHECK: attributes.c:11:19: attribute(flag_enum)= Extent=[11:19 - 11:28] // CHECK: attributes.c:11:19: attribute(flag_enum)= Extent=[11:19 - 11:28]
// CHECK: attributes.c:12:3: EnumConstantDecl=Foo:12:3 (Definition) Extent=[12:3 - 12:6]
// CHECK: attributes.c:15:6: FunctionDecl=convergent_fn:15:6 Extent=[15:1 - 15:49]
// CHECK: attributes.c:15:37: attribute(convergent)= Extent=[15:37 - 15:47]

View File

@ -5475,6 +5475,8 @@ CXString clang_getCursorKindSpelling(enum CXCursorKind Kind) {
return cxstring::createRef("StaticAssert"); return cxstring::createRef("StaticAssert");
case CXCursor_FriendDecl: case CXCursor_FriendDecl:
return cxstring::createRef("FriendDecl"); return cxstring::createRef("FriendDecl");
case CXCursor_ConvergentAttr:
return cxstring::createRef("attribute(convergent)");
} }
llvm_unreachable("Unhandled CXCursorKind"); llvm_unreachable("Unhandled CXCursorKind");

View File

@ -78,6 +78,7 @@ static CXCursorKind GetCursorKind(const Attr *A) {
case attr::ObjCRuntimeVisible: return CXCursor_ObjCRuntimeVisible; case attr::ObjCRuntimeVisible: return CXCursor_ObjCRuntimeVisible;
case attr::ObjCBoxable: return CXCursor_ObjCBoxable; case attr::ObjCBoxable: return CXCursor_ObjCBoxable;
case attr::FlagEnum: return CXCursor_FlagEnum; case attr::FlagEnum: return CXCursor_FlagEnum;
case attr::Convergent: return CXCursor_ConvergentAttr;
} }
return CXCursor_UnexposedAttr; return CXCursor_UnexposedAttr;