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.
465 ir_jump* jumps[2];
467 /* Recursively lower nested jumps. This satisfies the
469 * unconditional jumps at the end of ir->then_instructions and
482 jumps[i] = 0;
484 jumps[i] = (ir_jump*)list.get_tail();
488 * postcondition by lowering jumps in both then_instructions and
492 /* Determine the types of the jumps that terminate
498 if(jumps[i]) {
500 assert(jump_strengths[i] == get_jump_strength(jumps[i]));
505 /* If both code paths end in a jump, and the jumps are the
506 * same, and we are pulling out jumps, replace them with a
524 jumps[0]->remove();
525 jumps[1]->remove();
528 /* Update jumps[] to reflect the fact that the jumps
533 jumps[0] = 0;
534 jumps[1] = 0;
550 should_lower[i] = should_lower_jump(jumps[i]);
572 insert_lowered_return((ir_return*)jumps[lower]);
580 /* Note: we must update block_records and jumps to
585 jumps[lower]->replace_with(lowered);
586 jumps[lower] = lowered;
609 jumps[lower]->replace_with(new(ir) ir_assignment(new (ir) ir_dereference_variable(execute_flag), new (ir) ir_constant(false)));
610 /* Note: we must update block_records and jumps to reflect
614 jumps[lower] = 0;
634 if(jumps[0] && block_records[1].min_strength >= strength_continue)
636 else if(jumps[1] && block_records[0].min_strength >= strength_continue)
641 jumps[move_out]->remove();
642 ir->insert_after(jumps[move_out]);
643 /* Note: we must update block_records and jumps to reflect
646 jumps[move_out] = 0;
783 /* Recursively lower nested jumps. This satisfies the
885 /* Visit the body of the function to lower any jumps that occur