NewPackage: altSSA

This commit is contained in:
xushiwei
2024-06-15 12:10:08 +08:00
parent fa712aa3a0
commit e0a25b5098
5 changed files with 10 additions and 5 deletions

View File

@@ -143,7 +143,7 @@ func TestCompileEx(t *testing.T, src any, fname, expected string) {
foo.WriteTo(os.Stderr) foo.WriteTo(os.Stderr)
prog := ssatest.NewProgramEx(t, nil, imp) prog := ssatest.NewProgramEx(t, nil, imp)
ret, err := cl.NewPackage(prog, foo, files) ret, err := cl.NewPackage(prog, foo, nil, files)
if err != nil { if err != nil {
t.Fatal("cl.NewPackage failed:", err) t.Fatal("cl.NewPackage failed:", err)
} }

View File

@@ -953,7 +953,7 @@ func (p *context) compileValues(b llssa.Builder, vals []ssa.Value, hasVArg int)
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
// NewPackage compiles a Go package to LLVM IR package. // NewPackage compiles a Go package to LLVM IR package.
func NewPackage(prog llssa.Program, pkg *ssa.Package, files []*ast.File) (ret llssa.Package, err error) { func NewPackage(prog llssa.Program, pkg, alt *ssa.Package, files []*ast.File) (ret llssa.Package, err error) {
type namedMember struct { type namedMember struct {
name string name string
val ssa.Member val ssa.Member

View File

@@ -365,7 +365,12 @@ func buildPkg(prog llssa.Program, aPkg *aPackage, mode Mode, verbose bool) {
pkg.ExportFile = "" pkg.ExportFile = ""
return return
} }
ret, err := cl.NewPackage(prog, aPkg.SSA, pkg.Syntax) syntax := pkg.Syntax
if altPkg := aPkg.AltPkg; altPkg != nil {
// TODO: merge pkg.Types
syntax = append(syntax, altPkg.Syntax...)
}
ret, err := cl.NewPackage(prog, aPkg.SSA, aPkg.AltSSA, syntax)
check(err) check(err)
if needLLFile(mode) { if needLLFile(mode) {
pkg.ExportFile += ".ll" pkg.ExportFile += ".ll"

View File

@@ -80,7 +80,7 @@ func Gen(pkgPath, inFile string, src any) string {
return ret return ret
}) })
ret, err := cl.NewPackage(prog, ssaPkg, files) ret, err := cl.NewPackage(prog, ssaPkg, nil, files)
check(err) check(err)
if prog.NeedPyInit { // call PyInit if needed if prog.NeedPyInit { // call PyInit if needed

View File

@@ -80,7 +80,7 @@ func GenFrom(fileOrPkg string) string {
ssaPkg.WriteTo(os.Stderr) ssaPkg.WriteTo(os.Stderr)
} }
ret, err := cl.NewPackage(prog, ssaPkg, pkg.Syntax) ret, err := cl.NewPackage(prog, ssaPkg, nil, pkg.Syntax)
check(err) check(err)
if prog.NeedPyInit { // call PyInit if needed if prog.NeedPyInit { // call PyInit if needed