diff --git a/mlir/lib/Dialect/Affine/IR/AffineOps.cpp b/mlir/lib/Dialect/Affine/IR/AffineOps.cpp index 35d5f53aad241f..11b6b7cf5fd5a7 100644 --- a/mlir/lib/Dialect/Affine/IR/AffineOps.cpp +++ b/mlir/lib/Dialect/Affine/IR/AffineOps.cpp @@ -2562,10 +2562,10 @@ bool mlir::affine::isAffineInductionVar(Value val) { AffineForOp mlir::affine::getForInductionVarOwner(Value val) { auto ivArg = llvm::dyn_cast(val); - if (!ivArg || !ivArg.getOwner()) + if (!ivArg || !ivArg.getOwner() || !ivArg.getOwner()->getParent()) return AffineForOp(); - auto *containingInst = ivArg.getOwner()->getParent()->getParentOp(); - if (auto forOp = dyn_cast(containingInst)) + if (auto forOp = + ivArg.getOwner()->getParent()->getParentOfType()) // Check to make sure `val` is the induction variable, not an iter_arg. return forOp.getInductionVar() == val ? forOp : AffineForOp(); return AffineForOp();