[RFC] An ABI lowering library for LLVM

Could you please share an example where non-canonical types matters for the call ABI?

Interesting case. Is this handled as part of RecordArgPassingKind / RecordArgABI or a separate rule? If the former, we still wouldn’t need this in the ABI type system, if we approach C++ as described in my previous comment (making it an additional input).