
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.
25 строки
521 Б
Go
25 строки
521 Б
Go
package transform_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/tinygo-org/tinygo/transform"
|
|
"tinygo.org/x/go-llvm"
|
|
)
|
|
|
|
func TestInterfaceLowering(t *testing.T) {
|
|
t.Parallel()
|
|
testTransform(t, "testdata/interface", func(mod llvm.Module) {
|
|
err := transform.LowerInterfaces(mod, defaultTestConfig)
|
|
if err != nil {
|
|
t.Error(err)
|
|
}
|
|
|
|
po := llvm.NewPassBuilderOptions()
|
|
defer po.Dispose()
|
|
err = mod.RunPasses("globaldce", llvm.TargetMachine{}, po)
|
|
if err != nil {
|
|
t.Error("failed to run passes:", err)
|
|
}
|
|
})
|
|
}
|