Skip to content

Commit 4de5f79

Browse files
committed
pr: Fix cond yield conversion
1 parent 9d095ed commit 4de5f79

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

lib/vast/Conversion/Parser/ToParser.cpp

+12-2
Original file line numberDiff line numberDiff line change
@@ -588,14 +588,24 @@ namespace vast::conv {
588588
logical_result matchAndRewrite(
589589
op_t op, adaptor_t adaptor, conversion_rewriter &rewriter
590590
) const override {
591-
auto operand = adaptor.getResult().getDefiningOp();
592-
if (auto cast = mlir::dyn_cast< mlir::UnrealizedConversionCastOp >(operand)) {
591+
auto operand = adaptor.getResult();
592+
593+
if (auto cast = mlir::dyn_cast< mlir::UnrealizedConversionCastOp >(operand.getDefiningOp())) {
593594
if (pr::is_parser_type(cast.getOperand(0).getType())) {
594595
rewriter.replaceOpWithNewOp< op_t >(op, cast.getOperand(0));
595596
return mlir::success();
596597
}
597598
}
598599

600+
if (pr::is_parser_type(operand.getType())) {
601+
rewriter.replaceOpWithNewOp< op_t >(op, operand);
602+
return mlir::success();
603+
}
604+
605+
auto cast = rewriter.create< mlir::UnrealizedConversionCastOp >(
606+
op.getLoc(), pr::MaybeDataType::get(op.getContext()), operand
607+
);
608+
rewriter.replaceOpWithNewOp< op_t >(op, cast.getResult(0));
599609
return mlir::success();
600610
}
601611

0 commit comments

Comments
 (0)