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 {...@@ -1932,26 +1932,30 @@ pub fn stackAlignment(target: Target) u16 {
1932/// Note that char signedness is implementation-defined and many compilers provide1932/// Note that char signedness is implementation-defined and many compilers provide
1933/// an option to override the default signedness e.g. GCC's -funsigned-char / -fsigned-char1933/// an option to override the default signedness e.g. GCC's -funsigned-char / -fsigned-char
1934pub fn charSignedness(target: Target) std.builtin.Signedness {1934pub fn charSignedness(target: Target) std.builtin.Signedness {
1935 switch (target.cpu.arch) {1935 if (target.isDarwin() or target.os.tag == .windows or target.os.tag == .uefi) return .signed;
1936 .aarch64,1936
1937 .aarch64_be,1937 return switch (target.cpu.arch) {
1938 .arm,1938 .arm,
1939 .armeb,1939 .armeb,
1940 .thumb,1940 .thumb,
1941 .thumbeb,1941 .thumbeb,
1942 => return if (target.os.tag.isDarwin() or target.os.tag == .windows) .signed else .unsigned,1942 .aarch64,
1943 .powerpc, .powerpc64 => return if (target.os.tag.isDarwin()) .signed else .unsigned,1943 .aarch64_be,
1944 .arc,
1945 .csky,
1946 .msp430,
1947 .powerpc,
1944 .powerpcle,1948 .powerpcle,
1949 .powerpc64,
1945 .powerpc64le,1950 .powerpc64le,
1946 .s390x,1951 .s390x,
1947 .xcore,
1948 .arc,
1949 .msp430,
1950 .riscv32,1952 .riscv32,
1951 .riscv64,1953 .riscv64,
1952 => return .unsigned,1954 .xcore,
1953 else => return .signed,1955 .xtensa,
1954 }1956 => .unsigned,
1957 else => .signed,
1958 };
1955}1959}
19561960
1957pub const CType = enum {1961pub const CType = enum {