[clang] [CIR] Add CIRGenUtils.h for shared CIR codegen utilities (PR #172735)
Andrzej Warzyński via cfe-commits
cfe-commits at lists.llvm.org
Mon Jan 5 10:24:36 PST 2026
banach-space wrote:
Hi folks, thanks for the feedback, and sorry for the delay getting back to this.
It sounds like there is general agreement that having a place for shared code would be useful, but it’s not yet clear what that place should be. I don’t have a strong opinion myself—I’m still relatively new to ClangIR and would like a bit more time to see what common patterns emerge.
As a data point, here are some examples from MLIR. Many dialects there include a Utils.cpp file, for example:
* https://github.com/llvm/llvm-project/blob/main/mlir/lib/Dialect/Affine/Utils/Utils.cpp
* https://github.com/llvm/llvm-project/blob/main/mlir/lib/Dialect/Linalg/Utils/Utils.cpp
* https://github.com/llvm/llvm-project/blob/main/mlir/lib/Dialect/Vector/Utils/VectorUtils.cpp
One benefit of this approach is that it provides a clear home for shared functionality that doesn’t obviously belong anywhere else. This is how I’m thinking about the newly added file in this PR.
> We could also consider making this particular function a member of CIRGenBuilderTy.
This raises a broader question for me about the intended role of `CIRGenBuilderTy`. It already contains a number of “op builder” helpers, but some of them (e.g. [createVecShuffle](https://github.com/llvm/llvm-project/blob/188507e54218c91832714fc50b24bd2fc2fd9383/clang/lib/CIR/CodeGen/CIRGenBuilder.h?plain=1#L643-L651)
) only require access to a builder - similar to the proposed `emitIntrinsicCallOp` that I am adding here.
I’m not arguing against placing this functionality in `CIRGenBuilderTy`; rather, I’m trying to better understand the design intent and where the line is drawn. Any guidance or pointers would be very helpful 😅
Thanks!
https://github.com/llvm/llvm-project/pull/172735
More information about the cfe-commits
mailing list