The bare-ptr calling convention lowers memref-typed values to LLVM
bare pointers at the boundaries of a function call. So far, we only
had support for ranked memref types and function arguments in this
convention. This patch adds support for unranked memref types and
'return' and 'call' ops. This mostly covers all the general use cases!
Some of these changes are also aimed at aligning the bare-ptr calling
convention code with the latest changes in the default calling convention
and reducing the amount of customization code needed. For example, the
'convertCallingConventionType' API is an attempt to abstract away the
conversion customization on types that are sensitive to the calling convention
and move those customizations from the conversion patterns to the type
converter. This is paving the way to isolate and even remove more calling
convention customizations in the future. For example, in follow-up
patches we should be able to unify 'barePtrFuncArgTypeConverter' and
'structFuncArgTypeConverter' into a single class. We could also create
independent type converters, one for each calling convention. Having
all these use cases working first would help us make sure that we preserve
the functionality along the improvements/refactoring.
Typo: they -> the