Fix suspected implicit casting problem in LinalgTileAndDistributePass. * This was failing on gcc 9.3.1 and working on everything else (clang, msvc, gcc 9.3.0 (!)). * As near as I can tell, it was an incomplete refactor that happens to be allowed via some implicit conversion path that I can't spot on other compilers. * Fixes #4543.
diff --git a/iree/compiler/Conversion/LinalgToLLVM/LinalgTileAndDistributePass.cpp b/iree/compiler/Conversion/LinalgToLLVM/LinalgTileAndDistributePass.cpp index 758569c..caab412 100644 --- a/iree/compiler/Conversion/LinalgToLLVM/LinalgTileAndDistributePass.cpp +++ b/iree/compiler/Conversion/LinalgToLLVM/LinalgTileAndDistributePass.cpp
@@ -63,10 +63,10 @@ // Find the parent FuncOp before tiling. If tiling succeeds, the op will be // erased. FuncOp funcOp = op->getParentOfType<FuncOp>(); - SmallVector<Value, 4> tensorResults; + linalg::TiledLinalgOp tiledLinalgOp; if (!funcOp || - failed(Base::matchAndRewriteBase(op, rewriter, tensorResults)) || - !tensorResults.empty() || + failed(Base::matchAndRewriteBase(op, rewriter, tiledLinalgOp)) || + !tiledLinalgOp.tensorResults.empty() || (funcOp->getAttr(getNumWorkgroupsFnAttrName()) && failed(createNumWorkgroupsFromResultShape( rewriter, cast<linalg::LinalgOp>(op), funcOp,