Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewTargetMachine ¶ added in v0.13.0
func NewTargetMachine(config *compileopts.Config) (llvm.TargetMachine, error)
NewTargetMachine returns a new llvm.TargetMachine based on the passed-in configuration. It is used by the compiler and is needed for machine code emission.
Types ¶
type CompilerOutput ¶ added in v0.15.0
type CompilerOutput struct { // The LLVM module that contains the compiled but not optimized LLVM module // for all the Go code in the program. Mod llvm.Module // ExtraFiles is a list of C source files included in packages that should // be built and linked together with the main executable to form one // program. They can be used from CGo, for example. ExtraFiles []string // ExtraLDFlags are linker flags obtained during CGo processing. These flags // must be passed to the linker which links the entire executable. ExtraLDFlags []string // MainDir is the absolute directory path to the directory of the main // package. This is useful for testing: tests must be run in the package // directory that is being tested. MainDir string }
CompilerOutput is returned from the Compile() call. It contains the compile output and information necessary to continue to compile and link the program.
func Compile ¶ added in v0.13.0
func Compile(pkgName string, machine llvm.TargetMachine, config *compileopts.Config) (output CompilerOutput, errors []error)
Compile the given package path or .go file path. Return an error when this fails (in any stage). If successful it returns the LLVM module and a list of extra C files to be compiled. If not, one or more errors will be returned.
The fact that it returns a list of filenames to compile is a layering violation. Eventually, this Compile function should only compile a single package and not the whole program, and loading of the program (including CGo processing) should be moved outside the compiler package.
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
Package ircheck implements a checker for LLVM IR, that goes a bit further than the regular LLVM IR verifier.
|
Package ircheck implements a checker for LLVM IR, that goes a bit further than the regular LLVM IR verifier. |
Package llvmutil contains utility functions used across multiple compiler packages.
|
Package llvmutil contains utility functions used across multiple compiler packages. |