aboutsummaryrefslogtreecommitdiffhomepage
path: root/transform/optimizer.go
diff options
context:
space:
mode:
Diffstat (limited to 'transform/optimizer.go')
-rw-r--r--transform/optimizer.go18
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)