[LLVMdev] Contributing the Apple ARM64 compiler backend (original) (raw)

Bob Wilson bob.wilson at apple.com
Fri Mar 28 15:29:04 PDT 2014


On Mar 28, 2014, at 3:06 PM, Tim Northover <t.p.northover at gmail.com> wrote:

Are these two backends ABI compatible? They should be, where there's overlap. AArch64 doesn't have any MachO support at the moment. ARM64 does have ELF support (obviously with less testing than AArch64's). Any ABI discrepancy would be considered a bug.

It depends on what you mean. The ARM64 backend supports the standard AAPCS64 ABI, and as Tim says, any discrepancies are bugs. It also supports a slightly different ABI that Apple uses. We settled on a calling convention before the standard was fully specified, and we ended up not adopting all of the changes that came later. The places where we diverge are documented here:

https://developer.apple.com/library/ios/documentation/Xcode/Conceptual/iPhoneOSABIReference/Articles/ARM64FunctionCallingConventions.html

If I have a toolchain setup for the existing aarch64-linux-gnu triple, could I try the new backend and still have clang find the linker and other object files in the lib/gcc directories? I believe so. You should be able to take any command-line you now have with "--target aarch64-X-Y-Z", replace it with "--target arm64-X-Y-Z" and it will just work. Once the merge really gets started, that's a property everyone wants to make sure is preserved: no regressions with existing commands for trunk, and the final backend should be a drop-in replacement for both iOS and ELF targets. Hopefully strictly better in both cases. A big choice approaching is exactly how we go about the merge. In my opinion trying an actual merge on .td files isn't going to work (massive inconsistency even if we could make it happen technically) so we're going to have to pick one of the two as a core for the final backend, and strip all the useful bits out of the other one cherry-pick style. Cheers. Tim.


LLVM Developers mailing list LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev



More information about the llvm-dev mailing list