X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fstat%2Fdags.c;h=2612fb323326c2edd535e175b5f6c46b4d756bf3;hb=78bac126e7f9ca55761ab892ebfa9c19a4a65fcf;hp=3fc110b302de1d1ca42bb853d6024ff585a9557b;hpb=f62d0ae392c6ce4ed18be2d8be948a123b44fd31;p=libfirm diff --git a/ir/stat/dags.c b/ir/stat/dags.c index 3fc110b30..2612fb323 100644 --- a/ir/stat/dags.c +++ b/ir/stat/dags.c @@ -1,17 +1,29 @@ /* - * Project: libFIRM - * File name: ir/ir/dags.c - * Purpose: Statistics for Firm. DAG's in graphs. - * Author: Michael Beck - * Created: - * CVS-ID: $Id$ - * Copyright: (c) 2004 Universität Karlsruhe - * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE. + * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved. + * + * This file is part of libFirm. + * + * This file may be distributed and/or modified under the terms of the + * GNU General Public License version 2 as published by the Free Software + * Foundation and appearing in the file LICENSE.GPL included in the + * packaging of this file. + * + * Licensees holding valid libFirm Professional Edition licenses may use + * this file in accordance with the libFirm Commercial License. + * Agreement provided with the Software. + * + * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE + * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE. */ -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif +/** + * @file + * @brief Statistics for Firm. DAG's in graphs. + * @author Michael Beck + * @version $Id$ + */ +#include "config.h" #include @@ -28,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. */ @@ -43,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 */ @@ -61,7 +73,7 @@ struct _dag_entry_t { */ static dag_entry_t *get_irn_dag_entry(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 */ @@ -90,14 +102,15 @@ static int is_arg(ir_node *node) return 0; node = get_Proj_pred(node); - return get_irn_op(node) == op_Start; + return is_Start(node); } /* is_arg */ /** * Allocate a new DAG entry. */ -static dag_entry_t *new_dag_entry(dag_env_t *dag_env, ir_node *node) { - dag_entry_t *entry = obstack_alloc(&dag_env->obst, sizeof(*entry)); +static dag_entry_t *new_dag_entry(dag_env_t *dag_env, ir_node *node) +{ + dag_entry_t *entry = OALLOC(&dag_env->obst, dag_entry_t); entry->num_nodes = 1; entry->num_roots = 1; @@ -121,7 +134,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; @@ -196,7 +209,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; @@ -227,10 +240,10 @@ static void connect_dags(ir_node *node, void *env) } /* if */ /* if this option is set, Loads are always leaves */ - if (dag_env->options & FIRMSTAT_LOAD_IS_LEAVE && get_irn_op(node) == op_Load) + if (dag_env->options & FIRMSTAT_LOAD_IS_LEAVE && is_Load(node)) return; - if (dag_env->options & FIRMSTAT_CALL_IS_LEAVE && get_irn_op(node) == op_Call) + if (dag_env->options & FIRMSTAT_CALL_IS_LEAVE && is_Call(node)) return; entry = get_irn_dag_entry(node); @@ -346,6 +359,7 @@ void count_dags_in_graph(graph_entry_t *global, graph_entry_t *graph) dag_env_t root_env; dag_entry_t *entry; unsigned id; + (void) global; /* do NOT check the const code irg */ if (graph->irg == get_const_code_irg()) @@ -365,7 +379,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) { @@ -373,7 +387,7 @@ 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, @@ -385,7 +399,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