Andrew Kelley
14cef9dd3d
stage2 parser: split out PrefixOp into separate AST Nodes
...
This is part of a larger effort to improve the memory layout of AST
nodes of the self-hosted parser to reduce wasted memory. Reduction of
wasted memory also translates to improved performance because of fewer
memory allocations, and fewer cache misses.
Compared to master, when running `zig fmt` on the std lib:
* cache-misses: 801,829 => 768,624
* instructions: 3,234,877,167 => 3,232,075,022
* peak memory: 81480 KB => 75964 KB
2020-07-13 20:13:51 -07:00
Andrew Kelley
204f61d7f5
stage2: Module: use StringHashMapUnmanaged
2020-07-13 15:34:31 -07:00
Andrew Kelley
08154c0deb
stage2: add retvoid support to CBE
2020-07-13 00:28:11 -07:00
Andrew Kelley
25b1c00c72
stage2: add implicit return void where applicable
2020-07-13 00:08:21 -07:00
Andrew Kelley
c306392b44
stage2: codegen: more branching support
2020-07-13 00:08:21 -07:00
Andrew Kelley
b75a51f94b
stage2: implement function calling convention for calls
2020-07-13 00:08:21 -07:00
Andrew Kelley
8fe63d5042
stage2: peer type resolution with noreturn
2020-07-13 00:08:21 -07:00
Noam Preil
8d6cadee16
CBE: Code cleanup
2020-07-13 01:49:04 -04:00
Noam Preil
4a46248198
CBE: Only generate (void) for calls whose return values are ignored
2020-07-13 01:49:04 -04:00
Noam Preil
a124b027b4
CBE: Use hasCodeGenBits instead of checking against void and noreturn
2020-07-13 01:49:04 -04:00
Noam Preil
3bad1c16cc
Get basic return test working
2020-07-13 01:49:04 -04:00
pixelherodev
2c882b2e65
CBE: Make C an ObjectFormat instead of a special bool ( #5849 )
2020-07-12 22:56:31 -04:00
Vexu
be1507a7af
update compile error tests and some doc comments
2020-07-12 00:54:07 +03:00
Vexu
3e095d8ef3
use 'anytype' in translate-c
2020-07-11 22:04:38 +03:00
Vexu
e85fe13e44
run zig fmt on std lib and self hosted
2020-07-11 20:41:19 +03:00
Andrew Kelley
7bd0500589
Merge remote-tracking branch 'origin/master' into register-allocation
2020-07-08 20:46:06 -07:00
Andrew Kelley
8e425c0c8d
stage2: if AST=>ZIR
2020-07-08 20:33:33 -07:00
Noam Preil
d060be8804
CBE: Don't expose openCFile, always close file after an update
2020-07-08 14:10:11 -04:00
Noam Preil
6b48634166
CBE: Emit asm decls for now, but rename to make them valid
2020-07-08 14:05:07 -04:00
Andrew Kelley
be0546d877
stage2: implement compare operator AST->ZIR
2020-07-08 07:04:43 +00:00
Andrew Kelley
5e60872060
stage2 misc fixes
2020-07-08 06:56:20 +00:00
Andrew Kelley
8849604131
stage2: proper indenting when printing ZIR text
2020-07-08 05:44:51 +00:00
Andrew Kelley
ab9df5b04b
stage2: machine code for condbr jumps
2020-07-08 05:35:41 +00:00
Noam Preil
9d92d62525
CBE: Only try to use GNU attribute when __GNUC__is set
2020-07-08 00:33:44 -04:00
Noam Preil
e2aad33d4e
Stage2: facepalm.
2020-07-08 00:11:41 -04:00
Noam Preil
9aaffe00d3
CBE: Cleanup unimplementeds
2020-07-07 23:59:55 -04:00
Noam Preil
089c056dbe
CBE: Improve resource cleanup
2020-07-07 23:24:30 -04:00
Noam Preil
7a6104929b
CBE: truncate output file
2020-07-07 23:19:25 -04:00
Noam Preil
173e671241
CBE: Some cleanup
2020-07-07 23:11:17 -04:00
Noam Preil
b91cf15972
CBE: Move standards determination to generated code
2020-07-07 22:57:34 -04:00
Noam Preil
5461c482d0
CBE: Integrate into stage2 via --c-standard
2020-07-07 21:54:34 -04:00
Noam Preil
64bf130182
CBE: working asm Inputs and Outputs; std{int,def}.h auto-inclusion
2020-07-07 21:35:42 -04:00
Noam Preil
cf09b335d8
CBE: Working function call w/ no args or return value
2020-07-07 19:35:33 -04:00
Noam Preil
cf86aa8772
Fix a dumb in tests
2020-07-07 18:43:25 -04:00
Noam Preil
6ece36a051
Working translation of empty function
2020-07-07 17:51:59 -04:00
Noam Preil
2f28ecf946
CBE: Get test more useful
2020-07-07 17:06:07 -04:00
Noam Preil
aaaebfe97f
Detect unexpected compilation errors in tests
2020-07-07 16:47:39 -04:00
Noam Preil
a17200dab1
CBE skeleton
2020-07-07 16:40:14 -04:00
Noam Preil
b4c571301b
Stage2: Refactor in preparation for C backend
2020-07-07 14:55:44 -04:00
Andrew Kelley
b55d0193e4
stage2: progress towards Block and CondBr codegen
2020-07-07 08:01:54 +00:00
Andrew Kelley
4d01385e14
fix liveness analysis and not correctly propagating link errors
...
We still flush the ELF file even when there are compile errors.
2020-07-07 03:48:20 +00:00
Noam Preil
0db0258fb2
Remove old comment
2020-07-06 17:54:06 -04:00
Andrew Kelley
12737c9a30
stage2: codegen skeleton for cmp and sub
2020-07-06 09:21:57 +00:00
Andrew Kelley
8be8ebd698
stage2: skeleton codegen for x64 ADD
...
also rework Module to take advantage of the new hash map implementation.
2020-07-06 06:10:44 +00:00
Andrew Kelley
8fb392dbb4
stage2: implement liveness analysis
2020-07-05 23:20:08 +00:00
Andrew Kelley
abcd4ea5d8
Merge pull request #5793 from pfgithub/stage-2-testing
...
stage2 + operator and @as builtin
2020-07-05 22:58:05 +00:00
emekoi
68be229917
added custom format method for WindowsVersion
2020-07-05 22:43:10 +00:00
Andrew Kelley
3a89f214aa
update more HashMap API usage
2020-07-05 21:11:42 +00:00
Andrew Kelley
632acffcbd
update std lib to new hash map API
2020-07-05 21:11:42 +00:00
pfg
d4456d92f5
stage2: builtin @as
2020-07-04 15:16:46 -07:00