Teach the pass that simplifies extract_strided_metadata(other_op(memref))
how to get rid of extract_strided_metadata when they are fed by
allocLikeOp.
For the simplification to happen the allocLikeOp needs to have been
normalized. I.e., no weird offset and strides.
When this is the case, we replace:
base, offset, sizes, strides = extract_strided_metadata(allocLikeOp(allocSizes))
With
base = reinterpret_cast allocLikeOp(allocSizes) to a flat memref<eltTy> offset = 0 sizes = allocSizes strides#i = prod(allocSizes#j, for j in {i+1..rank-1})
The computation involving dynamic sizes are expanded in affine.apply.
Nit: mlir usually uses triple-backticks for code blocks.