Andrew Kelley
83f300218f
upgrade behavior test to stage2 fn ptr semantics
2022-06-09 15:37:16 -07:00
Andrew Kelley
f4d5fcde72
AstGen: avoid redundant "ref" instructions
...
Whenever a `ref` instruction is needed, it is created and saved in
`AstGen.ref_table` instead of being immediately appended to the current
block body. Then, when the referenced instruction is being added to the
parent block (e.g. from setBlockBody), if it has a ref_table entry, then
the ref instruction is added directly after the instruction being referenced.
This makes sure two properties are upheld:
1. All pointers to the same locals return the same address. This is required
to be compliant with the language specification.
2. `ref` instructions will dominate their uses. This is a required property
of ZIR.
A complication arises when a ref instruction refs another ref
instruction. The logic in appendBodyWithFixups must take this into
account, recursively handling ref refs.
2022-06-08 20:40:16 -07:00
Andrew Kelley
7c0614ea65
Sema: implement zirRetErrValueCode
2022-06-08 15:51:48 -07:00
Andrew Kelley
d557dedf6c
add a missing align() to a behavior test
2022-06-08 15:38:15 -07:00
Andrew Kelley
434226c89d
stage2: fix type printing of sub-byte pointers
2022-06-08 15:18:43 -07:00
Andrew Kelley
53c86febcb
stage2: packed struct fixes for big-endian targets
2022-06-07 22:47:08 -07:00
Andrew Kelley
3e30ba3f20
stage2: better codegen for byte-aligned packed struct fields
...
* Sema: handle overaligned packed struct field pointers
* LLVM: handle byte-aligned packed struct field pointers
2022-06-07 21:05:40 -07:00
Andrew Kelley
6ff7b437ff
Merge pull request #11813 from Vexu/stage2
...
`zig2 build test-std` finale
2022-06-07 20:07:28 -04:00
Jakub Konka
3cb3873382
Merge pull request #11814 from ziglang/x64-stack-handling
...
x64: improves stack handling, fixes a heisenbug, adds micro-optimisations
2022-06-07 23:22:20 +02:00
Jakub Konka
6c59aa9e02
Merge pull request #11806 from koachan/sparc64-codegen
...
stage2: sparc64: Some more Air lowerings
2022-06-07 21:24:56 +02:00
Veikka Tuominen
e4c0b848a4
Sema: allow simple else body even when all errors handled
2022-06-07 21:27:06 +03:00
Veikka Tuominen
d5e3d5d74c
Sema: make analyzeIsNonErr even lazier for inferred error sets
2022-06-07 21:27:06 +03:00
Jakub Konka
a8bce8f14b
x64: pass behavior test bugs/1381
2022-06-07 19:33:43 +02:00
Andrew Kelley
e9fc58eab7
LLVM: handle extern function name collisions
...
Zig allows multiple extern functions with the same name, and the
backends have to handle this possibility.
For LLVM, we keep a sparse map of collisions, and then resolve them in
flushModule(). This introduces some technical debt that will have to be
resolved when adding incremental compilation support to the LLVM
backend.
2022-06-07 00:47:10 -04:00
Jakub Konka
d9b0c984aa
Merge pull request #11794 from ziglang/elf-macho-alignment
...
elf+macho: use explicit alignment on Decl if specified
2022-06-07 01:03:15 +02:00
Veikka Tuominen
84000aa820
Sema: fix inline call of func using ret_ptr with comptime only type
2022-06-06 13:11:50 -07:00
Veikka Tuominen
8fa88c88c2
AstGen: fix coercion scope type when stores are eliminated
2022-06-06 13:11:50 -07:00
Veikka Tuominen
cb5d2b691a
Sema: validate equality on store to comptime field
2022-06-06 13:11:50 -07:00
Veikka Tuominen
a040ccb42f
Sema: fix coerce result ptr outside of functions
2022-06-06 13:11:50 -07:00
Koakuma
97d35a5147
behaviortest: Skip 'align(N) on functions' on sparc64 for now
2022-06-06 21:17:09 +07:00
Jakub Konka
95966f6fd7
elf+macho: use explicit alignment on decl is specified
2022-06-05 16:46:50 +02:00
Jakub Konka
33826a6a2e
x64: disable misbehaving behavior tests
2022-06-05 10:36:54 +02:00
Jakub Konka
1b5dd4e148
Merge pull request #11790 from joachimschmidt557/stage2-arm
...
stage2 ARM: implement basic switch expressions
2022-06-05 09:10:12 +02:00
joachimschmidt557
d5ee451177
stage2 ARM: introduce support for basic switch expressions
2022-06-04 19:58:34 +02:00
Veikka Tuominen
2b93546b39
Sema: fix initialization of array with comptime only elem type
2022-06-03 20:21:20 +03:00
Andrew Kelley
288e89b606
Sema: fix compiler crash with comptime arithmetic involving @ptrToInt
2022-06-01 16:45:28 -07:00
Andrew Kelley
a4cdb49a58
Merge pull request #11763 from Vexu/stage2-alloc-const
...
Stage2: detect when initializer of const variable is comptime known
2022-06-01 18:59:13 -04:00
Andrew Kelley
b82cccc9e9
Sema: fix alignment of element ptr result type
2022-06-01 15:43:21 -07:00
Veikka Tuominen
94624893d8
disable failing test
2022-06-01 13:06:31 +03:00
Veikka Tuominen
9431100736
Sema: apply previous changes to validateUnionInit
2022-06-01 13:01:39 +03:00
Veikka Tuominen
36df79cd37
stage2: ignore generic return type when hashing function type
...
Generic parameter types are already ignored.
2022-05-31 16:43:58 +03:00
Veikka Tuominen
febc7d3cd6
Sema: take dbg_stmt into account in zirResolveInferredAlloc
2022-05-31 16:22:00 +03:00
Andrew Kelley
c3ef4ac15f
Merge pull request #11752 from ziglang/zir-fancy-fns
...
stage2: add missing data to ZIR encoding of functions
2022-05-30 21:18:10 -04:00
Andrew Kelley
bd89a73d52
Sema: implement functions generic across callconv() or align()
2022-05-30 14:16:28 -07:00
Veikka Tuominen
0e8307789a
AstGen: add tuple aware elem_type_index
2022-05-29 13:19:03 +03:00
Veikka Tuominen
c7b778992e
AstGen: improve generated Zir for array init exprs
2022-05-29 13:19:03 +03:00
joachimschmidt557
ddd5b57045
stage2 AArch64: complete genTypedValue
2022-05-27 16:43:11 -04:00
Andrew Kelley
4994ac18e4
Merge pull request #11733 from Vexu/stage2
...
more misc stage2 fixes
2022-05-27 16:20:49 -04:00
Veikka Tuominen
989c0f55e8
stage2: add test for fixed issue
2022-05-27 10:29:24 +03:00
Veikka Tuominen
8bf3e1f8d0
AstGen: preserve inferred ptr result loc for breaks
2022-05-27 10:29:24 +03:00
Andrew Kelley
83a2c41cd5
fix alignment behavior test case
...
As demonstrated by this new test case, stage1's functionality is
incorrect since it does not handle slicing from len..len correctly.
stage2 already has the correct behavior here.
2022-05-26 21:58:19 -07:00
Andrew Kelley
4751356d7f
clean up some behavior tests
...
* improve names
* properly categorize a couple of bug cases
* mark one as already passing
2022-05-26 21:58:19 -07:00
Andrew Kelley
83f69af971
stage2: implement runtime array multiplication
...
Additionally:
* Sema: fix array cat/mul not setting the sentinel value
- This required an LLVM backend enhancement to the handling of the
AIR instruction aggregate_init that likely needs to be
propagated to the other backends.
* Sema: report integer overflow of array concatenation in a proper
compile error instead of crashing.
* Sema: fix not using proper pointer address space for array cat/mul
2022-05-25 22:33:48 -07:00
Andrew Kelley
b82081e709
Sema: implement array concatenation with runtime operands
2022-05-25 22:33:48 -07:00
Andrew Kelley
ab88165326
Sema: generic function instantiations inherit branch quota
2022-05-25 23:32:52 -04:00
Veikka Tuominen
f409d925ad
Sema: check for generic poison in resolveInst
2022-05-25 23:11:13 +03:00
Veikka Tuominen
eba66f4a58
Sema: handle block.is_typeof in more places
2022-05-25 19:57:44 +03:00
Veikka Tuominen
d214b6bdf0
stage2: packed struct fields do not have a byte offset
2022-05-25 19:57:38 +03:00
Andrew Kelley
71e2a56e3e
mark some more behavior tests as passing
2022-05-25 00:12:56 -07:00
Andrew Kelley
60af42705d
mark two behavior tests as passing
2022-05-24 18:21:34 -07:00