Struct rustc_mir::transform::simplify::CfgSimplifier [−][src]
pub struct CfgSimplifier<'a, 'tcx> {
basic_blocks: &'a mut IndexVec<BasicBlock, BasicBlockData<'tcx>>,
pred_count: IndexVec<BasicBlock, u32>,
}Fields
basic_blocks: &'a mut IndexVec<BasicBlock, BasicBlockData<'tcx>>pred_count: IndexVec<BasicBlock, u32>Implementations
impl<'a, 'tcx> CfgSimplifier<'a, 'tcx>[src]
impl<'a, 'tcx> CfgSimplifier<'a, 'tcx>[src]pub fn new(body: &'a mut Body<'tcx>) -> Self[src]
pub fn simplify(self)[src]
fn take_terminator_if_simple_goto(
&mut self,
bb: BasicBlock
) -> Option<Terminator<'tcx>>[src]
fn take_terminator_if_simple_goto(
&mut self,
bb: BasicBlock
) -> Option<Terminator<'tcx>>[src]This function will return None if
- the block has statements
- the block has a terminator other than
goto - the block has no terminator (meaning some other part of the current optimization stole it)
fn collapse_goto_chain(&mut self, start: &mut BasicBlock, changed: &mut bool)[src]
fn collapse_goto_chain(&mut self, start: &mut BasicBlock, changed: &mut bool)[src]Collapse a goto chain starting from start
fn merge_successor(
&mut self,
merged_blocks: &mut Vec<BasicBlock>,
terminator: &mut Terminator<'tcx>
) -> bool[src]
&mut self,
merged_blocks: &mut Vec<BasicBlock>,
terminator: &mut Terminator<'tcx>
) -> bool
fn simplify_branch(&mut self, terminator: &mut Terminator<'tcx>) -> bool[src]
fn strip_nops(&mut self)[src]
Auto Trait Implementations
impl<'a, 'tcx> !RefUnwindSafe for CfgSimplifier<'a, 'tcx>
impl<'a, 'tcx> !Send for CfgSimplifier<'a, 'tcx>
impl<'a, 'tcx> !Sync for CfgSimplifier<'a, 'tcx>
impl<'a, 'tcx> Unpin for CfgSimplifier<'a, 'tcx> where
'tcx: 'a,
'tcx: 'a,
impl<'a, 'tcx> !UnwindSafe for CfgSimplifier<'a, 'tcx>
Blanket Implementations
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]pub fn borrow_mut(&mut self) -> &mut T[src]
pub fn borrow_mut(&mut self) -> &mut T[src]Mutably borrows from an owned value. Read more
impl<T> WithConstness for T[src]
impl<T> WithConstness for T[src]