the store. This is not the number of parameters
to the procedure! */
}
+ if (res->loc_descriptions) {
+ xfree(res->loc_descriptions);
+ res->loc_descriptions = NULL;
+ }
}
/* Allocates a list of nodes:
res->extblk_state = ir_extblk_info_none;
res->execfreq_state = exec_freq_none;
res->fp_model = fp_model_precise;
- res->adr_taken_state = ir_address_taken_not_computed;
+ res->entity_usage_state = ir_entity_usage_not_computed;
res->mem_disambig_opt = aa_opt_inherited;
/*-- Type information for the procedure of the graph --*/
res->phase_state = irg->phase_state;
- set_using_irn_link(irg);
+ ir_reserve_resources(irg, IR_RESOURCE_IRN_LINK);
/* copy all nodes from the graph irg to the new graph res */
irg_walk_anchors(irg, copy_all_nodes, set_all_preds, res);
is different from the original one. */
res->estimated_node_count = irg->estimated_node_count;
- clear_using_irn_link(irg);
+ ir_free_resources(irg, IR_RESOURCE_IRN_LINK);
return res;
}
void free_ir_graph(ir_graph *irg) {
assert(is_ir_graph(irg));
+ edges_deactivate(irg);
+
hook_free_graph(irg);
if (irg->outs_state != outs_none)
free_irg_outs(irg);
void
(set_irg_end_except)(ir_graph *irg, ir_node *node) {
- assert(get_irn_op(node) == op_EndExcept || get_irn_op(node) == op_End);
+ assert(get_irn_op(node) == op_EndExcept || is_End(node));
_set_irg_end_except(irg, node);
}
return _get_irg_link(irg);
}
-unsigned long
+ir_visited_t
(get_irg_visited)(const ir_graph *irg) {
return _get_irg_visited(irg);
}
#ifdef INTERPROCEDURAL_VIEW
/** maximum visited flag content of all ir_graph visited fields. */
-static unsigned long max_irg_visited = 0;
+static ir_visited_t max_irg_visited = 0;
#endif /* INTERPROCEDURAL_VIEW */
void
-set_irg_visited(ir_graph *irg, unsigned long visited) {
+set_irg_visited(ir_graph *irg, ir_visited_t visited) {
irg->visited = visited;
#ifdef INTERPROCEDURAL_VIEW
if (irg->visited > max_irg_visited) {
}
#ifdef INTERPROCEDURAL_VIEW
-unsigned long
+ir_visited_t
get_max_irg_visited(void) {
- /*
+#ifndef NDEBUG
int i;
for(i = 0; i < get_irp_n_irgs(); i++)
- assert(max_irg_visited >= get_irg_visited(get_irp_irg(i)));
- */
+ assert(max_irg_visited >= get_irg_visited(get_irp_irg(i)));
+#endif
return max_irg_visited;
}
max_irg_visited = val;
}
-unsigned long
+ir_visited_t
inc_max_irg_visited(void) {
- /*
+#ifndef NDEBUG
int i;
for(i = 0; i < get_irp_n_irgs(); i++)
- assert(max_irg_visited >= get_irg_visited(get_irp_irg(i)));
- */
+ assert(max_irg_visited >= get_irg_visited(get_irp_irg(i)));
+#endif
return ++max_irg_visited;
}
#endif /* INTERPROCEDURAL_VIEW */
-unsigned long
+ir_visited_t
(get_irg_block_visited)(const ir_graph *irg) {
return _get_irg_block_visited(irg);
}
void
-(set_irg_block_visited)(ir_graph *irg, unsigned long visited) {
+(set_irg_block_visited)(ir_graph *irg, ir_visited_t visited) {
_set_irg_block_visited(irg, visited);
}
}
#ifndef NDEBUG
-void set_using_block_visited(ir_graph *irg) {
- assert(irg->using_block_visited == 0);
- irg->using_block_visited = 1;
-}
-
-void clear_using_block_visited(ir_graph *irg) {
- assert(irg->using_block_visited == 1);
- irg->using_block_visited = 0;
-}
-
-int using_block_visited(const ir_graph *irg) {
- return irg->using_block_visited;
-}
-
-
-void set_using_irn_visited(ir_graph *irg) {
- assert(irg->using_irn_visited == 0);
- irg->using_irn_visited = 1;
-}
-
-void clear_using_irn_visited(ir_graph *irg) {
- assert(irg->using_irn_visited == 1);
- irg->using_irn_visited = 0;
-}
-
-int using_irn_visited(const ir_graph *irg) {
- return irg->using_irn_visited;
-}
-
-
-void set_using_irn_link(ir_graph *irg) {
- assert(irg->using_irn_link == 0);
- irg->using_irn_link = 1;
-}
-
-void clear_using_irn_link(ir_graph *irg) {
- assert(irg->using_irn_link == 1);
- irg->using_irn_link = 0;
-}
-
-int using_irn_link(const ir_graph *irg) {
- return irg->using_irn_link;
-}
-
-void set_using_block_mark(ir_graph *irg) {
- assert(irg->using_block_mark == 0);
- irg->using_block_mark = 1;
+void ir_reserve_resources(ir_graph *irg, ir_resources_t resources)
+{
+ assert((irg->reserved_resources & resources) == 0);
+ irg->reserved_resources |= resources;
}
-void clear_using_block_mark(ir_graph *irg) {
- assert(irg->using_block_mark == 1);
- irg->using_block_mark = 0;
+void ir_free_resources(ir_graph *irg, ir_resources_t resources)
+{
+ assert((irg->reserved_resources & resources) == resources);
+ irg->reserved_resources &= ~resources;
}
-int using_block_mark(const ir_graph *irg) {
- return irg->using_block_mark;
+ir_resources_t ir_resources_reserved(const ir_graph *irg)
+{
+ return irg->reserved_resources;
}
#endif /* NDEBUG */