aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Springer <me@m-sp.org>2025-06-18 09:50:40 +0000
committerMatthias Springer <me@m-sp.org>2025-06-20 10:13:54 +0000
commit8371d783d5a474c42ed8f58294a66f1fd68a4fb4 (patch)
treea5a8e5bb31708b9e58c2328980e165a0f443eb16
parent95bd05d7cae327e431ccdaf0a452a0573ade5357 (diff)
downloadllvm-users/matthias-springer/unres_rew.zip
llvm-users/matthias-springer/unres_rew.tar.gz
llvm-users/matthias-springer/unres_rew.tar.bz2
[mlir][Transforms][NFC] Dialect Conversion: Manually push rewrite onto stackusers/matthias-springer/unres_rew
-rw-r--r--mlir/lib/Transforms/Utils/DialectConversion.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/mlir/lib/Transforms/Utils/DialectConversion.cpp b/mlir/lib/Transforms/Utils/DialectConversion.cpp
index 3b669f5..623cb81 100644
--- a/mlir/lib/Transforms/Utils/DialectConversion.cpp
+++ b/mlir/lib/Transforms/Utils/DialectConversion.cpp
@@ -869,9 +869,10 @@ struct ConversionPatternRewriterImpl : public RewriterBase::Listener {
/// Append a rewrite. Rewrites are committed upon success and rolled back upon
/// failure.
template <typename RewriteTy, typename... Args>
- void appendRewrite(Args &&...args) {
+ RewriteTy *appendRewrite(Args &&...args) {
rewrites.push_back(
std::make_unique<RewriteTy>(*this, std::forward<Args>(args)...));
+ return static_cast<RewriteTy *>(rewrites.back().get());
}
/// Undo the rewrites (motions, splits) one by one in reverse order until
@@ -1181,7 +1182,6 @@ UnresolvedMaterializationRewrite::UnresolvedMaterializationRewrite(
mappedValues(std::move(mappedValues)) {
assert((!originalType || kind == MaterializationKind::Target) &&
"original type is valid only for target materializations");
- rewriterImpl.unresolvedMaterializations[op] = this;
}
void UnresolvedMaterializationRewrite::rollback() {
@@ -1471,8 +1471,9 @@ ValueRange ConversionPatternRewriterImpl::buildUnresolvedMaterialization(
mapping.map(valuesToMap, convertOp.getResults());
if (castOp)
*castOp = convertOp;
- appendRewrite<UnresolvedMaterializationRewrite>(
- convertOp, converter, kind, originalType, std::move(valuesToMap));
+ unresolvedMaterializations[convertOp] =
+ appendRewrite<UnresolvedMaterializationRewrite>(
+ convertOp, converter, kind, originalType, std::move(valuesToMap));
return convertOp.getResults();
}