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).