kcbanner
fa59153896
Value: ensure that extern structs have their layout resolved in ptrField
2025-04-11 15:30:20 -04:00
Alex Rønne Petersen
90084f4ae3
Merge pull request #23483 from alexrp/target-int-functions
...
compiler: Move int size/alignment functions to `std.Target` and `std.zig.target`
2025-04-11 17:40:47 +02:00
Jacob Young
27cfff8f44
x86_64: pass exact integer bit sizes to compiler-rt routines
...
This was a hack around compiler-rt not computing the correct size.
2025-04-11 07:06:01 -04:00
Jacob Young
b31a91bbef
compiler-rt: compute correct integer sizes from bits at runtime
...
Also, accepting `align(1)` pointers ensures that the alignment is safety
checked rather than assumed.
2025-04-11 07:06:01 -04:00
Alex Rønne Petersen
ed9aa8f259
compiler: Move int size/alignment functions to std.Target and std.zig.target.
...
This allows using them in e.g. compiler-rt.
2025-04-11 05:22:00 -04:00
Alex Rønne Petersen
0132be7bf3
std.Target: Rename charSignedness() to cCharSignedness().
...
To be consistent with the other functions that answer C ABI questions.
2025-04-11 05:22:00 -04:00
Jacob Young
c82e1fe880
Merge pull request #23355 from jacobly0/x86_64-rewrite
...
x86_64: start rewriting overflow operations
2025-04-11 05:21:44 -04:00
Alex Rønne Petersen
9e21ba12d5
libcxx: Backport llvm/llvm-project#134874 .
...
https://github.com/llvm/llvm-project/pull/134874
2025-04-11 09:05:44 +02:00
Alex Rønne Petersen
8f03217f3e
Merge pull request #23497 from alexrp/hexagon
...
Some `hexagon-linux` porting work
2025-04-11 08:42:53 +02:00
Alex Rønne Petersen
d01f2aa6e7
test: Add hexagon-linux-(none,musl) to the test matrix.
...
This skips std tests for now: https://github.com/llvm/llvm-project/pull/111217
2025-04-11 02:29:27 +02:00
Alex Rønne Petersen
01b5e8b296
std: Disable some vector-related tests for hexagon.
...
See:
* https://github.com/llvm/llvm-project/issues/118879
* https://github.com/llvm/llvm-project/issues/134659
2025-04-11 02:28:35 +02:00
Alex Rønne Petersen
382aa48f04
test: Disable a bunch of vector behavior tests for hexagon.
...
Most of the failures are:
* https://github.com/llvm/llvm-project/issues/118879
* https://github.com/llvm/llvm-project/issues/134659
But some are also miscompilations leading to wrong results. I'm not going to
investigate the latter further until all the backend crashes have been resolved.
2025-04-11 02:28:35 +02:00
Alex Rønne Petersen
0a5c088ecc
compiler: Add hexagon-linux-musl support.
...
Closes #21588 .
2025-04-11 02:28:35 +02:00
Alex Rønne Petersen
e939fc859d
musl: Update libc.S for hexagon-linux-musl.
2025-04-11 02:28:35 +02:00
Alex Rønne Petersen
7f20b9f9db
musl: Add hexagon-linux-musl headers.
2025-04-11 02:28:35 +02:00
Alex Rønne Petersen
3df67dc414
musl: Add hexagon-linux-musl sources.
...
This is from Qualcomm's fork: https://github.com/quic/musl
I maintain a fork of musl where I rebase Qualcomm's changes on top of the latest
musl release, which I then use as the basis for musl updates in Zig. My fork can
be found here: https://github.com/alexrp/musl/tree/hexagon
2025-04-11 02:28:35 +02:00
Alex Rønne Petersen
30200edc1e
gen_stubs: Add hexagon-linux-musl support.
2025-04-11 02:28:35 +02:00
Alex Rønne Petersen
cd58615c17
process_headers: Add hexagon-linux-musl support.
2025-04-11 02:28:35 +02:00
Alex Rønne Petersen
2174014349
wasi-libc: Remove pointless alltypes.h.in file.
2025-04-11 02:28:35 +02:00
Pat Tullmann
4b63f94b4e
Fix sigaddset/sigdelset bit-fiddling math
...
The code was using u32 and usize interchangably, which doesn't work on
64-bit systems. This:
`pub const sigset_t = [1024 / 32]u32;`
is not consistent with this:
`const shift = @as(u5, @intCast(s & (usize_bits - 1)));`
However, normal signal numbers are less than 31, so the bad math doesn't matter much. Also, despite support for 1024 signals in the set, only setting signals between 1 and NSIG (which is mostly 65, but sometimes 128) is defined. The existing tests only exercised signal numbers in the first 31 bits so they didn't trip over this:
The C library `sigaddset` will return `EINVAL` if given an out of bounds signal number. I made the Zig code just silently ignore any out of bounds signal numbers.
Moved all the `sigset` related declarations next to each in the source, too.
The `filled_sigset` seems non-standard to me. I think it is meant to be used like `empty_sigset`, but it only contains 31 set signals, which seems wrong (should be 64 or 128, aka `NSIG`). It's also unused. The oddly named but similar `all_mask` is used (by posix.zig) but sets all 1024 bits (which I understood to be undefined behavior but seems to work just fine). For comparison the musl `sigfillset` fills in 65 bits or 128 bits.
2025-04-10 23:49:44 +02:00
Alex Rønne Petersen
a9ff2d56ce
Compilation: Pass -m<os>-version-min=... to Clang for all applicable Darwin targets.
2025-04-10 22:11:13 +02:00
Jacob Young
73498737a2
x86_64: fix error_set_has_value of inferred error sets
2025-04-10 06:04:09 -04:00
Jacob Young
06eebafadd
AstGen: redistribute inline asm limits
2025-04-10 06:04:09 -04:00
Jacob Young
7a2963efab
x86_64: add avx512 registers
2025-04-10 02:04:52 -04:00
Jacob Young
bbf8abf5d3
x86_64: support rip-relative addressing to labels in inline asm
2025-04-10 02:04:52 -04:00
Jacob Young
f4a31bed98
x86_64: remove broken const value tracking
2025-04-10 02:04:52 -04:00
Jacob Young
1eb5d70d12
x86_64: fix switch on big ints
2025-04-09 20:14:12 -04:00
Jacob Young
bc10131db1
x86_64: rewrite scalar @mulWithOverflow
...
Closes #19607
2025-04-09 20:14:12 -04:00
Jacob Young
55ce756868
x86_64: rewrite scalar @subWithOverflow
2025-04-09 20:14:12 -04:00
Jacob Young
80068b6e59
x86_64: rewrite scalar @addWithOverflow
2025-04-09 20:14:12 -04:00
Jacob Young
426684b2f8
behavior: fix issues with x86_64 backend tests
...
* Oops, I accidentally disabled most of them.
* Cleanup some workarounds for now closed issues.
* Test binary operations with more scalar integer types.
2025-04-09 20:14:12 -04:00
Alex Rønne Petersen
ddcf6fcdf3
compiler: Allow using LLVM's SPIR-V backend.
2025-04-09 19:32:57 +02:00
Pat Tullmann
991560fb49
linux.zig: epoll_wait: pass kernel sigset size
...
Linux kernel syscalls expect to be given the number of bits of sigset that
they're built for, not the full 1024-bit sigsets that glibc supports.
I audited the other syscalls in here that use `sigset_t` and they're all
using `NSIG / 8`.
Fixes #12715
2025-04-09 16:37:58 +02:00
Manlio Perillo
f4e3631655
std.zon.parse: Fix typo in test "std.zon parse bool"
...
Replace "Correct floats" with "Correct bools".
2025-04-09 14:43:12 +02:00
Mun Maks
4fc783670a
Sema/arith.zig: Fixing more typos from #23177 .
...
This is a complementary PR to #23487 (I had only found one typo before).
Now I've looked at the whole `arith.zig` file, trying to find other potential problems.
Discussion about these changes:
https://github.com/ziglang/zig/pull/23177#discussion_r1997957095
2025-04-09 12:53:11 +01:00
Alex Rønne Petersen
79a620d617
zig_clang: Fix ZigClangAPValue being underaligned vs clang::APValue.
...
Also add a static_assert to catch future alignment mismatches on this type, and
reflect recent layout changes in the Zig bindings.
2025-04-09 11:53:24 +02:00
Meghan Denny
70437354c0
std: add nvidia as a known arm implementer
2025-04-09 10:14:42 +02:00
Techatrix
3830fc041b
Compilation: Fix logic in addCCArgs() for various file types and flags.
...
Co-authored-by: Alex Rønne Petersen <alex@alexrp.com>
2025-04-09 10:12:42 +02:00
Alex Rønne Petersen
1bfc71d4da
build: Set LLVM_BUILD_STATIC/CLANG_BUILD_STATIC when linking statically.
...
This is needed since LLVM 20, particularly for Windows.
2025-04-09 10:11:52 +02:00
imreallybadatnames™️
7733b5dbe6
Merge pull request #23501 from imreallybadatnames/master
...
Step.Compile: use LtoMode enum for lto option
2025-04-09 05:16:36 +00:00
SuperAuguste
227788e6d5
Fix mach-o naming for sancov sections
2025-04-09 04:48:39 +02:00
Alex Rønne Petersen
9bbac42886
Merge pull request #23478 from alexrp/bsd-versions
...
`std.Target`: Bump some minimum OS versions for BSDs
2025-04-08 18:27:39 +02:00
Alex Rønne Petersen
2d33cc2e42
Merge pull request #23376 from sweiglbosker/m68k-archbits
2025-04-08 06:04:16 +02:00
Alex Rønne Petersen
d8153fa74a
Merge pull request #23495 from alexrp/loongarch
...
Some `loongarch64-linux` porting work
2025-04-08 01:02:24 +02:00
Matthew Roush
fb1d4990cb
Make translate-c more robust in handling macro functions.
...
Translate-c didn't properly account for C macro functions having parameter names that are C keywords. So something like `#define FOO(float) ((float) + 10)` would've been interpreted as casting `+10` to a `float` type, instead of adding `10` to the parameter `float`.
An example of a real-world macro function like this is SDL3's `SDL_DEFINE_AUDIO_FORMAT` from `SDL_audio.h`, which uses `signed` as a parameter.
2025-04-07 20:53:38 +00:00
Alex Rønne Petersen
f2f36c49c8
compiler: Switch default code model for loongarch64 to medium.
...
LLVM 21 will change the default, but we're making the change now to make
building Zig for loongarch64 less painful.
https://github.com/llvm/llvm-project/pull/132173
2025-04-07 21:36:56 +02:00
Maksat
4995509028
#23177 , maintainter 'mlugg' wanted to fix that typo, 4 weeks without changes, might be forgotten
2025-04-07 16:50:28 +01:00
Alex Rønne Petersen
f13292abbc
zig_clang: Fix size of ZigClangAPValue for Clang 20.
...
Fixes failing tarball builds for x86-linux and x86-windows.
The MSVC special case here is very sus, but that's a problem for another day.
2025-04-07 17:41:06 +02:00
Alex Rønne Petersen
f8439805d7
test: Add loongarch64-linux-(none,musl,gnu) to the test matrix.
...
Currently skips std tests which have many issues.
2025-04-07 16:03:22 +02:00
Alex Rønne Petersen
1cab57f361
std.os.linux: Add some missing arch bits for loongarch64.
2025-04-07 16:03:22 +02:00