[clang-tools-extra] [clangd] Support .clangd command line modifications for C++ modules (PR #122606)

Mikael Holmén via cfe-commits cfe-commits at lists.llvm.org
Wed Jan 22 04:22:18 PST 2025


================
@@ -830,6 +830,16 @@ bool OverlayCDB::setCompileCommand(PathRef File,
   return true;
 }
 
+std::unique_ptr<ProjectModules>
+OverlayCDB::getProjectModules(PathRef File) const {
+  auto MDB = DelegatingCDB::getProjectModules(File);
+  MDB->setCommandMangler([&Mangler = Mangler](tooling::CompileCommand &Command,
+                                              PathRef CommandPath) {
+    Mangler(Command, CommandPath);
+  });
+  return std::move(MDB);
----------------
mikaelholmen wrote:

Hi @petr-polezhaev 

I see that clang (18.1.8) complains on this move:
```
12:29:43 ../llvm-project/clang-tools-extra/clangd/GlobalCompilationDatabase.cpp:840:10: error: moving a local object in a return statement prevents copy elision [-Werror,-Wpessimizing-move]
12:29:43   840 |   return std::move(MDB);
12:29:43       |          ^
12:29:43 ../llvm-project/clang-tools-extra/clangd/GlobalCompilationDatabase.cpp:840:10: note: remove std::move call here
12:29:43   840 |   return std::move(MDB);
12:29:43       |          ^~~~~~~~~~   ~
12:29:43 1 error generated.
```

https://github.com/llvm/llvm-project/pull/122606


More information about the cfe-commits mailing list