Stevie Hryciw
2ad6ca581d
Add behavior test for copying self-referential struct
...
Closes #6312 . In the C++ implementation this caused a stack overflow
from infinite recursion during analysis.
2023-08-06 18:23:28 -07:00
Stevie Hryciw
6bba5a39e4
Add behavior test for ptrCast on function pointer
...
Closes #6280 . In the C++ implementation this triggered a
compiler assertion.
2023-08-06 18:09:41 -07:00
Andrew Kelley
4f6013bf50
add behavior test for sub-aligned field access
...
The workaround in std.zig.Server remains because the C backend is not
passing the new test.
see #14904
2023-08-01 00:39:30 -07:00
Jacob Young
228c956377
std: finish cleanup up asm
...
This also required implementing the necessary syntax in the x86_64 backend.
2023-07-31 03:49:21 -04:00
Jacob Young
9831f27238
cbe: get behavior tests running on arm
...
Specifically without linking libc.
2023-07-31 01:58:10 -04:00
Jacob Young
817fa3af86
std: cleanup asm usage
...
After fixing some issues with inline assembly in the C backend, the std
cleanups have the side effect of making these functions compatible with
the backend, allowing it to be used on linux without linking libc.
2023-07-31 01:58:10 -04:00
Jacob Young
6f0a613b6f
Merge pull request #16611 from xxxbxxx/packed-struct
...
codegen: fix various packed struct issues
Closes #16609
Closes #15337
2023-07-29 23:49:14 -04:00
Evan Haas
9b5586ab7c
add behavior test for vector bitcast at comptime
...
closes #8184
2023-07-29 18:08:47 -07:00
Jacob Young
dc8a80a191
llvm: support read-write output constraints in assembly
...
Closes #15227
2023-07-29 09:49:04 -07:00
AdamGoertz
796927b900
Allow zero-sized fields in extern structs ( #16404 )
...
This change allows the following types to appear in extern structs:
* Zero-bit integers
* void
* zero-sized structs and packed structs
* enums with zero-bit backing integers
* arrays of any length with zero-size elements
2023-07-29 12:45:01 -04:00
Xavier Bouchoux
8c367ef99a
codegen: fix access to byte-aligned nested packed struct elems
...
When acessing a packed struct member via a byte aligned ptr (from the optimisation in Sema.structFieldPtrByIndex())
the codegen must apply the parent ptr packed_offset in addition to the field offset itself.
resolves https://github.com/ziglang/zig/issues/16609
2023-07-29 18:16:13 +02:00
Jacob Young
8d1805f81c
behavior: add coverage for no longer reproducing issue
...
Closes #14305
2023-07-29 09:00:23 -07:00
Xavier Bouchoux
46abf20454
llvm: partial fix of store undefined to packed result location
...
prefer marking too few undefined bits, rather than too many that may overwrite nearby values.
partially resolves https://github.com/ziglang/zig/issues/15337
2023-07-29 11:56:27 +02:00
Jacob Young
125b453c58
llvm: fix SysV C abi for structs smaller than two eightbytes
...
Closes #16038
Closes #16288
2023-07-28 19:27:08 -04:00
Jacob Young
c80609dfec
Sema: don't reorder tuple fields
...
This conflicts with anon structs which can be in-memory coercible but
are never reordered.
Closes #16242
2023-07-28 19:27:08 -04:00
Andrew Kelley
e66190025f
frontend: make fn calls byval; fix false positive isNonErr
...
This commit does two things which seem unrelated at first, but,
together, solve a miscompilation, and potentially slightly speed up
compiler perf, at the expense of making #2765 trickier to implement in
the future.
Sema: avoid returning a false positive for whether an inferred error set
is comptime-known to be empty.
AstGen: mark function calls as not being interested in a result
location. This prevents the test case "ret_ptr doesn't cause own
inferred error set to be resolved" from being regressed. If we want to
accept and implement #2765 in the future, it will require solving this
problem a different way, but the principle of YAGNI tells us to go ahead
with this change.
Old ZIR looks like this:
%97 = ret_ptr()
%101 = store_node(%97, %100)
%102 = load(%97)
%103 = ret_is_non_err(%102)
New ZIR looks like this:
%97 = ret_type()
%101 = as_node(%97, %100)
%102 = ret_is_non_err(%101)
closes #15669
2023-07-27 10:12:08 -07:00
Andrew Kelley
c3364b372f
Merge pull request #16572 from ziglang/stage1-test-coverage
...
add behavior test coverage for stage1 issues
2023-07-26 23:38:28 -07:00
Jacob Young
7201e69454
AstGen: fix missing deferred ref
...
Closes #16524
2023-07-26 22:19:30 -07:00
Andrew Kelley
d28f24d1d1
add behavior test for defer assign
...
closes #10591
2023-07-26 19:02:02 -07:00
Andrew Kelley
407d91f7a7
add behavior test for switch nested break
...
closes #10196
2023-07-26 19:02:02 -07:00
Andrew Kelley
9d3363fee9
add behavior test for bitcast packed struct twice
...
closes #9914
2023-07-26 19:02:02 -07:00
Andrew Kelley
508294e9be
add behavior test for comptime ptrcast packed struct
...
closes #9912
2023-07-26 19:02:02 -07:00
Andrew Kelley
2936602566
add behavior test for union with 128 bit integer
...
closes #9871
2023-07-26 19:02:02 -07:00
Andrew Kelley
87961237cf
add behavior test for tail calls
...
closes #9703
2023-07-26 19:02:02 -07:00
Andrew Kelley
00d6a4da49
add behavior test for comptime array load
...
closes #8487
2023-07-26 17:21:20 -07:00
Andrew Kelley
6cee98eb30
frontend: forbid packed and extern tuples
2023-07-25 21:45:33 -07:00
Xavier Bouchoux
5ab1854602
codegen/llvm: fix memset with vectors smaller than one byte
...
The special case to take advantage of llvm's intrinsic
was generating invalid llvm ir:
```
Invalid bitcast
%60 = bitcast <2 x i2> %59 to i8, !dbg !3122
thread 145453 panic: LLVM module verification failed
```
2023-07-25 18:14:10 -07:00
Jacob G-W
3c08fe931a
make @typeInfo not return private decls
...
fixes #10731
Thanks @nektro for previous work in #14878
This change creates a small breaking change:
It removes the `is_pub` field of a decl in `@typeInfo`
2023-07-25 16:19:08 -07:00
Andrew Kelley
cc6964c5dc
InternPool: add func_coerced handling to funcIesResolved
2023-07-23 17:47:18 -07:00
Luuk de Gram
619140c0d2
wasm: correctly intcast signed integers
...
When a signed integer's bitsize is not 32 or 64, but the given
bitsize and wanted bitsize are either both represented by Wasm's i32
or i64, we must either sign extend or wrap the integer.
2023-07-22 02:12:07 +02:00
Andrew Kelley
c597ba32d9
Sema: fix return type of generic function is function pointer
...
also that's one less standalone test and one more behavior test.
2023-07-18 21:15:16 -07:00
antlilja
a0ec2266fe
Update tests to new splat syntax
2023-07-12 15:35:57 -07:00
Ian Johnson
3a30f0fa50
Sema: resolve field type layout for anon struct type info
...
Closes #16148
2023-07-10 19:17:50 +03:00
Andrew Kelley
17890f6b8a
Merge pull request #15879 from r00ster91/more_stage1_test_coverage
...
More stage1 test coverage
2023-07-03 15:59:54 -07:00
r00ster91
2583a39fb6
behavior: test @bitCast of packed struct of bools
...
This seems to have resolved itself now.
Tested on x86_64 using debug optimize mode.
Closes #9851
2023-07-03 10:59:13 -07:00
Andrew Kelley
309aacfc89
Merge pull request #16284 from Snektron/spirv-internpool-fixes
...
SPIR-V InternPool aftermath damage control
2023-07-01 14:21:04 -07:00
Robin Voetter
073289d0da
spirv: disable new behavior tests that do not pass
...
Some new behavior tests have recently been added, and not all of these
pass with the SPIR-V backend.
2023-07-01 19:45:09 +02:00
Jacob Young
f571438fc0
Unrevert "Sema: preserve extern struct field alignment"
...
This unreverts commit 1a2468abfcd8b539193d943c1eefb71319cc7b88.
2023-06-30 23:24:52 -04:00
Jacob Young
2282c27885
Remerge pull request #15995 from mlugg/fix/union-field-ptr-align
...
Sema: copy pointer alignment to union field pointers
This is an unrevert of 43c98dc11567eeb38be041c7dad179c53156f3df.
2023-06-30 23:23:26 -04:00
mlugg
730f2e0407
Sema: copy pointer alignment to struct field pointers
2023-06-30 23:23:03 -04:00
mlugg
5b594139d9
Sema: copy pointer alignment to union field pointers
...
This implements the semantics as discussed in today's compiler meeting,
where the alignment of pointers to fields of default-layout unions
cannot exceed the field's alignment.
Resolves : #15878
2023-06-30 23:23:01 -04:00
Jacob Young
43c98dc115
Revert "Merge pull request #15995 from mlugg/fix/union-field-ptr-align"
...
This reverts commit 40cf3f7ae5fbfb84b7af6b27e6296ee858b209ef, reversing
changes made to d98147414d084bc41b00ba9c0be8c7b82ad4e76c.
2023-06-29 00:23:19 -04:00
Jacob Young
1a2468abfc
Revert "Sema: preserve extern struct field alignment"
...
This reverts commit 4620972d086ebb3b7686a79914876488c6dfd171.
2023-06-29 00:23:19 -04:00
Alex Kladov
4620972d08
Sema: preserve extern struct field alignment
...
In
extern struct { x: u32, y: u16 }
we actually know that y's alignment is `@alignOf(u32)`, and not just
`@alignOf(u16)`.
closes : #16134
2023-06-28 16:36:32 +02:00
zooster
28f515acd7
behavior: test slicing array of zero-sized values
...
Closes #15343
2023-06-28 14:00:18 +03:00
r00ster91
adf0718316
behavior: boolean vector with 2 or more elements
...
Closes #12169
2023-06-27 19:57:23 -04:00
r00ster91
2cc9c99ebf
behavior: if-@as-if chain
...
Closes #8952
2023-06-27 19:57:23 -04:00
r00ster91
413a86f7eb
behavior: correct alignment for elements and slices of aligned array
...
Closes #11751
2023-06-27 19:57:23 -04:00
Jacob Young
9343c31c38
Sema: fix @min/@max type resolution with all runtime args
...
Closes #16229
2023-06-26 18:46:25 -07:00
mlugg
88284c124a
AstGen: fix result locations for elements of typed array init
...
Resolves : #16226
2023-06-26 16:20:33 -07:00