Этот коммит содержится в:
Ayke van Laethem 2018-04-25 19:46:03 +02:00
родитель ea129f3072
коммит 93399c009e

21
tgo.go
Просмотреть файл

@ -1035,15 +1035,28 @@ func (c *Compiler) Optimize(optLevel int) {
} }
func (c *Compiler) EmitObject(path string) error { func (c *Compiler) EmitObject(path string) error {
buf, err := c.machine.EmitToMemoryBuffer(c.mod, llvm.ObjectFile) // Generate output
if err != nil { var buf []byte
return err if strings.HasSuffix(path, ".o") {
llvmBuf, err := c.machine.EmitToMemoryBuffer(c.mod, llvm.ObjectFile)
if err != nil {
return err
}
buf = llvmBuf.Bytes()
} else if strings.HasSuffix(path, ".bc") {
buf = llvm.WriteBitcodeToMemoryBuffer(c.mod).Bytes()
} else if strings.HasSuffix(path, ".ll") {
buf = []byte(c.mod.String())
} else {
return errors.New("unknown output file extension")
} }
// Write output to file
f, err := os.OpenFile(path, os.O_RDWR|os.O_CREATE, 0666) f, err := os.OpenFile(path, os.O_RDWR|os.O_CREATE, 0666)
if err != nil { if err != nil {
return err return err
} }
f.Write(buf.Bytes()) f.Write(buf)
f.Close() f.Close()
return nil return nil
} }