Version: v0.4.1 Latest Latest

This package is not in the latest version of its module.

Go to latest
Published: Mar 15, 2019 License: BSD-3-Clause Imports: 18 Imported by: 0




View Source
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.


This section is empty.


This section is empty.


type Compiler

type Compiler struct {
	// contains filtered or unexported fields

func NewCompiler

func NewCompiler(pkgName string, config Config) (*Compiler, error)

func (*Compiler) ApplyFunctionSections

func (c *Compiler) ApplyFunctionSections()

func (*Compiler) Compile

func (c *Compiler) Compile(mainPath string) error

Compile the given package path or .go file path. Return an error when this fails (in any stage).

func (*Compiler) EmitBitcode

func (c *Compiler) EmitBitcode(path string) error

Emit LLVM bitcode file (.bc).

func (*Compiler) EmitObject

func (c *Compiler) EmitObject(path string) error

Emit object file (.o).

func (*Compiler) EmitText

func (c *Compiler) EmitText(path string) error

Emit LLVM IR source file (.ll).

func (*Compiler) ExternalInt64AsPtr

func (c *Compiler) ExternalInt64AsPtr() error

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

func (*Compiler) IR

func (c *Compiler) IR() string

IR returns the whole IR as a human-readable string.

func (*Compiler) LowerGoroutines

func (c *Compiler) LowerGoroutines() error

LowerGoroutines is a pass called during optimization that transforms the IR into one where all blocking functions are turned into goroutines and blocking calls into await calls.

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.

func (*Compiler) Optimize

func (c *Compiler) Optimize(optLevel, sizeLevel int, inlinerThreshold uint) error

Run the LLVM optimizer over the module. The inliner can be disabled (if necessary) by passing 0 to the inlinerThreshold.

func (*Compiler) OptimizeAllocs

func (c *Compiler) OptimizeAllocs()

Basic escape analysis: translate runtime.alloc calls into alloca instructions.

func (*Compiler) OptimizeMaps

func (c *Compiler) OptimizeMaps()

Eliminate created but not used maps.

In the future, this should statically allocate created but never modified maps. This has not yet been implemented, however.

func (*Compiler) OptimizeStringToBytes

func (c *Compiler) OptimizeStringToBytes()

Transform runtime.stringToBytes(...) calls into const []byte slices whenever possible. This optimizes the following pattern:


where Write does not store to the slice.

func (*Compiler) Packages

func (c *Compiler) Packages() []*loader.Package

func (*Compiler) TargetData

func (c *Compiler) TargetData() llvm.TargetData

Return the LLVM target data object. Only valid after a successful compile.

func (*Compiler) Verify

func (c *Compiler) Verify() error

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)
	GOOS      string   //
	GOARCH    string   //
	GC        string   // garbage collection strategy
	CFlags    []string // cflags to pass to cgo
	LDFlags   []string // ldflags to pass to cgo
	DumpSSA   bool     // dump Go SSA, for compiler debugging
	Debug     bool     // add debug symbols for gdb
	RootDir   string   // GOROOT for TinyGo
	GOPATH    string   // GOPATH, like `go env GOPATH`
	BuildTags []string // build tags for TinyGo (empty means {Config.GOOS/Config.GOARCH})

Configure the compiler.

type Frame

type Frame struct {
	// contains filtered or unexported fields

type Phi

type Phi struct {
	// contains filtered or unexported fields

type StdSizes

type StdSizes struct {
	IntSize  int64
	PtrSize  int64
	MaxAlign int64

func (*StdSizes) Alignof

func (s *StdSizes) Alignof(T types.Type) int64

func (*StdSizes) Offsetsof

func (s *StdSizes) Offsetsof(fields []*types.Var) []int64

func (*StdSizes) Sizeof

func (s *StdSizes) Sizeof(T types.Type) int64

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
t or T : Toggle theme light dark auto