13281 Commits

Author SHA1 Message Date
Krzysztof Wolicki
b4d4d19958
autodoc: Add support for struct_init_empty_ref_result (#17476) 2023-10-22 16:15:56 +02:00
Robin Voetter
b822e841cd
Merge pull request #17657 from Snektron/spirv-recursive-ptrs
spirv: recursive pointers
2023-10-22 15:35:00 +02:00
Jacob Young
0c99ba1eab
Merge pull request #17637 from jacobly0/x86_64-test-std
x86_64: start to enable `test-std` and `test-compiler-rt` testing
2023-10-22 08:06:47 -04:00
Michael Dusan
5f92b070bf libtsan: do not set PIE
This was missed in #17597 .
2023-10-22 06:02:24 -04:00
Jakub Konka
3d7c6c803b dwarf: fix false assumption that ptr-deref requires GOT-indirection 2023-10-21 21:38:41 -04:00
Jacob Young
c4fcf0e22a codegen: implement lowering aligned anon decls 2023-10-21 21:38:41 -04:00
mlugg
dd402f6d83 AstGen: omit make_ptr_const for resolve_inferred_alloc
After the previous commit, these make_ptr_const ZIR instructions are
redundant.
2023-10-21 21:38:41 -04:00
Andrew Kelley
5e1db5e478 Sema: migrate zirResolveInferredAlloc to new anon decl mechanism
This required a bug fix in zirMakePtrConst.
2023-10-21 21:38:41 -04:00
Andrew Kelley
7bab406c79 InternPool: store alignment of anon decls
Commit 5393e56500d499753dbc39704c0161b47d1e4d5c has a flaw pointed out
by @mlugg: the `ty` field of pointer values changes when comptime values
are pointer-casted. This commit introduces a new encoding which
additionally stores the "original pointer type" which is used to store
the alignment of the anonymous decl, and potentially other information
in the future such as section and pointer address space. However, this
new encoding is only used when the original pointer type differs from
the casted pointer type in a meaningful way.

I was able to make the LLVM backend and the C backend lower anonymous
decls with the appropriate alignment, however I will need some help
figuring out how to do this for the backends that lower anonymous decls
via src/codegen.zig and the wasm backend.
2023-10-21 21:38:41 -04:00
Andrew Kelley
ecfb18286a migrate make_ptr_const to new anonymous decl mechanism
Instead of creating Module.Decl objects, directly create InternPool
pointer values using the anon_decl Addr encoding.

The LLVM backend needed code to notice the alignment of the pointer and
lower accordingly. The other backends likely need a similar change.
2023-10-21 21:38:41 -04:00
Andrew Kelley
3f4df85299 link.Elf: report file not found error 2023-10-21 22:25:39 +02:00
Robin Voetter
6281ad91df
spirv: self-referential pointers via new fwd_ptr_type
Its a little ugly but it works.
2023-10-21 17:46:54 +02:00
Robin Voetter
6e955af8c8
spirv: make constructStruct also use self.ptrType
This completes the migration from spv.ptrType to self.ptrType.
Unfortunately this requires us to pass a list of types to
constructStruct, which also requires some extra allocations
here and there.
2023-10-21 17:46:53 +02:00
Robin Voetter
1deec09f03
spirv: improve union operations
This removes the strategy where union with different active
fields would be generated, and instead simply pointer casts
the active field type where required. This also allows removing
spv.ptrType and using self.ptrType instead, and allows caching
all union types (because there is only the canonical one).
2023-10-21 17:46:53 +02:00
Robin Voetter
5090d75e48
spirv: make load() and store() accept MemoryOptions
This struct is used to configure the load, such as to make
it volatile. Previously this was done using a single bool, but
this struct makes it shorter to write non-volatile loads (the
usual) and more clear whats going on when a volatile load is
required.
2023-10-21 17:46:52 +02:00
Robin Voetter
200bca360e
spirv: replace most use of spv.ptrType with self.ptrType
To support self-referential pointers, in the future we will
need to pass the Zig type to any pointer that is created. This
lays some ground work for that by replacing most uses of
spv.ptrType with a new ptrType function that also accepts the
Zig type. This function's contents will soon be replaced by
a version that also supports self-referential pointers.

Also fixed some bugs regarding the use of direct/indirect.
2023-10-21 17:46:50 +02:00
Jacob Young
2e6e39a700 x86_64: fix bugs and disable erroring tests 2023-10-21 10:55:41 -04:00
Jacob Young
c880644d92 x86_64: disable difficult std tests and hack around more zero-bit types 2023-10-21 10:55:41 -04:00
Jacob Young
9358a7528f x86_64: fix crashes 2023-10-21 10:55:41 -04:00
Jakub Konka
809e7aa4fc
Merge pull request #17638 from ziglang/elf-dwarf-fixes
dwarf: decouple DWARF formats from target pointer size + misc fixes
2023-10-21 16:14:40 +02:00
Andrew Kelley
bd1f96869e InternPool: fix incomplete hash of pointer values
There is this `common` prefix which was not getting passed in all union
tags of pointer vals, resumably making InternPool slower for pointer
values.
2023-10-20 20:02:35 -04:00
Andrew Kelley
328ec15d9c Revert "make distinct error limit configurable"
This reverts commit 78855bd21866b515018259a2194e036e4b3120df.

This commit did not replace uses of `Type.err_int` of which there are
currently 60 uses.

Re-opens #786
2023-10-20 14:03:55 -07:00
Jakub Konka
6dc45e7d31
Merge pull request #17621 from ziglang/elf-pic-pie
elf: actually check for dynamic executables
2023-10-20 22:33:44 +02:00
Andrew Kelley
7de893c085
Merge pull request #16817 from Sahnvour/shuffle-deps
std.Build: add --seed argument to randomize step dependencies spawning
2023-10-20 15:30:48 -04:00
Andrew Kelley
a361f37b1c
Merge pull request #17608 from squeek502/resinator-fixes
resinator: Fix `INCLUDE` var handling and sync with upstream
2023-10-20 03:49:14 -04:00
Michael Dusan
aa76ca2931 llvm: set PIE only for executables
closes #17575
2023-10-20 01:59:55 -04:00
Andrew Kelley
5d8bc56ab6
Merge pull request #15268 from DraagrenKirneh/feature/14475-minimum-zig-version
#14475 minimal_zig_version in build.zig.zon
2023-10-20 00:51:44 -04:00
Jacob Young
4d106076c3 link: initialize llvm before calling the llvm API 2023-10-19 16:51:11 -04:00
Jakub Konka
f4f5e9edd6 dwarf: bring back realpath resolution of include dirs 2023-10-19 22:41:59 +02:00
Jakub Konka
eb76ef58f8 dwarf: revert adding spurious and incorrect +1 to getDebugInfoEnd() 2023-10-19 21:56:47 +02:00
Jakub Konka
400faec10b dwarf: introduce Dwarf.Format to be able to select 32/64bit format at whim 2023-10-19 21:56:47 +02:00
Jakub Konka
4f66efdc7f dwarf: clean up and fix writing include dirs and files to debug line header 2023-10-19 21:56:47 +02:00
Jakub Konka
349dc05452 dwarf: remove obsolete sentinels from abbrev table 2023-10-19 21:56:47 +02:00
Andrew Kelley
10200970bb build system: fixups to --seed mechanism
* support 0x prefixed hex code for CLI seed arguments
* don't change the build summary; the printed CLI on build runner
  failure is sufficient
* use `std.crypto.random` instead of system time for entropy
2023-10-19 14:24:35 -04:00
Sahnvour
b87353a17f std.Build: add --seed argument to randomize step dependencies spawning
help detect possibly hidden dependencies on the running order of steps,
especially in -j1 mode
2023-10-19 14:24:35 -04:00
Jakub Konka
3768c95371 elf: actually check for dynamic executables 2023-10-19 15:57:58 +02:00
Jacob Young
fbbccc9d5f Builder: fix incorrect type for 32-bit systems 2023-10-19 08:06:44 -04:00
Jakub Konka
f3d23d9232
Merge pull request #17594 from ziglang/elf-atom-limit
elf: increase permissible Atom <-> input section resolution to u32 for Zig's module
2023-10-19 12:30:56 +02:00
Andrew Kelley
ae2cd5fe26 Revert "Never implicitly add rpaths for each lib dir, add NixOS libdir to rpath"
This reverts commit d7b73af8f65bb891c8700ed47777144bb6f35fe1.

I did not look at this closely enough. This is incorrect; it should not
implicitly add rpaths for every library, and it should not disable the
nice default of each_lib_path when compiling for the native OS.

See #16062 where we are working on a follow-up improvement to this.
2023-10-18 23:37:47 -07:00
Jakub Konka
470d887d80
Merge pull request #17593 from ziglang/elf-native-libc
elf: link against libc installation
2023-10-19 07:39:03 +02:00
Andrew Kelley
777af14b57 Package.Manifest: fix bitrotted unit tests 2023-10-18 18:59:13 -07:00
DraagrenKirneh
1882ff95e7 Package.Manifest: add minimum_zig_version field 2023-10-18 18:58:58 -07:00
Ryan Liptak
8ec04b567e Error if an .rc file uses the 'preprocess only' or 'no preprocess' flags 2023-10-18 18:30:32 -07:00
Ryan Liptak
81a61c8ecd Sync resinator with upstream and fix INCLUDE env var handling
The INCLUDE variable being used during `.rc` preprocessing was an accidental regression in https://github.com/ziglang/zig/pull/17412.
Closes #17585.

resinator changes:
source_mapping: Protect against NUL bytes in #line filenames
lex: Avoid recalculating column on every tab stop within string literals
Proper error handling for failing to open cwd instead of `catch unreachable`
Use platform-specific delimiter for INCLUDE env var parsing
2023-10-18 18:30:32 -07:00
Andrew Kelley
63f9af87d3 zig env: back to json output
changed my mind I liked it better before. this reverts
053119083c2c93cb1fc4129bc647c03301f4010d.
2023-10-18 15:50:00 -07:00
Andrew Kelley
ec21da0d51 compiler: fix LTO availability logic
Before this commit, the logic would fail with a "LTO not available"
error if the user set `-fno-lto` which doesn't make sense. This commit
corrects the logic to understand when the user is explicitly requesting
to turn LTO off.
2023-10-18 17:47:57 -04:00
Andrew Kelley
f9a3413112 compiler: better default for valgrind
* Default to off when strip=true
* Report an error when explicitly enabled but not supported for the
  target
2023-10-18 17:46:29 -04:00
Andrew Kelley
39652331c9
Merge pull request #14428 from perillo/improve-zig-env
zig env: add support for line based output
2023-10-18 17:32:59 -04:00
Jacob Young
d8f7c79298 x86_64: improve inline assembly support
* C++-style comments
 * indirect call operands
 * fix misleading immediate debug formatting
2023-10-18 13:57:28 -04:00
Jakub Konka
1448d6b77c elf: store shndx to Zig module atoms out-of-band
This allows us to increase the effective resolution of `st_shndx`
from `u8` to `u32`.
2023-10-18 18:33:35 +02:00