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 {...@@ -3066,14 +3066,17 @@ pub fn ptrBitWidth(target: *const Target) u16 {
3066pub fn stackAlignment(target: *const Target) u16 {3066pub fn stackAlignment(target: *const Target) u16 {
3067 // Overrides for when the stack alignment is not equal to the pointer width.3067 // Overrides for when the stack alignment is not equal to the pointer width.
3068 switch (target.cpu.arch) {3068 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
3073 .amdgcn => return 4,3075 .amdgcn => return 4,
30743076
3075 .arm,3077 .arm,
3076 .armeb,3078 .armeb,
3079 .hexagon,
3077 .hppa,3080 .hppa,
3078 .lanai,3081 .lanai,
3079 .mips,3082 .mips,
...@@ -3091,28 +3094,34 @@ pub fn stackAlignment(target: *const Target) u16 {...@@ -3091,28 +3094,34 @@ pub fn stackAlignment(target: *const Target) u16 {
3091 .hppa64,3094 .hppa64,
3092 .loongarch32,3095 .loongarch32,
3093 .loongarch64,3096 .loongarch64,
3097 .m88k,
3094 .mips64,3098 .mips64,
3095 .mips64el,3099 .mips64el,
3100 .powerpc,
3101 .powerpcle,
3102 .powerpc64,
3103 .powerpc64le,
3096 .sparc64,3104 .sparc64,
3097 .ve,3105 .ve,
3098 .wasm32,3106 .wasm32,
3099 .wasm64,3107 .wasm64,
3100 .x86_64,3108 .x86_64,
3109 .xtensa,
3110 .xtensaeb,
3101 => return 16,3111 => 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
3109 .riscv32,3113 .riscv32,
3110 .riscv32be,3114 .riscv32be,
3111 .riscv64,3115 .riscv64,
3112 .riscv64be,3116 .riscv64be,
3113 => if (!target.cpu.has(.riscv, .e)) return 16,3117 => 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
3117 .kvx => return 32,3126 .kvx => return 32,
31183127