authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2026-10-19 08:03:19+02:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2026-10-19 08:03:19+02:00
log3dbffc68862e545bd9fa1bbd317b2c93a6436561
tree51d0290e58a2166b2c33d09e06d13b81673b6677
parentc0cc0f5991abbe2cadc769b2a87be105be681181
signature Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

std.Target: fix some inaccuracies in stackAlignment()


1 files changed, 18 insertions(+), 9 deletions(-)

lib/std/Target.zig+18-9
......@@ -3066,14 +3066,17 @@ pub fn ptrBitWidth(target: *const Target) u16 {
30663066pub fn stackAlignment(target: *const Target) u16 {
30673067 // Overrides for when the stack alignment is not equal to the pointer width.
30683068 switch (target.cpu.arch) {
3069 .ez80 => return 1,
3069 .avr,
3070 .ez80,
3071 => return 1,
30703072
3071 .m68k => return 2,
3073 .m68k => if (target.os.tag != .netbsd) return 2,
30723074
30733075 .amdgcn => return 4,
30743076
30753077 .arm,
30763078 .armeb,
3079 .hexagon,
30773080 .hppa,
30783081 .lanai,
30793082 .mips,
......@@ -3091,28 +3094,34 @@ pub fn stackAlignment(target: *const Target) u16 {
30913094 .hppa64,
30923095 .loongarch32,
30933096 .loongarch64,
3097 .m88k,
30943098 .mips64,
30953099 .mips64el,
3100 .powerpc,
3101 .powerpcle,
3102 .powerpc64,
3103 .powerpc64le,
30963104 .sparc64,
30973105 .ve,
30983106 .wasm32,
30993107 .wasm64,
31003108 .x86_64,
3109 .xtensa,
3110 .xtensaeb,
31013111 => return 16,
31023112
3103 // Some of the following prongs should really be testing the ABI, but our current `Abi` enum
3104 // can't handle that level of nuance yet.
3105 .powerpc64,
3106 .powerpc64le,
3107 => if (target.os.tag == .linux) return 16,
3108
31093113 .riscv32,
31103114 .riscv32be,
31113115 .riscv64,
31123116 .riscv64be,
31133117 => if (!target.cpu.has(.riscv, .e)) return 16,
31143118
3115 .x86 => if (target.os.tag != .windows and target.os.tag != .uefi) return 16,
3119 .x86 => switch (target.os.tag) {
3120 .hurd,
3121 .linux,
3122 => return 16,
3123 else => {},
3124 },
31163125
31173126 .kvx => return 32,
31183127