This adds all of the ABI tweaks we need to match the arm64_32 ABI as it exists in the wild. Most cirtically, of course, it makes the triple ILP32. But it also covers the usual suspects when defining an ABI.
Minor comments, but otherwise LGTM.
This might affect odd non-Darwin targets? Seems unlikely, but just asking since we have existence proof with Windows that stuff is weird. Admittedly they're untested if it affects them, so I think this is fine.
The comment isn't quite right anymore. Maybe don't say AArch64 since the code is obvious about what it checks?
This is now a weird variable name, since it's aarch64 maybe 32 but not be. Could you rename IsAArch64?
Why isn't this one supported?
Thanks, I've updated for most of the suggestions and committed it. I'll make the AArch64 naming changes separately if we decide to.
isArch64Bit is taken directly from Triple::aarch64/Triple::aarch64_32, so I think someone would have to be intentionally bringing up an aarch64_32 platform to be affected, in which case they probably want to be.
AArch64 is the official name of the 64-bit execution mode of ARM processors so I think it's still correct to say aarch64_32 is AArch64. Or were you referring to some other aspect of the comment?
I think the same point about the comment above applies here. The Triple is the odd thing out here in distinguishing the two.
It was an iOS version check, I've updated the triple instead.