Vexu
c5368ba20c
translate-c: ensure generated labels are unique
2020-08-13 15:27:29 +03:00
Andrew Kelley
eec53d67ab
stage2: anyerror -> explicit error set
2020-08-12 21:59:40 -07:00
Noam Preil
1eb5aaa4b5
CBE: renderValue pays attention to Type, not Tag
2020-08-12 21:58:21 -07:00
Noam Preil
5a166cead8
CBE: fix handling of IR dependencies
2020-08-12 21:58:21 -07:00
Noam Preil
dbd1e42ef2
CBE: Sorta working intcasts?
2020-08-12 21:58:21 -07:00
Noam Preil
78fe86dcd2
CBE: support unreachable on GCC
2020-08-12 21:58:21 -07:00
Noam Preil
d3eec7d46b
CBE: working parameters
2020-08-12 21:58:21 -07:00
Noam Preil
4d778e630a
Tests: print generated C on test failure
2020-08-12 21:58:21 -07:00
Noam Preil
dd1f1487e4
CBE: Use zig_noreturn instead of noreturn to avoid namespace conflict
2020-08-12 21:58:21 -07:00
Noam Preil
b59e2c1e00
CBE: improve noreturn definition, support noreturn on MSVC
2020-08-12 21:58:21 -07:00
Andrew Kelley
de4f3f11f7
stage2: astgen for while loops
...
See #6021
2020-08-12 21:13:16 -07:00
Vexu
3734881577
add error for unused/duplicate block labels
2020-08-13 01:13:17 +03:00
Andrew Kelley
8282f4271c
stage2: basic support for parameters .debug_info
...
see #6014
2020-08-11 22:23:32 -07:00
Andrew Kelley
a2a5cea286
stage2: emit DW_TAG_subprogram for function Decls
...
these have the virtual address range, return type, and name.
2020-08-11 19:02:21 -07:00
Andrew Kelley
7612931c80
stage2: set up per-Decl .debug_info
2020-08-11 14:07:06 -07:00
Vexu
2b28cebf64
translate-c: use mangled name when macro translation fails
...
Closes #6009
2020-08-11 12:24:45 +03:00
Vexu
cf5932b236
translate-c: convert int to bool if bool is expected
2020-08-11 12:24:45 +03:00
Vexu
dfcac3cd76
translate-c: always add extern token for functions without body
2020-08-11 12:24:45 +03:00
Andrew Kelley
20510d209b
GeneralPurposeAllocator: use std.log instead of std.debug.print
...
`std.builtin.StackTrace` gains a `format` function.
GeneralPurposeAllocator uses `std.log.err` instead of directly printing
to stderr. Some errors are recoverable.
The test runner is modified to fail the test run if any log messages of
"err" or worse severity are encountered.
self-hosted is modified to always print log messages of "err" severity
or worse even if they have not been explicitly enabled.
This makes GeneralPurposeAllocator available on the freestanding target.
2020-08-11 02:01:32 -04:00
Andrew Kelley
fd47839064
stage2: fix crash on empty source file
2020-08-08 18:19:48 -07:00
Andrew Kelley
0347df82e8
improvements & fixes for general purpose allocator integration
...
* std.Mutex API is improved to not have init() deinit(). This API is
designed to support static initialization and does not require any
resource cleanup. This also happens to work around some kind of
stage1 behavior that wasn't letting the new allocator mutex code
get compiled.
* the general purpose allocator now returns a bool from deinit()
which tells if there were any leaks. This value is used by the test
runner to fail the tests if there are any.
* self-hosted compiler is updated to use the general purpose allocator
when not linking against libc.
2020-08-07 23:26:58 -07:00
Andrew Kelley
30bace66d4
refactor now that stage1 supports anon default struct field inits
2020-08-07 22:45:45 -07:00
Isaac Freund
2fc18b5278
stage2: make link data in Decl into unions
...
This will allow for implementation of non-Elf backends without wasting
memory.
2020-08-07 19:25:06 -04:00
Noam Preil
a85452b2c2
Codegen: 16-bit pointers
2020-08-05 11:25:43 -07:00
Noam Preil
a5b76d2474
Stage2: minor File.ELF refactor
2020-08-05 11:25:08 -07:00
Andrew Kelley
8824491fc7
stage2: add missing newlines to cli error messages
2020-08-04 18:38:42 -07:00
Andrew Kelley
d61a9e37ae
stage2 tests: fix qemu logic
...
I made two mistakes in the previous commit; it was not actually using
the argv that we built, and also the qemu logic was unconditionally
skipping the test.
Now I have verified that when mangling the RISC-V "hello world" test and
then using -Denable-qemu, we get a test failure.
2020-08-04 15:39:59 -07:00
Andrew Kelley
c594f8dc26
stage2 tests: support the -Denable-qemu options and friends
2020-08-04 15:32:16 -07:00
Andrew Kelley
02d09d1328
codegen: introduce toCanonicalReg to clean up x86-specific logic
2020-08-04 15:31:54 -07:00
pfg
ea3cc777cc
stage2: riscv test case
2020-08-04 14:38:33 -07:00
pfg
e3352db986
stage2: riscv correctly aligned functions
2020-08-04 14:38:33 -07:00
pfg
0b53a2d996
stage2: riscv 0 argument non-nested function calls
2020-08-04 14:38:33 -07:00
pfg
1fd99ed324
stage2: riscv hello world
2020-08-04 14:38:33 -07:00
pfg
52ae2b10aa
stage2: starting on a riscv64 backend
2020-08-04 14:38:33 -07:00
Andrew Kelley
952a397b0e
Merge pull request #5978 from ziglang/stage2-dwarf-incr
...
self-hosted: line number debug information
2020-08-04 20:53:47 +00:00
Andrew Kelley
331f6a07a9
stage2: fix ZIR support and C back end
2020-08-04 12:15:47 -07:00
Andrew Kelley
b7a883b7d1
stage2: link: fix not freeing debug line free list
2020-08-04 12:15:47 -07:00
Andrew Kelley
ca19c42b74
stage2: fix updating debug line info not resizing properly
2020-08-04 12:15:47 -07:00
Andrew Kelley
7d70774fde
stage2: fix memory leak with exported decl name
2020-08-04 12:15:47 -07:00
Andrew Kelley
0d696a48da
stage2 .debug_line: handle Decl line numbers changing
2020-08-04 00:22:11 -07:00
Andrew Kelley
30ee08dfc2
stage2: stop needlessly re-analyzing unchanged functions
2020-08-03 23:47:54 -07:00
Andrew Kelley
cb25d8e4bc
stage2 .debug_line: handle Decl deletes and updates
2020-08-03 23:13:54 -07:00
Andrew Kelley
9b3a70c8aa
stage2: move link.File.ELF.SrcFn field from Module.Fn to Module.Decl
...
SrcFn represents the function in the linked output file, if the
`Decl` is a function. This is stored here and not in `Fn` because `Decl`
survives across updates but `Fn` does not.
TODO Look into making `Fn` a longer lived structure and moving this field there
to save on memory usage.
2020-08-03 22:22:47 -07:00
Andrew Kelley
0c598100d8
stage2: fix use-after-free of export symbol name
2020-08-03 22:07:21 -07:00
Andrew Kelley
edfede575c
self-hosted: add build option for log scopes
...
Now you can enable a set of log scopes by passing -Dlog=<scope>
2020-08-03 21:56:21 -07:00
Andrew Kelley
a33efc74ed
stage2 codegen: revert the unneeded is_stmt stuff
2020-08-03 21:09:58 -07:00
Andrew Kelley
d624bf8059
stage2 .debug_line stepping with gdb is working
2020-08-03 21:01:06 -07:00
Andrew Kelley
ac10841fa9
stage2 .debug_line: simpler strategy for incremental compilation
...
See #5963
2020-08-03 19:14:09 -07:00
Vexu
4ab2f947f9
translate-c: recognize other type trait expressions
...
Closes #5979
2020-08-04 00:48:29 +03:00
Andrew Kelley
4e023c6fa8
stage2: dwarf: fix standard opcode length of LNS_fixed_advance_pc
2020-08-03 00:54:30 -07:00