Rework the cache key construction to consider all the arguments used when invoking the query driver.
https://github.com/clangd/clangd/issues/1403
This also reworks handling for -isysroot
https://github.com/clangd/clangd/issues/1404
And adds support for passing through -specs flags to the query driver
https://github.com/clangd/clangd/issues/1410
can we introduce a struct instead?
struct DriverArgs { std::string Driver; bool StandardIncludes = true; bool StandardCXXIncludes = true; bool BuiltinIncludes = true; llvm::StringRef Lang; llvm::StringRef Sysroot; DriverArgs(const tooling::CompileCommand &Cmd); // Traverses the Cmd and infers the bits. llvm::SmallVector<llvm::StringRef> render() const; // we can use canonical versions. };we can also implement hashing based on the struct now and also pass it around.