pub struct SSATransformer<'tcx> {Show 18 fields
    pub tcx: TyCtxt<'tcx>,
    pub body: Body<'tcx>,
    pub cfg: HashMap<BasicBlock, Vec<BasicBlock>>,
    pub dominators: Dominators<BasicBlock>,
    pub dom_tree: HashMap<BasicBlock, Vec<BasicBlock>>,
    pub df: HashMap<BasicBlock, HashSet<BasicBlock>>,
    pub local_assign_blocks: HashMap<Local, HashSet<BasicBlock>>,
    pub reaching_def: HashMap<Local, Option<Local>>,
    pub local_index: usize,
    pub local_defination_block: HashMap<Local, BasicBlock>,
    pub skipped: HashSet<usize>,
    pub phi_index: HashMap<*const Statement<'tcx>, usize>,
    pub phi_statements: HashMap<*const Statement<'tcx>, bool>,
    pub essa_statements: HashMap<*const Statement<'tcx>, bool>,
    pub phi_def_id: DefId,
    pub essa_def_id: DefId,
    pub places_map: HashMap<Place<'tcx>, HashSet<Place<'tcx>>>,
    pub ssa_locals_map: HashMap<Place<'tcx>, HashSet<Place<'tcx>>>,
}Fields§
§tcx: TyCtxt<'tcx>§body: Body<'tcx>§cfg: HashMap<BasicBlock, Vec<BasicBlock>>§dominators: Dominators<BasicBlock>§dom_tree: HashMap<BasicBlock, Vec<BasicBlock>>§df: HashMap<BasicBlock, HashSet<BasicBlock>>§local_assign_blocks: HashMap<Local, HashSet<BasicBlock>>§reaching_def: HashMap<Local, Option<Local>>§local_index: usize§local_defination_block: HashMap<Local, BasicBlock>§skipped: HashSet<usize>§phi_index: HashMap<*const Statement<'tcx>, usize>§phi_statements: HashMap<*const Statement<'tcx>, bool>§essa_statements: HashMap<*const Statement<'tcx>, bool>§phi_def_id: DefId§essa_def_id: DefId§places_map: HashMap<Place<'tcx>, HashSet<Place<'tcx>>>§ssa_locals_map: HashMap<Place<'tcx>, HashSet<Place<'tcx>>>Implementations§
Source§impl<'tcx> SSATransformer<'tcx>
 
impl<'tcx> SSATransformer<'tcx>
fn find_phi_placeholder(tcx: TyCtxt<'_>, crate_name: &str) -> Option<DefId>
pub fn new( tcx: TyCtxt<'tcx>, body: &Body<'tcx>, ssa_def_id: DefId, essa_def_id: DefId, arg_count: usize, ) -> Self
pub fn return_body_ref(&self) -> &Body<'tcx>
fn map_locals_to_definition_block(body: &Body<'_>) -> HashMap<Local, BasicBlock>
pub fn depth_first_search_preorder( dom_tree: &HashMap<BasicBlock, Vec<BasicBlock>>, root: BasicBlock, ) -> Vec<BasicBlock>
pub fn depth_first_search_postorder( dom_tree: &HashMap<BasicBlock, Vec<BasicBlock>>, root: &BasicBlock, ) -> Vec<BasicBlock>
fn map_locals_to_assign_blocks( body: &Body<'_>, ) -> HashMap<Local, HashSet<BasicBlock>>
fn construct_dominance_tree( body: &Body<'_>, ) -> HashMap<BasicBlock, Vec<BasicBlock>>
fn compute_dominance_frontier( body: &Body<'_>, dom_tree: &HashMap<BasicBlock, Vec<BasicBlock>>, ) -> HashMap<BasicBlock, HashSet<BasicBlock>>
fn extract_cfg_from_predecessors( body: &Body<'_>, ) -> HashMap<BasicBlock, Vec<BasicBlock>>
fn print_dominance_tree( dom_tree: &HashMap<BasicBlock, Vec<BasicBlock>>, current: BasicBlock, depth: usize, )
pub fn is_phi_statement(&self, statement: &Statement<'tcx>) -> bool
pub fn is_essa_statement(&self, statement: &Statement<'tcx>) -> bool
Auto Trait Implementations§
impl<'tcx> !Freeze for SSATransformer<'tcx>
impl<'tcx> !RefUnwindSafe for SSATransformer<'tcx>
impl<'tcx> !Send for SSATransformer<'tcx>
impl<'tcx> !Sync for SSATransformer<'tcx>
impl<'tcx> Unpin for SSATransformer<'tcx>
impl<'tcx> !UnwindSafe for SSATransformer<'tcx>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
    T: ?Sized,
 
impl<T> BorrowMut<T> for Twhere
    T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
 
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more