From: Argyrios Kyrtzidis Date: Thu, 17 Mar 2016 04:28:19 +0000 (+0000) Subject: [index] Make sure that declarations of builtin functions are indexed. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8afb9a8644e3f33153a7d2c8ce096fd4aeb2eccf;p=clang [index] Make sure that declarations of builtin functions are indexed. rdar://25154630 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@263689 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Index/IndexingContext.cpp b/lib/Index/IndexingContext.cpp index 0a235afc28..3d1d9902dd 100644 --- a/lib/Index/IndexingContext.cpp +++ b/lib/Index/IndexingContext.cpp @@ -290,14 +290,17 @@ bool IndexingContext::handleDeclOccurrence(const Decl *D, SourceLocation Loc, Roles |= (unsigned)SymbolRole::Declaration; D = getCanonicalDecl(D); - if (D->isImplicit() && !isa(D)) { + if (D->isImplicit() && !isa(D) && + !(isa(D) && cast(D)->getBuiltinID())) { // operator new declarations will link to the implicit one as canonical. return true; } Parent = adjustParent(Parent); if (Parent) Parent = getCanonicalDecl(Parent); - assert((!Parent || !Parent->isImplicit() || isa(Parent) || + assert((!Parent || !Parent->isImplicit() || + (isa(Parent) && + cast(Parent)->getBuiltinID()) || isa(Parent) || isa(Parent)) && "unexpected implicit parent!"); diff --git a/test/Index/Core/index-source.m b/test/Index/Core/index-source.m index 6248f18bfb..ac309c8e69 100644 --- a/test/Index/Core/index-source.m +++ b/test/Index/Core/index-source.m @@ -68,5 +68,6 @@ enum { // CHECK: [[@LINE+1]]:13 | typedef/C | jmp_buf | c:index-source.m@T@jmp_buf | | Def | rel: 0 typedef int jmp_buf[(18)]; +// CHECK: [[@LINE+2]]:12 | function/C | setjmp | c:@F@setjmp | _setjmp | Decl | rel: 0 // CHECK: [[@LINE+1]]:19 | typedef/C | jmp_buf | c:index-source.m@T@jmp_buf | | Ref | rel: 0 extern int setjmp(jmp_buf);