Veikka Tuominen
87cf2783eb
llvm: check that tuple fields have runtime bits
...
Just checking that they aren't comptime isn't enough for `@Type` constructed tuples.
Closes #13531
2022-11-12 15:41:29 +02:00
Veikka Tuominen
a760ce598c
Sema: ensure that !is_comptime and !is_typeof implies sema.func != null
...
Closes #13481
2022-11-12 15:41:29 +02:00
Veikka Tuominen
d42f4abb9d
llvm: correctly lower references to generic functions
...
Closes #13522
2022-11-12 15:41:29 +02:00
Veikka Tuominen
40a2dfc12a
Sema: coerce array operands to shuffle
...
Closes #13494
2022-11-11 18:00:05 +02:00
Veikka Tuominen
9b832e7f53
Sema: make check for namespace lookup of private declarations more strict
...
Previously sema only checked that the private declaration was in the same
file as the lookup but now it also checks that the namespace where
the decl was included from was also in the same file.
Closes #13077
2022-11-11 17:59:53 +02:00
Veikka Tuominen
d2cc55109a
llvm: correct calculation of index of zero-bit field
...
If the field comes before any non-zero-bit field then the index of
the next field should be returned.
Closes #13363
2022-11-11 17:59:53 +02:00
Veikka Tuominen
c4465556fd
Type: check return_type for generic poison before comparing
...
Closes #13423
2022-11-11 17:59:53 +02:00
Cody Tapscott
2897641fb9
stage2: Support modifiers in inline asm
...
These are supported using %[ident:mod] syntax. This allows requesting,
e.g., the "w" (32-bit) vs. "x" (64-bit) views of AArch64 registers.
See https://llvm.org/docs/LangRef.html#asm-template-argument-modifiers
2022-11-11 16:01:31 +02:00
Cody Tapscott
b1357091ae
Add test case for #12043
...
This bug is already resolved, just want to make sure we don't lose
the test case. Closes #12043
2022-11-10 12:23:59 -07:00
Cody Tapscott
fbda15632d
stage2 sema: Make vector constants when operating on vectors
...
Resolves https://github.com/ziglang/zig/issues/13058
2022-11-10 12:22:40 -07:00
Cody Tapscott
8f3880074f
stage2: Be more strict about eliding loads
...
This change makes any of the `*_val` instructions check whether it's
safe to elide copies for by-ref types rather than performing this
elision blindly.
AIR instructions fixed:
- .array_elem_val
- .struct_field_val
- .unwrap_errunion_payload
- .try
- .optional_payload
These now all respect value semantics, as expected.
P.S. Thanks to Andrew for the new way to approach this. Many of the
lines here are from his recommended change, which comes with the
significant advantage that loads are now as small as the intervening
memory access allows.
Co-authored by: Andrew Kelley <andrew@ziglang.org>
2022-11-10 12:22:40 -07:00
Cody Tapscott
ff699722da
stage2: Fix comptime array initialization
...
This is a follow-up to 9dc98fba, which made comptime initialization
patterns for union/struct more robust, especially when storing to
comptime-known pointers (and globals).
Resolves #13063 .
2022-11-10 12:22:37 -07:00
Jakub Konka
4b3637820d
Merge pull request #13495 from ziglang/macho-dsym
...
stage2: misc DWARF debug info fixes and additions for x86_64 and aarch64
2022-11-10 16:50:57 +01:00
Jakub Konka
0914e0a4ec
dwarf: do not assume unsigned 64bit integer for the enum value
2022-11-10 09:36:45 +01:00
Jakub Konka
2d5fbbb44e
Merge pull request #13485 from ziglang/arm64-non-null-actual
...
aarch64: optionals
2022-11-09 21:13:50 +01:00
Veikka Tuominen
61842da9f7
llvm: implement packed unions
...
Closes #13340
2022-11-09 17:14:38 +02:00
Jakub Konka
e83590d0e8
aarch64: pass some tests dealing with optionals
2022-11-08 13:59:47 +01:00
Veikka Tuominen
dc128f403b
Merge pull request #13446 from Vexu/stage2-fixes
...
Stage2 bug fixes
2022-11-07 14:17:26 +02:00
Veikka Tuominen
5d28d171df
Sema: adjust result type of anyerror field access
...
Closes #13448
2022-11-05 13:22:21 +02:00
Veikka Tuominen
f96748ebc1
Sema: coerce elements of array cat
...
Closes #13347
2022-11-05 13:22:21 +02:00
Andrew Kelley
1d68045919
Merge pull request #13101 from alichraghi/o4
2022-11-05 02:34:24 -04:00
Veikka Tuominen
51b1083d66
stage2: fix onePossibleValue of empty unions and enums
...
Closes #13402
2022-11-04 23:13:50 +02:00
Veikka Tuominen
42db468dcb
Sema: make method call work with optionals and error unions
...
Closes #13414
2022-11-04 23:13:49 +02:00
Veikka Tuominen
35afa3fd8b
Sema: correct condition in validateArrayInit
...
Closes #13425
2022-11-04 23:13:49 +02:00
Veikka Tuominen
799a558e39
Sema: implement peer type resolution of function pointers and function bodies
...
Closes #13438
2022-11-04 23:13:49 +02:00
Veikka Tuominen
8c4faa5f3f
Merge pull request #13338 from Vexu/stage2-compile-errors
...
Improve some error messages
2022-11-04 16:04:31 +02:00
Micah Switzer
ea54c9a375
Sema: resolve lazy align in zirReify for union fields
...
Closes #13435
2022-11-04 15:48:08 +02:00
Ali Chraghi
f5f1f8c666
all: rename i386 to x86
2022-11-04 00:09:27 +03:30
Nathan Bourgeois
e64eef366c
Translate-C Remainder Macro Fix
2022-11-03 14:07:00 +02:00
Andrew Kelley
e50789f1cb
Merge pull request #13389 from jacobly0/fix-only-c
...
cbe: enough fixes for `-Donly-c` to be able to produce an executable
2022-11-02 15:53:59 -04:00
Jacob Young
37c104ade0
cbe: ignore comptime fields when generating tuple typedefs
...
This vastly reduces the amount of deduplication state we need to deal with.
2022-11-02 10:21:05 -04:00
Jacob Young
5f31070b8b
cbe: hack around invalid Air
...
Can be changed to `!inst_ty.hisRuntimeBitsIgnoreComptime()` when the
"result location with inferred type ends up being pointer to comptime_int"
test stops producing Air containing a `bitcast(*comptime_int, ...)`.
See #13410
2022-11-02 10:20:31 -04:00
Jacob Young
09763435a8
cbe: support arrays in more places
2022-11-01 20:39:06 -04:00
Jacob Young
071404ff65
cbe: fix optional access
2022-11-01 20:39:05 -04:00
Jacob Young
91fe0b80a2
cbe: fix threadlocal
2022-11-01 20:38:51 -04:00
joachimschmidt557
3ecec50f0c
stage2 AArch64: implement basic switch statements
2022-11-01 20:43:27 +01:00
Jacob Young
b35514ecfe
cbe: disable aarch64 behavior tests that are broken with gcc
2022-10-31 21:01:04 -04:00
Andrew Kelley
ef761c2cbc
Merge pull request #13360 from topolarity/comptime-bool-binops
...
Make `x and false` and `x or true` comptime-known
2022-10-30 22:11:44 -04:00
Jacob Young
a77d89afe3
behavior: enable fixed cbe tests
2022-10-30 15:38:50 -04:00
Cody Tapscott
ca332f57f7
stage2: Make x and false/x or true comptime-known
...
Same as preceding change, but for stage2.
2022-10-30 12:38:08 -07:00
Veikka Tuominen
1ea1228036
Sema: fix floatToInt to zero bit ints
...
Closes #9415
2022-10-29 14:55:43 +03:00
Jacob Young
48a2783969
cbe: implement optional slice representation change
2022-10-29 05:58:41 -04:00
Andrew Kelley
c36eb4ede9
Merge pull request #13221 from topolarity/packed-mem
...
Introduce `std.mem.readPackedInt` and improve bitcasting of packed memory layouts
2022-10-28 21:15:16 -04:00
Evan Haas
c616141241
translate-c: Better support for division in macros
...
Perform C-style arithmetic conversions on operands to division operator
in macros
Closes #13162
2022-10-28 17:59:32 -04:00
Cody Tapscott
40b7792a4c
Enable bitcast test now that #13214 is resolved.
2022-10-28 12:41:15 -07:00
Cody Tapscott
3295fee911
stage2: Use mem.readPackedInt etc. for packed bitcasts
...
Packed memory has a well-defined layout that doesn't require
conversion from an integer to read from. Let's use it :-)
This change means that for bitcasting to/from a packed value that
is N layers deep, we no longer have to create N temporary big-ints
and perform N copies.
Other miscellaneous improvements:
- Adds support for casting to packed enums and vectors
- Fixes bitcasting to/from vectors outside of a packed struct
- Adds a fast path for bitcasting <= u/i64
- Fixes bug when bitcasting f80 which would clear following fields
This also changes the bitcast memory layout of exotic integers on
big-endian systems to match what's empirically observed on our targets.
Technically, this layout is not guaranteed by LLVM so we should probably
ban bitcasts that reveal these padding bits, but for now this is an
improvement.
2022-10-28 08:41:04 -07:00
Veikka Tuominen
6fc71835c3
value: properly hash null_value pointer
...
Closes #13325
2022-10-28 13:31:16 +03:00
Andrew Kelley
2991e4a454
Merge pull request #13288 from Vexu/opt-slice
...
Optimize size of optional slices (+ some fixes)
2022-10-27 22:09:17 -04:00
InKryption
bc72ae5e4e
Sema: Prevent coercion from tuple pointer to mutable slice.
...
Also fix some stdlib code affected by this.
Co-authored by: topolarity <topolarity@tapscott.me>
2022-10-27 22:00:47 -04:00
Veikka Tuominen
d03c47bf85
Sema: use runtime_value instead of creating allocs
2022-10-27 21:08:25 -04:00