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 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,