Apparently -Oz without inliner is the fastest, probably because it
removes code that would otherwise need to be emitted.

TODO: does this mean that the ExecutionEngine compiles the module before
running it? Can we control this?
Этот коммит содержится в:
Ayke van Laethem 2018-09-24 16:22:09 +02:00
родитель c9ae72a105
коммит a2eaaa42a0
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: E97FF5335DFDFDED

Просмотреть файл

@ -210,7 +210,10 @@ func Run(pkgName string) error {
if err := c.Verify(); err != nil {
return errors.New("compiler error: failed to verify module: " + err.Error())
}
c.Optimize(1, 0, 0) // -O1, the fastest optimization level that doesn't crash
// -Oz, which is the fastest optimization level (faster than -O0, -O1, -O2
// and -Os). Turn off the inliner, as the inliner increases optimization
// time.
c.Optimize(2, 2, 0)
engine, err := llvm.NewExecutionEngine(c.Module())
if err != nil {