aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--Makefile5
-rw-r--r--interp/scan.go2
-rw-r--r--transform/optimizer.go2
3 files changed, 8 insertions, 1 deletions
diff --git a/Makefile b/Makefile
index 0e033dfbc..b59b9ce6d 100644
--- a/Makefile
+++ b/Makefile
@@ -335,6 +335,11 @@ endif
@$(MD5SUM) test.hex
$(TINYGO) build -o wasm.wasm -target=wasm examples/wasm/export
$(TINYGO) build -o wasm.wasm -target=wasm examples/wasm/main
+ # test various compiler flags
+ $(TINYGO) build -size short -o test.hex -target=pca10040 -gc=none -scheduler=none examples/blinky1
+ @$(MD5SUM) test.hex
+ $(TINYGO) build -size short -o test.hex -target=pca10040 -opt=1 examples/blinky1
+ @$(MD5SUM) test.hex
wasmtest:
$(GO) test ./tests/wasm
diff --git a/interp/scan.go b/interp/scan.go
index adeb8f430..d8c764d8c 100644
--- a/interp/scan.go
+++ b/interp/scan.go
@@ -122,6 +122,8 @@ func (e *evalPackage) hasSideEffects(fn llvm.Value) (*sideEffectResult, *Error)
// External function call. Assume only limited side effects
// (no affected globals, etc.).
switch child.Name() {
+ case "runtime.alloc":
+ continue
case "runtime.typeAssert":
continue // implemented in interp
case "runtime.interfaceImplements":
diff --git a/transform/optimizer.go b/transform/optimizer.go
index 9c77c312d..917083ce8 100644
--- a/transform/optimizer.go
+++ b/transform/optimizer.go
@@ -158,7 +158,7 @@ func Optimize(mod llvm.Module, config *compileopts.Config, optLevel, sizeLevel i
// After TinyGo-specific transforms have finished, undo exporting these functions.
for _, name := range getFunctionsUsedInTransforms(config) {
fn := mod.NamedFunction(name)
- if fn.IsNil() {
+ if fn.IsNil() || fn.IsDeclaration() {
continue
}
fn.SetLinkage(llvm.InternalLinkage)