ssa: add llvm debug info

This commit is contained in:
Li Jie
2024-09-10 11:04:32 +08:00
parent 4bf5dd15e9
commit 3e5338c902
8 changed files with 595 additions and 3 deletions

View File

@@ -338,6 +338,8 @@ func (p Program) tyComplex128() llvm.Type {
// NewPackage creates a new package.
func (p Program) NewPackage(name, pkgPath string) Package {
mod := p.ctx.NewModule(pkgPath)
di := newDIBuilder(p, mod)
cu := di.CreateCompileUnit(name, pkgPath)
// TODO(xsw): Finalize may cause panic, so comment it.
// mod.Finalize()
gbls := make(map[string]Global)
@@ -352,7 +354,7 @@ func (p Program) NewPackage(name, pkgPath string) Package {
// p.needPyInit = false
ret := &aPackage{
mod: mod, vars: gbls, fns: fns, stubs: stubs,
pyobjs: pyobjs, pymods: pymods, strs: strs, named: named, Prog: p}
pyobjs: pyobjs, pymods: pymods, strs: strs, named: named, Prog: p, di: di, cu: cu}
ret.abi.Init(pkgPath)
return ret
}
@@ -589,6 +591,8 @@ type aPackage struct {
abi abi.Builder
Prog Program
di diBuilder
cu CompilationUnit
vars map[string]Global
fns map[string]Function
@@ -706,6 +710,14 @@ func (p Package) AfterInit(b Builder, ret BasicBlock) {
}
}
func (p Package) Finalize() {
p.di.Finalize()
}
func (p Package) DIBuilder() diBuilder {
return p.di
}
// -----------------------------------------------------------------------------
/*