[IFRT] Modify ifrt-verify-donation to reject instances when an arg is both donated and not donated.
This change modifies the pass to reject cases such as
ifrt.Call @f(%arg0, %arg0) {io_aliases=[array<i32: 1, 0>]}. Such cases would previously fail at runtime.
Moreover, the pass now accepts ifrt.Reshard(%arg0, %arg0) {donated=true} which were rejected previously.
[IFRT] Modify ifrt-verify-donation to reject instances when an arg is both donated and not donated.
This change modifies the pass to reject cases such as
ifrt.Call @f(%arg0, %arg0) {io_aliases=[array<i32: 1, 0>]}
. Such cases would previously fail at runtime.Moreover, the pass now accepts
ifrt.Reshard(%arg0, %arg0) {donated=true}
which were rejected previously.