mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-15 16:33:40 +00:00
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.
This commit is contained in:
committed by
Ron Evans
parent
1da1abe314
commit
3b1913ac57
@@ -38,11 +38,12 @@ func TestAllocs2(t *testing.T) {
|
||||
mod := compileGoFileForTesting(t, "./testdata/allocs2.go")
|
||||
|
||||
// Run functionattrs pass, which is necessary for escape analysis.
|
||||
pm := llvm.NewPassManager()
|
||||
defer pm.Dispose()
|
||||
pm.AddInstructionCombiningPass()
|
||||
pm.AddFunctionAttrsPass()
|
||||
pm.Run(mod)
|
||||
po := llvm.NewPassBuilderOptions()
|
||||
defer po.Dispose()
|
||||
err := mod.RunPasses("function(instcombine),function-attrs", llvm.TargetMachine{}, po)
|
||||
if err != nil {
|
||||
t.Error("failed to run passes:", err)
|
||||
}
|
||||
|
||||
// Run heap to stack transform.
|
||||
var testOutputs []allocsTestOutput
|
||||
|
||||
Reference in New Issue
Block a user