[PATCH] D41911: [clangd] Include scanner that finds compile commands for headers.

Manuel Klimek via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed May 8 22:40:30 PDT 2019


klimek added inline comments.


================
Comment at: clangd/IncludeScanner.cpp:75
+  bool WasEmpty = Queue.empty();
+  for (const auto &Cmd : Cmds) {
+    QueueEntry E(Cmd, VFS);
----------------
Usually I'd try to not lock a loop, as a large number of compile commands now blocks other threads for a bit. Fairness might not matter here, though.


================
Comment at: clangd/IncludeScanner.cpp:97
+    auto &Entry = Queue.front();
+    Lock.unlock();
+    process(std::move(Entry));
----------------
I'd find it a bit more idiomatic to have two unique_locked blocks instead (easier to pull out a function when things grow etc), but I see it's annoying to have to default-construct an entry in that case :(
Given that I'd probably pull that into a function, but then we need to communicate Done. Sigh.


================
Comment at: clangd/IncludeScanner.cpp:100
+    Lock.lock();
+    Queue.pop_front();
+    if (Queue.empty()) {
----------------
I'd try to write the code so multiple consumer threads would work - given that process() can't fail, why not pop in the locked session above?


================
Comment at: clangd/IncludeScanner.cpp:131
+  IgnoringDiagConsumer IgnoreDiags;
+  // XXX the VFS working directory is global state, this is unsafe.
+  Cmd.VFS->setCurrentWorkingDirectory(Cmd.Directory);
----------------
I assume that's a note to you that you want to change this?


================
Comment at: clangd/IncludeScanner.cpp:159
+  // When reusing flags, we add an explicit `-x cpp` to override the extension.
+  // TODO: copying CompilerInvocation would avoid this, and is more robust.
+  if (std::find(Cmd.CommandLine.begin(), Cmd.CommandLine.end(), "-x") ==
----------------
Wondering why we can't use one of the tooling abstractions here...


Repository:
  rCTE Clang Tools Extra

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

https://reviews.llvm.org/D41911





More information about the cfe-commits mailing list