hokein added a comment. @ilya-biryukov thanks for taking it during my OOO, just a drive-by comment :)
================ Comment at: clang-tools-extra/clangd/index/FileIndex.cpp:86 + // Add macro references. + for (const auto &IDToRefs : MacroRefsToIndex->MacroRefs) { + for (const auto &Range : IDToRefs.second) { ---------------- ilya-biryukov wrote: > This is trying to emulate existing logic in `SymbolCollector::finish`. Is > there a way we could share this? > Would avoid creating extra copies of reference slabs and allow to keep the > code in one place, rather than scattering it between `FileIndex.cpp` and > `SymbolCollector.cpp`. Would also allow to keep `toURI` private, meaning we > don't have to worry about naming it and the fact it's exposed in the public > interface. > > One potential way to do this is to have an alternative version of > `handleMacroOccurence`, which would fill `SymbolCollector::MacroRefs` > directly and call this right after `indexTopLevelDecls`. > Would that work? +1 on the concern about performance (this is a hot function, we are paying an extra cost of copying all refs, which should be avoided), and the layering of `toURI`. > One potential way to do this is to have an alternative version of > handleMacroOccurence, which would fill SymbolCollector::MacroRefs directly > and call this right after indexTopLevelDecls. > Would that work? the main problem is that at this point (parsing is finished), preprocessor callback is not available, so we won't see macro references (`SymbolCollector::handleMacroOccurence` will only receive macro definitions). I think two options: - as mentioned above, add alternative version of `handleMacroOccurence` in SymbolCollector, calling it **before** `indexTopLevelDecls` (because `finish` is called in `indexTopLevelDecls` which we have no way to customize); - or we could add a finish callback to the `SymbolCollector` which is called in `SymbolCollector::finish`, and put this logic to the callback. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D71406/new/ https://reviews.llvm.org/D71406 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits