aboutsummaryrefslogtreecommitdiffhomepage
path: root/builder
diff options
context:
space:
mode:
authorAyke van Laethem <[email protected]>2022-05-30 14:19:42 +0200
committerRon Evans <[email protected]>2022-05-30 20:39:42 +0200
commit9246899b309110a1fea87abbe5b4d12bb8a71fa4 (patch)
tree00791c4e982c7a5894109f23b13261a05b67762e /builder
parent04ace4de5f63b4c78f17183a2b816e6949e690d8 (diff)
downloadtinygo-9246899b309110a1fea87abbe5b4d12bb8a71fa4.tar.gz
tinygo-9246899b309110a1fea87abbe5b4d12bb8a71fa4.zip
builder: move some code to transform package
The transform package is the more appropriate location for package-level optimizations, to match `transform.Optimize` for whole-program optimizations. This is just a refactor, to make later changes easier to read.
Diffstat (limited to 'builder')
-rw-r--r--builder/build.go22
1 files changed, 1 insertions, 21 deletions
diff --git a/builder/build.go b/builder/build.go
index cf9f57776..d0e92d7c9 100644
--- a/builder/build.go
+++ b/builder/build.go
@@ -439,27 +439,7 @@ func Build(pkgName, outpath string, config *compileopts.Config, action func(Buil
return errors.New("verification error after interpreting " + pkgInit.Name())
}
- // Run function passes for each function in the module.
- // These passes are intended to be run on each function right
- // after they're created to reduce IR size (and maybe also for
- // cache locality to improve performance), but for now they're
- // run here for each function in turn. Maybe this can be
- // improved in the future.
- builder := llvm.NewPassManagerBuilder()
- defer builder.Dispose()
- builder.SetOptLevel(optLevel)
- builder.SetSizeLevel(sizeLevel)
- funcPasses := llvm.NewFunctionPassManagerForModule(mod)
- defer funcPasses.Dispose()
- builder.PopulateFunc(funcPasses)
- funcPasses.InitializeFunc()
- for fn := mod.FirstFunction(); !fn.IsNil(); fn = llvm.NextFunction(fn) {
- if fn.IsDeclaration() {
- continue
- }
- funcPasses.RunFunc(fn)
- }
- funcPasses.FinalizeFunc()
+ transform.OptimizePackage(mod, config)
// Serialize the LLVM module as a bitcode file.
// Write to a temporary path that is renamed to the destination