[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