Skip to main content

Module base

Module base 

Source
Expand description

Codegen the MIR to the LLVM IR.

Hopefully useful general knowledge about codegen:

  • There’s no way to find out the Ty type of a Value. Doing so would be β€œtrying to get the eggs out of an omelette” (credit: pcwalton). You can, instead, find out its llvm::Type by calling val_ty, but one llvm::Type corresponds to many Tys; for instance, tup(int, int, int) and rec(x=int, y=int, z=int) will have the same llvm::Type.

Re-exportsΒ§

use std::time::Instant; πŸ”’
use rustc_attr_ir::Linkage; πŸ”’
use rustc_codegen_ssa::ModuleCodegen; πŸ”’
use rustc_codegen_ssa::base::maybe_create_entry_wrapper; πŸ”’
use rustc_codegen_ssa::mono_item::MonoItemExt; πŸ”’
use rustc_data_structures::small_c_str::SmallCStr; πŸ”’
use rustc_middle::dep_graph; πŸ”’
use rustc_middle::middle::codegen_fn_attrs::CodegenFnAttrs; πŸ”’
use rustc_middle::middle::codegen_fn_attrs::SanitizerFnAttrs; πŸ”’
use rustc_middle::mono::Visibility; πŸ”’
use rustc_middle::ty::TyCtxt; πŸ”’
use rustc_session::config::DebugInfo; πŸ”’
use rustc_session::config::Offload; πŸ”’
use rustc_span::Symbol; πŸ”’
use rustc_target::spec::SanitizerSet; πŸ”’
use crate::builder::Builder; πŸ”’
use crate::builder::gpu_offload::OffloadGlobals; πŸ”’
use crate::context::CodegenCx; πŸ”’
use crate::llvm; πŸ”’
use crate::llvm::Value; πŸ”’
use crate::ModuleLlvm; πŸ”’
use crate::attributes; πŸ”’
use rustc_codegen_ssa::traits::*; πŸ”’

StructsΒ§

ValueIter πŸ”’

FunctionsΒ§

compile_codegen_unit πŸ”’
iter_global_aliases πŸ”’
iter_globals πŸ”’
linkage_to_llvm πŸ”’
set_link_section πŸ”’
set_variable_sanitizer_attrs πŸ”’
visibility_to_llvm πŸ”’