authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2024-08-07 01:57:23+02:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2024-08-07 00:56:02-07:00
log00097c3bb81915913ce8afa1ae529cf8dd85f7a5
tree3a54ffea6dcd33ba5e8299a9b97146563e33bf9f
parenta60810b5a31f7c3a9d1b1f5152c889e45d9ee2f7

std.Target: Some corrections and additions to charSignedness().

Sourced from GCC backends and some manual testing with clang.

1 files changed, 15 insertions(+), 11 deletions(-)

lib/std/Target.zig+15-11
......@@ -1932,26 +1932,30 @@ pub fn stackAlignment(target: Target) u16 {
19321932/// Note that char signedness is implementation-defined and many compilers provide
19331933/// an option to override the default signedness e.g. GCC's -funsigned-char / -fsigned-char
19341934pub fn charSignedness(target: Target) std.builtin.Signedness {
1935 switch (target.cpu.arch) {
1936 .aarch64,
1937 .aarch64_be,
1935 if (target.isDarwin() or target.os.tag == .windows or target.os.tag == .uefi) return .signed;
1936
1937 return switch (target.cpu.arch) {
19381938 .arm,
19391939 .armeb,
19401940 .thumb,
19411941 .thumbeb,
1942 => return if (target.os.tag.isDarwin() or target.os.tag == .windows) .signed else .unsigned,
1943 .powerpc, .powerpc64 => return if (target.os.tag.isDarwin()) .signed else .unsigned,
1942 .aarch64,
1943 .aarch64_be,
1944 .arc,
1945 .csky,
1946 .msp430,
1947 .powerpc,
19441948 .powerpcle,
1949 .powerpc64,
19451950 .powerpc64le,
19461951 .s390x,
1947 .xcore,
1948 .arc,
1949 .msp430,
19501952 .riscv32,
19511953 .riscv64,
1952 => return .unsigned,
1953 else => return .signed,
1954 }
1954 .xcore,
1955 .xtensa,
1956 => .unsigned,
1957 else => .signed,
1958 };
19551959}
19561960
19571961pub const CType = enum {