@@ -869,9 +869,10 @@ struct ConversionPatternRewriterImpl : public RewriterBase::Listener {
869
869
// / Append a rewrite. Rewrites are committed upon success and rolled back upon
870
870
// / failure.
871
871
template <typename RewriteTy, typename ... Args>
872
- void appendRewrite (Args &&...args) {
872
+ RewriteTy * appendRewrite (Args &&...args) {
873
873
rewrites.push_back (
874
874
std::make_unique<RewriteTy>(*this , std::forward<Args>(args)...));
875
+ return static_cast <RewriteTy *>(rewrites.back ().get ());
875
876
}
876
877
877
878
// / Undo the rewrites (motions, splits) one by one in reverse order until
@@ -1181,7 +1182,6 @@ UnresolvedMaterializationRewrite::UnresolvedMaterializationRewrite(
1181
1182
mappedValues(std::move(mappedValues)) {
1182
1183
assert ((!originalType || kind == MaterializationKind::Target) &&
1183
1184
" original type is valid only for target materializations" );
1184
- rewriterImpl.unresolvedMaterializations [op] = this ;
1185
1185
}
1186
1186
1187
1187
void UnresolvedMaterializationRewrite::rollback () {
@@ -1471,8 +1471,9 @@ ValueRange ConversionPatternRewriterImpl::buildUnresolvedMaterialization(
1471
1471
mapping.map (valuesToMap, convertOp.getResults ());
1472
1472
if (castOp)
1473
1473
*castOp = convertOp;
1474
- appendRewrite<UnresolvedMaterializationRewrite>(
1475
- convertOp, converter, kind, originalType, std::move (valuesToMap));
1474
+ unresolvedMaterializations[convertOp] =
1475
+ appendRewrite<UnresolvedMaterializationRewrite>(
1476
+ convertOp, converter, kind, originalType, std::move (valuesToMap));
1476
1477
return convertOp.getResults ();
1477
1478
}
1478
1479
0 commit comments