authorgravatar for evan@lagerdata.comEvan Haas <evan@lagerdata.com> 2023-04-22 10:26:27-07:00
committergravatar for evan@lagerdata.comEvan Haas <evan@lagerdata.com> 2023-06-20 00:26:40-07:00
log657fe557115d9fde5de5b8c6b65a4db4e3a2e567
tree149510d102e92de907ed910ff17a05dcde457a9a
parenta72d634b731952ee227d026c27e83c5702dcea4a
signaturebadge-check Signed by SSH key SHA256:cf2/TFgSxv2uRX26INvFSw25Prr1Dy9H8MiRXgLpok4

std.Target: Add a function for determining char signedess

Copied from arocc https://github.com/Vexu/arocc/blob/c1955a474270562a4640217e62c888b52c79d39e/src/target.zig#L7

1 files changed, 24 insertions(+), 0 deletions(-)

lib/std/target.zig+24
......@@ -1910,6 +1910,30 @@ pub const Target = struct {
19101910 }
19111911 }
19121912
1913 /// Default signedness of `char` for the native C compiler for this target
1914 /// Note that char signedness is implementation-defined and many compilers provide
1915 /// an option to override the default signedness e.g. GCC's -funsigned-char / -fsigned-char
1916 pub fn charSignedness(target: Target) std.builtin.Signedness {
1917 switch (target.cpu.arch) {
1918 .aarch64,
1919 .aarch64_32,
1920 .aarch64_be,
1921 .arm,
1922 .armeb,
1923 .thumb,
1924 .thumbeb,
1925 => return if (target.os.tag.isDarwin() or target.os.tag == .windows) .signed else .unsigned,
1926 .powerpc, .powerpc64 => return if (target.os.tag.isDarwin()) .signed else .unsigned,
1927 .powerpc64le,
1928 .s390x,
1929 .xcore,
1930 .arc,
1931 .msp430,
1932 => return .unsigned,
1933 else => return .signed,
1934 }
1935 }
1936
19131937 pub const CType = enum {
19141938 char,
19151939 short,