31446 Commits

Author SHA1 Message Date
mlugg
04ffc1c963
langref: update enum_export_error.zig for callconv changes 2024-10-19 19:21:33 +01:00
mlugg
830230176d
std: update uses of .Inline callconv 2024-10-19 19:21:33 +01:00
mlugg
3ef8bb6354
llvn: fix incorrect mips64 callconv handling 2024-10-19 19:21:32 +01:00
mlugg
1d1e8e1105
link.Dwarf: handle avr_signal and avr_builtin callconvs 2024-10-19 19:21:32 +01:00
mlugg
bde68fdebc
std.Target: correct C callconv on hardfloat ARM 2024-10-19 19:21:32 +01:00
mlugg
1f11eed3d1
llvm: fix lowering of avr_interrupt and m68k_interrupt callconvs 2024-10-19 19:21:32 +01:00
mlugg
ed862b05ae
std.builtin.CallingConvention: remove deprecated RISC-V privilege mode
See b6cade0703
2024-10-19 19:21:32 +01:00
mlugg
0b786059b5
compiler: avoid unreasonable eval branch quotas
Using `@FieldType` (#21702).
2024-10-19 19:21:17 +01:00
mlugg
2319d62f21
std.builtin.CallingConvention: include exact architecture tags in comments 2024-10-19 19:15:24 +01:00
mlugg
d466c08e05
Sema: minor cleanup 2024-10-19 19:15:24 +01:00
mlugg
cb48376bec
cbe,translate-c: support more callconvs
There are several more that we could support here, but I didn't feel
like going down the rabbit-hole of figuring them out. In particular,
some of the Clang enum fields aren't specific enough for us, so we'll
have to switch on the target to figure out how to translate-c them. That
can be a future enhancement.
2024-10-19 19:15:24 +01:00
mlugg
67580ede5e
std.builtin.CallingConvention: RISC-V PrivilegeLevel -> PrivilegeMode
The RISC-V specification uses these terms a little interchangably, but
"mode" seems more correct here.
2024-10-19 19:15:24 +01:00
mlugg
a2c519ba67
link: add clarifying comment 2024-10-19 19:15:24 +01:00
mlugg
6657982e56
std.builtin.CallingConvention: don't provide bogus winapi value 2024-10-19 19:15:24 +01:00
mlugg
2d9a167cd2
std.Target: rename defaultCCallingConvention and Cpu.Arch.fromCallconv 2024-10-19 19:15:23 +01:00
mlugg
cbfe00b17d
std.zig.render: fix callconv(.Inline) -> inline fn promotion 2024-10-19 19:15:23 +01:00
mlugg
4be0cf30fc
test: update for CallingConvention changes
This also includes some compiler and std changes to correct error
messages which weren't properly updated before.
2024-10-19 19:15:23 +01:00
mlugg
ec19086aa0
compiler: remove @setAlignStack
This commit finishes implementing #21209 by removing the
`@setAlignStack` builtin in favour of `CallingConvention` payloads. The
x86_64 backend is updated to use the stack alignment given in the
calling convention (the LLVM backend was already updated in a previous
commit).

Resolves: #21209
2024-10-19 19:15:23 +01:00
mlugg
bc797a97b1
std: update for new CallingConvention
The old `CallingConvention` type is replaced with the new
`NewCallingConvention`. References to `NewCallingConvention` in the
compiler are updated accordingly. In addition, a few parts of the
standard library are updated to use the new type correctly.
2024-10-19 19:15:23 +01:00
mlugg
36405b9b43
stage1: update zig1.wasm
As well as being necessary for the `CallingConvention` changes, this
update includes the following notable changes:

* Fix unlabeled `break` targeting the wrong scope in the presence of
  labeled continue, unblocking #21422
* Implement `@FieldType`
* Implement `@splat` on arrays

Signed-off-by: mlugg <mlugg@mlugg.co.uk>
2024-10-19 19:13:41 +01:00
mlugg
51706af908
compiler: introduce new CallingConvention
This commit begins implementing accepted proposal #21209 by making
`std.builtin.CallingConvention` a tagged union.

The stage1 dance here is a little convoluted. This commit introduces the
new type as `NewCallingConvention`, keeping the old `CallingConvention`
around. The compiler uses `std.builtin.NewCallingConvention`
exclusively, but when fetching the type from `std` when running the
compiler (e.g. with `getBuiltinType`), the name `CallingConvention` is
used. This allows a prior build of Zig to be used to build this commit.
The next commit will update `zig1.wasm`, and then the compiler and
standard library can be updated to completely replace
`CallingConvention` with `NewCallingConvention`.

The second half of #21209 is to remove `@setAlignStack`, which will be
implemented in another commit after updating `zig1.wasm`.
2024-10-19 19:08:59 +01:00
mlugg
8573836892
incremental: disable flaky test 2024-10-18 09:46:03 +01:00
mlugg
097766bba3 compiler: implement @FieldType
Resolves: #21702
2024-10-18 08:50:40 +01:00
Andrew Kelley
fffbb511db
Merge pull request #21736 from alexrp/qemu-9.1
ci: Update to QEMU 9.1.0 in x86_64-linux scripts
2024-10-17 19:50:42 -07:00
Alex Rønne Petersen
8bfc36f091
ci: Update to QEMU 9.1.0 in x86_64-linux scripts. 2024-10-18 00:55:20 +02:00
Alex Rønne Petersen
b113415871
ci: Remove -fwasmtime from aarch64-linux scripts.
This is covered by the x86_64-linux scripts. Also remove the TODO comments
related to -fqemu for the same reason.
2024-10-18 00:55:18 +02:00
Alex Rønne Petersen
ff594eae49 std.Target: Make Abi.default() more smarter.
This builds on 221bd829bcb4318be941a93029b9c12d8317845d with more research I did
for test/llvm_targets.zig.
2024-10-18 00:10:43 +02:00
Andrew Kelley
8504e1f550
Merge pull request #21610 from alexrp/riscv-abis
Fix some RISC-V ABI issues and add ILP32/LP64 (soft float) to module tests
2024-10-17 12:54:44 -07:00
wooster0
816dfca0b5 langref: update builtin variadic functions
Documentation was outdated.
2024-10-17 11:51:06 +03:00
Alex Rønne Petersen
d38ed893c6
Merge pull request #21726 from alexrp/target-api
`std.Target`: Some miscellaneous API improvements
2024-10-17 02:49:34 +02:00
Justin Braben
4a2a0f50ca
fix compilation errors for fs and fs.Dir (#21643)
* fix compilation errors for fs and fs.Dir

* mem.span instead of mem.sliceTo

* Updating symLinkAbsoluteW function parameters

* Update with expected rename semantics
2024-10-17 01:08:58 +02:00
Alex Rønne Petersen
549a7eba40
std.Target: Rename OS version range functions to drop the "get" prefix. 2024-10-16 22:25:29 +02:00
Alex Rønne Petersen
55fe86c57e
std.Target: Remove isBpfFreestanding().
The only use of this has nothing to do with the OS tag.
2024-10-16 22:25:20 +02:00
Alex Rønne Petersen
140fb615a6
std.Target: Move isLib{C,Cxx}LibName() to std.zig.target.
These are really answering questions about the Zig compiler's capacity to
provide a libc/libc++ implementation. As such, std.zig.target seems like a more
fitting place for these.
2024-10-16 22:25:13 +02:00
Alex Rønne Petersen
bdb00b393e
std.Target: Only consider libxnet to be a libc library name for musl.
glibc has never had this.
2024-10-16 22:24:57 +02:00
Alex Rønne Petersen
879a39a700
std.Target: Ignore case for all Darwin platforms in isLibCLibName().
Matches isLibCxxLibName() behavior.
2024-10-16 22:24:52 +02:00
Alex Rønne Petersen
c76a98f28a
std.Target: Rename is_lib{c,cxx}_lib_name() to isLib{C,Cxx}LibName(). 2024-10-16 22:24:46 +02:00
Alex Rønne Petersen
482759079f
std.Target: Move the elfiamcu check under the x86 prong in toElfMachine(). 2024-10-16 22:24:38 +02:00
Matthew Lugg
6201031e05
Merge pull request #21722 from mlugg/incremental
incremental compilation progress
2024-10-16 20:29:55 +01:00
mlugg
3ba4f86198
incremental: disable failing test
The previous commit exposed a linker bug.
2024-10-16 16:30:38 +01:00
mlugg
22539783ad
incremental: introduce file dependencies to handle AstGen failures
The re-analysis here is a little coarse; it'd be nice in the future to
have a way for an AstGen failure to preserve *all* analysis which
depends on the last success, and just hide the compile errors which
depend on it somehow. But I'm not sure how we'd achieve that, so this
works fine for now.

Resolves: #21223
2024-10-16 16:30:36 +01:00
mlugg
c6842b58d4
Zcu: cache output of resolveReferences between calls
This not only simplifies the error bundling logic, but also improves
efficiency by allowing the result to be cached between, for instance,
multiple calls to `totalErrorCount`.
2024-10-16 16:30:36 +01:00
mlugg
a7dd34bfc5
incremental: add new test case
This isn't exactly the case provided in #11290, but is a slightly
simpler case which I know would have triggered the same bug in the old
implementation of incremental compilation.

Resolves: #11290
2024-10-16 14:22:33 +01:00
Alex Rønne Petersen
bdd3bc056e
Merge pull request #21715 from alexrp/loongarch-porting
Some miscellaneous LoongArch port work
2024-10-16 09:13:51 +02:00
Alex Rønne Petersen
ecd5878b74
Merge pull request #21714 from alexrp/target-cpu-baseline
`std.Target`: Make `Cpu.baseline()` take OS into consideration and pick a better CPU for Apple targets
2024-10-16 04:59:02 +02:00
Alex Rønne Petersen
7a3626d1c6
llvm: Disable f16 lowering for loongarch.
This should be reverted with LLVM 20.
2024-10-16 01:19:00 +02:00
Alex Rønne Petersen
5e4249eb8b
llvm: Fix natural int width specifications for loongarch in DataLayoutBuilder. 2024-10-16 01:10:36 +02:00
Alex Rønne Petersen
95674fca0c
std.Thread: Use loongarch freeAndExit() implementation for loongarch32 too. 2024-10-16 01:10:36 +02:00
Alex Rønne Petersen
1cdb143af2
std.Target: Fix loongarch32 handling in C type alignment calculation. 2024-10-16 01:10:36 +02:00
Alex Rønne Petersen
dd983e12aa
compiler-rt: Use loongarch clear_cache() implementation for loongarch32 too. 2024-10-16 01:10:35 +02:00