I'm using populateFunctionOpInterfaceTypeConversionPattern on func::FuncOp in order to convert function and block signatures. This does not seem to be preserving location information for function and block arguments, even those that do not change.
Before, where only i64 is getting converted to i32, so ^bb0 shouldn't change while ^bb1 should but both lose their locations:
func.func @main(%arg0: tensor<1x5xf32> loc("foo.mlir split at line #1":143:17), ...
^bb1(%28: tensor<i64> loc("foo.mlir split at line #1":66:6), ...
I'm using
populateFunctionOpInterfaceTypeConversionPattern
onfunc::FuncOp
in order to convert function and block signatures. This does not seem to be preserving location information for function and block arguments, even those that do not change.Before, where only i64 is getting converted to i32, so ^bb0 shouldn't change while ^bb1 should but both lose their locations:
After:
The root cause (or at least the first place locations are dropped) is the FIXME in
ArgConverter::applySignatureConversion
: