* @file
* @brief Statistics for Firm. DAG's in graphs.
* @author Michael Beck
- * @version $Id$
*/
#include "config.h"
#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
/**
* 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 */
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;
*/
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;
block = get_nodes_block(node);
/* ignore start end end blocks */
- if (block == get_irg_start_block(current_ir_graph) ||
- block == get_irg_end_block(current_ir_graph)) {
+ ir_graph *const irg = get_Block_irg(block);
+ if (block == get_irg_start_block(irg) || block == get_irg_end_block(irg))
return;
- } /* if */
/* Phi nodes always references nodes from "other" block */
if (is_Phi(node)) {
*/
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;
block = get_nodes_block(node);
/* ignore start end end blocks */
- if (block == get_irg_start_block(current_ir_graph) ||
- block == get_irg_end_block(current_ir_graph)) {
+ ir_graph *const irg = get_Block_irg(block);
+ if (block == get_irg_start_block(irg) || block == get_irg_end_block(irg))
return;
- } /* if */
/* ignore Phi nodes */
if (is_Phi(node))
/**
* 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 */
entry->num_roots,
entry->num_nodes,
entry->num_inner_nodes,
- entry->is_tree,
+ (unsigned)entry->is_tree,
get_irn_node_nr(entry->root));
} /* for */