From a2eaaa42a04d3fc5c7507e1d0f5a7db0d0859a0f Mon Sep 17 00:00:00 2001 From: Ayke van Laethem Date: Mon, 24 Sep 2018 16:22:09 +0200 Subject: [PATCH] main: optimize 'tinygo run' Apparently -Oz without inliner is the fastest, probably because it removes code that would otherwise need to be emitted. TODO: does this mean that the ExecutionEngine compiles the module before running it? Can we control this? --- main.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/main.go b/main.go index f0c31da4..ec3bbc3d 100644 --- a/main.go +++ b/main.go @@ -210,7 +210,10 @@ func Run(pkgName string) error { if err := c.Verify(); err != nil { return errors.New("compiler error: failed to verify module: " + err.Error()) } - c.Optimize(1, 0, 0) // -O1, the fastest optimization level that doesn't crash + // -Oz, which is the fastest optimization level (faster than -O0, -O1, -O2 + // and -Os). Turn off the inliner, as the inliner increases optimization + // time. + c.Optimize(2, 2, 0) engine, err := llvm.NewExecutionEngine(c.Module()) if err != nil {