From 00097c3bb81915913ce8afa1ae529cf8dd85f7a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alex=20R=C3=B8nne=20Petersen?= Date: Wed, 7 Aug 2024 01:57:23 +0200 Subject: [PATCH] std.Target: Some corrections and additions to charSignedness(). Sourced from GCC backends and some manual testing with clang. --- lib/std/Target.zig | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/lib/std/Target.zig b/lib/std/Target.zig index d5bc61e663..d53ae65bfc 100644 --- a/lib/std/Target.zig +++ b/lib/std/Target.zig @@ -1932,26 +1932,30 @@ pub fn stackAlignment(target: Target) u16 { /// Note that char signedness is implementation-defined and many compilers provide /// an option to override the default signedness e.g. GCC's -funsigned-char / -fsigned-char pub fn charSignedness(target: Target) std.builtin.Signedness { - switch (target.cpu.arch) { - .aarch64, - .aarch64_be, + if (target.isDarwin() or target.os.tag == .windows or target.os.tag == .uefi) return .signed; + + return switch (target.cpu.arch) { .arm, .armeb, .thumb, .thumbeb, - => return if (target.os.tag.isDarwin() or target.os.tag == .windows) .signed else .unsigned, - .powerpc, .powerpc64 => return if (target.os.tag.isDarwin()) .signed else .unsigned, + .aarch64, + .aarch64_be, + .arc, + .csky, + .msp430, + .powerpc, .powerpcle, + .powerpc64, .powerpc64le, .s390x, - .xcore, - .arc, - .msp430, .riscv32, .riscv64, - => return .unsigned, - else => return .signed, - } + .xcore, + .xtensa, + => .unsigned, + else => .signed, + }; } pub const CType = enum {