diff options
Diffstat (limited to 'transform/optimizer.go')
-rw-r--r-- | transform/optimizer.go | 18 |
1 files changed, 4 insertions, 14 deletions
diff --git a/transform/optimizer.go b/transform/optimizer.go index e10144b92..108219106 100644 --- a/transform/optimizer.go +++ b/transform/optimizer.go @@ -76,12 +76,12 @@ func Optimize(mod llvm.Module, config *compileopts.Config, optLevel, sizeLevel i OptimizeStringToBytes(mod) OptimizeReflectImplements(mod) OptimizeAllocs(mod) - err := LowerInterfaces(mod) + err := LowerInterfaces(mod, sizeLevel) if err != nil { return []error{err} } - errs := LowerInterrupts(mod) + errs := LowerInterrupts(mod, sizeLevel) if len(errs) > 0 { return errs } @@ -102,14 +102,14 @@ func Optimize(mod llvm.Module, config *compileopts.Config, optLevel, sizeLevel i } else { // Must be run at any optimization level. - err := LowerInterfaces(mod) + err := LowerInterfaces(mod, sizeLevel) if err != nil { return []error{err} } if config.FuncImplementation() == "switch" { LowerFuncValues(mod) } - errs := LowerInterrupts(mod) + errs := LowerInterrupts(mod, sizeLevel) if len(errs) > 0 { return errs } @@ -153,16 +153,6 @@ func Optimize(mod llvm.Module, config *compileopts.Config, optLevel, sizeLevel i return []error{errors.New("optimizations caused a verification failure")} } - if sizeLevel >= 2 { - // Set the "optsize" attribute to make slightly smaller binaries at the - // cost of some performance. - kind := llvm.AttributeKindID("optsize") - attr := mod.Context().CreateEnumAttribute(kind, 0) - for fn := mod.FirstFunction(); !fn.IsNil(); fn = llvm.NextFunction(fn) { - fn.AddFunctionAttr(attr) - } - } - // After TinyGo-specific transforms have finished, undo exporting these functions. for _, name := range getFunctionsUsedInTransforms(config) { fn := mod.NamedFunction(name) |