Lines Matching refs:func

287     pub fn with_function(func: &Function, cfg: &ControlFlowGraph) -> Self {  in with_function()
288 let block_capacity = func.layout.block_capacity(); in with_function()
297 domtree.compute(func, cfg); in with_function()
309 pub fn compute(&mut self, func: &Function, cfg: &ControlFlowGraph) { in compute()
314 self.compute_spanning_tree(func); in compute()
341 fn compute_spanning_tree(&mut self, func: &Function) { in compute_spanning_tree()
342 self.nodes.resize(func.dfg.num_blocks()); in compute_spanning_tree()
343 self.stree.reserve(func.dfg.num_blocks()); in compute_spanning_tree()
345 if let Some(block) = func.layout.entry_block() { in compute_spanning_tree()
364 func.block_successors(block) in compute_spanning_tree()
543 let func = Function::new(); in empty() localVariable
544 let cfg = ControlFlowGraph::with_function(&func); in empty()
546 let dtree = DominatorTree::with_function(&func, &cfg); in empty()
553 let mut func = Function::new(); in unreachable_node() localVariable
554 let block0 = func.dfg.make_block(); in unreachable_node()
555 let v0 = func.dfg.append_block_param(block0, I32); in unreachable_node()
556 let block1 = func.dfg.make_block(); in unreachable_node()
557 let block2 = func.dfg.make_block(); in unreachable_node()
558 let trap_block = func.dfg.make_block(); in unreachable_node()
560 let mut cur = FuncCursor::new(&mut func); in unreachable_node()
576 let cfg = ControlFlowGraph::with_function(cur.func); in unreachable_node()
577 let dt = DominatorTree::with_function(cur.func, &cfg); in unreachable_node()
590 let v2_def = cur.func.dfg.value_def(v2).unwrap_inst(); in unreachable_node()
591 assert!(!dt.dominates(v2_def, block0, &cur.func.layout)); in unreachable_node()
592 assert!(!dt.dominates(block0, v2_def, &cur.func.layout)); in unreachable_node()
607 let mut func = Function::new(); in non_zero_entry_block() localVariable
608 let block0 = func.dfg.make_block(); in non_zero_entry_block()
609 let block1 = func.dfg.make_block(); in non_zero_entry_block()
610 let block2 = func.dfg.make_block(); in non_zero_entry_block()
611 let block3 = func.dfg.make_block(); in non_zero_entry_block()
612 let cond = func.dfg.append_block_param(block3, I32); in non_zero_entry_block()
614 let mut cur = FuncCursor::new(&mut func); in non_zero_entry_block()
627 let cfg = ControlFlowGraph::with_function(cur.func); in non_zero_entry_block()
628 let dt = DominatorTree::with_function(cur.func, &cfg); in non_zero_entry_block()
650 assert_eq!(cur.func.layout.entry_block().unwrap(), block3); in non_zero_entry_block()
659 &cur.func.layout in non_zero_entry_block()
661 assert!(!dt.dominates(br_block1_block0_block2, jmp_block3_block1, &cur.func.layout)); in non_zero_entry_block()
662 assert!(dt.dominates(jmp_block3_block1, br_block1_block0_block2, &cur.func.layout)); in non_zero_entry_block()
667 let mut func = Function::new(); in backwards_layout() localVariable
668 let block0 = func.dfg.make_block(); in backwards_layout()
669 let block1 = func.dfg.make_block(); in backwards_layout()
670 let block2 = func.dfg.make_block(); in backwards_layout()
672 let mut cur = FuncCursor::new(&mut func); in backwards_layout()
683 let cfg = ControlFlowGraph::with_function(cur.func); in backwards_layout()
684 let dt = DominatorTree::with_function(cur.func, &cfg); in backwards_layout()
686 assert_eq!(cur.func.layout.entry_block(), Some(block0)); in backwards_layout()
691 assert!(dt.dominates(block0, block0, &cur.func.layout)); in backwards_layout()
692 assert!(dt.dominates(block0, jmp02, &cur.func.layout)); in backwards_layout()
693 assert!(dt.dominates(block0, block1, &cur.func.layout)); in backwards_layout()
694 assert!(dt.dominates(block0, trap, &cur.func.layout)); in backwards_layout()
695 assert!(dt.dominates(block0, block2, &cur.func.layout)); in backwards_layout()
696 assert!(dt.dominates(block0, jmp21, &cur.func.layout)); in backwards_layout()
698 assert!(!dt.dominates(jmp02, block0, &cur.func.layout)); in backwards_layout()
699 assert!(dt.dominates(jmp02, jmp02, &cur.func.layout)); in backwards_layout()
700 assert!(dt.dominates(jmp02, block1, &cur.func.layout)); in backwards_layout()
701 assert!(dt.dominates(jmp02, trap, &cur.func.layout)); in backwards_layout()
702 assert!(dt.dominates(jmp02, block2, &cur.func.layout)); in backwards_layout()
703 assert!(dt.dominates(jmp02, jmp21, &cur.func.layout)); in backwards_layout()
705 assert!(!dt.dominates(block1, block0, &cur.func.layout)); in backwards_layout()
706 assert!(!dt.dominates(block1, jmp02, &cur.func.layout)); in backwards_layout()
707 assert!(dt.dominates(block1, block1, &cur.func.layout)); in backwards_layout()
708 assert!(dt.dominates(block1, trap, &cur.func.layout)); in backwards_layout()
709 assert!(!dt.dominates(block1, block2, &cur.func.layout)); in backwards_layout()
710 assert!(!dt.dominates(block1, jmp21, &cur.func.layout)); in backwards_layout()
712 assert!(!dt.dominates(trap, block0, &cur.func.layout)); in backwards_layout()
713 assert!(!dt.dominates(trap, jmp02, &cur.func.layout)); in backwards_layout()
714 assert!(!dt.dominates(trap, block1, &cur.func.layout)); in backwards_layout()
715 assert!(dt.dominates(trap, trap, &cur.func.layout)); in backwards_layout()
716 assert!(!dt.dominates(trap, block2, &cur.func.layout)); in backwards_layout()
717 assert!(!dt.dominates(trap, jmp21, &cur.func.layout)); in backwards_layout()
719 assert!(!dt.dominates(block2, block0, &cur.func.layout)); in backwards_layout()
720 assert!(!dt.dominates(block2, jmp02, &cur.func.layout)); in backwards_layout()
721 assert!(dt.dominates(block2, block1, &cur.func.layout)); in backwards_layout()
722 assert!(dt.dominates(block2, trap, &cur.func.layout)); in backwards_layout()
723 assert!(dt.dominates(block2, block2, &cur.func.layout)); in backwards_layout()
724 assert!(dt.dominates(block2, jmp21, &cur.func.layout)); in backwards_layout()
726 assert!(!dt.dominates(jmp21, block0, &cur.func.layout)); in backwards_layout()
727 assert!(!dt.dominates(jmp21, jmp02, &cur.func.layout)); in backwards_layout()
728 assert!(dt.dominates(jmp21, block1, &cur.func.layout)); in backwards_layout()
729 assert!(dt.dominates(jmp21, trap, &cur.func.layout)); in backwards_layout()
730 assert!(!dt.dominates(jmp21, block2, &cur.func.layout)); in backwards_layout()
731 assert!(dt.dominates(jmp21, jmp21, &cur.func.layout)); in backwards_layout()
736 let mut func = Function::new(); in insts_same_block() localVariable
737 let block0 = func.dfg.make_block(); in insts_same_block()
739 let mut cur = FuncCursor::new(&mut func); in insts_same_block()
747 let cfg = ControlFlowGraph::with_function(cur.func); in insts_same_block()
748 let dt = DominatorTree::with_function(cur.func, &cfg); in insts_same_block()
750 let v1_def = cur.func.dfg.value_def(v1).unwrap_inst(); in insts_same_block()
751 let v2_def = cur.func.dfg.value_def(v2).unwrap_inst(); in insts_same_block()
752 let v3_def = cur.func.dfg.value_def(v3).unwrap_inst(); in insts_same_block()
754 assert!(dt.dominates(v1_def, v2_def, &cur.func.layout)); in insts_same_block()
755 assert!(dt.dominates(v2_def, v3_def, &cur.func.layout)); in insts_same_block()
756 assert!(dt.dominates(v1_def, v3_def, &cur.func.layout)); in insts_same_block()
758 assert!(!dt.dominates(v2_def, v1_def, &cur.func.layout)); in insts_same_block()
759 assert!(!dt.dominates(v3_def, v2_def, &cur.func.layout)); in insts_same_block()
760 assert!(!dt.dominates(v3_def, v1_def, &cur.func.layout)); in insts_same_block()
762 assert!(dt.dominates(v2_def, v2_def, &cur.func.layout)); in insts_same_block()
763 assert!(dt.dominates(block0, block0, &cur.func.layout)); in insts_same_block()
765 assert!(dt.dominates(block0, v1_def, &cur.func.layout)); in insts_same_block()
766 assert!(dt.dominates(block0, v2_def, &cur.func.layout)); in insts_same_block()
767 assert!(dt.dominates(block0, v3_def, &cur.func.layout)); in insts_same_block()
769 assert!(!dt.dominates(v1_def, block0, &cur.func.layout)); in insts_same_block()
770 assert!(!dt.dominates(v2_def, block0, &cur.func.layout)); in insts_same_block()
771 assert!(!dt.dominates(v3_def, block0, &cur.func.layout)); in insts_same_block()