Add MemRef Lifetime Markers similar to those found within LLVM in order
to mark the lifetime of MemRefs within MLIR for use in analysis passes such
as buffer reause. This is further explained in an RFC found here:
https://discourse.llvm.org/t/rfc-lifetime-annotations-of-memory-within-mlir/72697
This patch is based on previous discussions on the LLVM lifetime markers with
the intent of making a more constrained version in MLIR using higher level
semantics. This old patch on the llvm repo does a great job explaining the ideal
assumptions the llvm lifetime markers should have:
Accessing a memref at this point should still be undefined behavior I believe, but you op description above isn't clear about this...