-#if 0
-/* Finishes the datastructures, copies the arrays to the obstack
- of current_ir_graph.
- A. Schoesser: Caution: loop -> sons is gone. */
-static void mature_loop (ir_loop *loop) {
- ir_loop **new_sons;
-
- new_sons = NEW_ARR_D (ir_loop *, current_ir_graph->obst, ARR_LEN(loop->sons));
- memcpy (new_sons, loop->sons, sizeof (ir_loop *) * ARR_LEN(loop->sons));
- DEL_ARR_F(loop->sons);
- loop->sons = new_sons;
-}
-#endif
-
-/* Returns outer loop, itself if outermost. */
-ir_loop *get_loop_outer_loop (ir_loop *loop) {
- assert(loop && loop->kind == k_ir_loop);
- return loop->outer_loop;
-}
-
-/* Returns nesting depth of this loop */
-int get_loop_depth (ir_loop *loop) {
- assert(loop); assert(loop->kind == k_ir_loop);
- return loop->depth;
-}
-
-/* Returns the number of inner loops */
-int get_loop_n_sons (ir_loop *loop) {
- assert(loop && loop->kind == k_ir_loop);
- return(loop -> n_sons);
-}
-
-/* Returns the pos`th loop_node-child *
- * TODO: This method isn`t very efficient ! *
- * Returns NULL if there isnt`t a pos`th loop_node */
-ir_loop *get_loop_son (ir_loop *loop, int pos) {
- int child_nr = 0, loop_nr = -1;
-
- assert(loop && loop->kind == k_ir_loop);
- while(child_nr < ARR_LEN(loop->children))
- {
- if(*(loop -> children[child_nr].kind) == k_ir_loop)
- loop_nr++;
- if(loop_nr == pos)
- return(loop -> children[child_nr].son);
- child_nr++;
- }
- return NULL;
-}
-
-/* Use EXCLUSIVELY this function to add sons, otherwise the loop->n_sons
- is invalid! */
-
-INLINE void
-add_loop_son(ir_loop *loop, ir_loop *son) {
- loop_element lson;
- lson.son = son;
- assert(loop && loop->kind == k_ir_loop);
- assert(get_kind(son) == k_ir_loop);
- ARR_APP1 (loop_element, loop->children, lson);
- loop -> n_sons++;
-}
-
-/* Returns the number of nodes in the loop */
-int get_loop_n_nodes (ir_loop *loop) {
- assert(loop); assert(loop->kind == k_ir_loop);
- return loop -> n_nodes;
-/* return ARR_LEN(loop->nodes); */
-}
-
-/* Returns the pos`th ir_node-child *
- * TODO: This method isn`t very efficient ! *
- * Returns NULL if there isnt`t a pos`th ir_node */
-ir_node *get_loop_node (ir_loop *loop, int pos) {
- int child_nr, node_nr = -1;
-
- assert(loop && loop->kind == k_ir_loop);
- assert(pos < get_loop_n_nodes(loop));
-
- for (child_nr = 0; child_nr < ARR_LEN(loop->children); child_nr++) {
- if(*(loop -> children[child_nr].kind) == k_ir_node)
- node_nr++;
- if(node_nr == pos)
- return(loop -> children[child_nr].node);
- }
- DDML(loop);
- printf("pos: %d\n", pos);
- assert(0 && "no child at pos found");
- return NULL;
-}
-
-/* Use EXCLUSIVELY this function to add nodes, otherwise the loop->n_nodes
- is invalid! */
-
-INLINE void
-add_loop_node(ir_loop *loop, ir_node *n) {
- loop_element ln;
- ln.node = n;
- assert(loop && loop->kind == k_ir_loop);
- assert(get_kind(n) == k_ir_node);
- ARR_APP1 (loop_element, loop->children, ln);
- loop->n_nodes++;
-}
-
-/** Returns the number of elements contained in loop. */
-int get_loop_n_elements (ir_loop *loop) {
- assert(loop && loop->kind == k_ir_loop);
- return(ARR_LEN(loop->children));
-}
-
-/*
- Returns the pos`th loop element.
- This may be a loop_node or a ir_node. The caller of this function has
- to check the *(loop_element.kind) field for "k_ir_node" or "k_ir_loop"
- and then select the apropriate "loop_element.node" or "loop_element.son".
-*/
-
-loop_element get_loop_element (ir_loop *loop, int pos) {
- assert(loop && loop->kind == k_ir_loop && pos < ARR_LEN(loop->children));
-
- return(loop -> children[pos]);
-}
-
-int get_loop_element_pos(ir_loop *loop, void *le) {
- int i;
- assert(loop && loop->kind == k_ir_loop);
-
- for (i = 0; i < get_loop_n_elements(loop); i++)
- if (get_loop_element(loop, i).node == le) return i;
- return -1;
-}
-
-int get_loop_loop_nr(ir_loop *loop) {
- assert(loop && loop->kind == k_ir_loop);
-#ifdef DEBUG_libfirm
- return loop->loop_nr;
-#else
- return (int)loop;
-#endif