Lines Matching defs:jumps
27 * This pass lowers jumps (break, continue, and return) to if/else structures.
30 * 1. Pull jumps out of ifs where possible
81 * Note that identical jumps are usually unified though.
305 ir_jump* jumps[2];
313 jumps[i] = 0;
315 jumps[i] = (ir_jump*)list.get_tail();
322 if(jumps[i]) {
324 assert(jump_strengths[i] == get_jump_strength(jumps[i]));
329 /* move both jumps out if possible */
343 jumps[0]->remove();
344 jumps[1]->remove();
347 jumps[0] = 0;
348 jumps[1] = 0;
360 should_lower[i] = should_lower_jump(jumps[i]);
376 jumps[lower]->insert_before(new(ir) ir_assignment(new (ir) ir_dereference_variable(return_value), ((ir_return*)jumps[lower])->value, NULL));
378 jumps[lower]->insert_before(new(ir) ir_assignment(new (ir) ir_dereference_variable(return_flag), new (ir) ir_constant(true), NULL));
384 jumps[lower]->replace_with(lowered);
385 jumps[lower] = lowered;
398 jumps[lower]->insert_before(new(ir) ir_assignment(new (ir) ir_dereference_variable(this->loop.get_break_flag()), new (ir) ir_constant(true), 0));
403 jumps[lower]->replace_with(new(ir) ir_assignment(new (ir) ir_dereference_variable(execute_flag), new (ir) ir_constant(false), 0));
404 jumps[lower] = 0;
415 if(jumps[0] && block_records[1].min_strength >= strength_continue)
417 else if(jumps[1] && block_records[0].min_strength >= strength_continue)
422 jumps[move_out]->remove();
423 ir->insert_after(jumps[move_out]);
424 jumps[move_out] = 0;