diff --git a/mlir/lib/Transforms/Utils/DialectConversion.cpp b/mlir/lib/Transforms/Utils/DialectConversion.cpp --- a/mlir/lib/Transforms/Utils/DialectConversion.cpp +++ b/mlir/lib/Transforms/Utils/DialectConversion.cpp @@ -1211,13 +1211,15 @@ void ConversionPatternRewriterImpl::notifyRegionIsBeingInlinedBefore( Region ®ion, Region &parent, Region::iterator before) { - Block *origPrevBlock = nullptr; - for (auto &pair : llvm::enumerate(region)) { - Block &block = pair.value(); + if (region.getBlocks().empty()) + return; + Block *laterBlock = ®ion.back(); + for (auto &earlierBlock : llvm::drop_begin(llvm::reverse(region), 1)) { blockActions.push_back( - BlockAction::getMove(&block, {®ion, origPrevBlock})); - origPrevBlock = █ + BlockAction::getMove(laterBlock, {®ion, &earlierBlock})); + laterBlock = &earlierBlock; } + blockActions.push_back(BlockAction::getMove(laterBlock, {®ion, nullptr})); } void ConversionPatternRewriterImpl::notifyRegionWasClonedBefore(