Fix last commit. Note to self: Never do last minute changes after testing.
[libfirm] / ir / be / bedomfront.c
index c2f3703..d5a3abe 100644 (file)
@@ -1,16 +1,30 @@
+/*
+ * Copyright (C) 1995-2008 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
+ * @brief       Algorithms for computing dominance frontiers.
  * @author      Sebastian Hack, Daniel Grund
- * @date:       04.05.2005
+ * @date        04.05.2005
  * @version     $Id$
- * Copyright:   (c) Universitaet Karlsruhe
- * Licence:     This file protected by GPL -  GNU GENERAL PUBLIC LICENSE.
  */
-#ifdef HAVE_CONFIG_H
 #include "config.h"
-#endif
-
-#include "bedomfront.h"
 
 #include "obst.h"
 #include "pmap.h"
@@ -19,6 +33,9 @@
 #include "array.h"
 #include "irgraph.h"
 #include "iredges_t.h"
+#include "irnodeset.h"
+
+#include "bedomfront.h"
 
 /**
  * The dominance frontier for a graph.
@@ -36,8 +53,7 @@ struct _be_dom_front_info_t {
  * @param bl The block.
  * @return The immediate dominator of the block.
  */
-static INLINE
-ir_node *get_idom(ir_node *bl)
+static inline ir_node *get_idom(ir_node *bl)
 {
        ir_node *idom = get_Block_idom(bl);
        return idom == NULL ? bl : idom;
@@ -50,8 +66,7 @@ ir_node *get_idom(ir_node *bl)
  *
  * @return the list of all blocks in the dominance frontier of blk
  */
-static
-ir_node **compute_df(ir_node *blk, be_dom_front_info_t *info)
+static ir_node **compute_df(ir_node *blk, be_dom_front_info_t *info)
 {
        ir_node *c;
        const ir_edge_t *edge;
@@ -96,7 +111,7 @@ ir_node **compute_df(ir_node *blk, be_dom_front_info_t *info)
 
 be_dom_front_info_t *be_compute_dominance_frontiers(ir_graph *irg)
 {
-       be_dom_front_info_t *info = xmalloc(sizeof(*info));
+       be_dom_front_info_t *info = XMALLOC(be_dom_front_info_t);
 
        edges_assure(irg);
        obstack_init(&info->obst);
@@ -120,36 +135,3 @@ ir_node **be_get_dominance_frontier(const be_dom_front_info_t *info,
 {
        return pmap_get(info->df_map, block);
 }
-
-/**
- * Calculates the iterated dominance frontier of a set of blocks.
- * Also clears the link field of the returned blocks as a side effect
- */
-void be_get_iterated_dominance_frontiers(const be_dom_front_info_t *domfronts,
-                                         ir_nodeset_t *blocks)
-{
-       ir_node *block;
-       ir_nodeset_iterator_t iter;
-       waitq *worklist = new_waitq();
-
-       foreach_ir_nodeset(blocks, block, iter) {
-               waitq_put(worklist, block);
-       }
-
-       while(!pdeq_empty(worklist)) {
-               int i;
-               ir_node *block = waitq_get(worklist);
-               ir_node **domfront = be_get_dominance_frontier(domfronts, block);
-               int domfront_len = ARR_LEN(domfront);
-
-               for (i = 0; i < domfront_len; ++i) {
-                       ir_node *y = domfront[i];
-                       if(!ir_nodeset_insert(blocks, y))
-                               continue;
-
-                       waitq_put(worklist, y);
-               }
-       }
-
-       del_waitq(worklist);
-}