Jacob Young
f894ec264b
codegen: fix global nested field_ptr
2023-05-03 04:25:14 -04:00
Jacob Young
db88b41472
x86_64: fix switch multi-prongs and mul/div flags clobber
2023-05-01 19:22:53 -04:00
Jacob Young
47a34d038d
x86_64: implement tagName
2023-05-01 19:22:52 -04:00
Jacob Young
6de457211f
behavior: update affected tests for the x86_64 backend
2023-05-01 19:22:52 -04:00
Koakuma
d339e86fb1
stage2: sparc64: Skip unimplemented tests
2023-04-28 16:45:37 -07:00
Jacob Young
894406b9d3
behavior: update passing cbe tests
2023-04-26 19:05:17 -04:00
Jacob Young
f4b411314c
Sema: defer stores to inferred allocs
...
This lets us generate the store with knowledge of the type to be stored.
Therefore, we can avoid generating garbage Air with stores through
pointers to comptime-only types which backends cannot lower.
Closes #13410
Closes #15122
2023-04-02 18:05:44 +03:00
Jacob Young
0543def52f
llvm: fix crashes when loading a struct field
...
The result of buildStructGEP is not always a GEP (sorry), so we can't
use getGEPResultElementType on it.
Closes #14641
2023-03-30 11:54:24 +03:00
Jacob Young
8f385e77ca
x86_64: implement struct_field_val for packed containers
2023-03-25 16:23:55 -04:00
Jacob Young
dbe1b4a7e5
x86_64: fix value tracking bugs
2023-03-24 17:57:58 -04:00
Veikka Tuominen
f7204c7f37
Merge pull request #15028 from Vexu/compile-errors
...
Sema: improve error message of field access of wrapped type
2023-03-21 14:55:36 +02:00
Jacob Young
f95faac5ae
x86_64: (re)implement optional ops
...
Note that this commit also changes the layout of optional for all
other backends using `src/codegen.zig` without updating them!
2023-03-21 08:49:54 +01:00
Veikka Tuominen
e70a0b2a6b
Value: implement reinterpreting enum field index as integer
...
Closes #15019
2023-03-21 03:31:03 +02:00
Veikka Tuominen
773b1c4c5c
llvm: fix lowering packed union initiated to zero-bit value
...
Closes #14980
2023-03-21 00:34:12 +02:00
Jacob Young
05b12e6779
x86_64: handle duplicate prong deaths
2023-03-15 01:04:21 -04:00
Jacob Young
c51930b060
behavior: enable passing behavior tests on stage2_x86_64
2023-03-15 01:04:21 -04:00
Veikka Tuominen
58c1d98c14
add tests for fixed stage1 bugs
...
Closes #4144
Closes #4255
Closes #4372
Closes #4375
Closes #4380
Closes #4417
Closes #4423
Closes #4476
Closes #4528
Closes #4562
Closes #4572
Closes #4597
Closes #4639
Closes #4672
Closes #4782
Closes #4955
Closes #4984
Closes #4997
Closes #5010
Closes #5114
Closes #5166
Closes #5173
Closes #5276
2022-12-31 20:49:02 -05:00
Veikka Tuominen
9a0c593a54
add tests for fixed stage1 bugs
...
Closes #1957
Closes #1994
Closes #2140
Closes #2746
Closes #2802
Closes #2855
Closes #2895
Closes #2981
Closes #3054
Closes #3158
Closes #3234
Closes #3259
Closes #3371
Closes #3376
Closes #3387
Closes #3529
Closes #3653
Closes #3750
Closes #3778
Closes #3882
Closes #3915
Closes #3929
Closes #3961
Closes #3988
Closes #4123
Closes #7448
2022-12-29 12:42:44 +02:00
joachimschmidt557
d6e6162081
stage2 AArch64: unify callee-preserved regs on all targets
...
also enables many passing behavior tests
2022-12-27 21:17:52 +08:00
r00ster91
aac2d6b56f
std.builtin: rename Type.UnionField and Type.StructField's field_type to type
2022-12-17 14:11:33 +01:00
Veikka Tuominen
e6588857df
Sema: fix memory management of union enum tag int tag
...
This likely went unnoticed due to all power of two integer types being special cased.
Closes #13812
2022-12-14 14:08:21 +02:00
Koakuma
f9e9ba784f
stage2: sparc64: Skip unimplemented tests
2022-12-10 21:51:46 +07:00
Andrew Kelley
c8aba15c22
remove references to stage1 in behavior tests
...
Good riddance.
2022-12-06 19:06:48 -07:00
Veikka Tuominen
2dcac348e5
cbe: implement packed unions
2022-11-30 15:14:33 +02:00
Veikka Tuominen
71937f75d8
Sema: correctly detect union target in zirSwitchBlock
...
Closes #13655
2022-11-26 18:05:27 +02:00
Veikka Tuominen
28cbe5e92a
Sema+llvm: improve handling of namespace-like unions
...
Closes #13557
2022-11-16 01:13:35 +02:00
Veikka Tuominen
61842da9f7
llvm: implement packed unions
...
Closes #13340
2022-11-09 17:14:38 +02:00
Jacob Young
912b84bbad
cbe: fix atomics
2022-10-25 05:11:29 -04:00
Jacob Young
962f33ee11
cbe: implement airUnionInit
2022-10-25 05:11:28 -04:00
Jacob Young
6a4266d62a
cbe: fix infinite recursion on recursive types
2022-10-25 05:11:28 -04:00
Jacob Young
525dcaecba
behavior: enable stage2_c tests that are currently passing
...
Also fix C warnings triggered by these tests.
2022-10-25 05:11:28 -04:00
joachimschmidt557
b976997e16
stage2 ARM: implement ptr_elem_val
2022-09-09 19:17:18 +02:00
Veikka Tuominen
f281f3d10e
Sema: improve behavior of comptime_int backed enums
2022-09-02 17:57:11 +03:00
Veikka Tuominen
7a8d9af4a9
stage2 llvm: correct handling of zero-bit types in unionFieldPtr
...
Pointers to zero-bit types are not zero-bit types so the function should
return something.
Closes #12716
2022-09-02 17:57:10 +03:00
Veikka Tuominen
c558de6655
stage2 llvm: use tag value instead of field index in airUnionInit
...
Closes #12656
2022-08-30 12:22:07 -07:00
antlilja
ae8d26a6a0
Sema: add error for non-comptime param in comptime func
...
Adds error for taking a non comptime parameter in a function returning a
comptime-only type but not when that type is dependent on a parameter.
Co-authored-by: Veikka Tuominen <git@vexu.eu>
2022-08-27 11:17:48 +03:00
Andrew Kelley
7453f56e67
stage2: explicitly tagged enums no longer have one possible value
...
Previously, Zig had inconsistent semantics for an enum like this:
`enum(u8){zero = 0}`
Although in theory this can only hold one possible value, the tag
`zero`, Zig no longer will treat the type this way. It will do loads and
stores, as if the type has runtime bits.
Closes #12619
Tests passed locally:
* test-behavior
* test-cases
2022-08-24 22:20:31 -07:00
Veikka Tuominen
d48af541c7
Sema: handle union and enum field order being different
...
Closes #12543
2022-08-21 12:51:40 +03:00
Veikka Tuominen
c3d5428cba
Sema: properly handle noreturn fields in unions
2022-08-17 22:07:48 +03:00
Andrew Kelley
3ba7098a17
LLVM: fix returning extern union with C callconv
2022-07-27 17:56:15 -07:00
Veikka Tuominen
ff7ec4efb5
Sema: bad union field access safety
2022-07-23 15:40:11 +03:00
Veikka Tuominen
62120e3d0e
Sema: fix non-exhaustive union switch checks
2022-07-21 12:21:30 -07:00
Veikka Tuominen
122c76a167
Sema: allow void as an extern union field & fix invalid extern unions
2022-07-11 20:30:16 +03:00
Andrew Kelley
c248af3bdc
LLVM: fix lowering of untagged union types
...
The LLVM backend was calculating the amount of padding solely based
on the payload size. However, in the case where there is no union
tag, this fails to take into account alignment.
Closes #11857
2022-06-30 02:43:05 -04:00
joachimschmidt557
960c142060
stage2 ARM: implement basic intCast and error union wrapping
2022-06-25 21:16:51 +02:00
Veikka Tuominen
0a9d6956e7
Sema: add missing set_union_tag
2022-06-12 19:17:41 +03:00
joachimschmidt557
ddd5b57045
stage2 AArch64: complete genTypedValue
2022-05-27 16:43:11 -04:00
Jakub Konka
6d32498c55
x64: re-enable behavior tests
2022-05-19 19:39:34 +02:00
Andrew Kelley
99657dca1f
Sema: fix comptime equality of extern unions with same tag
2022-04-12 11:36:26 -07:00
Veikka Tuominen
3c4ac47e00
stage2 llvm: fix union init of byRef values
2022-03-28 13:04:50 -07:00