Andrew Kelley
ef447c3eca
redo CMakeLists.txt to use WASI interpreter
...
current status is that it hits error: OutOfMemory for unknown reasons,
probably due to bugs in the C WASI interpreter port.
2022-12-06 12:15:04 -07:00
Andrew Kelley
8c1c67bdd0
stage2: take advantage of the new WasmAllocator
2022-12-06 12:15:04 -07:00
Andrew Kelley
3dcdd5544f
stage2: make --color override apply to std.Progress
2022-12-06 12:15:04 -07:00
Andrew Kelley
3a8117439d
allow build-obj and build-exe in -Donly-c builds
2022-12-06 12:15:04 -07:00
Andrew Kelley
d5312d53a0
WASI: remove absolute path emulation from std lib
...
Instead of checking for absolute paths and current working directories
in various file system operations, there is one simple solution: allow
overriding `std.fs.cwd` on WASI.
os.realpath is back to causing a compile error when used on WASI. This
caused a compile error in the Sema handling of `@src()`. The compiler
should never call realpath, so the commit that made this change is
reverted (95ab942184427e7c9b840d71f4d093931e3e48fb). If this breaks
debug info, a different strategy is needed to solve it other than using
realpath.
I also removed the preopens code and replaced it with something much
simpler. There is no longer any global state in the standard library.
Additionally-
* os.openat no longer does an unnecessary fstat on WASI when O.WRONLY
is not provided.
* os.chdir is back to causing a compile error on WASI.
2022-12-06 12:15:04 -07:00
Andrew Kelley
3ba916584d
actually remove stage1
2022-12-06 12:15:04 -07:00
Andrew Kelley
db023b98a4
build: introduce -Dwasi-bootstrap option
...
Also, make -Donly-c prevent Autodoc from being included in the binary.
This produces a 2.6 MiB zig.wasm file. 781 KB if piped through zstd.
2022-12-06 12:15:04 -07:00
Andrew Kelley
28514476ef
remove -fstage1 option
...
After this commit, the self-hosted compiler does not offer the option to
use stage1 as a backend anymore.
2022-12-06 12:15:04 -07:00
Andrew Kelley
36da3000c0
Sema: resolve elem type for non-default aligned ptrs
...
Before this commit, I observe a crash from this abiSize call because the
element type is a struct that is not yet resolved. This is triggered by
running the behavior tests with -ofmt=c -target x86_64-windows.
2022-12-06 02:54:58 -05:00
Andrew Kelley
80be5e4832
zig cc: fix wrong flag name from earlier commit
...
In dfe942024461a3598fc872ea79e7859a8744b550, I made a typo. This commit
corrects it. I tested this commit via a patch to zig-bootstrap.
2022-12-06 00:09:17 -07:00
Frank Denis
861aa98ac2
wasi-libc: define BULK_MEMORY_THRESHOLD for the bulk_memory feature ( #13787 )
...
When the bulk_memory feature is enabled, wasi-libc will only use
it if the number of bytes is >= BULK_MEMORY_THRESHOLD
Set it to 32 as in the original wasi-libc Makefile.
2022-12-06 04:05:00 +00:00
Andrew Kelley
dfe9420244
zig cc: support -stack in addition to --stack for linker arg
2022-12-05 18:08:31 -07:00
Jakub Konka
12e34e7037
dwarf: pull out debug line program internals into DeclState helpers
2022-12-05 22:35:07 +01:00
Jakub Konka
8796da0283
dwarf: reuse getDbgInfoAtom helper in all of Dwarf.zig
...
We need to access it outside of `DeclState` too so why not reuse
the helper anyway.
2022-12-05 14:19:22 +01:00
Jakub Konka
3575048c0a
Merge pull request #13763 from ziglang/macho-dsym-incr
...
macho+dsym: refactor and reorganize file layout to support incremental DWARF updates
2022-12-05 13:48:12 +01:00
Jacob Young
4ee79aa33c
CBE: revert broken change that got missed
2022-12-04 22:37:48 -05:00
Jacob Young
7d3cc3bc8d
CBE: defer invariant local reuse in loops
...
When a local defined outside a loop dies inside the loop, it can still
be needed on subsequent loop iterations, so reuse of the local must be
deferred until after the loop ends. This causes behavior tests to pass.
2022-12-04 15:57:40 -07:00
Andrew Kelley
cc8bcae8c0
CBE: fix liveness issue with wrapping optionals
2022-12-04 15:57:40 -07:00
Andrew Kelley
4a6deaff5f
CBE: remove stray comment
2022-12-04 15:57:40 -07:00
Andrew Kelley
701cebeb30
CBE: fix union init wrong field name
2022-12-04 15:57:40 -07:00
Andrew Kelley
aa98517b3e
CBE: aggregate_init: resolve all operands before processing Liveness
2022-12-04 15:57:40 -07:00
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
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
Jakub Konka
899d7a771e
dsym: dummy repush to check the linux CI
2022-12-04 18:15:14 +01:00
Jakub Konka
a84b67468c
dsym: recalculate DWARF segment size when finalizing
2022-12-04 16:58:45 +01:00
Jakub Konka
280dad0283
dsym+dwarf: remove copyRangeAllOverlappingAlloc
2022-12-04 16:58:45 +01:00
Jakub Konka
aa8b26cf25
dsym: refactor API - do not store ptr to MachO
2022-12-04 16:58:45 +01:00
Jakub Konka
d67de87baa
dsym: add helper for accessing dwarf seg pointer
2022-12-04 16:58:45 +01:00
Jakub Konka
73d76b26a2
dsym: rename updateLinkeditSegment to finalizeDwarfSegment
...
This is the checkpoint where we finalize the VM of the primary binary.
2022-12-04 16:58:45 +01:00
Jakub Konka
278426b851
dsym: make sure DWARF segment comes before LINKEDIT
...
This will greatly simplify incremental updates to DWARF sections
within the bundle.
2022-12-04 16:58:45 +01:00
r00ster91
f094c4bce5
Sema: detect duplicate enum tag values
2022-12-04 14:12:24 +02: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