Xavier Bouchoux
898e4473e8
CBE: implement aggregateInit() for array of array case.
...
fixes `error(compilation): clang failed with stderr: error: array type 'uint32_t[10]' (aka 'unsigned int[10]') is not assignable`
2023-03-21 14:56:04 +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
Andrew Kelley
5c4bbd0657
Merge remote-tracking branch 'origin/master' into llvm16
2023-03-17 14:55:22 -07:00
Jacob Young
cfcd6698cd
main: add debug option to dump unoptimized llvm ir
2023-03-17 01:57:14 -04:00
Andrew Kelley
1ed569e0b2
Merge remote-tracking branch 'origin/master' into llvm16
2023-03-16 17:33:24 -07:00
Jacob Young
77d06012c2
CBE: implement unsigned big int div and mod
2023-03-07 03:03:35 -05:00
Andrew Kelley
48e72960a4
llvm: fix lowering of @trap
...
It needed an unreachable instruction after it.
2023-03-05 17:23:09 -07:00
Andrew Kelley
2641feb9b9
Merge pull request #14789 from jacobly0/ditype
...
llvm: fix use after free with pointers to optional slices
2023-03-05 16:32:51 -05:00
Jacob Young
1efd36cd5c
CBE: fix reduce of emulated integers
2023-03-05 06:32:55 -05:00
Jacob Young
33fa25ba44
CBE: ensure uniqueness of more internal identifiers
2023-03-05 02:59:02 -05:00
Jacob Young
0b0298aff2
CBE: implement select and shuffle
2023-03-05 02:59:02 -05:00
Jacob Young
aac4707902
CBE: implement splat
2023-03-05 02:59:02 -05:00
Jacob Young
ba69ee488b
CBE: implement vector truncate
2023-03-05 02:59:02 -05:00
Jacob Young
8f6da78fb1
CBE: implement vector element pointers
2023-03-05 02:59:02 -05:00
Jacob Young
c478c7609e
CBE: implement vector operations
...
Also, bigint add and sub which is all I was actually trying to do.
2023-03-05 02:59:02 -05:00
Jacob Young
9e3a5ecd39
CBE: fix behavior test failures on msvc
2023-03-05 02:59:02 -05:00
Jacob Young
93d696e84e
CBE: implement some big integer and vector unary operations
2023-03-05 02:59:01 -05:00
Jacob Young
a8f4ac2b94
CBE: implement big integer and vector comparisons
2023-03-05 02:59:01 -05:00
Jacob Young
874ae81f1b
CBE: implement big integer literals
2023-03-05 02:59:01 -05:00
Jacob Young
2cf27c5718
llvm: fix incorrectly annotated DIType
...
Closes #14715
Closes #14783
2023-03-04 13:52:47 -07:00
r00ster91
65368683ad
add @trap builtin
...
This introduces a new builtin function that compiles down to something that results in an illegal instruction exception/interrupt.
It can be used to exit a program abnormally.
This implements the builtin for all backends.
2023-03-04 12:08:19 +01:00
Andrew Kelley
df4cfc2ecf
Merge remote-tracking branch 'origin/master' into llvm16
2023-03-03 12:08:18 -07:00
Andrew Kelley
d399f8a489
Merge remote-tracking branch 'origin/master' into llvm16
2023-02-27 16:10:48 -07:00
Jacob Young
9e51972701
llvm: fix untagged struct names in debug info for llvm (again)
...
At least lldb misbehaves with all these same-named unions, so just
generate a unique name.
2023-02-27 05:18:47 -05:00
Jacob Young
477be90c0c
CBE: replace locals list with a hash map
...
Replace `ArrayList` with `ArrayHashMap` since we want to be able to
remove by element.
2023-02-25 00:27:07 -05:00
Jacob Young
1453a595aa
CBE: reuse locals with the same CType instead of Type
...
Many `Type`s can correspond to the same `CType`, so this reduces the
number of used locals by 27760 when compiling only-c.
Also, disabled some tests that were only passing by accident and
shouldn't really be considered working.
2023-02-24 23:41:54 -05:00
Jacob Young
f8aecef670
CBE: implement the future
...
Turns out f(...) will be supported one day.
2023-02-23 21:25:29 -05:00
Jacob Young
1f3d9f79c1
CBE: apply some maybe payload cleanups
2023-02-23 20:30:59 -05:00
Jacob Young
c0671a92c7
CBE: simplify always_tail call logic
...
It should be Sema's job to check this anyway.
2023-02-23 20:30:59 -05:00
Jacob Young
3a1cb62317
CBE: delete stage1 hacks
2023-02-23 20:30:59 -05:00
Jacob Young
8ccdc74949
CType: cleanup
2023-02-23 20:30:59 -05:00
Jacob Young
9d24d0354f
CBE: fix MSVC diagnostics generated by the behavior tests
...
After this, the last MSVC warnings are in behavior/bugs/529.zig:
behavior.c(37971): warning C4133: 'function': incompatible types - from 'A__8479 *' to 'A__8474 *'
behavior.c(37974): warning C4133: 'function': incompatible types - from 'A__8480 *' to 'A__8474 *'
2023-02-23 20:30:59 -05:00
Jacob Young
a0d7fd162b
CBE: support call attributes
...
* Support always_tail and never_tail/never_inline with a comptime callee using clang
* Support never_inline using gcc
* Support never_inline using msvc
Unfortunately, can't enable behavior tests because of the conditional support.
2023-02-23 10:54:26 -05:00
Jacob Young
57f6adf85d
CBE: implement c varargs
...
Removed some backend test skip checks for things disabled in std.
2023-02-23 01:21:59 -05:00
Jacob Young
597e8011f7
CType: fix lowering of generic function pointer
2023-02-23 00:29:23 -05:00
Jacob Young
bdb1e014a0
CBE: cleanup field access
...
* Implement @fieldParentPtr on a union
* Refactor field access to ensure that it is handled consistently
* Remove `renderTypecast` as it is now behaves the same as `renderType`
2023-02-23 00:29:23 -05:00
Andrew Kelley
c9e02d3e69
Merge pull request #14691 from jacobly0/ctype
2023-02-22 11:06:13 -05:00
Jacob Young
248fb40dcc
CBE: fix windows test failures
2023-02-21 15:46:34 -05:00
Isaac Freund
05da5b32a8
Sema: implement @fieldParentPtr for unions
2023-02-21 15:57:13 +02:00
Jacob Young
25a3c933b9
CBE: fix test failures
2023-02-21 02:32:49 -05:00
Jacob Young
064b355912
CBE: use CType for type definitions
2023-02-21 00:00:19 -05:00
Jacob Young
cf7200e8f9
CBE: remove typedef data structures
...
Adds a new mechanism for `@tagName` function generation that doesn't
piggyback on the removed typedef system.
2023-02-21 00:00:19 -05:00
Jacob Young
3eed197c95
CBE: use stdint.h types instead of zig_ prefixes
...
This requires manual defines before C99 which may not have stdint.h.
Also have update-zig1 leave a copy of lib/zig.h in stage1/zig.h, which
allows lib/zig.h to be updated without needing to update zig1.wasm.
Note that since the object already existed with the exact same contents,
this completely avoids repo bloat due to zig.h changes.
2023-02-20 23:59:48 -05:00
Jacob Young
d513792afa
CBE: fix comptime checks
2023-02-20 23:48:36 -05:00
Jacob Young
7768d2024b
CBE: use CType for type rendering
2023-02-20 23:48:36 -05:00
Jacob Young
d8fada6b63
CBE: add CType interning
2023-02-20 23:48:36 -05:00
Andrew Kelley
b5b634e4e8
Merge remote-tracking branch 'origin/master' into llvm16
2023-02-19 10:20:19 -07:00
Andrew Kelley
aeaef8c0ff
update std lib and compiler sources to new for loop syntax
2023-02-18 19:17:21 -07:00
Andrew Kelley
efdc94c107
Merge remote-tracking branch 'origin/master' into llvm16
2023-02-18 09:33:27 -07:00
Veikka Tuominen
0328c9cbeb
llvm: fix lowerDeclRefValue for extern function aliases
...
Same as 0577069af5f5deb859762725736537d60c324453 for extern functions.
Closes #14610
2023-02-11 14:36:54 +02:00