diff --git a/mlir/lib/Dialect/Linalg/Transforms/ComprehensiveBufferize.cpp b/mlir/lib/Dialect/Linalg/Transforms/ComprehensiveBufferize.cpp --- a/mlir/lib/Dialect/Linalg/Transforms/ComprehensiveBufferize.cpp +++ b/mlir/lib/Dialect/Linalg/Transforms/ComprehensiveBufferize.cpp @@ -561,7 +561,7 @@ return None; return TypeSwitch(result.getDefiningOp()) .Case([&](tensor::CastOp op) { return &op->getOpOperand(0); }) - .Case([&](ConstantOp op) { return &op->getOpOperand(0); }) + .Case([&](ConstantOp op) { return nullptr; }) .Case([&](ExtractSliceOp op) { return &op->getOpOperand(0); }) // In the case of scf::ForOp, this currently assumes the iter_args / yield // are 1-1. This may fail and is verified at the end. @@ -580,6 +580,7 @@ op.getNumInputs() + result.getResultNumber()); }) .Case([&](vector::TransferWriteOp op) { return &op->getOpOperand(1); }) + .Case([&](CallOpInterface op) { return nullptr; }) .Default([&](Operation *op) { op->dump(); llvm_unreachable("unexpected defining op");