The genAllocate API was documented to have the `varName` argument as
optional. However, when it is provided, it becomes unexpected if the
implementation does not use it. Since not all dialects have a way to
store variable names, add one in the acc dialect and use it to store
names of memref variables.
This updates the API documentation, implementation of genAllocate for
memref, and IR testing.
A variable in an acc data clause operation must have a type that
implements either PointerLikeType or a MappableType interface. These
interfaces provide the contract that allows acc dialect and its
transform passes to interact with a source dialect.
One of these requirements is ability to generate code that creates
memory for a private copy and ability to initialize that copy from
another variable. Thus, update the PointerLikeType API to provide the
means to create allocation, deallocation, and copy. This will be used as
a way to fill in privatization and firstprivatization recipes.
This new API was implemented for memref along with testing to exercise
it via the implementation of a testing pass.