[Mlir-commits] [mlir] [MLIR] Properly add operations to blocks during `createOrFold` (PR #70010)
Matthias Springer
llvmlistbot at llvm.org
Tue Oct 24 00:50:37 PDT 2023
================
@@ -504,18 +504,20 @@ class OpBuilder : public Builder {
template <typename OpTy, typename... Args>
void createOrFold(SmallVectorImpl<Value> &results, Location location,
Args &&...args) {
- // Create the operation without using 'create' as we don't want to
- // insert it yet.
+ // Create the operation without using 'create' as we want to control when
+ // the listener is notified.
OperationState state(location,
getCheckRegisteredInfo<OpTy>(location.getContext()));
OpTy::build(*this, state, std::forward<Args>(args)...);
Operation *op = Operation::create(state);
+ if (block)
+ block->getOperations().insert(insertPoint, op);
- // Fold the operation. If successful destroy it, otherwise insert it.
+ // Fold the operation. If successful destroy it, otherwise notify.
----------------
matthias-springer wrote:
`destroy` -> `erase`
https://github.com/llvm/llvm-project/pull/70010
More information about the Mlir-commits
mailing list