//===- TestTransformStateExtension.cpp ------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #include "TestTransformStateExtension.h" using namespace mlir; LogicalResult test::TestTransformStateExtension::updateMapping(Operation *previous, Operation *updated) { // Update value handles. The new ops should have at least as many results as // the replacement op. Fewer results are acceptable, if those results are not // mapped to any handle. for (auto r = updated->getNumResults(); r < previous->getNumResults(); ++r) { SmallVector handles; (void)getTransformState().getHandlesForPayloadValue(previous->getResult(r), handles); if (!handles.empty()) return emitError(previous->getLoc()) << "cannot replace an op with another op producing fewer results " "while tracking handles"; } for (auto [oldValue, newValue] : llvm::zip(previous->getResults(), updated->getResults())) if (failed(replacePayloadValue(oldValue, newValue))) return failure(); // Update op handle. return replacePayloadOp(previous, updated); }