2 #include "jump_target.h"
4 void jump_from_block_to_target(jump_target *const tgt, ir_node *const block)
10 } else if (tgt->first) {
11 ir_node *const jmp = new_r_Jmp(tgt->block);
12 tgt->block = new_immBlock();
14 add_immBlock_pred(tgt->block, jmp);
16 ir_node *const jmp = new_r_Jmp(block);
17 add_immBlock_pred(tgt->block, jmp);
20 void jump_to_target(jump_target *const tgt)
22 ir_node *const block = get_cur_block();
24 jump_from_block_to_target(tgt, block);
27 void add_pred_to_jump_target(jump_target *const tgt, ir_node *const pred)
30 tgt->block = new_immBlock();
31 } else if (tgt->first) {
32 ir_node *const jmp = new_r_Jmp(tgt->block);
33 tgt->block = new_immBlock();
35 add_immBlock_pred(tgt->block, jmp);
37 add_immBlock_pred(tgt->block, pred);
40 ir_node *enter_jump_target(jump_target *const tgt)
42 ir_node *const block = tgt->block;
43 if (block && !tgt->first)
44 mature_immBlock(block);
49 void enter_immature_jump_target(jump_target *const tgt)
52 ir_node *block = tgt->block;
54 /* Avoid unreachable loops by adding a Bad entry. */
55 jmp = new_Bad(mode_X);
57 } else if (tgt->first) {
59 jmp = new_r_Jmp(block);
61 tgt->block = block = new_immBlock();
62 add_immBlock_pred(block, jmp);