used enum values for Tuple creation
[libfirm] / ir / ana / irloop.h
index 2691d54..5582a11 100644 (file)
@@ -79,8 +79,7 @@ typedef union {
 void     set_irg_loop(ir_graph *irg, ir_loop *l);
 ir_loop *get_irg_loop(ir_graph *irg);
 
-/** Returns the loop n is contained in.
-   assumes current_ir_graph set properly. */
+/** Returns the loop n is contained in.  NULL if node is in no loop. */
 ir_loop *get_irn_loop(ir_node *n);
 
 /** Returns outer loop, itself if outermost. */
@@ -102,18 +101,37 @@ int      get_loop_n_elements (ir_loop *loop);
     kind pointer, an ir_node* or an ir_loop*. */
 loop_element get_loop_element (ir_loop *loop, int pos);
 
+/** Returns the element number of the loop son in loop.
+ *  Returns -1 if not found. O(#elements). */
+int get_loop_element_pos(ir_loop *loop, void *le);
+
+/** Returns a unique node number for the loop node to make output
+    readable. Casten pointer if libfirm_debug not set. */
+int get_loop_loop_nr(ir_loop *loop);
+
+/** A field to connect additional information to a loop.  Only valid
+    if libfirm_debug is set, else returns NULL.  */
+void  set_loop_link (ir_loop *loop, void *link);
+void *get_loop_link (const ir_loop *loop);
+
 /*
  * Constructing and destructing the loop/backedge information.
  */
 
 /** Constructs backedge information for irg in intraprocedural view. */
+/* @@@ Well, maybe construct_loop_information or analyze_loops ? */
 void construct_backedges(ir_graph *irg);
 
 /** Constructs backedges for all irgs in interprocedural view.  All
     loops in the graph will be marked as such, not only realizeable
     loops and recursions in the program.  E.g., if the same funcion is
-    called twice, there is a loop between the first funcion return and
+    called twice, there is a loop between the first function return and
     the second call.  */
 void construct_ip_backedges(void);
 
+/** Removes all loop information.
+    Resets all backedges */
+void free_loop_information(ir_graph *irg);
+void free_all_loop_information (void);
+
 #endif /* _IRLOOP_H_ */