fixed handling of keep-alive edges
[libfirm] / ir / ana / irloop_t.h
index 4a64334..594308a 100644 (file)
@@ -1,30 +1,37 @@
 /*
- * Project:     libFIRM
- * File name:   ir/ana/irloop_t.h
- * Purpose:     Loop datastructure and access functions -- private stuff.
- * Author:      Goetz Lindenmaier
- * Modified by:
- * Created:     7.2002
- * CVS-ID:      $Id$
- * Copyright:   (c) 2002-2003 Universität Karlsruhe
- * Licence:     This file protected by GPL -  GNU GENERAL PUBLIC LICENSE.
+ * Copyright (C) 1995-2007 University of Karlsruhe.  All right reserved.
+ *
+ * This file is part of libFirm.
+ *
+ * This file may be distributed and/or modified under the terms of the
+ * GNU General Public License version 2 as published by the Free Software
+ * Foundation and appearing in the file LICENSE.GPL included in the
+ * packaging of this file.
+ *
+ * Licensees holding valid libFirm Professional Edition licenses may use
+ * this file in accordance with the libFirm Commercial License.
+ * Agreement provided with the Software.
+ *
+ * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+ * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
  */
 
 /**
- * @file irloop_t.h
- * Loop datastructure and access functions -- private stuff.
- *
- * @author Goetz Lindenmaier
+ * @file
+ * @brief    Loop datastructure and access functions -- private stuff.
+ * @author   Goetz Lindenmaier
+ * @date     7.2002
+ * @version  $Id$
  */
+#ifndef FIRM_ANA_IRLOOP_T_H
+#define FIRM_ANA_IRLOOP_T_H
 
 #include "firm_common.h"
 #include "irgraph_t.h"
 #include "irnode_t.h"
 #include "irloop.h"
 
-#ifndef _IRLOOP_T_H_
-#define _IRLOOP_T_H_
-
 /**
  * Possible loop flags, can be or'ed.
  */
@@ -39,7 +46,22 @@ typedef enum loop_flags {
   once               = 0x00000080,  /**< this is a do loop, with a false condition.It itarate once */
 } loop_flags_t;
 
-/** The loops datastructure. */
+/**
+ * The loops data structure.
+ *
+ * The loops data structure represents circles in the intermediate
+ * representation.  It does not represent loops in the terms of a
+ * source program.
+ * Each ir_graph can contain one outermost loop data structure.
+ * loop is the entry point to the nested loops.
+ * The loop data structure contains a field indicating the depth of
+ * the loop within the nesting.  Further it contains a list of the
+ * loops with nesting depth -1.  Finally it contains a list of all
+ * nodes in the loop.
+ *
+ * @todo We could add a field pointing from a node to the containing loop,
+ * this would cost a lot of memory, though.
+ */
 struct ir_loop {
   firm_kind kind;                  /**< A type tag, set to k_ir_loop. */
 
@@ -121,7 +143,6 @@ _get_irn_loop(const ir_node *n) {
   return n->loop;
 }
 
-
 #define is_ir_loop(thing)         _is_ir_loop(thing)
 #define set_irg_loop(irg, loop)   _set_irg_loop(irg, loop)
 #define get_irg_loop(irg)         _get_irg_loop(irg)
@@ -130,4 +151,4 @@ _get_irn_loop(const ir_node *n) {
 #define get_loop_n_sons(loop)     _get_loop_n_sons(loop)
 #define get_irn_loop(n)           _get_irn_loop(n)
 
-#endif /* _IRLOOP_T_H_ */
+#endif