@@ -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
};
@@ -273,8 +270,9 @@ class CreateBlockRewrite : public BlockRewrite {
273
270
auto &blockOps = block->getOperations ();
274
271
while (!blockOps.empty ())
275
272
blockOps.remove (blockOps.begin ());
273
+ block->dropAllUses ();
276
274
if (block->getParent ())
277
- eraseBlock ( block);
275
+ block-> erase ( );
278
276
else
279
277
delete block;
280
278
}
@@ -858,7 +856,7 @@ struct ConversionPatternRewriterImpl : public RewriterBase::Listener {
858
856
void notifyBlockErased (Block *block) override { erased.insert (block); }
859
857
860
858
// / Pointers to all erased operations and blocks.
861
- SetVector <void *> erased;
859
+ DenseSet <void *> erased;
862
860
};
863
861
864
862
// ===--------------------------------------------------------------------===//
@@ -1044,15 +1042,15 @@ void CreateOperationRewrite::rollback() {
1044
1042
region.getBlocks ().remove (region.getBlocks ().begin ());
1045
1043
}
1046
1044
op->dropAllUses ();
1047
- eraseOp (op );
1045
+ op-> erase ( );
1048
1046
}
1049
1047
1050
1048
void UnresolvedMaterializationRewrite::rollback () {
1051
1049
if (getMaterializationKind () == MaterializationKind::Target) {
1052
1050
for (Value input : op->getOperands ())
1053
1051
rewriterImpl.mapping .erase (input);
1054
1052
}
1055
- eraseOp (op );
1053
+ op-> erase ( );
1056
1054
}
1057
1055
1058
1056
void UnresolvedMaterializationRewrite::cleanup () { eraseOp (op); }
@@ -1069,8 +1067,7 @@ void ConversionPatternRewriterImpl::applyRewrites() {
1069
1067
// State Management
1070
1068
1071
1069
RewriterState ConversionPatternRewriterImpl::getCurrentState () {
1072
- return RewriterState (rewrites.size (), ignoredOps.size (),
1073
- eraseRewriter.erased .size (), replacedOps.size ());
1070
+ return RewriterState (rewrites.size (), ignoredOps.size (), replacedOps.size ());
1074
1071
}
1075
1072
1076
1073
void ConversionPatternRewriterImpl::resetState (RewriterState state) {
@@ -1081,9 +1078,6 @@ void ConversionPatternRewriterImpl::resetState(RewriterState state) {
1081
1078
while (ignoredOps.size () != state.numIgnoredOperations )
1082
1079
ignoredOps.pop_back ();
1083
1080
1084
- while (eraseRewriter.erased .size () != state.numErased )
1085
- eraseRewriter.erased .pop_back ();
1086
-
1087
1081
while (replacedOps.size () != state.numReplacedOps )
1088
1082
replacedOps.pop_back ();
1089
1083
}
0 commit comments