From 4e4f91bea74fe51f19f81df34fe225df4c8ba61f Mon Sep 17 00:00:00 2001 From: Ayke van Laethem Date: Wed, 31 Oct 2018 10:10:49 +0100 Subject: [PATCH] main: cleanup printing of IR 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. --- main.go | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/main.go b/main.go index 467b3be9..239f8eea 100644 --- a/main.go +++ b/main.go @@ -46,22 +46,20 @@ func Compile(pkgName, outpath string, spec *TargetSpec, config *BuildConfig, act } // Compile Go code to IR. - parseErr := func() error { - 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 + err = c.Compile(pkgName) + if err != nil { + return err + } + if err := c.Verify(); err != nil { + return err + } + + if config.printIR { + fmt.Println("Generated LLVM IR:") + fmt.Println(c.IR()) } c.ApplyFunctionSections() // -ffunction-sections - if err := c.Verify(); err != nil { return err }