[clang] [CIR][CMake] Add missing MLIR tablegen dependencies to CIR libraries (PR #235185)
Konstantinos Parasyris via cfe-commits
cfe-commits at lists.llvm.org
Fri Oct 23 19:33:01 PDT 2026
https://github.com/koparasy created https://github.com/llvm/llvm-project/pull/235185
ClangIR libraries include MLIR and CIR headers that need tablegen-generated `.inc` files, but nothing makes their objects wait for those files. These libraries list `MLIRIR` and friends under a bare `LINK_LIBS`, so the generated headers have to come from `DEPENDS`, and the existing `DEPENDS` lists are incomplete.
In a cold build (no `.ninja_deps`), this is a race. A parallel build can compile these objects before the headers exist:
```
fatal error: mlir/IR/BuiltinTypeInterfaces.h.inc: No such file or directory
```
It is rarely seen because incremental builds remember the header dependency, and a full `ninja` usually generates the headers in time through other libraries that do depend on them. It started showing up on a ccache'd downstream bot after ClangIR was enabled by default (#221291).
Deterministic repro on a fresh build directory:
```
cmake -G Ninja -S llvm -B build
-DLLVM_ENABLE_PROJECTS=clang DCLANG_ENABLE_CIR=ON
ninja -C build obj.MLIRCIRInterfaces
```
`obj.clangCIRLoweringCommon`, `obj.clangCIRLoweringDirectToLLVM` and `obj.clangCIRFrontendAction` fail the same way.
Fix:
- Add `mlir-headers` to `DEPENDS` of those four libraries. This matches MLIR's own `add_mlir_dialect_library`/`add_mlir_conversion_library` convention. `mlir-generic-headers` is not enough: it misses dialect headers that CIR includes, such as Ptr's `MemorySpaceAttrInterfaces.h.inc` and LLVMIR's `LLVMTypeInterfaces.h.inc`.
- Add `MLIRCIRPassIncGen` to `clangCIRLoweringCommon` and `clangCIRLoweringDirectToLLVM`. Both include `clang/CIR/Dialect/Passes.h`, which needs the generated `Passes.h.inc`.
Tested by building each of the 12 CIR object libraries as its only target, starting from a clean build directory each time. Without this change, the four libraries above fail. With it, all 12 build.
>From 35e93463e824213b8a1b3b8a23f4540807161e7a Mon Sep 17 00:00:00 2001
From: Konstantinos Parasyris <konstantinos.parasyris at intel.com>
Date: Fri, 23 Oct 2026 19:23:40 -0700
Subject: [PATCH] [CIR][CMake] Add missing MLIR tablegen dependencies to CIR
libraries
---
clang/lib/CIR/FrontendAction/CMakeLists.txt | 1 +
clang/lib/CIR/Interfaces/CMakeLists.txt | 1 +
clang/lib/CIR/Lowering/CMakeLists.txt | 2 ++
clang/lib/CIR/Lowering/DirectToLLVM/CMakeLists.txt | 2 ++
4 files changed, 6 insertions(+)
diff --git a/clang/lib/CIR/FrontendAction/CMakeLists.txt b/clang/lib/CIR/FrontendAction/CMakeLists.txt
index f83e5b04b9ada..411f1acc5f2b0 100644
--- a/clang/lib/CIR/FrontendAction/CMakeLists.txt
+++ b/clang/lib/CIR/FrontendAction/CMakeLists.txt
@@ -16,6 +16,7 @@ add_clang_library(clangCIRFrontendAction
MLIRBuiltinLocationAttributesIncGen
MLIRBytecodeOpInterfaceIncGen
MLIRBuiltinOpsIncGen
+ mlir-headers
LINK_LIBS
clangAST
diff --git a/clang/lib/CIR/Interfaces/CMakeLists.txt b/clang/lib/CIR/Interfaces/CMakeLists.txt
index 960dd0dcca5f4..5665bccf55ca0 100644
--- a/clang/lib/CIR/Interfaces/CMakeLists.txt
+++ b/clang/lib/CIR/Interfaces/CMakeLists.txt
@@ -25,6 +25,7 @@ add_clang_library(MLIRCIRInterfaces
MLIRInferTypeOpInterfaceIncGen
MLIRLoopLikeInterfaceIncGen
MLIRSideEffectInterfacesIncGen
+ mlir-headers
LINK_LIBS
MLIRIR
diff --git a/clang/lib/CIR/Lowering/CMakeLists.txt b/clang/lib/CIR/Lowering/CMakeLists.txt
index 93ca5436d96f9..5a3171b22168d 100644
--- a/clang/lib/CIR/Lowering/CMakeLists.txt
+++ b/clang/lib/CIR/Lowering/CMakeLists.txt
@@ -10,6 +10,8 @@ add_clang_library(clangCIRLoweringCommon
DEPENDS
MLIRBuiltinLocationAttributesIncGen
MLIRBytecodeOpInterfaceIncGen
+ MLIRCIRPassIncGen
+ mlir-headers
LINK_LIBS
clangCIR
diff --git a/clang/lib/CIR/Lowering/DirectToLLVM/CMakeLists.txt b/clang/lib/CIR/Lowering/DirectToLLVM/CMakeLists.txt
index ff68221ad59df..9bb9940b0cbd5 100644
--- a/clang/lib/CIR/Lowering/DirectToLLVM/CMakeLists.txt
+++ b/clang/lib/CIR/Lowering/DirectToLLVM/CMakeLists.txt
@@ -16,6 +16,8 @@ add_clang_library(clangCIRLoweringDirectToLLVM
MLIRBuiltinLocationAttributesIncGen
MLIRBytecodeOpInterfaceIncGen
MLIRCIROpInterfacesIncGen
+ MLIRCIRPassIncGen
+ mlir-headers
LINK_LIBS
clangCIRLoweringCommon
More information about the cfe-commits
mailing list