Lines Matching refs:jumps
27 * This pass lowers jumps (break, continue, and return) to if/else structures.
30 * 1. Pull jumps out of ifs where possible
70 * The ordering of strengths roughly reflects the way jumps are
71 * lowered: jumps with higher strength tend to be lowered to jumps of
147 * Note that identical jumps are usually unified though.
529 ir_jump* jumps[2];
531 /* Recursively lower nested jumps. This satisfies the
533 * unconditional jumps at the end of ir->then_instructions and
546 jumps[i] = 0;
548 jumps[i] = (ir_jump*)list.get_tail();
552 * postcondition by lowering jumps in both then_instructions and
556 /* Determine the types of the jumps that terminate
562 if(jumps[i]) {
564 assert(jump_strengths[i] == get_jump_strength(jumps[i]));
569 /* If both code paths end in a jump, and the jumps are the
570 * same, and we are pulling out jumps, replace them with a
588 jumps[0]->remove();
589 jumps[1]->remove();
592 /* Update jumps[] to reflect the fact that the jumps
597 jumps[0] = 0;
598 jumps[1] = 0;
614 should_lower[i] = should_lower_jump(jumps[i]);
636 insert_lowered_return((ir_return*)jumps[lower]);
644 /* Note: we must update block_records and jumps to
649 jumps[lower]->replace_with(lowered);
650 jumps[lower] = lowered;
672 jumps[lower]->insert_before(create_lowered_break());
685 jumps[lower]->replace_with(new(ir) ir_assignment(new (ir) ir_dereference_variable(execute_flag), new (ir) ir_constant(false)));
686 /* Note: we must update block_records and jumps to reflect
690 jumps[lower] = 0;
710 if(jumps[0] && block_records[1].min_strength >= strength_continue)
712 else if(jumps[1] && block_records[0].min_strength >= strength_continue)
717 jumps[move_out]->remove();
718 ir->insert_after(jumps[move_out]);
719 /* Note: we must update block_records and jumps to reflect
722 jumps[move_out] = 0;
859 /* Recursively lower nested jumps. This satisfies the
983 /* Visit the body of the function to lower any jumps that occur