1mod atomic_rmw_op;
4mod builder;
5pub mod condcodes;
6pub mod constant;
7mod debug_tags;
8pub mod dfg;
9pub mod dynamic_type;
10pub mod entities;
11mod exception_table;
12mod extfunc;
13mod extname;
14pub mod function;
15mod globalvalue;
16pub mod immediates;
17pub mod instructions;
18pub mod jumptable;
19pub(crate) mod known_symbol;
20pub mod layout;
21pub(crate) mod libcall;
22mod memflags;
23mod progpoint;
24mod sourceloc;
25pub mod stackslot;
26mod trapcode;
27pub mod types;
28mod user_stack_maps;
29
30#[cfg(feature = "enable-serde")]
31use serde_derive::{Deserialize, Serialize};
32
33pub use crate::ir::atomic_rmw_op::AtomicRmwOp;
34pub use crate::ir::builder::{
35 InsertBuilder, InstBuilder, InstBuilderBase, InstInserterBase, ReplaceBuilder,
36};
37pub use crate::ir::constant::{ConstantData, ConstantPool};
38pub use crate::ir::debug_tags::{DebugTag, DebugTags};
39pub use crate::ir::dfg::{BlockData, DataFlowGraph, ValueDef};
40pub use crate::ir::dynamic_type::{DynamicTypeData, DynamicTypes, dynamic_to_fixed};
41pub use crate::ir::entities::{
42 Block, Constant, DynamicStackSlot, DynamicType, ExceptionTable, ExceptionTag, FuncRef,
43 GlobalValue, Immediate, Inst, JumpTable, SigRef, StackSlot, UserExternalNameRef, Value,
44};
45pub use crate::ir::exception_table::{ExceptionTableData, ExceptionTableItem};
46pub use crate::ir::extfunc::{
47 AbiParam, ArgumentExtension, ArgumentPurpose, ExtFuncData, Signature,
48};
49pub use crate::ir::extname::{ExternalName, UserExternalName, UserFuncName};
50pub use crate::ir::function::Function;
51pub use crate::ir::globalvalue::GlobalValueData;
52pub use crate::ir::instructions::{
53 BlockArg, BlockCall, InstructionData, Opcode, ValueList, ValueListPool, VariableArgs,
54};
55pub use crate::ir::jumptable::JumpTableData;
56pub use crate::ir::known_symbol::KnownSymbol;
57pub use crate::ir::layout::Layout;
58pub use crate::ir::libcall::{LibCall, get_probestack_funcref};
59pub use crate::ir::memflags::{
60 AliasRegion, AliasRegionData, AliasRegionSet, Endianness, MachMemFlags, MemFlags, MemFlagsData,
61 MemFlagsSet,
62};
63pub use crate::ir::progpoint::ProgramPoint;
64pub use crate::ir::sourceloc::RelSourceLoc;
65pub use crate::ir::sourceloc::SourceLoc;
66pub use crate::ir::stackslot::{
67 DynamicStackSlotData, DynamicStackSlots, StackSlotData, StackSlotKey, StackSlotKind, StackSlots,
68};
69pub use crate::ir::trapcode::TrapCode;
70pub use crate::ir::types::Type;
71pub(crate) use crate::ir::user_stack_maps::UserStackMapEntryVec;
72pub use crate::ir::user_stack_maps::{UserStackMap, UserStackMapEntry};
73
74use crate::entity::{PrimaryMap, SecondaryMap, entity_impl};
75
76pub type JumpTables = PrimaryMap<JumpTable, JumpTableData>;
78
79pub type ExceptionTables = PrimaryMap<ExceptionTable, ExceptionTableData>;
81
82pub(crate) type SourceLocs = SecondaryMap<Inst, RelSourceLoc>;
84
85#[derive(Copy, Clone, PartialEq, Eq, Hash)]
87#[cfg_attr(feature = "enable-serde", derive(Serialize, Deserialize))]
88pub struct ValueLabel(u32);
89entity_impl!(ValueLabel, "VL");
90
91#[derive(Debug, Clone, PartialEq, Hash)]
93#[cfg_attr(feature = "enable-serde", derive(Serialize, Deserialize))]
94pub struct ValueLabelStart {
95 pub from: RelSourceLoc,
97
98 pub label: ValueLabel,
100}
101
102#[derive(Debug, Clone, PartialEq, Hash)]
104#[cfg_attr(feature = "enable-serde", derive(Serialize, Deserialize))]
105pub enum ValueLabelAssignments {
106 Starts(alloc::vec::Vec<ValueLabelStart>),
108
109 Alias {
111 from: RelSourceLoc,
113
114 value: Value,
116 },
117}