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) 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) 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.