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) LowerFuncValues()
- func (c *Compiler) LowerGoroutines() error
- func (c *Compiler) LowerInterfaces()
- 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 Config
- type Frame
- type Phi
- type StdSizes
- type TestConfig
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 { Config // contains filtered or unexported fields }
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) LowerFuncValues ¶ added in v0.5.0
func (c *Compiler) LowerFuncValues()
LowerFuncValue lowers the runtime.funcValueWithSignature type and runtime.getFuncPtr function to their final form.
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) LowerInterfaces ¶
func (c *Compiler) LowerInterfaces()
Lower all interface functions. They are emitted by the compiler as higher-level intrinsics that need some lowering before LLVM can work on them. This is done so that a few cleanup passes can run before assigning the final type codes.
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.
type Config ¶
type Config struct { Triple string // LLVM target triple, e.g. x86_64-unknown-linux-gnu (empty string means default) CPU string // LLVM CPU name, e.g. atmega328p (empty string means default) Features []string // LLVM CPU features GOOS string // GOARCH string // GC string // garbage collection strategy Scheduler string // scheduler implementation ("coroutines" or "tasks") PanicStrategy string // panic strategy ("print" or "trap") CFlags []string // cflags to pass to cgo LDFlags []string // ldflags to pass to cgo ClangHeaders string // Clang built-in header include path DumpSSA bool // dump Go SSA, for compiler debugging VerifyIR bool // run extra checks on the IR Debug bool // add debug symbols for gdb GOROOT string // GOROOT TINYGOROOT string // GOROOT for TinyGo GOPATH string // GOPATH, like `go env GOPATH` BuildTags []string // build tags for TinyGo (empty means {Config.GOOS/Config.GOARCH}) TestConfig TestConfig }
Configure the compiler.
type TestConfig ¶ added in v0.7.0
type TestConfig struct {
CompileTestBinary bool
}