@@ -31,22 +31,19 @@ class CallOpConversion final : public OpConversionPattern<func::CallOp> {
3131 LogicalResult
3232 matchAndRewrite (func::CallOp callOp, OpAdaptor adaptor,
3333 ConversionPatternRewriter &rewriter) const override {
34- // Multiple results func was not converted to `emitc.func`.
34+ // Multiple results func cannot be converted to `emitc.func`.
3535 if (callOp.getNumResults () > 1 )
3636 return rewriter.notifyMatchFailure (
3737 callOp, " only functions with zero or one result can be converted" );
3838
3939 // Convert the original function results.
40- Type resultTy = nullptr ;
41- if (callOp.getNumResults ()) {
42- resultTy = typeConverter->convertType (callOp.getResult (0 ).getType ());
43- if (!resultTy)
44- return rewriter.notifyMatchFailure (
45- callOp, " function return type conversion failed" );
40+ SmallVector<Type> types;
41+ if (failed (typeConverter->convertTypes (callOp.getResultTypes (), types))) {
42+ return rewriter.notifyMatchFailure (
43+ callOp, " function return type conversion failed" );
4644 }
47-
4845 rewriter.replaceOpWithNewOp <emitc::CallOp>(
49- callOp, resultTy , adaptor.getOperands (), callOp->getAttrs ());
46+ callOp, types , adaptor.getOperands (), callOp->getAttrs ());
5047
5148 return success ();
5249 }
0 commit comments