================
@@ -48,6 +64,23 @@ static llvm::cl::list<std::string> QueryDriverGlobs{
     llvm::cl::CommaSeparated,
 };
 
+static llvm::cl::opt<std::string> ProjectRoot{
+    "project-root",
+    llvm::cl::desc(
+        "Path to the project root for --index-type=sharded. "
+        "Determines where to store index shards. Shards are stored in "
+        "<project-root>/.cache/clangd/index/. "
+        "Defaults to current directory if not specified."),
+};
+
+// Tracks the content digest of the last shard written for a given file.
+// Used to avoid writing duplicate shards when multiple TUs include the same
+// header.
+struct ShardVersion {
----------------
HighCommander4 wrote:

This struct should have a `HadErrors` field, like the [background index 
version](https://searchfox.org/llvm/rev/aff1ba103ab3006242c72af33420a3437f4ff1db/clang-tools-extra/clangd/index/Background.h#188-191).

(In fact, I'd recommend just moving the background indexer's struct to 
namespace scope in Background.h and reusing it.)

This is important: if a header fails to compile in the context of one 
translation unit, the contents in its shard are likely to be incorrect or 
partially complete; if we don't mark it as `HadErrors`, then we lose the 
opportunity to update the shard if the same header does compile in the context 
of another translation unit.

https://github.com/llvm/llvm-project/pull/175209
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to