X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fstat%2Fdags.c;h=81cf08a31637070576b57613fdf65fa24e4270df;hb=379bdf77d4ec20ca94e12e75aea168479c014bc9;hp=e60709624464eed37018f42481550be6c7d40d0b;hpb=32ea6ea0320f551448bb66e534e3351977464d42;p=libfirm diff --git a/ir/stat/dags.c b/ir/stat/dags.c index e60709624..81cf08a31 100644 --- a/ir/stat/dags.c +++ b/ir/stat/dags.c @@ -21,7 +21,6 @@ * @file * @brief Statistics for Firm. DAG's in graphs. * @author Michael Beck - * @version $Id$ */ #include "config.h" @@ -31,6 +30,7 @@ #include "irdump.h" #include "dags.h" #include "irtools.h" +#include "ircons.h" enum dag_counting_options_t { FIRMSTAT_COPY_CONSTANTS = 0x00000001, /**< if set, constants will be treated as they are in @@ -40,12 +40,12 @@ enum dag_counting_options_t { FIRMSTAT_ARGS_ARE_ROOTS = 0x00000008, /**< arguments (Proj(Proj(Start)) are roots */ }; -typedef struct _dag_entry_t dag_entry_t; +typedef struct dag_entry_t dag_entry_t; /** * Environment for connecting DAG's */ -typedef struct _dag_env_t { +typedef struct dag_env_t { struct obstack obst; unsigned num_of_dags; /**< Number of found DAGs so far. */ dag_entry_t *list_of_dags; /**< List of found DAGs. */ @@ -55,7 +55,7 @@ typedef struct _dag_env_t { /** * a DAG Entry */ -struct _dag_entry_t { +struct dag_entry_t { unsigned id; /**< assigned ID for this DAG */ ir_node *root; /**< one root of the DAG */ unsigned num_roots; /**< number of root nodes in the DAG */ @@ -71,9 +71,9 @@ struct _dag_entry_t { /** * return an DAG entry for the node n */ -static dag_entry_t *get_irn_dag_entry(ir_node *n) +static dag_entry_t *get_irn_dag_entry(const ir_node *n) { - dag_entry_t *p = get_irn_link(n); + dag_entry_t *p = (dag_entry_t*)get_irn_link(n); if (p) { /* skip any dead links */ @@ -81,7 +81,8 @@ static dag_entry_t *get_irn_dag_entry(ir_node *n) do { p = p->link; } while (p->link != NULL); - set_irn_link(n, p); + /* hacky cast to ir_node* */ + set_irn_link((ir_node*)n, p); } } /* if */ return p; @@ -134,7 +135,7 @@ static dag_entry_t *new_dag_entry(dag_env_t *dag_env, ir_node *node) */ static void find_dag_roots(ir_node *node, void *env) { - dag_env_t *dag_env = env; + dag_env_t *dag_env = (dag_env_t*)env; int i, arity; dag_entry_t *entry; ir_node *block; @@ -209,7 +210,7 @@ static void find_dag_roots(ir_node *node, void *env) */ static void connect_dags(ir_node *node, void *env) { - dag_env_t *dag_env = env; + dag_env_t *dag_env = (dag_env_t*)env; int i, arity; ir_node *block; dag_entry_t *entry; @@ -316,25 +317,21 @@ static unsigned mark_options; /** * a vcg attribute hook */ -static int stat_dag_mark_hook(FILE *F, ir_node *n, ir_node *l) +static int stat_dag_mark_hook(FILE *F, const ir_node *n, const ir_node *l) { static const char *colors[] = { "purple", "pink", "lightblue", "orange", "khaki", "orchid", "lilac", "turquoise" }; dag_entry_t *entry; /* do not count Bad / NoMem */ if (l) { - ir_op *op = get_irn_op(l); - - if (op == op_NoMem || op == op_Bad) + if (is_NoMem(l) || is_Bad(l)) return DEFAULT_RET; /* check for additional options */ - op = get_irn_op(n); - - if (mark_options & FIRMSTAT_LOAD_IS_LEAVE && op == op_Load) + if (mark_options & FIRMSTAT_LOAD_IS_LEAVE && is_Load(n)) return DEFAULT_RET; - if (mark_options & FIRMSTAT_CALL_IS_LEAVE && op == op_Call) + if (mark_options & FIRMSTAT_CALL_IS_LEAVE && is_Call(n)) return DEFAULT_RET; } /* if */ @@ -379,7 +376,7 @@ void count_dags_in_graph(graph_entry_t *global, graph_entry_t *graph) /* connect and count them */ irg_walk_graph(graph->irg, connect_dags, NULL, &root_env); - printf("Graph %p %s --- %d\n", (void *)graph->irg, get_entity_name(get_irg_entity(graph->irg)), + printf("Graph %p %s --- %u\n", (void *)graph->irg, get_entity_name(get_irg_entity(graph->irg)), root_env.num_of_dags); for (id = 0, entry = root_env.list_of_dags; entry; entry = entry->next) { @@ -387,11 +384,11 @@ void count_dags_in_graph(graph_entry_t *global, graph_entry_t *graph) continue; entry->id = id++; - printf("number of roots %d number of nodes %d inner %d tree %u %ld\n", + printf("number of roots %u number of nodes %u inner %u tree %u %ld\n", entry->num_roots, entry->num_nodes, entry->num_inner_nodes, - entry->is_tree, + (unsigned)entry->is_tree, get_irn_node_nr(entry->root)); } /* for */ @@ -399,7 +396,7 @@ void count_dags_in_graph(graph_entry_t *global, graph_entry_t *graph) /* dump for test */ mark_options = root_env.options; set_dump_node_vcgattr_hook(stat_dag_mark_hook); - dump_ir_block_graph(graph->irg, "-dag"); + dump_ir_graph(graph->irg, "-dag"); set_dump_node_vcgattr_hook(NULL); #endif