aboutsummaryrefslogtreecommitdiff
path: root/src/stage2.cpp
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2020-07-23 23:05:26 -0700
committerAndrew Kelley <andrew@ziglang.org>2020-07-23 23:05:26 -0700
commitaac6e8c4182b5d70de27b1f325151ac4233ed912 (patch)
treec745097fb669f9b7f8c21f0bdc264a7d20656d7a /src/stage2.cpp
parentb4d383a47876b794b3f0950151c7cdcd5eddfc7a (diff)
downloadzig-aac6e8c4182b5d70de27b1f325151ac4233ed912.tar.gz
zig-aac6e8c4182b5d70de27b1f325151ac4233ed912.zip
self-hosted: AST flattening, astgen improvements, result locations, and more
* AST: flatten ControlFlowExpression into Continue, Break, and Return. * AST: unify identifiers and literals into the same AST type: OneToken * AST: ControlFlowExpression uses TrailerFlags to optimize storage space. * astgen: support `var` as well as `const` locals, and support explicitly typed locals. Corresponding Module and codegen code is not implemented yet. * astgen: support result locations. * ZIR: add the following instructions (see the corresponding doc comments for explanations of semantics): - alloc - alloc_inferred - bitcast_result_ptr - coerce_result_block_ptr - coerce_result_ptr - coerce_to_ptr_elem - ensure_result_used - ensure_result_non_error - ret_ptr - ret_type - store - param_type * the skeleton structure for result locations is set up. It's looking pretty clean so far. * add compile error for unused result and compile error for discarding errors. * astgen: split builtin calls up to implemented manually, and implement `@as`, `@bitCast` (and others) with respect to result locations. * add CLI support for hex and raw object formats. They are not supported by the self-hosted compiler yet, and emit errors. * rename `--c` CLI to `-ofmt=[objectformat]` which can be any of the object formats. Only ELF and C are supported so far. Also added missing help to the help text. * Remove hard tabs from C backend test cases. Shame on you Noam, you are grounded, you should know better, etc. Bad boy. * Delete C backend code and test case that relied on comptime_int incorrectly making it all the way to codegen.
Diffstat (limited to 'src/stage2.cpp')
0 files changed, 0 insertions, 0 deletions