@@ -460,9 +460,8 @@ struct RemoveTemporaries
460460 : public imex::impl::RemoveTemporariesBase<RemoveTemporaries> {
461461 void runOnOperation () override {
462462 ::mlir::SmallVector<mlir::Operation *> opsToRemove;
463- getOperation ()->walk ([&](::mlir::CopyOpInterface copyOp) {
464- transform (copyOp, opsToRemove);
465- });
463+ getOperation ()->walk (
464+ [&](::mlir::Operation *copyOp) { transform (copyOp, opsToRemove); });
466465 for (::mlir::Operation *op : opsToRemove) {
467466 if (!op->use_empty ()) {
468467 DEBUG_OP (" RemoveTemporaries" , " cannot remove op" , op)
@@ -477,15 +476,14 @@ struct RemoveTemporaries
477476 }
478477
479478private:
480- void transform (::mlir::CopyOpInterface opi,
479+ void transform (::mlir::Operation * opi,
481480 ::mlir::SmallVector<mlir::Operation *> &opsToRemove) {
482481
483- auto op = opi.getOperation ();
484- auto dst = opi.getTarget ();
485- auto src = opi.getSource ();
486- mlir::IRRewriter rewriter (op->getContext ());
482+ auto dst = opi->getResult (0 );
483+ auto src = opi->getOperand (0 );
484+ mlir::IRRewriter rewriter (opi->getContext ());
487485 DEBUG_MSG (" RemoveTemporaries" , " ------------------------------------------" )
488- DEBUG_OP (" RemoveTemporaries" , " inspecting" , op )
486+ DEBUG_OP (" RemoveTemporaries" , " inspecting" , opi )
489487
490488 auto srcAllocOp = findAllocOp (src);
491489 auto srcDeallocOp = findDeallocOp (src);
@@ -498,7 +496,7 @@ struct RemoveTemporaries
498496 return ;
499497 }
500498 auto allocOpParentReg = srcAllocOp->getParentRegion ();
501- auto copyOpParentReg = op ->getParentRegion ();
499+ auto copyOpParentReg = opi ->getParentRegion ();
502500 DEBUG_OP (" RemoveTemporaries" , " src alloc op" , srcAllocOp)
503501
504502 bool srcIsReturned = findReturn (srcAllocOp->getResult (0 ));
@@ -524,7 +522,7 @@ struct RemoveTemporaries
524522 }
525523 auto &memrefAlias = getAnalysis<mlir::AliasAnalysis>();
526524 memrefAlias.alias (src, dst);
527- if (!checkReadWriteConflict (op , srcAllocOp, dstDefOp, memrefAlias)) {
525+ if (!checkReadWriteConflict (opi , srcAllocOp, dstDefOp, memrefAlias)) {
528526 DEBUG_MSG (" RemoveTemporaries" ,
529527 " found read after write conflict, skipping" )
530528 return ;
@@ -533,7 +531,7 @@ struct RemoveTemporaries
533531 // unless target is defined earlier
534532 auto &dom = getAnalysis<::mlir::DominanceInfo>();
535533 if (!dom.dominates (dstDefOp, srcAllocOp) &&
536- !moveAfterIfPossible (dstDefOp, srcAllocOp, op , dom)) {
534+ !moveAfterIfPossible (dstDefOp, srcAllocOp, opi , dom)) {
537535 DEBUG_MSG (" RemoveTemporaries" , " cannot move dst defining op, skipping" )
538536 return ;
539537 }
@@ -554,8 +552,8 @@ struct RemoveTemporaries
554552 DEBUG_MSG (" RemoveTemporaries" , " with copy op dst value" )
555553 replaceUsesAndPropagateType (rewriter, srcAllocOp, dst, opsToRemove);
556554 }
557- DEBUG_OP (" RemoveTemporaries" , " removing op" , op )
558- opsToRemove.push_back (op );
555+ DEBUG_OP (" RemoveTemporaries" , " removing op" , opi )
556+ opsToRemove.push_back (opi );
559557 if (srcDeallocOp) {
560558 DEBUG_OP (" RemoveTemporaries" , " removing src dealloc op" , srcDeallocOp)
561559 opsToRemove.push_back (srcDeallocOp);
0 commit comments