diff --git a/interpreter/llvm-project/llvm-project.tag b/interpreter/llvm-project/llvm-project.tag index 5237ff86dc1f2..a7f7e0b9b7783 100644 --- a/interpreter/llvm-project/llvm-project.tag +++ b/interpreter/llvm-project/llvm-project.tag @@ -1,2 +1 @@ -ROOT-llvm22-20260619-01 - +ROOT-llvm22-20260804-01 diff --git a/interpreter/llvm-project/llvm/lib/TableGen/Main.cpp b/interpreter/llvm-project/llvm/lib/TableGen/Main.cpp index ec4579f378dcb..99994f06c5512 100644 --- a/interpreter/llvm-project/llvm/lib/TableGen/Main.cpp +++ b/interpreter/llvm-project/llvm/lib/TableGen/Main.cpp @@ -97,6 +97,16 @@ static int createDependencyFile(const TGParser &Parser, const char *argv0) { return reportError(argv0, "error opening " + DependFilename + ":" + EC.message() + "\n"); DepOut.os() << OutputFilename << ":"; + + // Emit the primary input file as a dependency. This matches C compilers like + // Clang and GCC. Without it, a .td file with no `include` directives would + // produce a depfile listing zero dependencies. CMake's + // `cmake_transform_depfile` then collapses that to a 0-byte file, which Ninja + // treats as a missing depfile and re-runs the rule on every incremental + // build. + if (InputFilename != "-") + DepOut.os() << ' ' << InputFilename; + for (const auto &Dep : Parser.getDependencies()) { DepOut.os() << ' ' << Dep; }