aboutsummaryrefslogtreecommitdiffhomepage
path: root/interp
diff options
context:
space:
mode:
authorAyke van Laethem <[email protected]>2023-09-19 22:37:44 +0200
committerRon Evans <[email protected]>2023-10-04 13:05:58 +0200
commit3b1913ac57420af2c665c6f1c3847a6e63774ecd (patch)
tree77460ae8c35853f7f16d4f8575576e677d78e737 /interp
parent1da1abe3147796aa56a5486ed6f07afdd88d8234 (diff)
downloadtinygo-3b1913ac57420af2c665c6f1c3847a6e63774ecd.tar.gz
tinygo-3b1913ac57420af2c665c6f1c3847a6e63774ecd.zip
all: use the new LLVM pass manager
The old LLVM pass manager is deprecated and should not be used anymore. Moreover, the pass manager builder (which we used to set up a pass pipeline) is actually removed from LLVM entirely in LLVM 17: https://reviews.llvm.org/D145387 https://reviews.llvm.org/D145835 The new pass manager does change the binary size in many cases: both growing and shrinking it. However, on average the binary size remains more or less the same. This is needed as a preparation for LLVM 17.
Diffstat (limited to 'interp')
-rw-r--r--interp/interp_test.go9
1 files changed, 3 insertions, 6 deletions
diff --git a/interp/interp_test.go b/interp/interp_test.go
index fc567af20..cac565087 100644
--- a/interp/interp_test.go
+++ b/interp/interp_test.go
@@ -77,12 +77,9 @@ func runTest(t *testing.T, pathPrefix string) {
}
// Run some cleanup passes to get easy-to-read outputs.
- pm := llvm.NewPassManager()
- defer pm.Dispose()
- pm.AddGlobalOptimizerPass()
- pm.AddDeadStoreEliminationPass()
- pm.AddAggressiveDCEPass()
- pm.Run(mod)
+ to := llvm.NewPassBuilderOptions()
+ defer to.Dispose()
+ mod.RunPasses("globalopt,dse,adce", llvm.TargetMachine{}, to)
// Read the expected output IR.
out, err := os.ReadFile(pathPrefix + ".out.ll")