Swift calling conventions stands out in the way that they are lowered in
mostly target-independent manner, with very few customization points.
As such, swift-related methods of ABIInfo do not reference the rest of
ABIInfo and vice versa.
This change follows interface segregation principle; it removes
dependency of SwiftABIInfo on ABIInfo. Targets must now implement
SwiftABIInfo separately if they support Swift calling conventions.
Almost all targets implemented shouldPassIndirectly the same way. This
de-facto default implementation has been moved into the base class.
isSwiftErrorInRegister used to be virtual, now it is not. It didn't
accept any arguments which could have an effect on the returned value.
This is now a static property of the target ABI.
SwiftInfo isn't always initialized to a nonnull pointer; should this have an assert to help point out when someone's forgotten to initialize that properly?