summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/clangd/index/SymbolCollector.cpp
diff options
context:
space:
mode:
authorSam McCall <sam.mccall@gmail.com>2019-04-10 16:26:58 +0000
committerSam McCall <sam.mccall@gmail.com>2019-04-10 16:26:58 +0000
commit2d02c6df6b2b0ddca24a6bf343154a0573eb955b (patch)
treeaa0cc52962fce591a3101b1be7075c1b3946d830 /clang-tools-extra/clangd/index/SymbolCollector.cpp
parent0e66db5d771898273ea04e5e067859b9907f49e6 (diff)
downloadbcm5719-llvm-2d02c6df6b2b0ddca24a6bf343154a0573eb955b.tar.gz
bcm5719-llvm-2d02c6df6b2b0ddca24a6bf343154a0573eb955b.zip
[clangd] Fix non-indexing of builtin functions like printf when the TU is C
llvm-svn: 358098
Diffstat (limited to 'clang-tools-extra/clangd/index/SymbolCollector.cpp')
-rw-r--r--clang-tools-extra/clangd/index/SymbolCollector.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/clang-tools-extra/clangd/index/SymbolCollector.cpp b/clang-tools-extra/clangd/index/SymbolCollector.cpp
index 302d46adbc8..b4ef6bf134d 100644
--- a/clang-tools-extra/clangd/index/SymbolCollector.cpp
+++ b/clang-tools-extra/clangd/index/SymbolCollector.cpp
@@ -236,8 +236,6 @@ bool SymbolCollector::shouldCollectSymbol(const NamedDecl &ND,
const ASTContext &ASTCtx,
const Options &Opts,
bool IsMainFileOnly) {
- if (ND.isImplicit())
- return false;
// Skip anonymous declarations, e.g (anonymous enum/class/struct).
if (ND.getDeclName().isEmpty())
return false;
@@ -328,7 +326,9 @@ bool SymbolCollector::handleDeclOccurence(
// then no public declaration was visible, so assume it's main-file only.
bool IsMainFileOnly =
SM.isWrittenInMainFile(SM.getExpansionLoc(ND->getBeginLoc()));
- if (!shouldCollectSymbol(*ND, *ASTCtx, Opts, IsMainFileOnly))
+ // In C, printf is a redecl of an implicit builtin! So check OrigD instead.
+ if (ASTNode.OrigD->isImplicit() ||
+ !shouldCollectSymbol(*ND, *ASTCtx, Opts, IsMainFileOnly))
return true;
// Do not store references to main-file symbols.
if (CollectRef && !IsMainFileOnly && !isa<NamespaceDecl>(ND) &&
OpenPOWER on IntegriCloud