diff options
author | Ayke van Laethem <[email protected]> | 2022-05-30 14:19:42 +0200 |
---|---|---|
committer | Ron Evans <[email protected]> | 2022-05-30 20:39:42 +0200 |
commit | 9246899b309110a1fea87abbe5b4d12bb8a71fa4 (patch) | |
tree | 00791c4e982c7a5894109f23b13261a05b67762e /builder | |
parent | 04ace4de5f63b4c78f17183a2b816e6949e690d8 (diff) | |
download | tinygo-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.go | 22 |
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 |