[PATCH] D121733: Clean pathnames in FileManager.

Ilya Biryukov via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed May 11 10:37:39 PDT 2022


ilya-biryukov requested changes to this revision.
ilya-biryukov added a comment.
This revision now requires changes to proceed.

Please allow some time for the clangd team to review this before landing.
Changes to filenames used to cause unintended consequences for us before. We switched to using file UIDs since then, but we're still not sure it's not going to break us.

Also see other comments, there are a few important issues.



================
Comment at: clang-tools-extra/clangd/index/CanonicalIncludes.cpp:24
+  static auto *Mappings =
+      new std::array<std::pair<std::string, std::string>, 645>{{
+          {"algorithm", "<algorithm>"},
----------------
Don't specify sizes of arrays explicitly. This is error prone.


================
Comment at: clang-tools-extra/clangd/index/CanonicalIncludes.cpp:546
+          {"include/wordexp.h", "<wordexp.h>"},
+          {"include/x86intrin.h", "<x86intrin.h>"},
+          {"include/xlocale.h", "<cstring>"},
----------------
Why do we change the order of elements here?
Please revert, this increases the diff and is not relevant to the actual change.


================
Comment at: clang-tools-extra/clangd/index/CanonicalIncludes.cpp:670
+      }};
+  auto *HeaderMapping = new llvm::StringMap<llvm::StringRef>(Mappings->size());
+
----------------
This line introduces a memory leak.
Notice how the previous version had a `static` variable.


================
Comment at: clang-tools-extra/clangd/index/CanonicalIncludes.cpp:677
+  };
+  for (auto &p : *Mappings) {
+    Canonicalize(p.first);
----------------
This function is on a critical path. We don't want to pay for `Canonicalize` on every call to it.
Please create a static variable and initialize in a lambda if that's absolutely necessary.
```
static auto *Mapping = []{ StringMap *Mapping = new ...; /* init code*/ return Mapping; }();
```


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D121733



More information about the cfe-commits mailing list