[PATCH] D67172: [clangd] Use pre-populated mappings for standard symbols

Ilya Biryukov via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Sep 9 08:31:00 PDT 2019


ilya-biryukov marked 8 inline comments as done.
ilya-biryukov added inline comments.


================
Comment at: clang-tools-extra/clangd/index/CanonicalIncludes.cpp:41
 
+  if (!SuffixHeaderMapping)
+    return Header;
----------------
sammccall wrote:
> nit: can we write `if (SuffixHeaderMapping) { ... }` for consistency with above?
I'd prefer less nesting to consistency, but happy let me know if you feel that's very important.


================
Comment at: clang-tools-extra/clangd/index/CanonicalIncludes.cpp:84
+  llvm::StringMap<std::string> SuffixHeaderMapping;
+  int MaxSuffixComponents = 0;
+};
----------------
sammccall wrote:
> so this is a constant, and it's 3.
> 
> Can we avoid the calculation/propagation and defining a struct, and just add an assert(llvm::all_of(...)) after the initialization?
The assertion is inside the loop that's adding the mappings instead of `llvm::all_of`. 


================
Comment at: clang-tools-extra/clangd/index/CanonicalIncludes.cpp:758
+void CanonicalIncludes::addSystemHeadersMapping(const LangOptions &Language) {
+  static constexpr std::pair<const char *, const char *> SymbolMap[] = {
+#define SYMBOL(Name, NameSpace, Header) {#NameSpace #Name, #Header},
----------------
sammccall wrote:
> if you want to save CPU, move to the scope where it's used? Lit tests and many interesting subsets will never use C.
Done. Also initialized everything directly as StringMap


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D67172/new/

https://reviews.llvm.org/D67172





More information about the cfe-commits mailing list