Path: blob/main/cranelift/codegen/src/ir/mod.rs
3050 views
//! Representation of Cranelift IR functions.12mod atomic_rmw_op;3mod builder;4pub mod condcodes;5pub mod constant;6mod debug_tags;7pub mod dfg;8pub mod dynamic_type;9pub mod entities;10mod exception_table;11mod extfunc;12mod extname;13pub mod function;14mod globalvalue;15pub mod immediates;16pub mod instructions;17pub mod jumptable;18pub(crate) mod known_symbol;19pub mod layout;20pub(crate) mod libcall;21mod memflags;22mod memtype;23pub mod pcc;24mod progpoint;25mod sourceloc;26pub mod stackslot;27mod trapcode;28pub mod types;29mod user_stack_maps;3031#[cfg(feature = "enable-serde")]32use serde_derive::{Deserialize, Serialize};3334pub use crate::ir::atomic_rmw_op::AtomicRmwOp;35pub use crate::ir::builder::{36InsertBuilder, InstBuilder, InstBuilderBase, InstInserterBase, ReplaceBuilder,37};38pub use crate::ir::constant::{ConstantData, ConstantPool};39pub use crate::ir::debug_tags::{DebugTag, DebugTags};40pub use crate::ir::dfg::{BlockData, DataFlowGraph, ValueDef};41pub use crate::ir::dynamic_type::{DynamicTypeData, DynamicTypes, dynamic_to_fixed};42pub use crate::ir::entities::{43Block, Constant, DynamicStackSlot, DynamicType, ExceptionTable, ExceptionTag, FuncRef,44GlobalValue, Immediate, Inst, JumpTable, MemoryType, SigRef, StackSlot, UserExternalNameRef,45Value,46};47pub use crate::ir::exception_table::{ExceptionTableData, ExceptionTableItem};48pub use crate::ir::extfunc::{49AbiParam, ArgumentExtension, ArgumentPurpose, ExtFuncData, Signature,50};51pub use crate::ir::extname::{ExternalName, UserExternalName, UserFuncName};52pub use crate::ir::function::Function;53pub use crate::ir::globalvalue::GlobalValueData;54pub use crate::ir::instructions::{55BlockArg, BlockCall, InstructionData, Opcode, ValueList, ValueListPool, VariableArgs,56};57pub use crate::ir::jumptable::JumpTableData;58pub use crate::ir::known_symbol::KnownSymbol;59pub use crate::ir::layout::Layout;60pub use crate::ir::libcall::{LibCall, get_probestack_funcref};61pub use crate::ir::memflags::{AliasRegion, Endianness, MemFlags};62pub use crate::ir::memtype::{MemoryTypeData, MemoryTypeField};63pub use crate::ir::pcc::{BaseExpr, Expr, Fact, FactContext, PccError, PccResult};64pub use crate::ir::progpoint::ProgramPoint;65pub use crate::ir::sourceloc::RelSourceLoc;66pub use crate::ir::sourceloc::SourceLoc;67pub use crate::ir::stackslot::{68DynamicStackSlotData, DynamicStackSlots, StackSlotData, StackSlotKey, StackSlotKind, StackSlots,69};70pub use crate::ir::trapcode::TrapCode;71pub use crate::ir::types::Type;72pub(crate) use crate::ir::user_stack_maps::UserStackMapEntryVec;73pub use crate::ir::user_stack_maps::{UserStackMap, UserStackMapEntry};7475use crate::entity::{PrimaryMap, SecondaryMap, entity_impl};7677/// Map of jump tables.78pub type JumpTables = PrimaryMap<JumpTable, JumpTableData>;7980/// Map of exception tables.81pub type ExceptionTables = PrimaryMap<ExceptionTable, ExceptionTableData>;8283/// Source locations for instructions.84pub(crate) type SourceLocs = SecondaryMap<Inst, RelSourceLoc>;8586/// Marked with a label value.87#[derive(Copy, Clone, PartialEq, Eq, Hash)]88#[cfg_attr(feature = "enable-serde", derive(Serialize, Deserialize))]89pub struct ValueLabel(u32);90entity_impl!(ValueLabel, "VL");9192/// A label of a Value.93#[derive(Debug, Clone, PartialEq, Hash)]94#[cfg_attr(feature = "enable-serde", derive(Serialize, Deserialize))]95pub struct ValueLabelStart {96/// Source location when it is in effect97pub from: RelSourceLoc,9899/// The label index.100pub label: ValueLabel,101}102103/// Value label assignments: label starts or value aliases.104#[derive(Debug, Clone, PartialEq, Hash)]105#[cfg_attr(feature = "enable-serde", derive(Serialize, Deserialize))]106pub enum ValueLabelAssignments {107/// Original value labels assigned at transform.108Starts(alloc::vec::Vec<ValueLabelStart>),109110/// A value alias to original value.111Alias {112/// Source location when it is in effect113from: RelSourceLoc,114115/// The label index.116value: Value,117},118}119120121