res->value_table = new_identities();
/* clone the frame type here for safety */
+ irp_reserve_resources(irp, IR_RESOURCE_ENTITY_LINK);
res->frame_type = clone_frame_type(irg->frame_type);
res->phase_state = irg->phase_state;
res->estimated_node_count = irg->estimated_node_count;
ir_free_resources(irg, IR_RESOURCE_IRN_LINK);
+ irp_free_resources(irp, IR_RESOURCE_ENTITY_LINK);
return res;
}
if (n <= 0)
return;
+ irp_reserve_resources(irp, IR_RESOURCE_ENTITY_LINK);
+
/* clear all entity links */
for (i = n - 1; i >= 0; --i) {
ent = get_class_member(frame_tp, i);
/* we changed the frame type, it's layout should be redefined */
set_type_state(frame_tp, layout_undefined);
}
+ irp_free_resources(irp, IR_RESOURCE_ENTITY_LINK);
}
/* -- Replicate local entities of the called_graph -- */
/* copy the entities. */
+ irp_reserve_resources(irp, IR_RESOURCE_ENTITY_LINK);
called_frame = get_irg_frame_type(called_graph);
curr_frame = get_irg_frame_type(irg);
for (i = 0, n = get_class_n_members(called_frame); i < n; ++i) {
irg_walk(get_irg_end(called_graph), copy_node_inline, copy_preds_inline,
get_irg_frame_type(called_graph));
+ irp_free_resources(irp, IR_RESOURCE_ENTITY_LINK);
+
/* Repair called_graph */
set_irg_visited(called_graph, get_irg_visited(irg));
set_irg_block_visited(called_graph, get_irg_block_visited(irg));
int i, n;
assert(is_frame_type(type));
+ /* the entity link resource should be allocated if this function is called */
+ assert(irp_resources_reserved(irp) & IR_RESOURCE_ENTITY_LINK);
res = new_type_frame(type->name);
for (i = 0, n = get_class_n_members(type); i < n; ++i) {