+int get_irg_n_locs(ir_graph *irg)
+{
+ return irg->n_loc - 1;
+}
+
+int node_is_in_irgs_storage(const ir_graph *irg, const ir_node *n)
+{
+ /* Check whether the ir_node pointer is on the obstack.
+ * A more sophisticated check would test the "whole" ir_node. */
+ for (struct _obstack_chunk const *p = irg->obst.chunk; p; p = p->prev) {
+ if (((char *)p->contents <= (char *)n) && ((char *)n < (char *)p->limit))
+ return 1;
+ }
+
+ return 0;
+}
+
+op_pin_state (get_irg_pinned)(const ir_graph *irg)
+{
+ return get_irg_pinned_(irg);
+}
+
+irg_callee_info_state (get_irg_callee_info_state)(const ir_graph *irg)
+{
+ return get_irg_callee_info_state_(irg);
+}
+
+void (set_irg_callee_info_state)(ir_graph *irg, irg_callee_info_state s)
+{
+ set_irg_callee_info_state_(irg, s);
+}
+
+void (set_irg_link)(ir_graph *irg, void *thing)
+{
+ set_irg_link_(irg, thing);
+}
+
+void *(get_irg_link)(const ir_graph *irg)
+{
+ return get_irg_link_(irg);
+}
+
+ir_visited_t (get_irg_visited)(const ir_graph *irg)
+{
+ return get_irg_visited_(irg);
+}
+
+/** maximum visited flag content of all ir_graph visited fields. */
+static ir_visited_t max_irg_visited = 0;
+
+void set_irg_visited(ir_graph *irg, ir_visited_t visited)
+{
+ irg->visited = visited;
+ if (irg->visited > max_irg_visited) {
+ max_irg_visited = irg->visited;
+ }
+}
+
+void inc_irg_visited(ir_graph *irg)
+{
+ ++irg->visited;
+ if (irg->visited > max_irg_visited) {
+ max_irg_visited = irg->visited;
+ }
+}
+
+ir_visited_t get_max_irg_visited(void)
+{
+ return max_irg_visited;
+}
+
+void set_max_irg_visited(int val)
+{
+ max_irg_visited = val;
+}
+
+ir_visited_t inc_max_irg_visited(void)
+{
+#ifndef NDEBUG
+ size_t i;
+ for (i = 0; i < get_irp_n_irgs(); i++)
+ assert(max_irg_visited >= get_irg_visited(get_irp_irg(i)));
+#endif
+ return ++max_irg_visited;
+}
+
+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, ir_visited_t visited)
+{
+ set_irg_block_visited_(irg, visited);
+}
+
+void (inc_irg_block_visited)(ir_graph *irg)
+{
+ inc_irg_block_visited_(irg);
+}
+
+unsigned (get_irg_fp_model)(const ir_graph *irg)
+{
+ return get_irg_fp_model_(irg);
+}
+
+void set_irg_fp_model(ir_graph *irg, unsigned model)
+{
+ irg->fp_model = model;
+}
+
+void set_irg_loc_description(ir_graph *irg, int n, void *description)
+{
+ assert(0 <= n && n < irg->n_loc);
+
+ if (! irg->loc_descriptions)
+ irg->loc_descriptions = XMALLOCNZ(void*, irg->n_loc);
+
+ irg->loc_descriptions[n] = description;
+}
+
+void *get_irg_loc_description(ir_graph *irg, int n)
+{
+ assert(0 <= n && n < irg->n_loc);
+ return irg->loc_descriptions ? irg->loc_descriptions[n] : NULL;
+}
+
+#ifndef NDEBUG
+void ir_reserve_resources(ir_graph *irg, ir_resources_t resources)
+{
+ assert((irg->reserved_resources & resources) == 0);
+ irg->reserved_resources |= resources;
+}
+
+void ir_free_resources(ir_graph *irg, ir_resources_t resources)
+{
+ assert((irg->reserved_resources & resources) == resources);
+ irg->reserved_resources &= ~resources;
+}
+
+ir_resources_t ir_resources_reserved(const ir_graph *irg)
+{
+ return irg->reserved_resources;
+}
+#endif
+
+unsigned get_irg_last_idx(const ir_graph *irg)
+{
+ return irg->last_node_idx;
+}
+
+void add_irg_constraints(ir_graph *irg, ir_graph_constraints_t constraints)
+{
+ irg->constraints |= constraints;
+}
+
+void clear_irg_constraints(ir_graph *irg, ir_graph_constraints_t constraints)
+{
+ irg->constraints &= ~constraints;
+}
+
+int (irg_is_constrained)(const ir_graph *irg, ir_graph_constraints_t constraints)
+{
+ return irg_is_constrained_(irg, constraints);
+}
+
+void (add_irg_properties)(ir_graph *irg, ir_graph_properties_t props)
+{
+ add_irg_properties_(irg, props);
+}
+
+void (clear_irg_properties)(ir_graph *irg, ir_graph_properties_t props)
+{
+ clear_irg_properties_(irg, props);
+}
+
+int (irg_has_properties)(const ir_graph *irg, ir_graph_properties_t props)
+{
+ return irg_has_properties_(irg, props);
+}
+
+typedef void (*assure_property_func)(ir_graph *irg);
+
+void assure_irg_properties(ir_graph *irg, ir_graph_properties_t props)