Andrew Kelley
4aae0b09cf
CBE and LLVM: handle unused try instructions
...
In both backends they did not observe the Liveness information for try
instructions. Now they do. For the C backend this is necessary for
correctness; for the LLVM backend, it improves code generation.
2022-12-04 15:57:40 -07:00
Andrew Kelley
f2e59e41c1
CBE: fix various regressions caught by behavior tests
2022-12-04 15:57:40 -07:00
Andrew Kelley
6c0a1417c6
CBE: fix static allocs being double allocated
2022-12-04 15:57:40 -07:00
Andrew Kelley
da73410e7f
CBE: avoid curly inits because they don't work in assignments
2022-12-04 15:57:40 -07:00
Andrew Kelley
db1819e8ed
CBE: fix use-after-free of Type keys in free_locals map
2022-12-04 15:57:40 -07:00
Andrew Kelley
7bd63a602a
CBE: fix assignment expr and switch free tracking
2022-12-04 15:57:40 -07:00
Andrew Kelley
8bfbfa589c
CBE: fix clone of freed locals not being deep clone
2022-12-04 15:57:40 -07:00
Andrew Kelley
73a76b45c5
CBE: take advantage of switch_br and cond_br liveness
2022-12-04 15:57:40 -07:00
Andrew Kelley
8d8b2c834d
CBE: exploit Liveness analysis to reuse locals
2022-12-04 15:57:40 -07:00
Andrew Kelley
3a9375cae9
wasm codegen: fix some missing Liveness reaps
...
I did not do a full audit, but I did notice a few issues which are
resolved in this commit. Probably it would be worth adding debug
infrastructure to assert that the number of reaps equals the number of
calls to resolveInst() per air lowering function.
2022-12-04 15:57:40 -07:00
Andrew Kelley
954019983d
std: add move() functions to hash maps
2022-12-04 15:57:40 -07:00
Andrew Kelley
2a0efbee56
Revert "cbe: reduce amount of temporary locals"
...
This reverts commit 15cc83e27ae8a1740d9b7e2ec14044903979a832.
2022-12-04 15:57:40 -07:00
Andrew Kelley
46f4a97d05
Revert "cbe: write more instructions inline"
...
This reverts commit f8b779c114a5fcb82f08168912f2300d7027a2fd.
2022-12-04 15:57:39 -07:00
Andrew Kelley
bdb6fb5763
CI: use cache directories local to the CI run
...
Override the cache directories because they won't actually help other CI
runs which will be testing alternate versions of zig, and ultimately
would just fill up space on the hard drive for no reason.
In practice we did see one of the CI servers fill up too many files
inside ~/.cache/zig, which caused certain file system operations to
start returning ENOSPC, despite the hard drive having plenty of space
left.
2022-12-04 15:45:15 -07:00
Veikka Tuominen
e361740669
Merge pull request #13142 from mllken/gzip-safety
...
gzip: add missing header fields and bounds for header parsing
2022-12-04 14:32:25 +02:00
Gregory Oakes
8d17e90fcd
std: add a special case for empty structs in meta.FieldEnum.
...
Empty structs would previously result in a compilation error.
2022-12-04 14:22:16 +02:00
r00ster91
f094c4bce5
Sema: detect duplicate enum tag values
2022-12-04 14:12:24 +02:00
Andrew Kelley
19dd6de180
Merge pull request #13756 from jacobly0/cbe-behavior
...
cbe: pass more behavior tests
2022-12-04 01:52:04 -05:00
Jacob Young
e3b8658e65
cbe: add forward declarations for optionals and error unions
...
Arrays will have to wait for type rewrite.
2022-12-03 21:58:18 -05:00
Jacob Young
6d1292552e
cbe: implement function alignment
2022-12-03 08:40:08 -05:00
Jacob Young
ec3116f573
cbe: fix zero-bit struct field pointer
2022-12-03 08:40:08 -05:00
Jacob Young
7fb6eb3d14
cbe: implement multiple exports of a symbols
2022-12-03 08:21:03 -05:00
Jacob Young
81c271cc62
cbe: don't emit extern decls that are already exported
2022-12-03 08:21:03 -05:00
Jacob Young
2cfc08ba0d
cbe: fix named constraints without modifiers
2022-12-03 08:21:03 -05:00
Andrew Kelley
f68bfe2eb7
CBE: no braces when lowering block instruction
...
This change alone solves the bracket-depth issue when compiling zig1.c
with Clang.
2022-12-03 05:22:50 -05:00
Andrew Kelley
610d604f5b
Merge pull request #13748 from jacobly0/c-unaligned
...
cbe: use memcpy for underaligned loads and stores
2022-12-03 02:18:07 -05:00
Andrew Kelley
53dcf78a25
print_air: print Liveness info for switch_br
2022-12-02 23:46:42 -07:00
Andrew Kelley
fdbb0fb7b9
Merge pull request #13744 from Vexu/stage2-fixes
...
Improve error messages, fix dependency loops
2022-12-03 00:42:11 -05:00
Jacob Young
e1216077f0
cbe: add support for constraint modifiers specified after a colon
...
This translates `%[name:mod]` to `%mod[name]` for C.
2022-12-02 22:21:24 -05:00
Jacob Young
fdedd62365
cbe: use memcpy for underaligned loads and stores
2022-12-02 22:21:24 -05:00
Andrew Kelley
c43ac67f82
Merge pull request #13746 from ziglang/cbe-bools
...
CBE: use bool, true, false, instead of `zig_` prefixes
2022-12-02 22:19:12 -05:00
Andrew Kelley
29e8e67a7e
CBE: use bool, true, false, instead of zig_ prefixes
...
In general the C backend should lower to human-maintainable C code
whenever possible. Directly using C types that one would use when
writing C code is one part of the strategy.
The concern with including stdint.h is C89 compatibility. Well, we can
just check the C std lib version before deciding to include that header.
2022-12-02 16:12:49 -07:00
Veikka Tuominen
b500e0eb17
Sema: add "parameter type declared here" note to type coercion
2022-12-03 00:48:04 +02:00
Veikka Tuominen
74285a4ed7
add test for error message improved by self-hosted
...
Closes #5099
2022-12-03 00:48:04 +02:00
Veikka Tuominen
f20e449fd6
Sema: improve error for mismatched type in implicit return
...
Closes #2653
2022-12-03 00:48:03 +02:00
Andrew Kelley
d171279d79
CBE: use a 0 literal instead of error.@"(no error)"
...
This saves bytes and is easier to read too.
2022-12-02 15:42:20 -07:00
Andrew Kelley
af4361f57a
CI: update tarballs to 0.11.0-dev.448+e6e459e9e
...
Notably this contains a fix to zig cc that enables the syntax
`-Wl,-z,stack-size=0x10000`.
2022-12-02 17:31:33 -05:00
Veikka Tuominen
e2509ddbe6
AstGen: add error for invalid string comparisons
...
These operations are allowed because the string literals are just
pointers but they produce unexpected results. These errors prevent
beginners from shooting themselves in the foot while still allowing
advanced users to circumvent them if they desire to do so.
Closes #8290
2022-12-03 00:09:23 +02:00
Veikka Tuominen
0e38cc16d5
Sema: fix comparisons between lazy and runtime values
...
Closes #12498
2022-12-03 00:09:23 +02:00
Veikka Tuominen
7f9e841f74
Sema: do not forcibly canonicalize unresolved pointer element type
...
Closes #13308
2022-12-03 00:09:23 +02:00
Jakub Konka
5eaacf1ce9
windows: use array of tmp bufs as backing store for input memory to ntdll
2022-12-02 12:24:15 -05:00
Veikka Tuominen
59dad43de2
Sema: add error for failed assumption about struct having runtime bits
2022-12-02 18:46:59 +02:00
Jakub Konka
16dc86a49e
Merge pull request #13730 from ziglang/gen-dwarf-simple
...
dwarf: dedup generation of dwarf info for func args and vars in Dwarf module
2022-12-02 17:13:52 +01:00
Veikka Tuominen
86e6acb37b
AstGen: improve error message for missing parameter name
...
Closes #13393
2022-12-02 15:39:40 +02:00
Jakub Konka
bfd36cbf97
dwarf: pass linker Tag and owner Decl.Index instead of *Atom
2022-12-02 13:17:52 +01:00
Jakub Konka
05962a4aa2
x86: do not deref ptr type, let Dwart do it
2022-12-02 12:23:01 +01:00
Jakub Konka
3ec0520bac
dwarf: use common DI union object for arg and var gen
2022-12-02 12:22:17 +01:00
Andrew Kelley
665eba93c1
CBE: eliminate zig_void
...
C void is perfectly fine.
2022-12-02 00:46:27 -05:00
Andrew Kelley
e6e459e9e3
zig cc: detect -z stack-size arguments
2022-12-01 20:58:09 -07:00
Andrew Kelley
4071b22454
Merge pull request #13715 from Vexu/cbe
...
cbe bug fixes and improvements
2022-12-01 17:38:11 -05:00