compiler: fix runtime.mainWrapper linkage and debug info

Этот коммит содержится в:
Ayke van Laethem 2018-10-19 17:39:41 +02:00
родитель 963ba16d7b
коммит 3babdfdc00
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: E97FF5335DFDFDED

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

@ -378,8 +378,15 @@ func (c *Compiler) Compile(mainPath string) error {
} }
c.builder.CreateRetVoid() c.builder.CreateRetVoid()
mainWrapper := c.mod.NamedFunction("runtime.mainWrapper") mainWrapper := c.ir.GetFunction(c.ir.Program.ImportedPackage("runtime").Members["mainWrapper"].(*ssa.Function))
block = c.ctx.AddBasicBlock(mainWrapper, "entry") mainWrapper.LLVMFn.SetLinkage(llvm.InternalLinkage)
difunc, err = c.attachDebugInfo(mainWrapper)
if err != nil {
return err
}
pos = c.ir.Program.Fset.Position(mainWrapper.Pos())
c.builder.SetCurrentDebugLocation(uint(pos.Line), uint(pos.Column), difunc, llvm.Metadata{})
block = c.ctx.AddBasicBlock(mainWrapper.LLVMFn, "entry")
c.builder.SetInsertPointAtEnd(block) c.builder.SetInsertPointAtEnd(block)
realMain := c.mod.NamedFunction(c.ir.MainPkg().Pkg.Path() + ".main") realMain := c.mod.NamedFunction(c.ir.MainPkg().Pkg.Path() + ".main")
if c.ir.NeedsScheduler() { if c.ir.NeedsScheduler() {