| Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
`stage2_spirv64` -> `stage2_spirv`
|
|
|
|
|
|
|
|
we can run `std.debug.print` now, with both run-time strings and integers!
|
|
Reorganize how the binOp and genBinOp functions work.
I've spent quite a while here reading exactly through the spec and so many
tests are enabled because of several critical issues the old design had.
There are some regressions that will take a long time to figure out individually
so I will ignore them for now, and pray they get fixed by themselves. When
we're closer to 100% passing is when I will start diving into them one-by-one.
|
|
- implements `airSlice`, `airBitAnd`, `airBitOr`, `airShr`.
- got a basic design going for the `airErrorName` but for some reason it simply returns
empty bytes. will investigate further.
- only generating `.got.zig` entries when not compiling an object or shared library
- reduced the total amount of ops a mnemonic can have to 3, simplifying the logic
|
|
|
|
|
|
|
|
|
|
|
|
Some tests are now failing due to debug info changes, some tests
now pass due to improved compiler functionality.
|
|
|
|
Signed-off-by: Eric Joldasov <bratishkaerik@getgoogleoff.me>
|
|
Implements the ptr_elem_val air tag. Implementation is unified
with ptr_elem_ptr.
|
|
|
|
|
|
Note that this commit also changes the layout of optional for all
other backends using `src/codegen.zig` without updating them!
|
|
|
|
|
|
also enables many passing behavior tests
|
|
|
|
closes #707
|
|
closes #13546
|
|
- unwrap_errunion_err for registers
- unwrap_errunion_payload for registers
- ptr_slice_len_ptr for all MCValues
- ptr_slice_ptr_ptr for all MCValues
|
|
In the case of 'continue' or 'break' inside the 'else' block of a
'while' or 'for' loop.
Closes #12109
|
|
|
|
|
|
|
|
This involved an LLVM backend fix for the aggregate_init instruction.
|
|
|
|
* airSlice
* airArrayToSlice
* and initial support for airSlicePtr and co
|
|
|
|
|
|
|
|
|
|
The ZIR instructions `switch_capture_else` and `switch_capture_ref` are
removed because they are not needed. Instead, the prong index is set to
max int for the special prong.
Else prong with error sets is not handled yet.
Adds a new behavior test because there was not a prior on to cover only
the capture value of else on a switch.
|
|
The main problem was that the loop body was treated as an expression
that was one of the peer result values of a loop, when in reality the
loop body is noreturn and only the `break` operands are the result
values of loops.
This was solved by introducing an override that prevents rvalue() from
emitting a store to result location instruction for loop bodies.
An orthogonal change also included in this commit is switching
`elem_val` index expressions to using `coerced_ty` and doing the
coercion to `usize` inside `Sema`, resulting in smaller ZIR (since the
cast becomes implied).
I also changed the break operand expression to use `reachableExpr`,
introducing a new compile error for double break.
This makes a few more behavior tests pass for `while` and `for` loops.
|
|
* stage1: change the `@typeName` of `@TypeOf(undefined)`,
`@TypeOf(null)`, and `@TypeOf(.foo)` to match stage2.
* move passing behavior tests to the passing-for-stage2 section.
|
|
and move over some passing tests
|
|
Companion commit to 61a53a587558ff1fe1b0ec98bb424022885edccf.
This commit also moves over a bunch of behavior test cases to the
passing-for-stage2 section.
|
|
|
|
Conflicts:
* doc/langref.html.in
* lib/std/enums.zig
* lib/std/fmt.zig
* lib/std/hash/auto_hash.zig
* lib/std/math.zig
* lib/std/mem.zig
* lib/std/meta.zig
* test/behavior/alignof.zig
* test/behavior/bitcast.zig
* test/behavior/bugs/1421.zig
* test/behavior/cast.zig
* test/behavior/ptrcast.zig
* test/behavior/type_info.zig
* test/behavior/vector.zig
Master branch added `try` to a bunch of testing function calls, and some
lines also had changed how to refer to the native architecture and other
`@import("builtin")` stuff.
|
|
And fix test cases to make them pass. This is in preparation for
starting to pass behavior tests with self-hosted.
|