Ayke van Laethem
3146cc86d4
Move Compiler.program to Program.program
2018-08-19 20:41:05 +02:00
Ayke van Laethem
e18fd6da16
Rename analysis.go -> passes.go
2018-08-19 17:07:48 +02:00
Ayke van Laethem
29d601883b
Implement dummy GOMAXPROCS
...
This compiler targets single-core machines, GOMAXPROCS is thus fixed to
1.
2018-08-18 20:06:59 +02:00
Ayke van Laethem
8b6cb204cd
Basic support for slices
2018-08-18 20:06:35 +02:00
Ayke van Laethem
86a3aea868
Add a LICENSE file
2018-08-18 19:04:14 +02:00
Ayke van Laethem
9aaac8e17b
README: Describe supported targets
2018-08-18 15:59:12 +02:00
Ayke van Laethem
bfe9b52661
README: Mark a few features as supported
2018-08-18 15:58:22 +02:00
Ayke van Laethem
ad9a62f260
Make sure we handle all package members
2018-08-18 01:13:35 +02:00
Ayke van Laethem
a475233f36
Support recursive types
2018-08-18 01:12:52 +02:00
Ayke van Laethem
cad3e03f94
Allow imports from GOROOT
2018-08-18 01:11:50 +02:00
Ayke van Laethem
4af2bcb6a9
Split up tgo.go
2018-08-18 01:11:25 +02:00
Ayke van Laethem
0b98ec83ba
Remove unnecessary check for nil in parseExpr
2018-08-18 00:19:56 +02:00
Ayke van Laethem
70871c98f8
Improve print functions
2018-08-17 23:23:38 +02:00
Ayke van Laethem
62c4c5e90b
go fmt
2018-08-17 23:23:20 +02:00
Ayke van Laethem
574c7ec047
Refactor: Use our own types as much as possible from the analysis
...
Previously, mostly the types from the ssa package were used directly
with the types from analysis.go as an overlay. This commit uses these
types everywhere and renames a few things here and there to make things
clearer.
2018-08-17 23:13:32 +02:00
Ayke van Laethem
a97ca91c1f
compiler: Implement interface calls
...
This is a big combined change. Other changes in this commit:
* Analyze makeinterface and make sure type switches don't include
unnecessary cases.
* Do not include CGo wrapper functions in the analyzer callgraph.
This also avoids some unnecessary type IDs.
* Give all Go named structs a name in LLVM.
* Use such a named struct for compiler-generated task data.
* Use the type and function names defined by the ssa and types
package instead of generating our own.
* Some improvements to function pointers.
* A few other minor improvements.
The one thing lacking here is interface-to-interface assertions.
2018-06-17 15:50:19 +02:00
Ayke van Laethem
62325eab40
compiler: Improve IR/SSA printing
2018-06-09 22:34:46 +02:00
Ayke van Laethem
5acde63f88
compiler: Move isPointer out of Compiler object
2018-06-09 18:02:43 +02:00
Ayke van Laethem
56056934e3
README: expand a bit
2018-06-08 13:43:12 +02:00
Ayke van Laethem
6b3e394dce
compiler: Fix ChangeInterface
...
Keep the concrete type as interface type. Don't use the previous
interface type as type number.
2018-06-08 13:41:13 +02:00
Ayke van Laethem
9ad59bf001
Add README
2018-06-07 18:40:49 +02:00
Ayke van Laethem
90fb0ee4eb
Add AVR support
...
This requires support in LLVM, as AVR support is still experimental. For
example, in bindings/go/build.sh, add
-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=AVR to cmake_flags.
2018-06-07 18:35:54 +02:00
Ayke van Laethem
802302a1aa
Add support for inline assembly
...
This depends on support in LLVM, which hasn't been merged yet.
See: https://reviews.llvm.org/D46437
2018-06-07 18:29:49 +02:00
Ayke van Laethem
808cb991af
compiler: Fix interface analysis (oops!)
2018-06-07 18:24:47 +02:00
Ayke van Laethem
0d1b7239c1
Assorted allocator fixes
2018-06-07 18:24:31 +02:00
Ayke van Laethem
b8260ba554
Makefile: use -Os instead of -O1
...
This was left over from debugging.
2018-06-07 18:22:28 +02:00
Ayke van Laethem
2e5b313d54
compiler: Give the interface type a name
2018-06-07 17:54:41 +02:00
Ayke van Laethem
bb60912fa1
tgo: Print IR on panic (sometimes)
2018-06-07 17:45:49 +02:00
Ayke van Laethem
cafdcecb60
tgo: Use a named string type for strings
2018-06-07 17:44:53 +02:00
Ayke van Laethem
b0af01056d
tgo: Remove \0 from end of string
2018-06-07 16:48:48 +02:00
Ayke van Laethem
c2005a5f79
tgo: Add rudimentary interface support.
...
No support yet for checking whether an interface implements a type.
2018-06-07 15:48:32 +02:00
Ayke van Laethem
0168bf7797
Add goroutines and function pointers
2018-06-07 14:48:24 +02:00
Ayke van Laethem
8df220a53b
Move to my own fork of LLVM
2018-06-07 13:20:09 +02:00
Ayke van Laethem
1eccae287b
tgo: Fix runtime.TargetBits
2018-06-04 01:09:33 +02:00
Ayke van Laethem
d1dbca53ff
tgo: Eliminate most debug prints
2018-06-03 23:50:14 +02:00
Ayke van Laethem
315e39b164
tgo: Remove getGlobalName from Compiler object
2018-06-03 23:37:15 +02:00
Ayke van Laethem
b4e60deacd
runtime/nrf: Fix allocator by adding align() function
2018-06-03 17:56:56 +02:00
Ayke van Laethem
2390b24c5a
tgo: Add extra chip types for nRF
2018-06-03 17:54:18 +02:00
Ayke van Laethem
5fa39adb81
tgo: Allow anonymous function declarations
...
Not sure why they're needed right now, though...
2018-06-03 17:45:33 +02:00
Ayke van Laethem
588910792d
Translate bootstrapping main from C to LLVM IR
...
This avoids needing a C compiler for every platform.
2018-06-03 17:38:16 +02:00
Ayke van Laethem
a9bbed2f6c
tgo: Implement special case for LLVM intrinsics
2018-06-03 17:13:00 +02:00
Ayke van Laethem
89f77fa861
machine/dummy: Add LED1, LED2, etc to dummy machine
2018-06-03 16:42:09 +02:00
Ayke van Laethem
320c583221
Implement printing of int8/uint8/pointers
2018-06-03 16:39:24 +02:00
Ayke van Laethem
e171f32493
Implement minimal bump pointer allocator
...
Useful for MCUs, until a real garbage collector has been implemented.
2018-06-03 16:30:48 +02:00
Ayke van Laethem
b45ea2deb9
arm: Fix linker script stack section
2018-05-28 10:55:14 +02:00
Ayke van Laethem
2fca772431
Makefile: Autodetect LLVM bin dir
2018-05-28 09:01:35 +02:00
Ayke van Laethem
a39951c3d7
runtime: Convert device initialization to Go
2018-05-05 20:10:39 +02:00
Ayke van Laethem
c4f0dc90dd
machine: Rewrite most of the GPIO functionality
...
Split across device types (nrf, dummy) and use registers directly
instead of the HAL.
2018-05-05 20:05:53 +02:00
Ayke van Laethem
16489c0df6
compiler: Workaround for runtime.boundsCheck in runtime dependencies
2018-05-05 19:18:53 +02:00
Ayke van Laethem
01602309fd
compiler: Implement register loads and stores
...
The way it works is somewhat of a hack, though. But it works for now.
2018-05-05 19:17:23 +02:00