Ayke van Laethem
8e5731aee7
compiler: add support for pointers as map keys
2019-06-08 21:48:05 +02:00
Justin Clift
0cc35b6188
Add a note to use --recursive when cloning the TinyGo repo
2019-06-08 22:50:14 +10:00
Ayke van Laethem
5cf7fba1a4
compiler: remove //go:volatile support
2019-06-06 19:46:49 +02:00
Ayke van Laethem
e67506ee68
arm: update to avoid //go:volatile
...
This change results in changes to all smoketests for Cortex-M based
chips: they get a bit smaller (32-48 bytes). I'm not sure why but
probably because the inliner made a different inlining decision. There
was a similar effect when files generated from SVD files switched to the
new volatile types so it's probably harmless.
2019-06-06 19:46:49 +02:00
Ayke van Laethem
f2c205a008
machine: update ringbuffer to use runtime/volatile.Register8
...
This avoids the //go:volatile pragma, which will be removed soon.
There were no changes to the output of the smoke tests.
2019-06-06 19:46:49 +02:00
Ayke van Laethem
c84c625585
runtime: update to avoid //go:volatile
...
There was exactly one change in the output of the smoke tests:
examples/test. However, it still runs just fine on a PCA10040.
2019-06-06 19:46:49 +02:00
Ayke van Laethem
9673ad3774
all: move Register{8,16,32} values into runtime/volatile
...
This avoids duplication of code. None of the smoke tests have changed
their output.
2019-06-06 19:46:49 +02:00
Ayke van Laethem
66aca428ba
compiler: rename import path if it lies in TINYGOPATH
...
This allows importing (for example) both
"github.com/tinygo-org/tinygo/src/machine" and "machine" without issues.
The former is renamed to just "machine".
2019-06-06 16:01:25 +02:00
Ayke van Laethem
ec87811420
compiler: do not panic on duplicate functions
...
Instead, show a regular error message. This is much more user-friendly.
2019-06-06 16:01:25 +02:00
Ayke van Laethem
776dc1e0d9
main: show a better error when version detection of GOROOT failed
2019-06-06 13:59:37 +02:00
Ron Evans
beea2f1f30
docs: add note to current/future contributors to please start by opening a GH issue to avoid duplication of effort
...
Signed-off-by: Ron Evans <ron@hybridgroup.com>
2019-06-06 12:09:17 +02:00
Ayke van Laethem
5f9c683abf
main: return an error when running a command failed
2019-06-05 09:08:44 +02:00
Ayke van Laethem
0ce4d90779
cgo: add support for anonymous structs
2019-06-03 20:01:47 +02:00
Tomer Elmalem
1047c9bd05
reflect: stub out reflect.New and reflect.Zero
2019-06-03 19:26:47 +02:00
Ayke van Laethem
1d7cc2c242
cgo: add support for bitfields using generated getters and setters
2019-06-03 16:13:19 +02:00
Ayke van Laethem
23c8d15847
main: add -dev suffix to version
2019-06-03 16:09:29 +02:00
Ayke van Laethem
da85710894
main: version 0.6.0
2019-05-29 16:38:04 +02:00
j7b
0ae467d3e2
llvm cpu features
2019-05-28 15:41:34 +02:00
Justin Clift
4442b1304e
Trivial typo fix
2019-05-28 09:55:35 +02:00
Ayke van Laethem
83ab61e261
ci: install Go 1.12.5 on macOS
...
This should fix compatibility with the Go 1.12 stdlib:
https://github.com/tinygo-org/tinygo/issues/368
2019-05-27 19:47:12 +02:00
Ron Evans
2504754325
machine/samd21: use HasBits() method to simplify bit comparisons
...
Signed-off-by: Ron Evans <ron@hybridgroup.com>
2019-05-27 18:43:11 +02:00
Ron Evans
be491abc46
machine/stm32: use HasBits() method to simplify bit comparisons
...
Signed-off-by: Ron Evans <ron@hybridgroup.com>
2019-05-27 18:43:11 +02:00
Ron Evans
31189deb3b
machine/avr: use HasBits() method to simplify bit comparisons
...
Signed-off-by: Ron Evans <ron@hybridgroup.com>
2019-05-27 18:43:11 +02:00
Ron Evans
90cd3f8ea5
tools: generate volatile HasBits() method in device wrappers to simplify bit comparison code
...
Signed-off-by: Ron Evans <ron@hybridgroup.com>
2019-05-27 18:43:11 +02:00
Ayke van Laethem
2f95a5d452
ci: use go modules instead of dep
...
This also updates the LLVM build to include this commit:
d519e424c5
2019-05-27 18:42:36 +02:00
Ayke van Laethem
eb1d834dd4
wasm: add support for js.FuncOf
2019-05-27 13:35:59 +02:00
Ayke van Laethem
3313decb68
compiler,runtime: make panic functions camelCase
...
Rename panic functions to be runtime.nilPanic, runtime.lookupPanic, and
runtime.slicePanic.
2019-05-27 13:35:59 +02:00
Ron Evans
191a076956
docs: update list of supported MCU boards
...
Signed-off-by: Ron Evans <ron@hybridgroup.com>
2019-05-27 09:43:24 +02:00
Ayke van Laethem
0f2dcba7b3
syscall: implement Exit call on unix
2019-05-27 07:50:13 +02:00
Ayke van Laethem
94b8214529
machine: refactor pins to be of Pin type
2019-05-26 20:48:50 +02:00
Ayke van Laethem
421ef04efb
wasm: fix Makefile to avoid debuginfo
2019-05-25 18:40:56 +02:00
Ayke van Laethem
f7687c43aa
wasm: fix wasm-ld hang
...
See the following bugs for more information:
https://bugs.llvm.org/show_bug.cgi?id=41508
https://bugs.llvm.org/show_bug.cgi?id=37064
2019-05-25 18:25:46 +02:00
Ayke van Laethem
5a7bab8808
main: add the absolute path to clang-8 on macOS
...
This avoids the need to correctly set $PATH if LLVM 8 has been installed
using Homebrew.
2019-05-24 19:53:43 +02:00
Ron Evans
3a73e64557
tools/gen-device: complete refactor to new generator based on volatile package
...
Signed-off-by: Ron Evans <ron@hybridgroup.com>
2019-05-24 16:28:47 +02:00
Ron Evans
9f8340a970
machine/nrf: refactor to use volatile package/API
...
Signed-off-by: Ron Evans <ron@hybridgroup.com>
2019-05-24 15:44:33 +02:00
k-brk
0f6873cf02
machine/stm32f103xx: fix i2c 2 byte read
2019-05-24 15:26:06 +02:00
Ayke van Laethem
f2cd4d12e8
compiler,runtime: fix multiple definitions of a single function
...
strings.IndexByte was implemented in the runtime up to Go 1.11. It is
implemented using a direct call to internal/bytealg.IndexByte since Go
1.12.
Make sure we remain compatible with both.
2019-05-24 14:51:40 +02:00
Ayke van Laethem
7e6a54ac62
main: add build tags for the Go stdlib version
2019-05-24 14:51:40 +02:00
Ayke van Laethem
7156afca9e
interp: support some more expressions in const icmp
2019-05-24 14:00:23 +02:00
Ayke van Laethem
87ac804642
ci: make sure that all examples are included in the smoketests
2019-05-24 13:51:20 +02:00
Ayke van Laethem
edcb11f9f6
ci: move tests from CircleCI config to Makefile
...
This makes it easier to run smoke tests locally.
2019-05-24 13:51:20 +02:00
Ayke van Laethem
3568254593
machine/atsamd21: fix analog pin mode
2019-05-23 20:37:10 +02:00
Ayke van Laethem
3bf4c06c99
interp: work around limitation of constfolding in IR builder
...
The IR builder does not appear to fold comparisons of constant inttoptr
instructions to const null pointer. So do it manually during
interpretatin, as a somewhat ugly hack.
This fixes https://github.com/tinygo-org/tinygo/issues/363
2019-05-21 19:33:19 +02:00
Ayke van Laethem
f1d9e7b75e
interp: make errors during branches more reliable
...
Previously, there was a suble error in that .IsConstant() is not always
allowed to be called, resulting in a i1 that was not 0 or 1. Fix this by
checking for the constants directly and adding some more diagnostics to
catch more cases.
2019-05-21 19:33:19 +02:00
Ron Evans
e4d53daa02
machine/stm32: refactor to use new volatile package for all register access
...
Signed-off-by: Ron Evans <ron@hybridgroup.com>
2019-05-21 15:08:43 +02:00
Ayke van Laethem
98a3047b58
all: add go.mod and go.sum files for vgo support
...
Add required files for vgo support. The new vgo system defaults to on
since Go 1.13 so we should be prepared for that once the release hits.
It is also useful for testing Go 1.13 before the release.
2019-05-20 11:40:29 +02:00
Ayke van Laethem
ba85c82fbb
arm: print an error when a HardFault occurs
...
This is very useful for debugging. It differentiates between a stack
overflow and other errors (because it's easy to see when a stack
overflow occurs) and prints the old stack pointer and program counter if
available.
2019-05-20 11:39:17 +02:00
Ayke van Laethem
7b6ef65fe7
compiler: create temporary allocas with appropriate lifetimes
...
Make sure all allocas are created in the entry block and are given the
right lifetimes. This is good for code quality:
* Moving allocas to the entry block makes sure they are always
allocated statically (avoiding the need for a frame pointer) and do
not grow the stack on each new alloca instruction. This is
especially useful in loops where it could otherwise lead to a stack
overflow even though there is no recursion.
* Adding lifetime markers allows LLVM to reuse stack areas for
different allocas as long as their lifetimes do not overlap.
All in all, this reduces code size in all tested cases for the BBC
micro:bit, and reduces code size for most cases for WebAssembly.
2019-05-20 09:52:42 +02:00
Ron Evans
de032cddd2
machine/sam: Refactor all machine/runtime code to use new volatile package/API
...
Signed-off-by: Ron Evans <ron@hybridgroup.com>
2019-05-19 19:53:11 +02:00
Ron Evans
51c6b972bf
machine/feather-m0: correct board build tag and add placeholders for I2S interface
...
Signed-off-by: Ron Evans <ron@hybridgroup.com>
2019-05-19 19:52:14 +02:00