compiler: check wasm sizes

This commit is contained in:
visualfc
2025-03-31 17:06:15 +08:00
parent a7c23e25d8
commit 19417cdd52
2 changed files with 8 additions and 3 deletions

View File

@@ -153,7 +153,12 @@ func Do(args []string, conf *Config) ([]Package, error) {
} }
prog := llssa.NewProgram(target) prog := llssa.NewProgram(target)
sizes := prog.TypeSizes sizes := func(sizes types.Sizes, compiler, arch string) types.Sizes {
if arch == "wasm" && os.Getenv("LLGO_WASM32") == "1" {
sizes = &types.StdSizes{4, 4}
}
return prog.TypeSizes(sizes)
}
dedup := packages.NewDeduper() dedup := packages.NewDeduper()
dedup.SetPreload(func(pkg *types.Package, files []*ast.File) { dedup.SetPreload(func(pkg *types.Package, files []*ast.File) {
if llruntime.SkipToBuild(pkg.Path()) { if llruntime.SkipToBuild(pkg.Path()) {

View File

@@ -705,7 +705,7 @@ func refineEx(dedup Deduper, ld *loader, response *packages.DriverResponse) ([]*
// return an error. Clients may need to handle such errors before // return an error. Clients may need to handle such errors before
// proceeding with further analysis. The PrintErrors function is // proceeding with further analysis. The PrintErrors function is
// provided for convenient display of all errors. // provided for convenient display of all errors.
func LoadEx(dedup Deduper, sizes func(types.Sizes) types.Sizes, cfg *Config, patterns ...string) ([]*Package, error) { func LoadEx(dedup Deduper, sizes func(sizes types.Sizes, compiler, arch string) types.Sizes, cfg *Config, patterns ...string) ([]*Package, error) {
ld := newLoader(cfg) ld := newLoader(cfg)
response, external, err := defaultDriver(&ld.Config, patterns...) response, external, err := defaultDriver(&ld.Config, patterns...)
if err != nil { if err != nil {
@@ -732,7 +732,7 @@ func LoadEx(dedup Deduper, sizes func(types.Sizes) types.Sizes, cfg *Config, pat
} }
if sizes != nil { if sizes != nil {
ld.sizes = sizes(ld.sizes) ld.sizes = sizes(ld.sizes, response.Compiler, response.Arch)
} }
return refineEx(dedup, ld, response) return refineEx(dedup, ld, response)
} }