@@ -153,19 +153,16 @@ namespace {
153
153
// / This is useful when saving and undoing a set of rewrites.
154
154
struct RewriterState {
155
155
RewriterState (unsigned numRewrites, unsigned numIgnoredOperations,
156
- unsigned numErased, unsigned numReplacedOps)
156
+ unsigned numReplacedOps)
157
157
: numRewrites(numRewrites), numIgnoredOperations(numIgnoredOperations),
158
- numErased (numErased), numReplacedOps(numReplacedOps) {}
158
+ numReplacedOps (numReplacedOps) {}
159
159
160
160
// / The current number of rewrites performed.
161
161
unsigned numRewrites;
162
162
163
163
// / The current number of ignored operations.
164
164
unsigned numIgnoredOperations;
165
165
166
- // / The current number of erased operations/blocks.
167
- unsigned numErased;
168
-
169
166
// / The current number of replaced ops that are scheduled for erasure.
170
167
unsigned numReplacedOps;
171
168
};
@@ -274,8 +271,9 @@ class CreateBlockRewrite : public BlockRewrite {
274
271
auto &blockOps = block->getOperations ();
275
272
while (!blockOps.empty ())
276
273
blockOps.remove (blockOps.begin ());
274
+ block->dropAllUses ();
277
275
if (block->getParent ())
278
- eraseBlock ( block);
276
+ block-> erase ( );
279
277
else
280
278
delete block;
281
279
}
@@ -905,7 +903,7 @@ struct ConversionPatternRewriterImpl : public RewriterBase::Listener {
905
903
void notifyBlockErased (Block *block) override { erased.insert (block); }
906
904
907
905
// / Pointers to all erased operations and blocks.
908
- SetVector <void *> erased;
906
+ DenseSet <void *> erased;
909
907
};
910
908
911
909
// ===--------------------------------------------------------------------===//
@@ -1091,15 +1089,15 @@ void CreateOperationRewrite::rollback() {
1091
1089
region.getBlocks ().remove (region.getBlocks ().begin ());
1092
1090
}
1093
1091
op->dropAllUses ();
1094
- eraseOp (op );
1092
+ op-> erase ( );
1095
1093
}
1096
1094
1097
1095
void UnresolvedMaterializationRewrite::rollback () {
1098
1096
if (getMaterializationKind () == MaterializationKind::Target) {
1099
1097
for (Value input : op->getOperands ())
1100
1098
rewriterImpl.mapping .erase (input);
1101
1099
}
1102
- eraseOp (op );
1100
+ op-> erase ( );
1103
1101
}
1104
1102
1105
1103
void UnresolvedMaterializationRewrite::cleanup () { eraseOp (op); }
@@ -1116,8 +1114,7 @@ void ConversionPatternRewriterImpl::applyRewrites() {
1116
1114
// State Management
1117
1115
1118
1116
RewriterState ConversionPatternRewriterImpl::getCurrentState () {
1119
- return RewriterState (rewrites.size (), ignoredOps.size (),
1120
- eraseRewriter.erased .size (), replacedOps.size ());
1117
+ return RewriterState (rewrites.size (), ignoredOps.size (), replacedOps.size ());
1121
1118
}
1122
1119
1123
1120
void ConversionPatternRewriterImpl::resetState (RewriterState state) {
@@ -1128,9 +1125,6 @@ void ConversionPatternRewriterImpl::resetState(RewriterState state) {
1128
1125
while (ignoredOps.size () != state.numIgnoredOperations )
1129
1126
ignoredOps.pop_back ();
1130
1127
1131
- while (eraseRewriter.erased .size () != state.numErased )
1132
- eraseRewriter.erased .pop_back ();
1133
-
1134
1128
while (replacedOps.size () != state.numReplacedOps )
1135
1129
replacedOps.pop_back ();
1136
1130
}
0 commit comments