summaryrefslogtreecommitdiff
path: root/mlir/lib/Conversion/ControlFlowToLLVM/ControlFlowToLLVM.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'mlir/lib/Conversion/ControlFlowToLLVM/ControlFlowToLLVM.cpp')
-rw-r--r--mlir/lib/Conversion/ControlFlowToLLVM/ControlFlowToLLVM.cpp17
1 files changed, 7 insertions, 10 deletions
diff --git a/mlir/lib/Conversion/ControlFlowToLLVM/ControlFlowToLLVM.cpp b/mlir/lib/Conversion/ControlFlowToLLVM/ControlFlowToLLVM.cpp
index 88a8b7fb185c..13a084407e53 100644
--- a/mlir/lib/Conversion/ControlFlowToLLVM/ControlFlowToLLVM.cpp
+++ b/mlir/lib/Conversion/ControlFlowToLLVM/ControlFlowToLLVM.cpp
@@ -138,11 +138,12 @@ struct BranchOpLowering : public ConvertOpToLLVMPattern<cf::BranchOp> {
TypeRange(adaptor.getOperands()));
if (failed(convertedBlock))
return failure();
+ DictionaryAttr attrs = op->getAttrDictionary();
Operation *newOp = rewriter.replaceOpWithNewOp<LLVM::BrOp>(
op, adaptor.getOperands(), *convertedBlock);
// TODO: We should not just forward all attributes like that. But there are
// existing Flang tests that depend on this behavior.
- newOp->setAttrs(op->getAttrDictionary());
+ newOp->setAttrs(attrs);
return success();
}
};
@@ -166,18 +167,14 @@ struct CondBranchOpLowering : public ConvertOpToLLVMPattern<cf::CondBranchOp> {
TypeRange(adaptor.getFalseDestOperands()));
if (failed(convertedFalseBlock))
return failure();
+ DictionaryAttr attrs = op->getAttrDictionary();
auto newOp = rewriter.replaceOpWithNewOp<LLVM::CondBrOp>(
- op, adaptor.getCondition(), *convertedTrueBlock,
- adaptor.getTrueDestOperands(), *convertedFalseBlock,
- adaptor.getFalseDestOperands());
- ArrayRef<int32_t> weights = op.getWeights();
- if (!weights.empty()) {
- newOp.setWeights(weights);
- op.removeBranchWeightsAttr();
- }
+ op, adaptor.getCondition(), adaptor.getTrueDestOperands(),
+ adaptor.getFalseDestOperands(), op.getBranchWeightsAttr(),
+ *convertedTrueBlock, *convertedFalseBlock);
// TODO: We should not just forward all attributes like that. But there are
// existing Flang tests that depend on this behavior.
- newOp->setAttrs(op->getAttrDictionary());
+ newOp->setAttrs(attrs);
return success();
}
};