Remove unused variable.
[libfirm] / ir / stat / firmstat.c
index 521fa03..853a8b5 100644 (file)
@@ -23,9 +23,7 @@
  * @author  Michael Beck
  * @version $Id$
  */
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
+#include "config.h"
 
 #ifdef FIRM_STATISTICS
 
@@ -970,7 +968,7 @@ static void update_node_stat(ir_node *node, void *env)
        node_entry_t *entry;
 
        ir_op *op = stat_get_irn_op(node);
-       int arity = get_irn_arity(node);
+       int i, arity = get_irn_arity(node);
 
        entry = opcode_get_entry(op, graph->opcode_hash);
 
@@ -1001,6 +999,16 @@ static void update_node_stat(ir_node *node, void *env)
                /* check address properties */
                stat_update_address(get_Store_ptr(node), graph);
                break;
+       case iro_Phi:
+               /* check for non-strict Phi nodes */
+               for (i = arity - 1; i >= 0; --i) {
+                       ir_node *pred = get_Phi_pred(node, i);
+                       if (is_Unknown(pred)) {
+                               /* found an Unknown predecessor, graph is not strict */
+                               graph->is_strict = 0;
+                               break;
+                       }
+               }
        default:
                ;
        }  /* switch */
@@ -1186,6 +1194,7 @@ static void update_graph_stat(graph_entry_t *global, graph_entry_t *graph)
        graph->is_leaf_call  = LCS_UNKNOWN;
        graph->is_recursive  = 0;
        graph->is_chain_call = 1;
+       graph->is_strict     = 1;
 
        /* create new block counter */
        graph->block_hash = new_pset(block_cmp, 5);
@@ -1299,15 +1308,13 @@ static void update_graph_stat_2(graph_entry_t *global, graph_entry_t *graph)
  * Register a dumper.
  */
 static void stat_register_dumper(const dumper_t *dumper) {
-       dumper_t *p = xmalloc(sizeof(*p));
+       dumper_t *p = XMALLOC(dumper_t);
 
-       if (p) {
-               memcpy(p, dumper, sizeof(*p));
+       memcpy(p, dumper, sizeof(*p));
 
-               p->next        = status->dumper;
-               p->status      = status;
-               status->dumper = p;
-       }
+       p->next        = status->dumper;
+       p->status      = status;
+       status->dumper = p;
 
        /* FIXME: memory leak */
 }  /* stat_register_dumper */
@@ -1552,6 +1559,7 @@ static void stat_new_graph(void *ctx, ir_graph *irg, ir_entity *ent) {
                graph->is_leaf_call  = 0;
                graph->is_recursive  = 0;
                graph->is_chain_call = 0;
+               graph->is_strict     = 1;
                graph->is_analyzed   = 0;
        }
        STAT_LEAVE;
@@ -2186,8 +2194,7 @@ void firm_init_stat(unsigned enable_options)
        if (! (enable_options & FIRMSTAT_ENABLED))
                return;
 
-       status = xmalloc(sizeof(*status));
-       memset(status, 0, sizeof(*status));
+       status = XMALLOCZ(stat_info_t);
 
        /* enable statistics */
        status->stat_options = enable_options & FIRMSTAT_ENABLED ? enable_options : 0;