Documentation ¶
Index ¶
- Constants
- type Compiler
- func (c *Compiler) ApplyFunctionSections()
- func (c *Compiler) Compile(mainPath string) []error
- func (c *Compiler) EmitBitcode(path string) error
- func (c *Compiler) EmitObject(path string) error
- func (c *Compiler) EmitText(path string) error
- func (c *Compiler) ExternalInt64AsPtr() error
- func (c *Compiler) IR() string
- func (c *Compiler) LowerGoroutines() error
- func (c *Compiler) Module() llvm.Module
- func (c *Compiler) NonConstGlobals()
- func (c *Compiler) Optimize(optLevel, sizeLevel int, inlinerThreshold uint) []error
- func (c *Compiler) Packages() []*loader.Package
- func (c *Compiler) Verify() error
- type Frame
- type Phi
- type StdSizes
Constants ¶
const MaxFieldsPerParam = 3
The maximum number of arguments that can be expanded from a single struct. If a struct contains more fields, it is passed as a struct without expanding.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Compiler ¶
type Compiler struct { *compileopts.Config // contains filtered or unexported fields }
func NewCompiler ¶
func NewCompiler(pkgName string, config *compileopts.Config) (*Compiler, error)
func (*Compiler) ApplyFunctionSections ¶
func (c *Compiler) ApplyFunctionSections()
func (*Compiler) Compile ¶
Compile the given package path or .go file path. Return an error when this fails (in any stage).
func (*Compiler) EmitBitcode ¶
Emit LLVM bitcode file (.bc).
func (*Compiler) EmitObject ¶
Emit object file (.o).
func (*Compiler) ExternalInt64AsPtr ¶
When -wasm-abi flag set to "js" (default), replace i64 in an external function with a stack-allocated i64*, to work around the lack of 64-bit integers in JavaScript (commonly used together with WebAssembly). Once that's resolved, this pass may be avoided. See also the -wasm-abi= flag https://github.com/WebAssembly/design/issues/1172
func (*Compiler) LowerGoroutines ¶
LowerGoroutines performs some IR transformations necessary to support goroutines. It does something different based on whether it uses the coroutine or the tasks implementation of goroutines, and whether goroutines are necessary at all.
func (*Compiler) Module ¶
func (c *Compiler) Module() llvm.Module
Return the LLVM module. Only valid after a successful compile.
func (*Compiler) NonConstGlobals ¶
func (c *Compiler) NonConstGlobals()
Turn all global constants into global variables. This works around a limitation on Harvard architectures (e.g. AVR), where constant and non-constant pointers point to a different address space.