iter->nodes = (ir_node**)obstack_finish(&iter->obst);
}
-static inline void node_break(nodes_iter_t *it, int force)
+static ir_node *get_next_node(nodes_iter_t *it)
{
- if ((it->curr >= it->n || force) && it->nodes) {
+ if (it->curr < it->n) {
+ return it->nodes[it->curr++];
+ } else {
obstack_free(&it->obst, NULL);
- it->nodes = NULL;
+ return NULL;
}
}
-static ir_node *get_next_node(nodes_iter_t *it)
-{
- ir_node *res = NULL;
-
- if (it->curr < it->n)
- res = it->nodes[it->curr++];
-
- node_break(it, 0);
-
- return res;
-}
-
ir_node *be_ifg_nodes_begin(const be_ifg_t *ifg, nodes_iter_t *iter)
{
find_nodes(ifg, iter);
return get_next_node(iter);
}
-void be_ifg_nodes_break(nodes_iter_t *iter)
-{
- node_break(iter, 1);
-}
-
static void find_neighbour_walker(ir_node *block, void *data)
{
neighbours_iter_t *it = (neighbours_iter_t*)data;
void be_ifg_neighbours_break(neighbours_iter_t *iter);
ir_node *be_ifg_nodes_begin(const be_ifg_t *ifg, nodes_iter_t *iter);
ir_node *be_ifg_nodes_next(nodes_iter_t *iter);
-void be_ifg_nodes_break(nodes_iter_t *iter);
int be_ifg_cliques_begin(const be_ifg_t *ifg, cliques_iter_t *iter,
ir_node **buf);
int be_ifg_cliques_next(cliques_iter_t *iter);