Panics don't usually happen nowadays, instead the compiler package
returns errors while compiling. If it still panics, this is usually from
within LLVM from where deferred functions are not run.
Этот коммит содержится в:
Ayke van Laethem 2018-10-31 10:10:49 +01:00
родитель 8a211d36aa
коммит 4e4f91bea7
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: E97FF5335DFDFDED

18
main.go
Просмотреть файл

@ -46,22 +46,20 @@ func Compile(pkgName, outpath string, spec *TargetSpec, config *BuildConfig, act
}
// Compile Go code to IR.
parseErr := func() error {
err = c.Compile(pkgName)
if err != nil {
return err
}
if err := c.Verify(); err != nil {
return err
}
if config.printIR {
// Run this even if c.Compile() panics.
defer func() {
fmt.Println("Generated LLVM IR:")
fmt.Println(c.IR())
}()
}
return c.Compile(pkgName)
}()
if parseErr != nil {
return parseErr
}
c.ApplyFunctionSections() // -ffunction-sections
if err := c.Verify(); err != nil {
return err
}