[Mlir-commits] [mlir] [MLIR][LLVMIR][NFC] Drop uses of BranchInst (PR #187304)
Alexis Engelke
llvmlistbot at llvm.org
Wed Mar 18 08:46:14 PDT 2026
https://github.com/aengelke updated https://github.com/llvm/llvm-project/pull/187304
>From cba367c7532c0799d57603619281d43b062185e3 Mon Sep 17 00:00:00 2001
From: Alexis Engelke <engelke at in.tum.de>
Date: Wed, 18 Mar 2026 15:30:09 +0000
Subject: [PATCH 1/2] [MLIR][LLVMIR][NFC] Drop uses of BranchInst
---
.../Dialect/LLVMIR/LLVMToLLVMIRTranslation.cpp | 4 ++--
.../OpenACC/OpenACCToLLVMIRTranslation.cpp | 2 +-
.../OpenMP/OpenMPToLLVMIRTranslation.cpp | 17 +++++++----------
3 files changed, 10 insertions(+), 13 deletions(-)
diff --git a/mlir/lib/Target/LLVMIR/Dialect/LLVMIR/LLVMToLLVMIRTranslation.cpp b/mlir/lib/Target/LLVMIR/Dialect/LLVMIR/LLVMToLLVMIRTranslation.cpp
index e60a682b42ea1..8c3680033b2b9 100644
--- a/mlir/lib/Target/LLVMIR/Dialect/LLVMIR/LLVMToLLVMIRTranslation.cpp
+++ b/mlir/lib/Target/LLVMIR/Dialect/LLVMIR/LLVMToLLVMIRTranslation.cpp
@@ -685,14 +685,14 @@ convertOperationImpl(Operation &opInst, llvm::IRBuilderBase &builder,
// Emit branches. We need to look up the remapped blocks and ignore the
// block arguments that were transformed into PHI nodes.
if (auto brOp = dyn_cast<LLVM::BrOp>(opInst)) {
- llvm::BranchInst *branch =
+ llvm::UncondBrInst *branch =
builder.CreateBr(moduleTranslation.lookupBlock(brOp.getSuccessor()));
moduleTranslation.mapBranch(&opInst, branch);
moduleTranslation.setLoopMetadata(&opInst, branch);
return success();
}
if (auto condbrOp = dyn_cast<LLVM::CondBrOp>(opInst)) {
- llvm::BranchInst *branch = builder.CreateCondBr(
+ llvm::CondBrInst *branch = builder.CreateCondBr(
moduleTranslation.lookupValue(condbrOp.getOperand(0)),
moduleTranslation.lookupBlock(condbrOp.getSuccessor(0)),
moduleTranslation.lookupBlock(condbrOp.getSuccessor(1)));
diff --git a/mlir/lib/Target/LLVMIR/Dialect/OpenACC/OpenACCToLLVMIRTranslation.cpp b/mlir/lib/Target/LLVMIR/Dialect/OpenACC/OpenACCToLLVMIRTranslation.cpp
index 97c6b4e25542d..9bb6939043621 100644
--- a/mlir/lib/Target/LLVMIR/Dialect/OpenACC/OpenACCToLLVMIRTranslation.cpp
+++ b/mlir/lib/Target/LLVMIR/Dialect/OpenACC/OpenACCToLLVMIRTranslation.cpp
@@ -383,7 +383,7 @@ static LogicalResult convertDataOp(acc::DataOp &op,
auto afterDataRegion = builder.saveIP();
- llvm::BranchInst *sourceTerminator = builder.CreateBr(entryBlock);
+ llvm::UncondBrInst *sourceTerminator = builder.CreateBr(entryBlock);
builder.restoreIP(afterDataRegion);
llvm::BasicBlock *endDataBlock = llvm::BasicBlock::Create(
diff --git a/mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp b/mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
index 37b1a37c2e1a5..3449445816510 100644
--- a/mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
+++ b/mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
@@ -2130,7 +2130,7 @@ buildDependData(std::optional<ArrayAttr> dependKinds, OperandRange dependVars,
/// The terminator will need to be fixed to branch to the correct block to
/// cleanup the construct.
static void
-pushCancelFinalizationCB(SmallVectorImpl<llvm::BranchInst *> &cancelTerminators,
+pushCancelFinalizationCB(SmallVectorImpl<llvm::UncondBrInst *> &cancelTerminators,
llvm::IRBuilderBase &llvmBuilder,
llvm::OpenMPIRBuilder &ompBuilder, mlir::Operation *op,
llvm::omp::Directive cancelDirective) {
@@ -2160,16 +2160,13 @@ pushCancelFinalizationCB(SmallVectorImpl<llvm::BranchInst *> &cancelTerminators,
/// is immediately before the continuation block. Now this finalization has
/// been created we can fix the branch.
static void
-popCancelFinalizationCB(const ArrayRef<llvm::BranchInst *> cancelTerminators,
+popCancelFinalizationCB(const ArrayRef<llvm::UncondBrInst *> cancelTerminators,
llvm::OpenMPIRBuilder &ompBuilder,
const llvm::OpenMPIRBuilder::InsertPointTy &afterIP) {
ompBuilder.popFinalizationCB();
llvm::BasicBlock *constructFini = afterIP.getBlock()->getSinglePredecessor();
- for (llvm::BranchInst *cancelBranch : cancelTerminators) {
- assert(cancelBranch->getNumSuccessors() == 1 &&
- "cancel branch should have one target");
- cancelBranch->setSuccessor(0, constructFini);
- }
+ for (llvm::UncondBrInst *cancelBranch : cancelTerminators)
+ cancelBranch->setSuccessor(constructFini);
}
namespace {
@@ -2811,7 +2808,7 @@ convertOmpTaskOp(omp::TaskOp taskOp, llvm::IRBuilderBase &builder,
};
llvm::OpenMPIRBuilder &ompBuilder = *moduleTranslation.getOpenMPBuilder();
- SmallVector<llvm::BranchInst *> cancelTerminators;
+ SmallVector<llvm::UncondBrInst *> cancelTerminators;
// The directive to match here is OMPD_taskgroup because it is the taskgroup
// which is canceled. This is handled here because it is the task's cleanup
// block which should be branched to.
@@ -3197,7 +3194,7 @@ convertOmpTaskloopOp(Operation &opInst, llvm::IRBuilderBase &builder,
taskDupOrNull = taskDupCB;
llvm::OpenMPIRBuilder &ompBuilder = *moduleTranslation.getOpenMPBuilder();
- SmallVector<llvm::BranchInst *> cancelTerminators;
+ SmallVector<llvm::UncondBrInst *> cancelTerminators;
// The directive to match here is OMPD_taskgroup because it is the
// taskgroup which is canceled. This is handled here because it is the
// task's cleanup block which should be branched to. It doesn't depend upon
@@ -3365,7 +3362,7 @@ convertOmpWsloop(Operation &opInst, llvm::IRBuilderBase &builder,
? llvm::omp::WorksharingLoopType::DistributeForStaticLoop
: llvm::omp::WorksharingLoopType::ForStaticLoop;
- SmallVector<llvm::BranchInst *> cancelTerminators;
+ SmallVector<llvm::UncondBrInst *> cancelTerminators;
pushCancelFinalizationCB(cancelTerminators, builder, *ompBuilder, wsloopOp,
llvm::omp::Directive::OMPD_for);
>From 0df3ec7e00f7340df4411412a90459f6607b4114 Mon Sep 17 00:00:00 2001
From: Alexis Engelke <engelke at in.tum.de>
Date: Wed, 18 Mar 2026 15:45:59 +0000
Subject: [PATCH 2/2] clang-format
---
.../LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp b/mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
index 3449445816510..42fdadaba0da1 100644
--- a/mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
+++ b/mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp
@@ -2129,11 +2129,10 @@ buildDependData(std::optional<ArrayAttr> dependKinds, OperandRange dependVars,
/// if there is cancellation inside of the taskgroup body.
/// The terminator will need to be fixed to branch to the correct block to
/// cleanup the construct.
-static void
-pushCancelFinalizationCB(SmallVectorImpl<llvm::UncondBrInst *> &cancelTerminators,
- llvm::IRBuilderBase &llvmBuilder,
- llvm::OpenMPIRBuilder &ompBuilder, mlir::Operation *op,
- llvm::omp::Directive cancelDirective) {
+static void pushCancelFinalizationCB(
+ SmallVectorImpl<llvm::UncondBrInst *> &cancelTerminators,
+ llvm::IRBuilderBase &llvmBuilder, llvm::OpenMPIRBuilder &ompBuilder,
+ mlir::Operation *op, llvm::omp::Directive cancelDirective) {
auto finiCB = [&](llvm::OpenMPIRBuilder::InsertPointTy ip) -> llvm::Error {
llvm::IRBuilderBase::InsertPointGuard guard(llvmBuilder);
More information about the Mlir-commits
mailing list