[mlir][mem2reg] Promote memory slots through transparent view operations (#196924)
This patch enables mem2reg to operate on load/store that are made
through cast/views of the memory slot (not directly using the SSA value
produced by the allocation op).
This is done by adding a new `PromotableAliaserInterface` interface that must
be implemented by operations that define view of the slot and through which
mem2reg should still happen.
This interface comes with three APIs. The first one allows the operation to
provide new MemorySlots that are aliasing an input MemorySlot. The slot pointers
of these new MemorySlot are results of the operation.
The other two APIs allows projecting the reaching values between the input and output
MemorySlot (one API for each direction).
Assisted by: Claude
RFC:
https://discourse.llvm.org/t/mlir-mem2reg-rfc-promote-memory-slots-through-transparent-view-operations/90761