/*
- * 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.
*
* @author Michael Beck
* @version $Id$
*/
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
+#include "config.h"
#include <assert.h>
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. */
/**
* 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 */
*/
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 */
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;
*/
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;
*/
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;
} /* 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);
/* 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) {
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,
/* 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