#endif
/*
- * language dependant initialization variable
+ * language dependent initialization variable
*/
static uninitialized_local_variable_func_t *default_initialize_local_variable = NULL;
-/* -------------------------------------------- */
-/* privat interfaces, for professional use only */
-/* -------------------------------------------- */
+/* --------------------------------------------- */
+/* private interfaces, for professional use only */
+/* --------------------------------------------- */
/* Constructs a Block with a fixed number of predecessors.
Does not set current_block. Can not be used with automatic
res->attr.block.backedge = new_backedge_arr(irg->obst, arity);
res->attr.block.in_cg = NULL;
res->attr.block.cg_backedge = NULL;
+ res->attr.block.extblk = NULL;
IRN_VRFY_IRG(res, irg);
return res;
return res;
}
+ir_node *
+new_rd_IJmp (dbg_info* db, ir_graph *irg, ir_node *block, ir_node *tgt)
+{
+ ir_node *res;
+
+ res = new_ir_node (db, irg, block, op_IJmp, mode_X, 1, &tgt);
+ res = optimize_node (res);
+ IRN_VRFY_IRG (res, irg);
+
+ if (get_irn_op(res) == op_IJmp) /* still an IJmp */
+ keep_alive(res);
+ return res;
+}
+
ir_node *
new_rd_Cond (dbg_info* db, ir_graph *irg, ir_node *block, ir_node *c)
{
ir_node *new_r_Jmp (ir_graph *irg, ir_node *block) {
return new_rd_Jmp(NULL, irg, block);
}
+ir_node *new_r_IJmp (ir_graph *irg, ir_node *block, ir_node *tgt) {
+ return new_rd_IJmp(NULL, irg, block, tgt);
+}
ir_node *new_r_Cond (ir_graph *irg, ir_node *block, ir_node *c) {
return new_rd_Cond(NULL, irg, block, c);
}
return new_rd_Const_long(NULL, irg, block, mode, value);
}
+ir_node *new_r_Const_type(ir_graph *irg, ir_node *block,
+ ir_mode *mode, tarval *con, type *tp) {
+ return new_rd_Const_type(NULL, irg, block, mode, con, tp);
+}
ir_node *new_r_SymConst (ir_graph *irg, ir_node *block,
symconst_symbol value, symconst_kind symkind) {
return new_rd_Const_long(db, current_ir_graph, current_ir_graph->start_block, mode, value);
}
- ir_node *
+ir_node *
new_d_Const_type (dbg_info* db, ir_mode *mode, tarval *con, type *tp)
{
return new_rd_Const_type(db, current_ir_graph, current_ir_graph->start_block,
return new_rd_Jmp (db, current_ir_graph, current_ir_graph->current_block);
}
+ir_node *
+new_d_IJmp (dbg_info* db, ir_node *tgt)
+{
+ return new_rd_IJmp (db, current_ir_graph, current_ir_graph->current_block, tgt);
+}
+
ir_node *
new_d_Cond (dbg_info* db, ir_node *c)
{
return new_d_immBlock(NULL);
}
-/* add an adge to a jmp/control flow node */
+/* add an edge to a jmp/control flow node */
void
add_immBlock_pred (ir_node *block, ir_node *jmp)
{
}
void
-keep_alive (ir_node *ka)
-{
+keep_alive (ir_node *ka) {
add_End_keepalive(current_ir_graph->end, ka);
}
ir_node *new_Jmp (void) {
return new_d_Jmp(NULL);
}
+ir_node *new_IJmp (ir_node *tgt) {
+ return new_d_IJmp(NULL, tgt);
+}
ir_node *new_Cond (ir_node *c) {
return new_d_Cond(NULL, c);
}