[mlir] fail gracefull in CallOpSignatureConversion
Previously, the CallOpSignatureConversion pattern would assert if function signature change affected the number of results. Fail the pattern instead and let the caller propagate failure. Fixes #60186. Reviewed By: mehdi_amini Differential Revision: https://reviews.llvm.org/D142624
This commit is contained in:
parent
f7c1982309
commit
88a3dc0ee8
|
@ -29,6 +29,11 @@ struct CallOpSignatureConversion : public OpConversionPattern<CallOp> {
|
|||
convertedResults)))
|
||||
return failure();
|
||||
|
||||
// If this isn't a one-to-one type mapping, we don't know how to aggregate
|
||||
// the results.
|
||||
if (callOp->getNumResults() != convertedResults.size())
|
||||
return failure();
|
||||
|
||||
// Substitute with the new result types from the corresponding FuncType
|
||||
// conversion.
|
||||
rewriter.replaceOpWithNewOp<CallOp>(
|
||||
|
|
|
@ -317,3 +317,16 @@ func.func @typemismatch(%arg: f32) -> i32 {
|
|||
%0 = "test.passthrough_fold"(%arg) : (f32) -> (i32)
|
||||
"test.return"(%0) : (i32) -> ()
|
||||
}
|
||||
|
||||
// -----
|
||||
|
||||
// expected-remark @below {{applyPartialConversion failed}}
|
||||
module {
|
||||
func.func private @callee(%0 : f32) -> f32
|
||||
|
||||
func.func @caller( %arg: f32) {
|
||||
// expected-error @below {{failed to legalize}}
|
||||
%1 = func.call @callee(%arg) : (f32) -> f32
|
||||
return
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user