pub struct Module {
pub name: String,
pub source_filename: Option<String>,
pub target_triple: Option<String>,
pub data_layout: Option<String>,
pub globals: Vec<GlobalVariable>,
pub functions: Vec<Function>,
pub function_names: HashMap<String, FunctionId>,
pub global_names: HashMap<String, GlobalId>,
pub named_types: Vec<(String, TypeId)>,
pub debug_locations: HashMap<u32, DebugLocation>,
pub metadata_nodes: HashMap<u32, String>,
pub named_metadata: Vec<(String, String)>,
}Expand description
Top-level IR module.
Fields§
§name: StringPublic API for name.
source_filename: Option<String>Public API for source_filename.
target_triple: Option<String>Public API for target_triple.
data_layout: Option<String>Public API for data_layout.
globals: Vec<GlobalVariable>Public API for globals.
functions: Vec<Function>Public API for functions.
function_names: HashMap<String, FunctionId>Public API for function_names.
global_names: HashMap<String, GlobalId>Public API for global_names.
named_types: Vec<(String, TypeId)>Named type definitions in declaration order (for printing).
debug_locations: HashMap<u32, DebugLocation>!N = !DILocation(...) records keyed by metadata id N.
metadata_nodes: HashMap<u32, String>Raw metadata node definitions keyed by numeric id, e.g. !12 = !DIFile(...).
named_metadata: Vec<(String, String)>Named metadata definitions in insertion order, e.g. !llvm.dbg.cu = !{!0}.
Implementations§
Source§impl Module
impl Module
Sourcepub fn add_function(&mut self, f: Function) -> FunctionId
pub fn add_function(&mut self, f: Function) -> FunctionId
Public API for add_function.
Sourcepub fn function(&self, id: FunctionId) -> &Function
pub fn function(&self, id: FunctionId) -> &Function
Public API for function.
Sourcepub fn function_mut(&mut self, id: FunctionId) -> &mut Function
pub fn function_mut(&mut self, id: FunctionId) -> &mut Function
Public API for function_mut.
Sourcepub fn get_function(&self, name: &str) -> Option<(FunctionId, &Function)>
pub fn get_function(&self, name: &str) -> Option<(FunctionId, &Function)>
Public API for get_function.
Sourcepub fn get_function_id(&self, name: &str) -> Option<FunctionId>
pub fn get_function_id(&self, name: &str) -> Option<FunctionId>
Public API for get_function_id.
Sourcepub fn num_functions(&self) -> usize
pub fn num_functions(&self) -> usize
Public API for num_functions.
Sourcepub fn add_global(&mut self, gv: GlobalVariable) -> GlobalId
pub fn add_global(&mut self, gv: GlobalVariable) -> GlobalId
Public API for add_global.
Sourcepub fn global(&self, id: GlobalId) -> &GlobalVariable
pub fn global(&self, id: GlobalId) -> &GlobalVariable
Public API for global.
Sourcepub fn global_mut(&mut self, id: GlobalId) -> &mut GlobalVariable
pub fn global_mut(&mut self, id: GlobalId) -> &mut GlobalVariable
Public API for global_mut.
Sourcepub fn get_global(&self, name: &str) -> Option<(GlobalId, &GlobalVariable)>
pub fn get_global(&self, name: &str) -> Option<(GlobalId, &GlobalVariable)>
Public API for get_global.
Sourcepub fn get_global_id(&self, name: &str) -> Option<GlobalId>
pub fn get_global_id(&self, name: &str) -> Option<GlobalId>
Public API for get_global_id.
Sourcepub fn num_globals(&self) -> usize
pub fn num_globals(&self) -> usize
Public API for num_globals.
Sourcepub fn register_named_type(&mut self, name: impl Into<String>, ty: TypeId)
pub fn register_named_type(&mut self, name: impl Into<String>, ty: TypeId)
Register a named struct type for emission in the module header. Duplicate names are silently ignored.
Sourcepub fn set_debug_location(&mut self, id: u32, loc: DebugLocation)
pub fn set_debug_location(&mut self, id: u32, loc: DebugLocation)
Public API for set_debug_location.
Sourcepub fn debug_location(&self, id: u32) -> Option<DebugLocation>
pub fn debug_location(&self, id: u32) -> Option<DebugLocation>
Public API for debug_location.
Sourcepub fn set_metadata_node(&mut self, id: u32, value: impl Into<String>)
pub fn set_metadata_node(&mut self, id: u32, value: impl Into<String>)
Public API for set_metadata_node.
Sourcepub fn metadata_node(&self, id: u32) -> Option<&str>
pub fn metadata_node(&self, id: u32) -> Option<&str>
Public API for metadata_node.