compiler

package
v0.9.0 Latest Latest
Warning

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

Go to latest
Published: Oct 17, 2019 License: BSD-3-Clause Imports: 22 Imported by: 1

Documentation

Index

Constants

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.

Variables

This section is empty.

Functions

This section is empty.

Types

type Compiler

type Compiler struct {
	Config
	// 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 https://github.com/WebAssembly/design/issues/1172

func (*Compiler) IR

func (c *Compiler) IR() string

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

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

func (c *Compiler) LowerGoroutines() error

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.

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

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

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

type TestConfig added in v0.7.0

type TestConfig struct {
	CompileTestBinary bool
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL