Andrew Kelley
44f9061b71
fix merge conflicts and test cases
2022-03-22 15:58:19 -07:00
Andrew Kelley
60d8c4739d
Sema: introduce a mechanism in Value to resolve types
...
This commit adds a new optional argument to several Value methods which
provides the ability to resolve types if it comes to it. This prevents
having duplicated logic inside both Sema and Value.
With this commit, the "struct contains slice of itself" test is passing
by exploiting the new lazy_align Value Tag.
2022-03-22 15:45:59 -07:00
Andrew Kelley
593130ce0a
stage2: lazy @alignOf
...
Add a `target` parameter to every function that deals with Type and
Value.
2022-03-22 15:45:58 -07:00
Jakub Konka
b74f292410
Revert "ignore target lib dirs when invoked with -feach-lib-rpath"
...
This reverts commit 3701697a0a586e630a2452dea29951f0051a47fd.
The commit introduced a regression when building stage2 on nixOS where
the linker would fail to find relevant LLVM dynamic libraries as some
search dirs were missing.
2022-03-22 20:51:34 +01:00
Jan200101
3701697a0a
ignore target lib dirs when invoked with -feach-lib-rpath
2022-03-22 09:03:22 +01:00
Jakub Konka
0376fd09bc
macho: extend CodeSignature to accept entitlements
...
With this change, we can now bake in entitlements into the binary.
Additionally, I see this as the first step towards full code signature
support which includes baking in Apple issued certificates for
redistribution, etc.
2022-03-22 07:06:39 +01:00
Mitchell Hashimoto
91fd0f42c8
stage2: out of bounds error for slicing
2022-03-21 22:10:34 -04:00
Andrew Kelley
0fb005d1d0
Sema: dummy implementation of @errorReturnTrace
...
Also update std/build.zig to use stage2 function pointer semantics.
This gets us a little bit closer to `zig build` working, although it is
now hitting a new crash in the compiler.
2022-03-21 19:08:30 -07:00
Luuk de Gram
be579d4797
wasm: Implement @popCount
2022-03-21 22:01:34 -04:00
Andrew Kelley
7141356838
Merge pull request #11237 from wsengir/stage2-vectors
...
stage2: implement most vector operations in Sema and LLVM backend
2022-03-21 20:05:29 -04:00
Andrew Kelley
7eddef423d
behavior tests: alter test coverage for vectors
...
* Use `@Vector` syntax instead of `std.meta.Vector`.
* Use `var` instead of `const` for tests so that we get runtime
coverage instead of only comptime coverage. Comptime coverage is done
with `comptime doTheTest()` calls.
2022-03-21 17:03:24 -07:00
Andrew Kelley
513a53e9aa
Sema: restore propagation of error.GenericPoison for checking vectors
2022-03-21 17:03:05 -07:00
William Sengir
c9598c4cd3
behavior tests: enable all vector tests for the stage2 LLVM backend
2022-03-21 16:54:19 -07:00
William Sengir
afdcfb005e
Sema: make most instructions vector-agnostic
...
Made most `Value` functions require a `Type`. If the provided type is a
vector, then automatically vectorize the operation and return with
another vector. The Sema side can then automatically become vectorized
with minimal changes. There are already a few manually vectorized
instructions, but we can simplify those later.
2022-03-21 16:54:19 -07:00
William Sengir
3f4676901a
stage2: return Value.zero when truncating int to 0 bits at comptime
2022-03-21 16:54:19 -07:00
William Sengir
2d8fef5680
stage2: make bool binop AIR return types based on operand type
...
This allows vector-of-bools operands to return a vector-of-bools.
2022-03-21 16:54:19 -07:00
William Sengir
4e357151a5
stage2: align store for vector-to-array bitcast in LLVM backend
...
This was causing a very rare segfault when LLVM would emit `vmovdqa`
using an unaligned memory operand on the stack.
2022-03-21 16:54:19 -07:00
William Sengir
961248cde3
stage2: make more instructions vector-compatible in LLVM backend
2022-03-21 16:54:19 -07:00
William Sengir
b96699059c
stage2: implement cmp_vector for LLVM backend
2022-03-21 16:54:19 -07:00
William Sengir
0f48307041
stage2: add AIR instruction cmp_vector
...
The existing `cmp_*` instructions get their result type from `lhs`, but
vector comparison will always return a vector of bools with only the
length derived from its operands. This necessitates the creation of a
new AIR instruction.
2022-03-21 16:54:19 -07:00
William Sengir
862e63f535
stage2: fix typo in print_air.zig
2022-03-21 16:54:19 -07:00
William Sengir
cda8f65489
behavior tests: use expect instead of expectEqual in vector.zig
2022-03-21 16:54:19 -07:00
Jakub Konka
2f4473b653
macho: add more codesig constants
2022-03-22 00:03:13 +01:00
Jakub Konka
d71bd0300b
Merge pull request #11195 from mparadinha/float-to-int
...
stage2: x86_64: implement `@floatToInt` for `f32` and `f64`
2022-03-21 23:54:36 +01:00
Jakub Konka
a9b6de693c
Merge pull request #11223 from mparadinha/ptr-elem-val
...
stage2: x86_64: implement `ptr_elem_val`
2022-03-21 23:54:17 +01:00
Jakub Konka
00e2113c8b
x64: refactor fix reg aliasing in genSetReg
2022-03-21 23:38:01 +01:00
Andrew Kelley
916a65cb7b
Merge pull request #11224 from koachan/sparc64-codegen
...
stage2 sparcv9: Add instruction encoder and placeholder codegen impl
2022-03-21 18:21:31 -04:00
mparadinha
79e2d4b3f6
stage2: x86_64: update passing tests after implementing ptr_elem_val
...
the 3 tests that called `testArray2DConstDoublePtr` started passing
after implementing `ptr_elem_val`. the rest of these I think were
already passing before.
2022-03-21 20:13:27 +00:00
mparadinha
35eaaed7c4
stage2: x86_64: use correct register size when loading things from memory
2022-03-21 19:32:46 +00:00
mparadinha
6d7808e647
stage2: x86_64: implement ptr_elem_val
...
The codegen for this is almost identical to `ptr_elem_ptr` except
there's an extra `mov` at the end to replace the pointer with the
value it points to, "in-place" (which can be done in a single
instruction without any extra registers).
2022-03-21 19:32:46 +00:00
Andrew Kelley
18a43b61f9
Merge pull request #11253 from Vexu/pretty-print-values
...
stage2: print values with types
2022-03-21 15:15:38 -04:00
Veikka Tuominen
0577069af5
stage2 llvm: fix lowerDeclRefValue for function aliases
2022-03-21 15:12:32 -04:00
Veikka Tuominen
59668fbe80
stage2: add test for fixed issue
...
Closes #11157
2022-03-21 15:05:21 +02:00
Veikka Tuominen
a31fe0ff12
stage2: add way to print values with types
2022-03-21 15:03:42 +02:00
Joachim Schmidt
b48d8cce52
Merge pull request #11235 from joachimschmidt557/stage2-riscv
...
stage2 RISCV64: remove MCValue.embedded_in_code
2022-03-21 12:36:47 +01:00
Lee Cannon
3d8d6c0a6d
OptionsStep: Always use fmtId for type names.
2022-03-21 02:22:43 -04:00
Andrew Kelley
827538b88f
Merge pull request #11241 from jagt/master
...
add compiler_rt ceilf/ceil/ceill
2022-03-21 02:22:07 -04:00
William Sengir
a5dc3f0342
stage2: add safety checks for index out of bounds
2022-03-20 18:04:38 -04:00
Andrew Kelley
65058ebd72
freestanding libc: remove ceil functions
...
Now that they are in compiler-rt, they can be removed from here.
2022-03-20 13:29:48 -07:00
jagt
b7f4045184
add compiler_rt ceilf/ceil/ceill
...
this should fix stage1 build error with msvc 2019
2022-03-20 13:29:23 -07:00
William Sengir
9f25c8140c
cmake: add missing DWARF files to ZIG_STAGE2_SOURCES
2022-03-20 14:48:37 +01:00
Daniel Hooper
911c839e97
add error when binary ops don't have matching whitespace on both sides
...
This change also moves the warning about "&&" from the AstGen into the parser so that the "&&" warning can supersede the whitespace warning.
2022-03-20 12:55:04 +02:00
Andrew Kelley
0576086395
stage2: remove Value.Tag.abi_align_default
...
and make Decl alignment & linksection, and struct & union field alignment
be scalar values, not Value values.
YAGNI
2022-03-20 00:36:44 -07:00
Andrew Kelley
3ef34feaeb
tools: fix gdb pretty printers
...
needed after merging 5c3325588ef4e85e85cb201ad9328fe26bbb8dca.
2022-03-20 00:36:44 -07:00
Andrew Kelley
6d73f89bf1
stage2: disable default panic handler when linking -lc
...
It's failing to compile std.os.dl_iterate_phdr correctly.
2022-03-20 00:36:44 -07:00
Daniele Cocca
b6203b89d6
CBE: implement mod, divFloor, divTrunc
2022-03-19 21:01:36 -04:00
Andrew Kelley
1bd595ceea
Merge pull request #11233 from Luukdegram/wasm-tests
...
stage2: wasm - union_init and passing tests
2022-03-19 19:41:55 -04:00
Cody Tapscott
19331b323d
stage2: Correctly align decls for comptime allocs
...
This updates WipAnonDecl to require an alignment provided by the caller,
which is needed for explicitly aligned comptime allocs.
2022-03-19 19:41:23 -04:00
Robin Voetter
5c3325588e
stage1: make type names more unique
2022-03-19 19:40:46 -04:00
Andrew Kelley
a318aeed9b
Merge pull request #11222 from Vexu/dbg_block
...
stage2: add debug info for payload captures + inline function parameters
2022-03-19 16:05:22 -04:00