Skip to main content

Module context

Module context 

Source

Re-exportsΒ§

use std::borrow::Borrow; πŸ”’
use std::borrow::Cow; πŸ”’
use std::cell::Cell; πŸ”’
use std::cell::RefCell; πŸ”’
use std::ffi::CStr; πŸ”’
use std::ffi::c_uint; πŸ”’
use std::marker::PhantomData; πŸ”’
use std::ops::Deref; πŸ”’
use std::ops::DerefMut; πŸ”’
use std::str; πŸ”’
use rustc_abi::HasDataLayout; πŸ”’
use rustc_abi::Size; πŸ”’
use rustc_abi::TargetDataLayout; πŸ”’
use rustc_abi::VariantIdx; πŸ”’
use rustc_codegen_ssa::base::wants_msvc_seh; πŸ”’
use rustc_codegen_ssa::base::wants_wasm_eh; πŸ”’
use rustc_codegen_ssa::diagnostics as ssa_errors; πŸ”’
use rustc_data_structures::base_n::ALPHANUMERIC_ONLY; πŸ”’
use rustc_data_structures::base_n::ToBaseN; πŸ”’
use rustc_data_structures::fx::FxHashMap; πŸ”’
use rustc_data_structures::small_c_str::SmallCStr; πŸ”’
use rustc_hir::def_id::DefId; πŸ”’
use rustc_middle::mono::CodegenUnit; πŸ”’
use rustc_middle::ty::layout::FnAbiError; πŸ”’
use rustc_middle::ty::layout::FnAbiOfHelpers; πŸ”’
use rustc_middle::ty::layout::FnAbiRequest; πŸ”’
use rustc_middle::ty::layout::HasTypingEnv; πŸ”’
use rustc_middle::ty::layout::LayoutError; πŸ”’
use rustc_middle::ty::layout::LayoutOfHelpers; πŸ”’
use rustc_middle::ty::layout::codegen_handle_fn_abi_err; πŸ”’
use rustc_middle::ty; πŸ”’
use rustc_middle::ty::Instance; πŸ”’
use rustc_middle::ty::Ty; πŸ”’
use rustc_middle::ty::TyCtxt; πŸ”’
use rustc_sanitizers::ignorelist::SanitizerIgnoreList; πŸ”’
use rustc_sanitizers::ignorelist::typename_for_ignore_list; πŸ”’
use rustc_session::config::BranchProtection; πŸ”’
use rustc_session::config::CFGuard; πŸ”’
use rustc_session::config::CFProtection; πŸ”’
use rustc_session::config::DebugInfo; πŸ”’
use rustc_session::config::FunctionReturn; πŸ”’
use rustc_session::config::PAuthKey; πŸ”’
use rustc_session::config::PacRet; πŸ”’
use rustc_session::PointerAuthSchema; πŸ”’
use rustc_session::Session; πŸ”’
use rustc_span::DUMMY_SP; πŸ”’
use rustc_span::Span; πŸ”’
use rustc_span::Symbol; πŸ”’
use rustc_span::bug; πŸ”’
use rustc_span::sym; πŸ”’
use rustc_structures::CrateType; πŸ”’
use rustc_target::spec::Arch; πŸ”’
use rustc_target::spec::CfgAbi; πŸ”’
use rustc_target::spec::Env; πŸ”’
use rustc_target::spec::FramePointer; πŸ”’
use rustc_target::spec::HasTargetSpec; πŸ”’
use rustc_target::spec::Os; πŸ”’
use rustc_target::spec::RelocModel; πŸ”’
use rustc_target::spec::SmallDataThresholdSupport; πŸ”’
use rustc_target::spec::Target; πŸ”’
use rustc_target::spec::TlsModel; πŸ”’
use smallvec::SmallVec; πŸ”’
use crate::abi::to_llvm_calling_convention; πŸ”’
use crate::back::llvm_backend::ModuleRefs; πŸ”’
use crate::back::write::to_llvm_code_model; πŸ”’
use crate::builder::gpu_offload::OffloadGlobals; πŸ”’
use crate::builder::gpu_offload::OffloadKernelGlobals; πŸ”’
use crate::callee::get_fn; πŸ”’
use crate::debuginfo::metadata::apply_vcall_visibility_metadata; πŸ”’
use crate::llvm; πŸ”’
use crate::llvm::Metadata; πŸ”’
use crate::llvm::MetadataKindId; πŸ”’
use crate::llvm::Module; πŸ”’
use crate::llvm::Type; πŸ”’
use crate::llvm::Value; πŸ”’
use crate::attributes; πŸ”’
use crate::common; πŸ”’
use crate::coverageinfo; πŸ”’
use crate::debuginfo; πŸ”’
use crate::llvm_util; πŸ”’
use rustc_codegen_ssa::traits::*; πŸ”’

StructsΒ§

FullCx πŸ”’
GenericCx πŸ”’
SCx πŸ”’
TyCtxt (and related cache datastructures) can’t be move between threads. However, there are various cx related functions which we want to be available to the builder and other compiler pieces. Here we define a small subset which has enough information and can be moved around more freely.

FunctionsΒ§

create_module πŸ”’ ⚠
init_module πŸ”’
to_llvm_tls_model πŸ”’

Type AliasesΒ§

CodegenCx πŸ”’
There is one CodegenCx per codegen unit. Each one has its own LLVM llvm::Context so that several codegen units may be processed in parallel. All other LLVM data structures in the CodegenCx are tied to that llvm::Context.
SimpleCx πŸ”’