From d1d95294fd657f771657ea671a6984b860347fb0 Mon Sep 17 00:00:00 2001 From: Alex Rønne Petersen Date: Sat, 27 Jul 2024 03:52:19 +0200 Subject: std.Target.Cpu.Arch: Remove the `aarch64_32` tag. This is a misfeature that we inherited from LLVM: * https://reviews.llvm.org/D61259 * https://reviews.llvm.org/D61939 (`aarch64_32` and `arm64_32` are equivalent.) I truly have no idea why this triple passed review in LLVM. It is, to date, the *only* tag in the architecture component that is not, in fact, an architecture. In reality, it is just an ILP32 ABI for AArch64 (*not* AArch32). The triples that use `aarch64_32` look like `aarch64_32-apple-watchos`. Yes, that triple is exactly what you think; it has no ABI component. They really, seriously did this. Since only Apple could come up with silliness like this, it should come as no surprise that no one else uses `aarch64_32`. Later on, a GNU ILP32 ABI for AArch64 was developed, and support was added to LLVM: * https://reviews.llvm.org/D94143 * https://reviews.llvm.org/D104931 Here, sanity seems to have prevailed, and a triple using this ABI looks like `aarch64-linux-gnu_ilp32` as you would expect. As can be seen from the diffs in this commit, there was plenty of confusion throughout the Zig codebase about what exactly `aarch64_32` was. So let's just remove it. In its place, we'll use `aarch64-watchos-ilp32`, `aarch64-linux-gnuilp32`, and so on. We'll then translate these appropriately when talking to LLVM. Hence, this commit adds the `ilp32` ABI tag (we already have `gnuilp32`). --- src/Type.zig | 1 - 1 file changed, 1 deletion(-) (limited to 'src/Type.zig') diff --git a/src/Type.zig b/src/Type.zig index d3c0864771..5bcffed6b7 100644 --- a/src/Type.zig +++ b/src/Type.zig @@ -1634,7 +1634,6 @@ pub fn maxIntAlignment(target: std.Target, use_llvm: bool) u16 { .x86, .aarch64, .aarch64_be, - .aarch64_32, .riscv64, .bpfel, .bpfeb, -- cgit v1.2.3