================ @@ -2546,87 +2522,61 @@ static Operation *findLiveUserOfReplaced( return nullptr; } -LogicalResult OperationConverter::legalizeConvertedOpResultTypes( - ConversionPatternRewriter &rewriter, - ConversionPatternRewriterImpl &rewriterImpl, - DenseMap<Value, SmallVector<Value>> &inverseMapping) { - // Process requested operation replacements. - for (unsigned i = 0; i < rewriterImpl.rewrites.size(); ++i) { - auto *opReplacement = - dyn_cast<ReplaceOperationRewrite>(rewriterImpl.rewrites[i].get()); - if (!opReplacement) - continue; - Operation *op = opReplacement->getOperation(); - for (OpResult result : op->getResults()) { - // If the type of this op result changed and the result is still live, - // we need to materialize a conversion. - if (rewriterImpl.mapping.lookupOrNull(result, result.getType())) +/// Helper function that returns the replaced values and the type converter if +/// the given rewrite object is an "operation replacement" or a "block type +/// conversion" (which corresponds to a "block replacement"). Otherwise, return +/// an empty ValueRange and a null type converter pointer. +static std::pair<ValueRange, const TypeConverter *> +getReplacedValues(IRRewrite *rewrite) { + if (auto *opRewrite = dyn_cast<ReplaceOperationRewrite>(rewrite)) + return std::make_pair(opRewrite->getOperation()->getResults(), + opRewrite->getConverter()); + if (auto *blockRewrite = dyn_cast<BlockTypeConversionRewrite>(rewrite)) + return std::make_pair(blockRewrite->getOrigBlock()->getArguments(), + blockRewrite->getConverter()); + return std::make_pair(ValueRange(), nullptr); +} + +LogicalResult +OperationConverter::finalize(ConversionPatternRewriter &rewriter) { + ConversionPatternRewriterImpl &rewriterImpl = rewriter.getImpl(); + DenseMap<Value, SmallVector<Value>> inverseMapping = + rewriterImpl.mapping.getInverse(); + + // Process requested value replacements. + for (unsigned i = 0, e = rewriterImpl.rewrites.size(); i < e; ++i) { ---------------- kuhar wrote:
Nit: use range for? I don't see `i` being use outside of indexing into `rewriters`. https://github.com/llvm/llvm-project/pull/108381 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits