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-20 10:02:51+02:00
log4cf3a1d89789ef96c90862b52596c2d9f673a951
tree2f9332acf473ecbfeb05fc268ce4a45e5ac0dd25
parent1a801d2bd454af79c1c7cbb339a3f82afe58c156
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
......@@ -3087,14 +3087,17 @@ pub fn ptrBitWidth(target: *const Target) u16 {
30873087pub fn stackAlignment(target: *const Target) u16 {
30883088 // Overrides for when the stack alignment is not equal to the pointer width.
30893089 switch (target.cpu.arch) {
3090 .ez80 => return 1,
3090 .avr,
3091 .ez80,
3092 => return 1,
30913093
3092 .m68k => return 2,
3094 .m68k => if (target.os.tag != .netbsd) return 2,
30933095
30943096 .amdgcn => return 4,
30953097
30963098 .arm,
30973099 .armeb,
3100 .hexagon,
30983101 .hppa,
30993102 .lanai,
31003103 .mips,
......@@ -3112,28 +3115,34 @@ pub fn stackAlignment(target: *const Target) u16 {
31123115 .hppa64,
31133116 .loongarch32,
31143117 .loongarch64,
3118 .m88k,
31153119 .mips64,
31163120 .mips64el,
3121 .powerpc,
3122 .powerpcle,
3123 .powerpc64,
3124 .powerpc64le,
31173125 .sparc64,
31183126 .ve,
31193127 .wasm32,
31203128 .wasm64,
31213129 .x86_64,
3130 .xtensa,
3131 .xtensaeb,
31223132 => return 16,
31233133
3124 // Some of the following prongs should really be testing the ABI, but our current `Abi` enum
3125 // can't handle that level of nuance yet.
3126 .powerpc64,
3127 .powerpc64le,
3128 => if (target.os.tag == .linux) return 16,
3129
31303134 .riscv32,
31313135 .riscv32be,
31323136 .riscv64,
31333137 .riscv64be,
31343138 => if (!target.cpu.has(.riscv, .e)) return 16,
31353139
3136 .x86 => if (target.os.tag != .windows and target.os.tag != .uefi) return 16,
3140 .x86 => switch (target.os.tag) {
3141 .hurd,
3142 .linux,
3143 => return 16,
3144 else => {},
3145 },
31373146
31383147 .kvx => return 32,
31393148