Created AIXABIInfo and AIXTargetCodeGenInfo for AIX ABI. Notice that we could consider common up PowerPC related TargetCodeGenInfo later, as they are almost the same except the constructor.
Some investigation and FAQ on why we created AIXABIInfo:
Use or derive PPC32/PPC64 ABIInfo for AIX:
There are a lot of subtle differences between PPC32 and PPC64 variation. For AIX we do not have a huge differences between 32 bit and 64 bit for the ABI rules. Which means if we decide to use PPC32 for 32 bit on AIX and PPC64 for 64 bit on AIX, we will need to add in a lot of target check to make them symmetric. The code flow will be really hard to follow and verify for every target that is trying to use them. And it’s easy for us to take a lot of unwanted change that really is meant for SVR targets.
Use one ABIInfo class for both 32 bit and 64 bit on AIX will make the code much clear and easier to follow through. And that was one of the reason for us to create LowerCall_AIX/LowerFormalArgument_AIX instead of just rename and use the existing SVR4/Darwin one.
Derive from DefaultABIInfo:
We need to override most of the methods in DefaultABIInfo anyway.
Derive from SwiftABIInfo:
I don't think we want to claim Swift support on AIX right now.