Andrew Kelley
4e53249d76
test-cases harness: improve stage2 compatibility
...
* proper skip_stage1 mechanism that doesn't get side-stepped with
manually added test cases.
* avoid runtime-known function pointers.
* check for type equality more simply without checking the type name.
2022-07-26 20:09:48 -07:00
Andrew Kelley
ea3db3274d
link: avoid passing bad ptrs to pwritev
...
At least on Linux, the pwritev syscall checks the pointer and returns
EFAULT before it checks if the length is nonzero.
Perhaps this should be fixed in the standard library, however, these are
still improvements since they make the kernel do less work within the
syscall.
2022-07-26 20:05:54 -07:00
Andrew Kelley
0bc4726e00
LLVM: add probe-stack function attribute
2022-07-26 20:05:06 -07:00
Andrew Kelley
c8c798685f
Merge pull request #12244 from Vexu/stage2
...
Minor stage2 fixes
2022-07-26 17:41:26 -07:00
Veikka Tuominen
d6e3988fe8
Sema: better error when coercing error sets
2022-07-26 23:29:54 +03:00
Andrew Kelley
f50c98a75a
test-cases harness: test all updates
...
even if some are "run" on foreign hosts.
closes #12193
2022-07-26 13:28:46 -07:00
Andrew Kelley
7a09bce232
Merge pull request #12136 from topolarity/llvm-config-rework
...
CMake: Improve usage of `llvm-config` (esp. for consistent static/shared linking)
2022-07-26 11:41:00 -07:00
Andrew Kelley
0ffcf19e3d
Merge pull request #12237 from Vexu/stage2-compile-errors
...
Stage2 improve errors for builtin function options structs
2022-07-26 11:26:35 -07:00
InKryption
a0d3a87ce1
std.fmt: require specifier for unwrapping ?T and E!T
2022-07-26 11:25:49 -07:00
Veikka Tuominen
7862ab9f41
Sema: disable "unreachable else prong" error for error sets for now
...
Closes #11798
2022-07-26 16:40:24 +03:00
Veikka Tuominen
5d99e5ecd4
Sema: improve expression value ignored error
...
Closes #4483
2022-07-26 16:40:24 +03:00
Veikka Tuominen
3d18c8c130
Sema: resolve lazy values for compile log
...
Close #12204
2022-07-26 16:40:24 +03:00
Veikka Tuominen
d78532f462
Sema: give comptime_field_ptr priority over field_ptr in tuples
...
Closes #11983
2022-07-26 16:40:24 +03:00
Veikka Tuominen
a463dc7d6c
AstGen: disable null bytes and empty stings in some places
...
Namely:
* test names
* identifiers
* library names
* import strings
2022-07-26 12:14:59 +03:00
Veikka Tuominen
825fc654b6
Sema: better source location for builtin options
2022-07-26 12:14:59 +03:00
Veikka Tuominen
28478a4bac
Module: improve handling of errors in @call arguments
2022-07-26 12:14:59 +03:00
Jakub Konka
20ea44ef10
macho: fix memory leak and refactor Target usage
2022-07-25 22:46:43 -07:00
r00ster
cff5d9c805
std.mem: add first method to SplitIterator and SplitBackwardsIterator
2022-07-25 22:04:30 +03:00
Veikka Tuominen
2f34d06d01
Sema: analyzeInlineCallArg needs a block for the arg and the param
2022-07-25 22:04:08 +03:00
Luuk de Gram
9a3dacc00e
Merge pull request #12188 from Luukdegram/llvm-wasm-c-abi
...
stage2: llvm - Implement C ABI when targetting wasm32
2022-07-25 16:12:36 +02:00
Andrew Kelley
0d120fcb89
Merge pull request #12225 from ziglang/ci-stage3-standalone
...
CI stage3 test coverage for test-standalone and test-cli
2022-07-25 00:46:56 -07:00
Luuk de Gram
6b4d4c70fd
wasm: Only allow lowering C-ABI compatible types
2022-07-25 06:34:00 +02:00
Luuk de Gram
200b2e4ee1
llvm: correctly lower c-abi for Wasm target
...
When lowering the return type for Wasm if the calling convention is `C`,
it now correctly lower it according to what clang does as specified in:
https://github.com/WebAssembly/tool-conventions/blob/main/BasicCABI.md
This makes use of the same logic as the Wasm backend, ensuring the
generated code does not diverge in function signatures.
When passing arguments accross the C-ABI for the Wasm target,
we want slightly different behavior than x86_64.
For instance: a struct with multiple fields must always be passed
by reference, even if its ABI size fits in a single integer.
However, we do pass larger integers such as 128bit by value,
which LLVM will correctly lower to use double arguments instead.
2022-07-25 06:34:00 +02:00
Luuk de Gram
bf28a47cf2
wasm: pass correct abi-size for scalar values
...
When returning an aggregate type that contains a scalar value (nested),
its abi-size is passed by bits, rather than bytes to `buildOpcode`.
2022-07-25 06:33:56 +02:00
Andrew Kelley
546c75ca46
LLVM: notice the soft_float CPU feature
...
when deciding whether to lower to x86_fp80 instructions, or softfloat
instructions.
Closes #10847
Closes #12090
2022-07-24 17:10:08 -07:00
Andrew Kelley
93ae386f56
stage2: don't skip liveness or codegen if -femit-asm is supplied
...
Fixes Godbolt's CLI usage of Zig.
2022-07-24 15:02:05 -07:00
Andrew Kelley
934573fc5d
Revert "std.fmt: require specifier for unwrapping ?T and E!T."
...
This reverts commit 7cbd586ace46a8e8cebab660ebca3cfc049305d9.
This is causing a fail to build from source:
```
./lib/std/fmt.zig:492:17: error: cannot format optional without a specifier (i.e. {?} or {any})
@compileError("cannot format optional without a specifier (i.e. {?} or {any})");
^
./src/link/MachO/Atom.zig:544:26: note: called from here
log.debug(" RELA({s}) @ {x} => %{d} in object({d})", .{
^
```
I looked at the code to fix it but none of those args are optionals.
2022-07-24 11:50:10 -07:00
InKryption
7cbd586ace
std.fmt: require specifier for unwrapping ?T and E!T.
...
Co-authored-by: Veikka Tuominen <git@vexu.eu>
2022-07-24 12:01:56 +03:00
Meghan
dea437edfb
stage2: implement noinline fn
2022-07-24 11:56:33 +03:00
Andreas Reischuck
903bed931d
report better error for package not found in stage2
2022-07-24 11:55:37 +03:00
Cody Tapscott
5337934bcd
CMake: Add ZIG_LLVM_LINK_MODE to config.h
...
This is currently unused, but it will be needed soon so that we can
avoid linking static libc++ if LLVM/Clang is configured as a shared
library.
2022-07-23 09:03:19 -07:00
Veikka Tuominen
baf516218e
Sema: don't add union field access safety check for single field unions
2022-07-23 15:40:12 +03:00
Veikka Tuominen
2436dd2c1b
Sema: validate duplicate fields in anon structs
2022-07-23 15:40:12 +03:00
Veikka Tuominen
5b29275240
Sema: add some more 'declared here' notes
2022-07-23 15:40:12 +03:00
Veikka Tuominen
881c0cb20b
Sema: add default value here note to invalid comptime field store error
2022-07-23 15:40:12 +03:00
Veikka Tuominen
15dddfd84d
AstGen: make comptime fields in packed and extern structs compile errors
2022-07-23 15:40:12 +03:00
Veikka Tuominen
0ef4cc738b
Sema: check for zero length slices in @alignCast safety
2022-07-23 15:40:12 +03:00
Veikka Tuominen
d75fa86d70
stage2: implement @setFloatMode
2022-07-23 15:40:12 +03:00
Veikka Tuominen
585c160c20
Sema: handle store to comptime field when ResultLoc == .none
2022-07-23 15:40:12 +03:00
Veikka Tuominen
9465906775
Sema: return .comptime_field_ptrs for tuples
2022-07-23 15:40:12 +03:00
Veikka Tuominen
cf87026e52
Sema: @alignCast safety
2022-07-23 15:40:11 +03:00
Veikka Tuominen
711b656773
Sema: @floatToInt safety
2022-07-23 15:40:11 +03:00
Veikka Tuominen
ff7ec4efb5
Sema: bad union field access safety
2022-07-23 15:40:11 +03:00
Veikka Tuominen
55fe34100f
Sema: exact division safety
2022-07-23 15:40:11 +03:00
Veikka Tuominen
76d099950a
Sema: cast negative to unsigned safety
2022-07-23 15:40:11 +03:00
Veikka Tuominen
0782586b15
Sema: divide by zero safety
2022-07-23 15:40:11 +03:00
Veikka Tuominen
9f10dfcb54
Sema: implement shr_exact runtime safety
2022-07-23 15:40:11 +03:00
Veikka Tuominen
4d20d6874c
move passing safety tests to stage2
2022-07-23 15:40:11 +03:00
viri
b728e6aa00
stage1: don't lowercaseify lib names
2022-07-23 15:04:02 +03:00
Yujiri
6b9f609bd0
Fix #6944 : referencing type info alignment causes error in unrelated function
2022-07-23 14:26:52 +03:00