/*
- * Copyright (C) 1995-2007 University of Karlsruhe. All right reserved.
+ * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved.
*
* This file is part of libFirm.
*
/**
* @file
+ * @brief Algorithms for computing normal and iterated 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"
#include "array.h"
#include "irgraph.h"
#include "iredges_t.h"
+#include "irnodeset.h"
+
+#include "bedomfront.h"
/**
* The dominance frontier for a graph.
* @param bl The block.
* @return The immediate dominator of the block.
*/
-static INLINE
+static inline
ir_node *get_idom(ir_node *bl)
{
ir_node *idom = get_Block_idom(bl);
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);
return pmap_get(info->df_map, block);
}
+#if 0
/**
* Calculates the iterated dominance frontier of a set of blocks.
* Also clears the link field of the returned blocks as a side effect
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);
+ while(! waitq_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);
+ if (ir_nodeset_insert(blocks, y))
+ waitq_put(worklist, y);
}
}
del_waitq(worklist);
}
+#endif