X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fana%2Fdfs_t.h;h=f22612ee244bae2acde57b43641c99bda0b8b9ad;hb=6ccff2965d94c272f71df2a1655336af47bb7753;hp=bcb169011df03d51582cc847d35330747eb6cf19;hpb=f616f878aa0ea06ad96e9c92a58c75d4fe5b3162;p=libfirm diff --git a/ir/ana/dfs_t.h b/ir/ana/dfs_t.h index bcb169011..f22612ee2 100644 --- a/ir/ana/dfs_t.h +++ b/ir/ana/dfs_t.h @@ -1,5 +1,5 @@ /* - * 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. * @@ -21,36 +21,35 @@ * @file dfs_t.h * @author Sebastian Hack * @date 21.04.2007 - * @version $Id$ - * @summary + * @brief * * depth first search internal stuff. */ #ifndef FIRM_ANA_DFS_T_H #define FIRM_ANA_DFS_T_H -#include "firm_config.h" #include "hashptr.h" #include "absgraph.h" #include "obst.h" #include "dfs.h" -struct _dfs_node_t { +struct dfs_node_t { int visited; - void *node; - void *ancestor; + const void *node; + const void *ancestor; int pre_num; int max_pre_num; - int post_num; + int post_num; + int level; }; -struct _dfs_edge_t { - void *src, *tgt; +struct dfs_edge_t { + const void *src, *tgt; dfs_node_t *s, *t; dfs_edge_kind_t kind; }; -struct _dfs_t { +struct dfs_t { void *graph; const absgraph_t *graph_impl; struct obstack obst; @@ -66,20 +65,20 @@ struct _dfs_t { unsigned edges_classified : 1; }; -static struct _dfs_node_t *_dfs_get_node(const struct _dfs_t *self, void *node) +static dfs_node_t *_dfs_get_node(const dfs_t *self, const void *node) { - struct _dfs_node_t templ; + dfs_node_t templ; memset(&templ, 0, sizeof(templ)); templ.node = node; - return set_insert(self->nodes, &templ, sizeof(templ), HASH_PTR(node)); + return (dfs_node_t*) set_insert(self->nodes, &templ, sizeof(templ), HASH_PTR(node)); } #define _dfs_int_is_ancestor(n, m) ((m)->pre_num >= (n)->pre_num && (m)->pre_num <= (n)->max_pre_num) -static INLINE int _dfs_is_ancestor(const struct _dfs_t *dfs, void *a, void *b) +static inline int _dfs_is_ancestor(const dfs_t *dfs, const void *a, const void *b) { - struct _dfs_node_t *n = _dfs_get_node(dfs, a); - struct _dfs_node_t *m = _dfs_get_node(dfs, b); + dfs_node_t *n = _dfs_get_node(dfs, a); + dfs_node_t *m = _dfs_get_node(dfs, b); return _dfs_int_is_ancestor(n, m); }