else if (op == op_Proj) {
old_irg = get_irn_irg(n);
- if (n == get_irg_frame(old_irg))
+ if (n == get_irg_initial_exec(old_irg))
+ nn = get_irg_initial_exec(irg);
+ else if (n == get_irg_frame(old_irg))
nn = get_irg_frame(irg);
- else if (n == get_irg_globals(old_irg))
- nn = get_irg_globals(irg);
else if (n == get_irg_initial_mem(old_irg))
nn = get_irg_initial_mem(irg);
else if (n == get_irg_args(old_irg))
set_irn_link(n, nn);
/* fix the irg for blocks */
- if (is_Block(nn))
+ if (is_Block(nn)) {
nn->attr.block.irg = irg;
+
+ /* we cannot allow blocks WITHOUT macroblock input */
+ set_Block_MacroBlock(nn, get_Block_MacroBlock(n));
+ }
}
/*
ir_node *res, *block = NULL;
if (is_no_Block(n))
- block = get_irn_n(n, -1);
+ block = get_nodes_block(n);
res = new_ir_node(get_irn_dbg_info(n),
irg,
frees e.g. the memory of the graph_arr allocated in new_immBlock. */
copy_node_attr(n, res);
new_backedge_info(res);
+
+ if (is_Block(n)) {
+ set_Block_MacroBlock(res, get_Block_MacroBlock(n));
+ }
return res;
}
+/*
+ * Dump a pset containing Firm objects.
+ */
void firm_pset_dump(pset *set) {
void *obj;