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
pfg
1d52438bd5
stage2: InfixOp add
2020-07-04 15:16:46 -07:00
Ian Simonson
70cc1751ca
Translate-c fix rhs not cast on array access
...
Closes #5671 . Checks if the rhs is integral and of
differing or the same signedness. If they are different
does an @intCast to the lhs type
2020-07-02 14:05:12 +00:00
luna
e2cfc65909
Merge branch 'master' into ebadf-error
2020-07-02 00:49:56 -03:00
Andrew Kelley
1eed0cf0f3
zig fmt and delete unused type
2020-06-28 19:45:10 -04:00
Andrew Kelley
aa92446365
stage2: implement function parameters
...
In codegen.zig, the std.Target.Cpu.Arch is now generally available as a
comptime value where needed. This is a tradeoff that causes the compiler
binary to be more bloated, but gives us higher performance, since the
optimizer can optimize per architecture (which is usually how compilers
are designed anyway, with different code per-architecture), and it also
allows us to use per-architecture types, such as a Register enum that is
specific to the comptime-known architecture.
Adds abiSize method to Type.
2020-06-28 19:45:10 -04:00
Luna
f47c6d3c6b
std.os: make EBADF return error for read and write
2020-06-28 18:40:43 -03:00
Andrew Kelley
ac6bf53069
stage2: clean up test harness, implement symbol collision detection ( #5708 )
...
* Clean up test harness
* Stage2/Testing: Add convenience wrappers
* Add a `compiles` wrapper case
* fix incremental compilation after error
* exported symbol collision detection
* function redefinition detection for Zig code
* handle missing function names
* Stage2/Testing: Simplify incremental compilation tests
* Stage2/Testing: Update documentation
* Stage2/TestHarness: Improve progress reporting
* Disable test
* Improve Tranform failure output
2020-06-27 21:54:11 -04:00
Noam Preil
80b70470c0
Stage2/Module: Add symbol -> export lookup table
2020-06-27 21:50:59 -04:00
Noam Preil
ffca1569d1
Return instead of branch
2020-06-27 21:39:39 -04:00
Noam Preil
38d2c5cdf1
Rename type -> extension
2020-06-27 21:39:04 -04:00
Noam Preil
1861c25142
Improve Tranform failure output
2020-06-27 21:15:23 -04:00
Noam Preil
97c41e7152
Disable test
2020-06-27 21:10:44 -04:00
Noam Preil
54148a8c88
Stage2/TestHarness: Improve progress reporting
2020-06-27 20:01:20 -04:00
Noam Preil
ab307a22f6
Stage2: remove clearErrors, fix ZIR export collision detection
2020-06-27 07:17:20 -04:00
Noam Preil
52787f2c9b
Fix a dumb
2020-06-26 06:52:29 -04:00
Noam Preil
6d536168b0
Stage2/Testing: Update documentation
2020-06-26 06:51:35 -04:00
Noam Preil
0e952a9f3a
Stage2/Testing: Simply incremental compilation tests
2020-06-26 05:00:53 -04:00
Noam Preil
c8f60b2e2f
Stage2: handle missing function names
2020-06-26 04:36:17 -04:00
Noam Preil
6510888039
Stage2: function redefinition detection for Zig code
2020-06-26 04:05:41 -04:00
Noam Preil
4a17e008da
Stage2: exported symbol collision detection
2020-06-26 03:17:13 -04:00
Noam Preil
e5a3cb8d71
Stage2: fix incremental compilation after error
2020-06-26 03:16:36 -04:00
Noam Preil
53fead580e
Add a compiles
wrapper case
2020-06-26 03:09:56 -04:00
Noam Preil
649da2df52
Stage2/Testing: Add convenience wrappers
2020-06-26 02:42:02 -04:00
Andrew Kelley
130c7fd23b
self-hosted: working towards conditional branching test case
...
New features:
* Functions can have parameters in semantic analysis. Codegen
is not implemented yet.
* Support for i8, i16, i32, i64, u8, u16, u32, u64 primitive
identifiers.
* New ZIR instructions: arg, block, and breakvoid
Implementation details:
* Move Module.Body to ir.Body
* Scope.Block gains a parent field and an optional Label field
* Fix bug in integer type equality comparison.
Here's the test case I'm working towards:
```
@void = primitive(void)
@i32 = primitive(i32)
@fnty = fntype([@i32, @i32], @void)
@0 = str("entry")
@1 = export(@0, "entry")
@entry = fn(@fnty, {
%0 = arg(0)
%1 = arg(1)
%2 = add(%0, %1)
%3 = int(7)
%4 = block("if", {
%neq = cmp(%2, neq, %3)
%5 = condbr(%neq, {
%6 = unreachable()
}, {
%7 = breakvoid("if")
})
})
%11 = returnvoid()
})
```
$ ./zig-cache/bin/zig build-obj test.zir
test.zir:9:12: error: TODO implement function parameters for Arch.x86_64
That's where I left off.
2020-06-26 02:30:14 -04:00