Struct cretonne_codegen::ir::function::Function
[−]
[src]
pub struct Function { pub name: ExternalName, pub signature: Signature, pub stack_slots: StackSlots, pub global_vars: PrimaryMap<GlobalVar, GlobalVarData>, pub heaps: PrimaryMap<Heap, HeapData>, pub jump_tables: JumpTables, pub dfg: DataFlowGraph, pub layout: Layout, pub encodings: InstEncodings, pub locations: ValueLocations, pub offsets: EbbOffsets, pub srclocs: SourceLocs, }
A function.
Functions can be cloned, but it is not a very fast operation. The clone will have all the same entity numbers as the original.
Fields
name: ExternalName
Name of this function. Mostly used by .cton
files.
signature: Signature
Signature of this function.
stack_slots: StackSlots
Stack slots allocated in this function.
global_vars: PrimaryMap<GlobalVar, GlobalVarData>
Global variables referenced.
heaps: PrimaryMap<Heap, HeapData>
Heaps referenced.
jump_tables: JumpTables
Jump tables used in this function.
dfg: DataFlowGraph
Data flow graph containing the primary definition of all instructions, EBBs and values.
layout: Layout
Layout of EBBs and instructions in the function body.
encodings: InstEncodings
Encoding recipe and bits for the legal instructions.
Illegal instructions have the Encoding::default()
value.
locations: ValueLocations
Location assigned to every value.
offsets: EbbOffsets
Code offsets of the EBB headers.
This information is only transiently available after the binemit::relax_branches
function
computes it, and it can easily be recomputed by calling that function. It is not included
in the textual IR format.
srclocs: SourceLocs
Source locations.
Track the original source location for each instruction. The source locations are not interpreted by Cretonne, only preserved.
Methods
impl Function
[src]
pub fn with_name_signature(name: ExternalName, sig: Signature) -> Self
[src]
Create a function with the given name and signature.
pub fn clear(&mut self)
[src]
Clear all data structures in this function.
pub fn new() -> Self
[src]
Create a new empty, anonymous function with a SystemV calling convention.
pub fn create_jump_table(&mut self, data: JumpTableData) -> JumpTable
[src]
Creates a jump table in the function, to be used by br_table
instructions.
pub fn insert_jump_table_entry(&mut self, jt: JumpTable, index: usize, ebb: Ebb)
[src]
Inserts an entry in a previously declared jump table.
pub fn create_stack_slot(&mut self, data: StackSlotData) -> StackSlot
[src]
Creates a stack slot in the function, to be used by stack_load
, stack_store
and
stack_addr
instructions.
pub fn import_signature(&mut self, signature: Signature) -> SigRef
[src]
Adds a signature which can later be used to declare an external function import.
pub fn import_function(&mut self, data: ExtFuncData) -> FuncRef
[src]
Declare an external function import.
pub fn create_global_var(&mut self, data: GlobalVarData) -> GlobalVar
[src]
Declares a global variable accessible to the function.
pub fn create_heap(&mut self, data: HeapData) -> Heap
[src]
Declares a heap accessible to the function.
pub fn display<'a, I: Into<Option<&'a TargetIsa>>>(
&'a self,
isa: I
) -> DisplayFunction<'a>
[src]
&'a self,
isa: I
) -> DisplayFunction<'a>
Return an object that can display this function with correct ISA-specific annotations.
pub fn special_param(&self, purpose: ArgumentPurpose) -> Option<Value>
[src]
Find a presumed unique special-purpose function parameter value.
Returns the value of the last purpose
parameter, or None
if no such parameter exists.
ⓘImportant traits for InstOffsetIter<'a>pub fn inst_offsets<'a>(
&'a self,
ebb: Ebb,
encinfo: &EncInfo
) -> InstOffsetIter<'a>
[src]
&'a self,
ebb: Ebb,
encinfo: &EncInfo
) -> InstOffsetIter<'a>
Get an iterator over the instructions in ebb
, including offsets and encoded instruction
sizes.
The iterator returns (offset, inst, size)
tuples, where offset
if the offset in bytes
from the beginning of the function to the instruction, and size
is the size of the
instruction in bytes, or 0 for unencoded instructions.
This function can only be used after the code layout has been computed by the
binemit::relax_branches()
function.
pub fn update_encoding(
&mut self,
inst: Inst,
isa: &TargetIsa
) -> Result<(), Legalize>
[src]
&mut self,
inst: Inst,
isa: &TargetIsa
) -> Result<(), Legalize>
Wrapper around encode
which assigns inst
the resulting encoding.
pub fn encode(&self, inst: Inst, isa: &TargetIsa) -> Result<Encoding, Legalize>
[src]
Wrapper around TargetIsa::encode
for encoding an existing instruction
in the Function
.
Trait Implementations
impl Clone for Function
[src]
fn clone(&self) -> Function
[src]
Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)
1.0.0[src]
Performs copy-assignment from source
. Read more
impl Display for Function
[src]
fn fmt(&self, fmt: &mut Formatter) -> Result
[src]
Formats the value using the given formatter. Read more