diff --git a/mlir/lib/Dialect/Tosa/IR/TosaCanonicalizations.cpp b/mlir/lib/Dialect/Tosa/IR/TosaCanonicalizations.cpp index 17a73a1472dbd..149467b75cce0 100644 --- a/mlir/lib/Dialect/Tosa/IR/TosaCanonicalizations.cpp +++ b/mlir/lib/Dialect/Tosa/IR/TosaCanonicalizations.cpp @@ -797,6 +797,10 @@ OpFoldResult CastOp::fold(FoldAdaptor adaptor) { auto outETy = outTy.getElementType(); if (operand.isSplat()) { + // Bug? For DenseResourceElementsAttr, isSplat() can return true, + // but getSplatValue() will throw. + if (isa(operand)) + return {}; if (llvm::isa(inETy) && llvm::isa(outETy)) { bool overflow; auto splatVal = operand.getSplatValue();