Crate cranelift_codegen
source ·Expand description
Cranelift code generation library.
Re-exports
pub use crate::verifier::verify_function;
pub use crate::write::write_function;
pub use cranelift_bforest as bforest;
pub use cranelift_entity as entity;
pub use gimli;
Modules
Binary machine code emission.
The
CFGPrinter
utility.Cursor library.
This module gives users to instantiate values that Cranelift understands. These values are used,
for example, during interpretation and for wrapping immediates.
Debug tracing helpers.
A Dominator Tree represented as mappings of Blocks to their immediate dominator.
A control flow graph represented as mappings of basic blocks to their predecessors
and successors.
Representation of Cranelift IR functions.
Instruction Set Architectures.
A loop analysis represented as mappings of loops to their header Block
and parent in the loop tree.
Compact representation of
Option<T>
for types with a reserved value.Utility routines for pretty-printing error messages.
Shared settings module.
Pass timing.
A verifier for ensuring that functions are well formed.
It verifies:
Converting Cranelift IR to text.
Macros
Even when trace logging is disabled, the trace macro has a significant performance cost so we
disable it by default.
Structs
Compilation error, with the accompanying function to help printing it.
Persistent data structures and compilation pipeline.
Status of a compiled artifact ready to use.
A buffer of output to be produced, fixed up, and then emitted to a CodeSink
in bulk.
A
MachBuffer
once emission is completed: holds generated code and records,
without fixups. This allows the type to be independent of the backend.A call site record resulting from a compilation.
A relocation resulting from a compilation.
A source-location mapping resulting from a compilation.
Record of stack map metadata: stack offsets containing references.
A trap record resulting from a compilation.
A register named in an instruction. This register can be either a
virtual register or a fixed physical register. It does not have
any constraints applied to it: those can be added later in
MachInst::get_operands()
when the Reg
s are converted to
Operand
s.Value location range.
A type wrapper that indicates a register type is writable. The
underlying register can be extracted, and the type wrapper can be
built using an arbitrary register. Hence, this type-level wrapper
is not strictly a guarantee. However, “casting” to a writable
register is an explicit operation for which we can
audit. Ordinarily, internal APIs in the compiler backend should
take a
Writable<Reg>
whenever the register is written, and the
usual, frictionless way to get one of these is to allocate a new
temporary.Enums
A compilation error.
Constants
Version number of this crate.
Traits
A machine instruction.
A trait describing the ability to encode a MachInst into binary machine code.
An object that can be used to create the text section of an executable.
Type Definitions
A convenient alias for a
Result
that uses CodegenError
as the error type.CompiledCode
in its final form (i.e. after FunctionParameters
have been applied), ready for
consumption.Resulting map of Value labels and their ranges/locations.