kbobyrev updated this revision to Diff 290256. kbobyrev added a comment. "Fail" early.
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D85426/new/ https://reviews.llvm.org/D85426 Files: clang-tools-extra/clangd/index/SymbolCollector.cpp Index: clang-tools-extra/clangd/index/SymbolCollector.cpp =================================================================== --- clang-tools-extra/clangd/index/SymbolCollector.cpp +++ clang-tools-extra/clangd/index/SymbolCollector.cpp @@ -256,6 +256,9 @@ assert(ASTCtx && PP.get() && "ASTContext and Preprocessor must be set."); assert(CompletionAllocator && CompletionTUInfo); assert(ASTNode.OrigD); + auto &SM = ASTCtx->getSourceManager(); + if (!shouldIndexFile(SM.getFileID(Loc))) + return true; // Indexing API puts canonical decl into D, which might not have a valid // source location for implicit/built-in decls. Fallback to original decl in // such cases. @@ -298,7 +301,6 @@ // Mark D as referenced if this is a reference coming from the main file. // D may not be an interesting symbol, but it's cheaper to check at the end. - auto &SM = ASTCtx->getSourceManager(); if (Opts.CountReferences && (Roles & static_cast<unsigned>(index::SymbolRole::Reference)) && SM.getFileID(SM.getSpellingLoc(Loc)) == SM.getMainFileID()) @@ -405,6 +407,9 @@ return true; const auto &SM = PP->getSourceManager(); + if (!shouldIndexFile(SM.getFileID(Loc))) + return true; + auto DefLoc = MI->getDefinitionLoc(); // Also avoid storing predefined macros like __DBL_MIN__. if (SM.isWrittenInBuiltinFile(DefLoc))
Index: clang-tools-extra/clangd/index/SymbolCollector.cpp =================================================================== --- clang-tools-extra/clangd/index/SymbolCollector.cpp +++ clang-tools-extra/clangd/index/SymbolCollector.cpp @@ -256,6 +256,9 @@ assert(ASTCtx && PP.get() && "ASTContext and Preprocessor must be set."); assert(CompletionAllocator && CompletionTUInfo); assert(ASTNode.OrigD); + auto &SM = ASTCtx->getSourceManager(); + if (!shouldIndexFile(SM.getFileID(Loc))) + return true; // Indexing API puts canonical decl into D, which might not have a valid // source location for implicit/built-in decls. Fallback to original decl in // such cases. @@ -298,7 +301,6 @@ // Mark D as referenced if this is a reference coming from the main file. // D may not be an interesting symbol, but it's cheaper to check at the end. - auto &SM = ASTCtx->getSourceManager(); if (Opts.CountReferences && (Roles & static_cast<unsigned>(index::SymbolRole::Reference)) && SM.getFileID(SM.getSpellingLoc(Loc)) == SM.getMainFileID()) @@ -405,6 +407,9 @@ return true; const auto &SM = PP->getSourceManager(); + if (!shouldIndexFile(SM.getFileID(Loc))) + return true; + auto DefLoc = MI->getDefinitionLoc(); // Also avoid storing predefined macros like __DBL_MIN__. if (SM.isWrittenInBuiltinFile(DefLoc))
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits