[clang] [CIR] Add MLIR diagnostic handler ahead of verification (PR #165838)
via cfe-commits
cfe-commits at lists.llvm.org
Fri Oct 31 01:39:41 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang
Author: Morris Hafner (mmha)
<details>
<summary>Changes</summary>
This enables clang to print out diagnostics that point to both the C++ source in the error and the incorrect CIR in the notes.
---
Full diff: https://github.com/llvm/llvm-project/pull/165838.diff
1 Files Affected:
- (modified) clang/lib/CIR/FrontendAction/CIRGenAction.cpp (+12-3)
``````````diff
diff --git a/clang/lib/CIR/FrontendAction/CIRGenAction.cpp b/clang/lib/CIR/FrontendAction/CIRGenAction.cpp
index 67bb5657d4001..ae244d785631b 100644
--- a/clang/lib/CIR/FrontendAction/CIRGenAction.cpp
+++ b/clang/lib/CIR/FrontendAction/CIRGenAction.cpp
@@ -95,6 +95,18 @@ class CIRGenConsumer : public clang::ASTConsumer {
void HandleTranslationUnit(ASTContext &C) override {
Gen->HandleTranslationUnit(C);
+ mlir::ModuleOp MlirModule = Gen->getModule();
+ mlir::MLIRContext &MlirCtx = Gen->getMLIRContext();
+
+ SourceManager &ClangSourceMgr = C.getSourceManager();
+ FileID MainFileID = ClangSourceMgr.getMainFileID();
+ std::unique_ptr<llvm::MemoryBuffer> FileBuf =
+ llvm::MemoryBuffer::getMemBuffer(
+ ClangSourceMgr.getBufferOrFake(MainFileID));
+ llvm::SourceMgr MlirSourceMgr;
+ MlirSourceMgr.AddNewSourceBuffer(std::move(FileBuf), llvm::SMLoc());
+ mlir::SourceMgrDiagnosticHandler DiagnosticHandler(MlirSourceMgr, &MlirCtx);
+
if (!FEOptions.ClangIRDisableCIRVerifier) {
if (!Gen->verifyModule()) {
CI.getDiagnostics().Report(
@@ -105,9 +117,6 @@ class CIRGenConsumer : public clang::ASTConsumer {
}
}
- mlir::ModuleOp MlirModule = Gen->getModule();
- mlir::MLIRContext &MlirCtx = Gen->getMLIRContext();
-
if (!FEOptions.ClangIRDisablePasses) {
// Setup and run CIR pipeline.
if (runCIRToCIRPasses(MlirModule, MlirCtx, C,
``````````
</details>
https://github.com/llvm/llvm-project/pull/165838
More information about the cfe-commits
mailing list