Luuk de Gram
34b786fb0f
enable link-test on linux CI
2022-07-23 10:08:51 +02:00
Luuk de Gram
4776065036
Use EmulatableRunStep for MachO linker tests
2022-07-23 10:03:51 +02:00
Jakub Konka
a8bfddfaea
Merge pull request #12140 from ziglang/macho-gc-sections
...
macho: add support for `-dead_strip` (GC sections) and simplify symbol resolution
2022-07-23 00:01:09 -07:00
Andrew Kelley
f591936480
Merge pull request #12198 from Vexu/stage2
...
Sema: fix loading and storing of optional pointers represented as pointers
2022-07-22 20:47:40 -07:00
Andrew Kelley
5dd59a5423
Merge pull request #12191 from ziglang/underaligned-fields
...
LLVM: fix lowering of structs with underaligned fields
2022-07-22 11:58:50 -07:00
Veikka Tuominen
423a19fa60
Sema: add error for dereferencing invalid payload ptr at comptime
2022-07-22 21:10:50 +03:00
Veikka Tuominen
03b1fbe50d
stage2: fix airIsErr when is_ptr == true
2022-07-22 21:07:55 +03:00
Veikka Tuominen
1f748fe426
Sema: fix mutation of optional ptr represented as regular ptr
2022-07-22 19:50:11 +03:00
Jakub Konka
2c184f9a5f
link-tests: add checkNotPresent and add -dead_strip smoke test
...
`checkNotPresent` is the inverse of `checkNext` - if the phrase is
found in the output, then it fails the test.
2022-07-22 16:58:21 +02:00
Jakub Konka
d80fcc8a0b
macho: rework symbol handling for incremental stage2 builds
2022-07-22 16:58:20 +02:00
Jakub Konka
03feea0fb2
macho: split section into subsections if requested and/or possible
2022-07-22 16:58:20 +02:00
Jakub Konka
b81c48d985
macho: read the entire file contents into memory at once
2022-07-22 16:58:20 +02:00
Veikka Tuominen
c619371ec1
Sema: fix loading and storing of optional pointers represented as pointers
2022-07-22 17:03:42 +03:00
Veikka Tuominen
8a488fcdb8
Sema: validate empty array init
2022-07-22 17:03:42 +03:00
Andrew Kelley
046a4d084b
update test-translate-c cases to stage2
2022-07-21 22:51:17 -07:00
Andrew Kelley
3114978389
update standalone test cases for stage2
2022-07-21 22:51:17 -07:00
Andrew Kelley
46a06074eb
tests: remove superfluous newlines from logs
2022-07-21 22:51:17 -07:00
Andrew Kelley
f550c29c4e
LLVM: fix lowering of structs with underaligned fields
...
When lowering a struct type to an LLVM struct type, keep track of
whether there are any underaligned fields. If so, then make it a packed
llvm struct. This works because we already insert manual padding bytes
regardless.
We could unconditionally use an LLVM packed struct; the reason we bother
checking for underaligned fields is that it is a conservative choice, in
case LLVM handles packed structs less optimally. A future improvement
could simplify this code by unconditionally using packed LLVM structs
and then make sure measure perf is unaffected.
closes #12190
2022-07-21 22:51:17 -07:00
Andrew Kelley
b749487f48
add new compile error note to old test case
2022-07-21 22:05:46 -07:00
Andrew Kelley
25f3be32db
Sema: fix fn pointer align disagrees with fn align error
...
Check the specified function alignment rather than the effective
function alignment.
2022-07-21 15:19:56 -07:00
Andrew Kelley
fc6e111b76
Sema: improve compile error for bad function alignment
...
* Integrate more declaratively with src/target.zig
* Only trigger the check when a function body is found, do not trigger
for function types.
2022-07-21 13:55:29 -07:00
Andrew Kelley
b946934576
build.zig: 32 MiB stack size
...
This gives more headroom for comptime recursion, especially for debug
builds of Zig.
2022-07-21 12:23:33 -07:00
Andrew Kelley
644baa0f5b
constrain target/backend of new test cases
...
avoids testing stuff that doesn't work yet.
2022-07-21 12:21:30 -07:00
Veikka Tuominen
794beafb9c
Sema: validate extern struct field types earlier
...
`validateExternType` does not require the type to be resolved so we can
check it earlier. Only doing it in `resolveTypeFully` lead to worse or
missing compile errors.
2022-07-21 12:21:30 -07:00
Veikka Tuominen
821e4063f9
Sema: better source location for function call args
2022-07-21 12:21:30 -07:00
Veikka Tuominen
79ef0cdf30
Sema: better function parameter source location
2022-07-21 12:21:30 -07:00
Veikka Tuominen
83b2d2cd3e
Sema: better source location for incompatible capture group
2022-07-21 12:21:30 -07:00
Veikka Tuominen
9fb8d21a01
AstGen: add error for fields in opaque types
2022-07-21 12:21:30 -07:00
Veikka Tuominen
1705a21f80
Sema: more union and enum tag type validation
2022-07-21 12:21:30 -07:00
Veikka Tuominen
8feb398760
Sema: validate function parameter types and return type
2022-07-21 12:21:30 -07:00
Veikka Tuominen
d851b24180
Sema: validate function pointer alignment
2022-07-21 12:21:30 -07:00
Veikka Tuominen
76e7959a90
Sema: explain why comptime is needed
2022-07-21 12:21:30 -07:00
Veikka Tuominen
195c3cd89f
fix errors in tests not tested locally or on CI
2022-07-21 12:21:30 -07:00
Veikka Tuominen
d729173204
stage2: better pointer source location
2022-07-21 12:21:30 -07:00
Veikka Tuominen
29815fe9de
Sema: disallow 'align' on functions on wasm
2022-07-21 12:21:30 -07:00
Veikka Tuominen
62120e3d0e
Sema: fix non-exhaustive union switch checks
2022-07-21 12:21:30 -07:00
Andrew Kelley
ca3adb83b7
Merge pull request #12111 from ziglang/ci-stage3
...
CI: increase stage3 test coverage
2022-07-20 17:07:19 -07:00
Andrew Kelley
5b7e332b28
disable new behavior test in stage1
...
I regressed this in 379beceffd1b0a0b0d8f3163dc02eba1e53ffa39; sorry
about that.
2022-07-20 16:17:33 -07:00
Andrew Kelley
379beceffd
improve test case from previous commit
...
Now it checks that the code is correctly compiled rather than only checking
that it does not crash the compiler.
2022-07-20 15:21:24 -07:00
Andrew Kelley
1ec50613bf
CI: increase stage3 test coverage
...
* Use a debug build of stage3 instead of a debug build of stage2 for
our self-hosted compiler test coverage.
* Move coverage from stage1 to stage3 for:
- building self-hosted without LLVM
- building self-hosted for 32-bit arm
- test-compiler-rt
- test-behavior
- test-std
- test-compare-output
- test-asm-link
- test-fmt
2022-07-20 12:27:03 -07:00
Veikka Tuominen
d41dd499a9
stage2 llvm: fix handling of pointer fields in packed structs
2022-07-20 17:07:12 +03:00
Andrew Kelley
0efc6a35be
Sema: fix enum value without tag name used as switch item
...
Previously stage2 would report a false positive compile error saying there
was no tag for this value.
2022-07-19 18:39:48 -07:00
Andrew Kelley
1d5f865cfa
Sema: fix runtime instructions omitted
...
in the presence of comptime control flow.
fixes #12171
2022-07-19 17:45:38 -07:00
Veikka Tuominen
b2486fbc5e
Merge pull request #12121 from Vexu/span
...
Stage2 point to error location using spans
2022-07-16 12:22:53 +03:00
Veikka Tuominen
1463144fc8
Compilation: point caret in error message at the main token
2022-07-15 15:11:43 +03:00
Andrew Kelley
04572f6e34
Sema: fix coerceResultPtr
...
It did not handle properly when the dummy operand was a comptime_int; it
was crashing in coerce because comptime_int is supposed to be
comptime-known. So when calling coerceResultPtr, we pass the actual
operand, not a dummy operand, which means it will have the proper
comptime value when necessary.
2022-07-14 18:11:46 -07:00
Andrew Kelley
667ad9250f
Sema: fix coerce_result_ptr in case of inferred result type
...
Previously, the logic for analyzing coerce_result_ptr would generate
invalid bitcast instructions which did not include coercion logic, such
as optional wrapping, resulting in miscompilations.
Now, the logic of resolve_inferred_alloc goes back over all the
placeholders inserted by coerce_result_ptr, and replaces them with logic
doing the proper coercions.
Closes #12045
2022-07-14 16:48:44 -07:00
Andrew Kelley
1653a9b259
Merge pull request #12098 from ziglang/llvm-riscv64
...
LLVM: implement signext/zeroext attributes
2022-07-13 19:15:19 -04:00
Andrew Kelley
fad95741db
AstGen: fix loop control flow applying to wrong loop
...
In the case of 'continue' or 'break' inside the 'else' block of a
'while' or 'for' loop.
Closes #12109
2022-07-13 16:10:41 -07:00
Andrew Kelley
35e7011124
LLVM: implement signext/zeroext attributes
...
For calling convention ABI purposes, integer attributes and return
values need to have an LLVM attribute signext or zeroext added
sometimes. This commit implements that logic.
It also implements a proof-of-concept of moving the F16T type from
being a compiler_rt hack to being how the compiler lowers f16 in
functions that need to match certain calling conventions.
Closes #12054
2022-07-13 11:14:46 -07:00