Skip to main content

Module analyze

Module analyze 

Source
Expand description

An analysis to determine which locals require allocas and which do not.

Re-exportsยง

use rustc_abi as abi; ๐Ÿ”’
use rustc_abi as abi; ๐Ÿ”’
use rustc_data_structures::graph::dominators::Dominators; ๐Ÿ”’
use rustc_index::bit_set::DenseBitSet; ๐Ÿ”’
use rustc_index::IndexSlice; ๐Ÿ”’
use rustc_index::IndexVec; ๐Ÿ”’
use rustc_middle::mir::visit::MutatingUseContext; ๐Ÿ”’
use rustc_middle::mir::visit::NonMutatingUseContext; ๐Ÿ”’
use rustc_middle::mir::visit::PlaceContext; ๐Ÿ”’
use rustc_middle::mir::visit::Visitor; ๐Ÿ”’
use rustc_middle::mir; ๐Ÿ”’
use rustc_middle::mir::DefLocation; ๐Ÿ”’
use rustc_middle::mir::Location; ๐Ÿ”’
use rustc_middle::mir::TerminatorKind; ๐Ÿ”’
use rustc_middle::mir::traversal; ๐Ÿ”’
use rustc_middle::ty; ๐Ÿ”’
use rustc_middle::ty::layout::HasTyCtxt; ๐Ÿ”’
use rustc_middle::ty::layout::LayoutOf; ๐Ÿ”’
use rustc_span::bug; ๐Ÿ”’
use rustc_span::span_bug; ๐Ÿ”’
use tracing::debug; ๐Ÿ”’
use super::FunctionCx; ๐Ÿ”’
use crate::traits::*; ๐Ÿ”’

Structsยง

LocalAnalyzer ๐Ÿ”’

Enumsยง

CleanupKind ๐Ÿ”’
LocalKind ๐Ÿ”’

Functionsยง

cleanup_kinds ๐Ÿ”’
MSVC requires unwinding code to be split to a tree of funclets, where each funclet can only branch to itself or to its parent. Luckily, the code we generates matches this pattern. Recover that structure in an analyze pass.
non_ssa_locals ๐Ÿ”’