David Rubin
190e7d0239
riscv: update builtin names
2024-05-11 02:17:11 -07:00
David Rubin
2cbd8e1deb
riscv: progress toward arrays
...
- implement `airArrayElemVal` for arrays on the stack. This is really easy
as we can just move the offset by the bytes into the array. This only works
when the index access is comptime-known though, this won't work for runtime access.
2024-05-11 02:17:11 -07:00
David Rubin
9b2a4582c9
riscv: implement 64 bit immediate into register loading
...
LLVM has a better myriad sequence for this, where they don't allocate
a temporary register, but for now this will do.
2024-05-11 02:17:11 -07:00
David Rubin
f67fa73fe8
riscv: 16 bit @byteSwap
2024-05-11 02:17:11 -07:00
David Rubin
b2150094ba
riscv: implement basic logical shifting
2024-05-11 02:17:11 -07:00
David Rubin
664e3e16fa
riscv: add cmp_eq
MIR instruction
...
this opens up the door for addition!
2024-05-11 02:17:11 -07:00
David Rubin
3ccf0fd4c2
riscv: basic struct field access
...
the current implementation only works when the struct is in a register. we use some shifting magic
to get the field into the LSB, and from there, given the type provenance, the generated code should
never reach into the bits beyond the bit size of the type and interact with the rest of the struct.
2024-05-11 02:17:11 -07:00
David Rubin
2be3033acd
riscv: implement basic branching
...
we use a code offset map in Emit.zig to pre-compute what byte offset each MIR instruction is at. this is important because they can be
of different size
2024-05-11 02:17:11 -07:00
David Rubin
28df64cba4
riscv: implement @abs
...
- add the `abs` MIR instruction
- implement `@abs` by shifting to the right by `bits - 1`, and xoring.
2024-05-11 02:17:11 -07:00
David Rubin
060c475fcd
riscv: update start.zig
and restore ra from the proper stack offset
2024-05-11 02:17:11 -07:00
David Rubin
5e770407cf
riscv: basic function arguments
...
- rename setRegOrMem -> setValue
- a naive method of passing arguments by register
- gather the prologue and epilogue and generate them in Emit.zig. this is cleaner because we have the final stack size in the emit step.
- define the "fa" register set, which contains the RISC-V calling convention defined function argument registers
2024-05-11 02:17:11 -07:00
David Rubin
dceff2592f
riscv: initial cleanup and work
2024-05-11 02:17:11 -07:00
Dominic
1550b5b16d
astgen: fix result info for catch switch_block_err_union
2024-05-11 12:06:13 +03:00
190n
cc39ce28a1
Do not run asserts for WASI alignment when not targeting WASI
2024-05-11 07:23:07 +00:00
Andrew Kelley
6ca4ed5948
Revert "Merge pull request #19349 from nolanderc/save-commit"
...
This reverts commit 7fa2357d05
, reversing
changes made to cb77bd672c
.
2024-05-10 16:41:15 -07:00
Andrew Kelley
7fa2357d05
Merge pull request #19349 from nolanderc/save-commit
...
`zig fetch`: resolve branch/tag names to commit SHA
2024-05-10 16:27:30 -07:00
Pyrolistical
cb77bd672c
[docs] add examples of array/slice init using result location
2024-05-10 13:56:01 -07:00
Lucas Santos
f71f27bcb0
Avoid unnecessary operation in PageAllocator.
...
There's no need to call `alignForward` before `VirtualAlloc`.
From [MSDN](https://learn.microsoft.com/en-us/windows/win32/api/memoryapi/nf-memoryapi-virtualalloc ):
```
If the lpAddress parameter is NULL, this value is rounded up to the next page boundary
```
2024-05-10 22:51:52 +03:00
Abhinav Gupta
fe1b397606
ChildProcess: document StdIo behaviors ( #17553 )
...
Add some basic documentation for the different ChildProcess.StdIo
behaviors and the fields they affect.
2024-05-10 14:05:20 +00:00
expikr
841bb0a1fd
std.os.windows: add compileError warning against TCHAR
& their corresponding string/pointer types ( #18741 )
2024-05-10 07:48:05 +00:00
Veikka Tuominen
c4e3a49898
define an error set for std.io.tty.Config.setColor
2024-05-10 10:29:16 +03:00
Ryan Liptak
cdc0cee135
WindowsSdk: Fix every registry key being opened with KEY_WOW64_32KEY
...
Now, an options struct is used to determine whether or not KEY_WOW64_32KEY should be set when opening a registry key.
2024-05-09 23:15:18 -07:00
Ryan Liptak
cf8f0cdae9
WindowsSdk: Fix finding the _Instances directory when it's not in the default location
...
Information about installed MSVC instances are stored in `state.json` files within a `Packages/_Instances` directory. The default location for this is `%PROGRAMDATA%\Microsoft\VisualStudio\Packages\_Instances`. However, it is possible for the Packages directory to be put somewhere else. In that case, the registry value `HKLM\SOFTWARE\Microsoft\VisualStudio\Setup\CachePath` is set and contains the path to the Packages directory.
Previously, WindowsSdk did not check that registry value. After this commit, the registry value `HKLM\SOFTWARE\Microsoft\VisualStudio\Setup\CachePath` is checked first, which matches what ISetupEnumInstances does (according to a Procmon log).
2024-05-09 22:22:41 -07:00
Garfield Lee
e69caaa39f
lib/std/os/windows/kernel32: add signature for SetConsoleMode ( #18715 )
...
- From lib/libc/include/any-windows-any/wincon.h#L235
- See also https://learn.microsoft.com/en-us/windows/console/setconsolemode
- Also add DISABLE_NEWLINE_AUTO_RETURN constant which will be used by SetConsoleMode in lib/std/os/windows.
Co-authored-by: Kexy Biscuit <kexybiscuit@biscuitt.in>
2024-05-09 16:38:39 -07:00
Pyry Kovanen
4163126c01
llvm: always include debug information for global variables
2024-05-09 16:02:03 -07:00
Karl Bohlmark
6eb17a034a
fix integer overflow in IoUring buffer ring size calculation
2024-05-09 16:00:01 -07:00
Pavel Verigo
d4d1efeb3e
std.compress.flate: fix panic when reading into empty buffer
2024-05-09 15:51:42 -07:00
Andrew Kelley
68629fedef
Merge pull request #19918 from ziglang/xros
...
Add support for VisionOS
2024-05-09 15:45:42 -07:00
february cozzocrea
c9ad1b5199
aro translate-c: support for record types added
2024-05-09 13:46:50 -07:00
Jakub Konka
47e840a9b9
test/llvm_targets: add watchos, tvos and visionos to test matrix
2024-05-09 22:19:45 +02:00
Jakub Konka
d3ba541034
codegen/llvm: handle missing Apple targets
2024-05-09 22:00:17 +02:00
Jakub Konka
39adc228d8
link/macho: look in lib dirs (-L) for libSystem too
2024-05-09 16:20:18 +02:00
Jakub Konka
2e1fc0dd14
handle visionos target OS tag in the compiler
...
* rename .xros to .visionos as agreed in the tracking issue
* add support for VisionOS platform in the MachO linker
2024-05-09 15:04:15 +02:00
Jakub Konka
8f202ba7c7
link/macho: add support for VisionOS
2024-05-09 14:09:31 +02:00
Andrew Kelley
bcb534c295
Merge branch 'llvm18'
...
Upgrades the LLVM, Clang, and LLD dependencies to LLVM 18.x
Related to #16270
2024-05-09 01:52:26 -07:00
Andrew Kelley
74f52954b9
update tarballs to 0.13.0-dev.130+98a30acad
2024-05-08 23:17:08 -07:00
Andrew Kelley
98a30acad6
libcxxabi patch: respect NDEBUG
...
zig patch: respect NDEBUG. Otherwise the file path makes it into the
binary, causing non-reproducible builds.
2024-05-08 19:37:30 -07:00
Andrew Kelley
cd1ddca698
CI: update x86_64-macos tarball
...
This one contains a patch to fix an LLVM 18 regression that has been
merged upstream already.
2024-05-08 19:37:30 -07:00
Andrew Kelley
e89d6fc503
fix wrong int alignment for i65..i127 on x86 arch
2024-05-08 19:37:30 -07:00
Andrew Kelley
107d4f6683
disable x86_64-macos -OReleaseSmall tests
...
tracked by #19851
2024-05-08 19:37:30 -07:00
Andrew Kelley
126c9a34af
restructure unit test to be easier to debug
2024-05-08 19:37:29 -07:00
Jacob Young
08cecc1c7e
x86_64: fix C abi of incomplete sse register
2024-05-08 19:37:29 -07:00
Andrew Kelley
e9efed9ed1
LLVM: zeroext/signext does happen on macos
...
Fixes a regression introduced in 3ce7fee9dd8bbb6f56e47758a9a8ada028400c71.
2024-05-08 19:37:29 -07:00
Andrew Kelley
7e1cba73fc
Type.intAbiAlignment: update for LLVM 18 changes
...
This function is intended to match what the backend desires.
No kink shaming.
2024-05-08 19:37:29 -07:00
Andrew Kelley
88ada2121f
LLVM: fix x86 and x86_64 datalayout string calculation
...
now it matches clang again
2024-05-08 19:37:29 -07:00
Andrew Kelley
708894cf99
add a debug subcommand for printing LLVM integer type alignment
...
Useful when debugging why upgrading from LLVM 17 to 18 caused C ABI
regressions. Turns out LLVM 18 does the following insane thing:
```diff
-[nix-shell:~/dev/zig/build-llvm17]$ stage4/bin/zig llvm-ints i386-linux-musl
+[nix-shell:~/src/zig/build-llvm18]$ stage4/bin/zig llvm-ints i386-linux-musl
LLVMABIAlignmentOfType(i1) == 1
LLVMABIAlignmentOfType(i8) == 1
LLVMABIAlignmentOfType(i16) == 2
LLVMABIAlignmentOfType(i32) == 4
LLVMABIAlignmentOfType(i64) == 4
-LLVMABIAlignmentOfType(i128) == 4
-LLVMABIAlignmentOfType(i256) == 4
+LLVMABIAlignmentOfType(i128) == 16
+LLVMABIAlignmentOfType(i256) == 16
```
2024-05-08 19:37:29 -07:00
Andrew Kelley
6730b366a0
LLVM backend: no more signext on aarch64
...
Clang doesn't do it, so Zig must not do it in order to match the C ABI.
2024-05-08 19:37:29 -07:00
Andrew Kelley
6986d2aca9
x86_64 sysv C ABI: fix f128 param and return types
...
Clang 17 passed struct{f128} parameters using rdi and rax, while Clang
18 matches GCC 13.2 behavior, passing them using xmm0.
This commit makes Zig's LLVM backend match Clang 18 and GCC 13.2. The
commit deletes a hack in x86_64/abi.zig which miscategorized f128 as
"memory" which obviously disagreed with the spec.
2024-05-08 19:37:29 -07:00
Evan Haas
bc69cb9b10
translate-c: update UnaryExprOrTypeTrait enum for LLVM 18
2024-05-08 19:37:29 -07:00
Andrew Kelley
badc28c06e
disable regressed test from LLVM 18 upgrade
...
tracked by #19825
2024-05-08 19:37:29 -07:00