From 7b760095cb75ff8e7e08132272ff38909d5473c4 Mon Sep 17 00:00:00 2001 From: Alex Lorenz Date: Tue, 7 Nov 2017 17:29:11 +0000 Subject: [index] index field references in __builtin_offset rdar://35109556 llvm-svn: 317593 --- clang/test/Index/Core/index-source.cpp | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'clang/test/Index/Core/index-source.cpp') diff --git a/clang/test/Index/Core/index-source.cpp b/clang/test/Index/Core/index-source.cpp index f9c88d5ea68..cb64bd73963 100644 --- a/clang/test/Index/Core/index-source.cpp +++ b/clang/test/Index/Core/index-source.cpp @@ -525,3 +525,36 @@ struct rd33122110::Outer::Nested; // CHECK-NEXT: RelCont | Nested | c:@N@rd33122110@S@Outer@S@Nested>#I // CHECK: [[@LINE-3]]:20 | struct/C++ | Outer | c:@N@rd33122110@S@Outer | | Ref,RelCont | rel: 1 // CHECK-NEXT: RelCont | Nested | c:@N@rd33122110@S@Outer@S@Nested>#I + +namespace index_offsetof { + +struct Struct { + int field; +}; + +struct Struct2 { + Struct array[4][2]; +}; + +void foo() { + __builtin_offsetof(Struct, field); +// CHECK: [[@LINE-1]]:30 | field/C | field | c:@N@index_offsetof@S@Struct@FI@field | | Ref,RelCont | rel: 1 +// CHECK-NEXT: RelCont | foo | c:@N@index_offsetof@F@foo# + __builtin_offsetof(Struct2, array[1][0].field); +// CHECK: [[@LINE-1]]:31 | field/C | array | c:@N@index_offsetof@S@Struct2@FI@array | | Ref,RelCont | rel: 1 +// CHECK-NEXT: RelCont | foo | c:@N@index_offsetof@F@foo# +// CHECK: [[@LINE-3]]:42 | field/C | field | c:@N@index_offsetof@S@Struct@FI@field | | Ref,RelCont | rel: 1 +// CHECK-NEXT: RelCont | foo | c:@N@index_offsetof@F@foo# +} + +#define OFFSET_OF_(X, Y) __builtin_offsetof(X, Y) + +class SubclassOffsetof : public Struct { + void foo() { + OFFSET_OF_(SubclassOffsetof, field); +// CHECK: [[@LINE-1]]:34 | field/C | field | c:@N@index_offsetof@S@Struct@FI@field | | Ref,RelCont | rel: 1 +// CHECK-NEXT: RelCont | foo | c:@N@index_offsetof@S@SubclassOffsetof@F@foo# + } +}; + +} -- cgit v1.2.3