diff --git a/lib/Conversion/AIEToConfiguration/AIEToConfiguration.cpp b/lib/Conversion/AIEToConfiguration/AIEToConfiguration.cpp index 4cf93cd63b2..a2fd9b1fd35 100644 --- a/lib/Conversion/AIEToConfiguration/AIEToConfiguration.cpp +++ b/lib/Conversion/AIEToConfiguration/AIEToConfiguration.cpp @@ -642,10 +642,15 @@ static LogicalResult convertTransactionOpsToMLIR( // device level std::vector global_data; { - DeviceOp device = - llvm::dyn_cast(builder.getBlock()->getParentOp()); + Operation *parentOp = builder.getBlock()->getParentOp(); + DeviceOp device = llvm::dyn_cast(parentOp); if (!device) { - device = builder.getBlock()->getParentOp()->getParentOfType(); + device = parentOp->getParentOfType(); + } + if (!device) { + parentOp->emitError( + "expected insertion point to be nested under an aie.device op"); + return failure(); } OpBuilder::InsertionGuard guard(builder); builder.setInsertionPointToStart(device.getBody());