X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fana%2Fdfs.c;h=b10895a769214f736f1c98fdd9205209541f6849;hb=c6571686bfbfb3c87ae24ae1dc568e685d6cd49a;hp=cf96c45bb262ed0bbc3541ec98e810fb17a3b13f;hpb=ce6161a7e42a48f7422b7babcc64d8ace18e2687;p=libfirm diff --git a/ir/ana/dfs.c b/ir/ana/dfs.c index cf96c45bb..b10895a76 100644 --- a/ir/ana/dfs.c +++ b/ir/ana/dfs.c @@ -21,7 +21,6 @@ * @file dfs.c * @author Sebastian Hack * @date 20.04.2007 - * @version $Id$ * @brief * * Simple depth first search on CFGs. @@ -33,12 +32,12 @@ #define DISABLE_STATEV #include -#include "irtools.h" #include "irprintf.h" -#include "irdom.h" +#include "irdom_t.h" #include "set.h" #include "statev.h" #include "dfs_t.h" +#include "util.h" static int cmp_edge(const void *a, const void *b, size_t sz) { @@ -62,7 +61,7 @@ static int cmp_node(const void *a, const void *b, size_t sz) static dfs_edge_t *get_edge(const dfs_t *self, const void *src, const void *tgt) { - unsigned hash = HASH_COMBINE(HASH_PTR(src), HASH_PTR(tgt)); + unsigned hash = hash_combine(hash_ptr(src), hash_ptr(tgt)); dfs_edge_t templ; templ.src = src; @@ -120,7 +119,7 @@ static void classify_edges(dfs_t *dfs) stat_ev_cnt_decl(fwd); stat_ev_cnt_decl(cross); - foreach_set (dfs->edges, dfs_edge_t*, edge) { + foreach_set (dfs->edges, dfs_edge_t, edge) { dfs_node_t *src = edge->s; dfs_node_t *tgt = edge->t; @@ -193,7 +192,7 @@ dfs_t *dfs_new(const absgraph_t *graph_impl, void *graph_self) assert(res->pre_num == res->post_num); res->pre_order = XMALLOCN(dfs_node_t*, res->pre_num); res->post_order = XMALLOCN(dfs_node_t*, res->post_num); - foreach_set (res->nodes, dfs_node_t*, node) { + foreach_set (res->nodes, dfs_node_t, node) { assert(node->pre_num < res->pre_num); assert(node->post_num < res->post_num); @@ -208,6 +207,7 @@ dfs_t *dfs_new(const absgraph_t *graph_impl, void *graph_self) void dfs_free(dfs_t *dfs) { + obstack_free(&dfs->obst, NULL); del_set(dfs->nodes); del_set(dfs->edges); xfree(dfs->pre_order); @@ -255,7 +255,7 @@ void dfs_dump(const dfs_t *dfs, FILE *file) int i, n = 0; ir_fprintf(file, "digraph G {\nranksep=0.5\n"); - foreach_set (dfs->nodes, dfs_node_t*, node) { + foreach_set (dfs->nodes, dfs_node_t, node) { nodes[n++] = node; } @@ -274,7 +274,7 @@ void dfs_dump(const dfs_t *dfs, FILE *file) } for (i = 0; i < n; ++i) { - dfs_node_t *node = nodes[i]; + node = nodes[i]; ir_fprintf(file, "\tn%d [label=\"%d\"]\n", node->pre_num, get_Block_dom_tree_pre_num((ir_node*) node->node)); #if 0 ir_fprintf(file, "\tn%d [shape=box,label=\"%+F\\l%d %d/%d %d\"];\n", @@ -283,7 +283,7 @@ void dfs_dump(const dfs_t *dfs, FILE *file) #endif } - foreach_set (dfs->edges, dfs_edge_t*, edge) + foreach_set (dfs->edges, dfs_edge_t, edge) dfs_dump_edge(edge, file); ir_fprintf(file, "}\n");