Browse Source

compiler: only calculate functionInfo once

This is a small change that's not really important in itself, but it
avoids duplicate errors in a future commit that adds error messages to
//go:wasmimport.
pull/3738/head
Ayke van Laethem 1 year ago
committed by Ron Evans
parent
commit
6dba16f28e
  1. 2
      compiler/compiler.go
  2. 4
      compiler/symbol.go

2
compiler/compiler.go

@ -82,6 +82,7 @@ type compilerContext struct {
uintptrType llvm.Type
program *ssa.Program
diagnostics []error
functionInfos map[*ssa.Function]functionInfo
astComments map[string]*ast.CommentGroup
embedGlobals map[string][]*loader.EmbedFile
pkg *types.Package
@ -99,6 +100,7 @@ func newCompilerContext(moduleName string, machine llvm.TargetMachine, config *C
ditypes: make(map[types.Type]llvm.Metadata),
machine: machine,
targetData: machine.CreateTargetData(),
functionInfos: map[*ssa.Function]functionInfo{},
astComments: map[string]*ast.CommentGroup{},
}

4
compiler/symbol.go

@ -239,12 +239,16 @@ func (c *compilerContext) getFunction(fn *ssa.Function) (llvm.Type, llvm.Value)
// present in *ssa.Function, such as the link name and whether it should be
// exported.
func (c *compilerContext) getFunctionInfo(f *ssa.Function) functionInfo {
if info, ok := c.functionInfos[f]; ok {
return info
}
info := functionInfo{
// Pick the default linkName.
linkName: f.RelString(nil),
}
// Check for //go: pragmas, which may change the link name (among others).
info.parsePragmas(f)
c.functionInfos[f] = info
return info
}

Loading…
Cancel
Save