Support cases where a source tensor can be traced back to multiple possible tensor.empty ops.
Example:
%0 = scf.if ... { %1 = tensor.empty() %2 = "some_op"(%1) scf.yield %2 } else { ... } %3 = tensor.insert_slice %0 into %t
The tensor.empty inside the scf.if can now be rewritten to a tensor.extract_slice, allowing it to bufferize without an allocation.
Depends On: D142129
Comment needs to be updated? Now it seems like you can return multiple tensor.empty... I dont know when that happens though