[clang] 55ce745 - [CIR] Only load ACC/OMP dialect if they are enabled. (#232434)
via cfe-commits
cfe-commits at lists.llvm.org
Thu Oct 15 12:01:56 PDT 2026
Author: Erich Keane
Date: 2026-10-15T19:01:48Z
New Revision: 55ce745e2a91ef3003cdab50274674d412bdd94c
URL: https://github.com/llvm/llvm-project/commit/55ce745e2a91ef3003cdab50274674d412bdd94c
DIFF: https://github.com/llvm/llvm-project/commit/55ce745e2a91ef3003cdab50274674d412bdd94c.diff
LOG: [CIR] Only load ACC/OMP dialect if they are enabled. (#232434)
This reduces the overall instr count of a ClangIR build without these
languages by ~6%, which seems worth-while.
We DID have to unconditionally load the LLVMDialect, as we previously
were only getting it via the OpenACC dialect transitively.
Added:
Modified:
clang/lib/CIR/CodeGen/CIRGenerator.cpp
Removed:
################################################################################
diff --git a/clang/lib/CIR/CodeGen/CIRGenerator.cpp b/clang/lib/CIR/CodeGen/CIRGenerator.cpp
index c853daac8708e..bc0aed0b01ff0 100644
--- a/clang/lib/CIR/CodeGen/CIRGenerator.cpp
+++ b/clang/lib/CIR/CodeGen/CIRGenerator.cpp
@@ -13,6 +13,7 @@
#include "CIRGenModule.h"
#include "mlir/Dialect/DLTI/DLTI.h"
+#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
#include "mlir/Dialect/OpenACC/OpenACC.h"
#include "mlir/Dialect/OpenMP/OpenMPDialect.h"
#include "mlir/IR/MLIRContext.h"
@@ -50,9 +51,13 @@ void CIRGenerator::Initialize(ASTContext &astContext) {
// MLIR multithreading stays enabled; the CIRDiagnosticHandler is only ever
// invoked from a single thread.
cir::registerAllDialects(*mlirContext);
- mlirContext->loadDialect<mlir::DLTIDialect, cir::CIRDialect>();
- mlirContext->getOrLoadDialect<mlir::acc::OpenACCDialect>();
- mlirContext->getOrLoadDialect<mlir::omp::OpenMPDialect>();
+ mlirContext->loadDialect<mlir::DLTIDialect, mlir::LLVM::LLVMDialect,
+ cir::CIRDialect>();
+ const LangOptions &langOpts = astContext.getLangOpts();
+ if (langOpts.OpenACC)
+ mlirContext->getOrLoadDialect<mlir::acc::OpenACCDialect>();
+ if (langOpts.OpenMP)
+ mlirContext->getOrLoadDialect<mlir::omp::OpenMPDialect>();
cgm = std::make_unique<clang::CIRGen::CIRGenModule>(
*mlirContext.get(), astContext, codeGenOpts, diags);
More information about the cfe-commits
mailing list