[llvm-branch-commits] [mlir] [mlir][Transforms] Support rolling back properties in dialect conversion (PR #82474)
Mehdi Amini via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Wed Feb 21 01:25:38 PST 2024
================
@@ -1002,12 +1002,31 @@ class ModifyOperationRewrite : public OperationRewrite {
: OperationRewrite(Kind::ModifyOperation, rewriterImpl, op),
loc(op->getLoc()), attrs(op->getAttrDictionary()),
operands(op->operand_begin(), op->operand_end()),
- successors(op->successor_begin(), op->successor_end()) {}
+ successors(op->successor_begin(), op->successor_end()) {
+ if (OpaqueProperties prop = op->getPropertiesStorage()) {
+ // Make a copy of the properties.
+ propertiesStorage = operator new(op->getPropertiesStorageSize());
+ OpaqueProperties propCopy(propertiesStorage);
+ op->getName().copyOpProperties(propCopy, prop);
+ }
+ }
static bool classof(const IRRewrite *rewrite) {
return rewrite->getKind() == Kind::ModifyOperation;
}
+ ~ModifyOperationRewrite() override {
+ assert(!propertiesStorage &&
+ "rewrite was neither committed nor rolled back");
+ }
+
+ void commit() override {
+ if (propertiesStorage) {
+ operator delete(propertiesStorage);
----------------
joker-eph wrote:
This needs to call the property destructor
https://github.com/llvm/llvm-project/pull/82474
More information about the llvm-branch-commits
mailing list