-/** 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 function return and
- the second call. */
-void construct_ip_backedges(void);
+/** Constructs backedges for all irgs in interprocedural view.
+ *
+ * @see As construct_backedges(), but for interprocedural view.
+ *
+ * @remark
+ * 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
+ * function return and the second call.
+ *
+ * @returns Maximal depth of loop tree.
+*/
+int construct_ip_backedges(void);
+
+/** Construct loop tree only for control flow.
+ *
+ * This constructs loop information resembling the program structure.
+ * It is useful for loop optimizations and analyses, as, e.g., finding
+ * iteration variables or loop invariant code motion.
+ *
+ * This algorithm computes only back edge information for Block nodes, not
+ * for Phi nodes.
+ *
+ * @returns Maximal depth of loop tree. */
+int construct_cf_backedges(ir_graph *irg);
+
+/** Construct interprocedural loop tree for control flow.
+ *
+ * @see construct_cf_backedges() and construct_ip_backedges().
+ */
+int construct_ip_cf_backedges (void);