ast2firm: Factorise code to convert a value to its storage type.
[cparser] / jump_target.c
index 6781d67..04d90c5 100644 (file)
@@ -45,3 +45,21 @@ ir_node *enter_jump_target(jump_target *const tgt)
        set_cur_block(block);
        return block;
 }
+
+void enter_immature_jump_target(jump_target *const tgt)
+{
+       ir_node *jmp;
+       ir_node *block = tgt->block;
+       if (!block) {
+               /* Avoid unreachable loops by adding a Bad entry. */
+               jmp = new_Bad(mode_X);
+               goto new_block;
+       } else if (tgt->first) {
+               tgt->first = false;
+               jmp = new_r_Jmp(block);
+new_block:
+               tgt->block = block = new_immBlock();
+               add_immBlock_pred(block, jmp);
+       }
+       set_cur_block(block);
+}