bescripts: Copy all common node attributes into the constructor variants.
[libfirm] / ir / be / becopystat.c
index 294c372..7063e98 100644 (file)
@@ -22,7 +22,6 @@
  * @brief       Copy node statistics.
  * @author      Daniel Grund
  * @date        19.04.2005
- * @version     $Id$
  */
 #include "config.h"
 
@@ -40,7 +39,6 @@
 #include "beutil.h"
 #include "becopyopt_t.h"
 #include "becopystat.h"
-#include "beirg.h"
 #include "bemodule.h"
 #include "beintlive_t.h"
 
@@ -61,23 +59,23 @@ enum vals_t {
        I_BLOCKS,
 
        /* phi nodes */
-       I_PHI_CNT,                      /* number of phi nodes */
-       I_PHI_ARG_CNT,          /* number of arguments of phis */
-       I_PHI_ARG_SELF,         /* number of arguments of phis being the phi itself */
-       I_PHI_ARG_CONST,        /* number of arguments of phis being consts */
-       I_PHI_ARG_PRED,         /* ... being defined in a cf-pred */
-       I_PHI_ARG_GLOB,         /* ... being defined elsewhere */
+       I_PHI_CNT,          /* number of phi nodes */
+       I_PHI_ARG_CNT,      /* number of arguments of phis */
+       I_PHI_ARG_SELF,     /* number of arguments of phis being the phi itself */
+       I_PHI_ARG_CONST,    /* number of arguments of phis being consts */
+       I_PHI_ARG_PRED,     /* ... being defined in a cf-pred */
+       I_PHI_ARG_GLOB,     /* ... being defined elsewhere */
        I_PHI_ARITY_S,
        I_PHI_ARITY_E    = I_PHI_ARITY_S+MAX_ARITY,
 
        /* copy nodes */
-       I_CPY_CNT,                      /* number of copynodes */
+       I_CPY_CNT,          /* number of copynodes */
 
        /* phi classes */
-       I_CLS_CNT,                      /* number of phi classes */
-       I_CLS_IF_FREE,          /* number of pc having no interference */
-       I_CLS_IF_MAX,           /* number of possible interferences in all classes */
-       I_CLS_IF_CNT,           /* number of actual interferences in all classes */
+       I_CLS_CNT,          /* number of phi classes */
+       I_CLS_IF_FREE,      /* number of pc having no interference */
+       I_CLS_IF_MAX,       /* number of possible interferences in all classes */
+       I_CLS_IF_CNT,       /* number of actual interferences in all classes */
        I_CLS_SIZE_S,
        I_CLS_SIZE_E = I_CLS_SIZE_S+MAX_CLS_SIZE,
        I_CLS_PHIS_S,
@@ -87,20 +85,20 @@ enum vals_t {
        /* all of them are external set */
 
        /* ilp values */
-       I_HEUR_TIME,            /* solving time in milli seconds */
-       I_ILP_TIME,                     /* solving time in milli seconds */
+       I_HEUR_TIME,        /* solving time in milli seconds */
+       I_ILP_TIME,         /* solving time in milli seconds */
        I_ILP_VARS,
        I_ILP_CSTR,
-       I_ILP_ITER,                     /* number of simplex iterations */
+       I_ILP_ITER,         /* number of simplex iterations */
 
        /* copy instructions */
-       I_COPIES_MAX,           /* max possible costs of copies*/
-       I_COPIES_INIT,          /* number of copies in initial allocation */
-       I_COPIES_HEUR,          /* number of copies after heuristic */
-       I_COPIES_5SEC,          /* number of copies after ilp with max n sec */
-       I_COPIES_30SEC,         /* number of copies after ilp with max n sec */
-       I_COPIES_OPT,           /* number of copies after ilp */
-       I_COPIES_IF,            /* number of copies inevitable due to root-arg-interf */
+       I_COPIES_MAX,       /* max possible costs of copies*/
+       I_COPIES_INIT,      /* number of copies in initial allocation */
+       I_COPIES_HEUR,      /* number of copies after heuristic */
+       I_COPIES_5SEC,      /* number of copies after ilp with max n sec */
+       I_COPIES_30SEC,     /* number of copies after ilp with max n sec */
+       I_COPIES_OPT,       /* number of copies after ilp */
+       I_COPIES_IF,        /* number of copies inevitable due to root-arg-interf */
 
        ASIZE
 };
@@ -108,12 +106,12 @@ enum vals_t {
 /**
  * Holds current values. Values are added till next copystat_reset
  */
-int curr_vals[ASIZE];
+static int curr_vals[ASIZE];
 
 static ir_nodeset_t *all_phi_nodes;
 static ir_nodeset_t *all_copy_nodes;
 
-BE_REGISTER_MODULE_CONSTRUCTOR(be_init_copystat);
+BE_REGISTER_MODULE_CONSTRUCTOR(be_init_copystat)
 void be_init_copystat(void)
 {
        FIRM_DBG_REGISTER(dbg, "firm.be.copystat");
@@ -123,7 +121,7 @@ void be_init_copystat(void)
        memset(curr_vals, 0, sizeof(curr_vals));
 }
 
-BE_REGISTER_MODULE_DESTRUCTOR(be_quit_copystat);
+BE_REGISTER_MODULE_DESTRUCTOR(be_quit_copystat)
 void be_quit_copystat(void)
 {
        if (all_phi_nodes != NULL) {
@@ -138,7 +136,7 @@ void be_quit_copystat(void)
 
 /**
  * @return 1 if the block at pos @p pos removed a critical edge
- *                0 else
+ *         0 else
  */
 static inline int was_edge_critical(const ir_node *bl, int pos)
 {
@@ -177,14 +175,6 @@ void copystat_add_heur_costs(int costs)
 {
        curr_vals[I_COPIES_HEUR] += costs;
 }
-void copystat_add_ilp_5_sec_costs(int costs)
-{
-       curr_vals[I_COPIES_5SEC] += costs;
-}
-void copystat_add_ilp_30_sec_costs(int costs)
-{
-       curr_vals[I_COPIES_30SEC] += costs;
-}
 void copystat_add_opt_costs(int costs)
 {
        curr_vals[I_COPIES_OPT] += costs;
@@ -194,8 +184,14 @@ void copystat_add_heur_time(int time)
        curr_vals[I_HEUR_TIME] += time;
 }
 
-#ifdef WITH_ILP
-
+void copystat_add_ilp_5_sec_costs(int costs)
+{
+       curr_vals[I_COPIES_5SEC] += costs;
+}
+void copystat_add_ilp_30_sec_costs(int costs)
+{
+       curr_vals[I_COPIES_30SEC] += costs;
+}
 void copystat_add_ilp_time(int time)
 {
        curr_vals[I_ILP_TIME] += time;
@@ -213,7 +209,22 @@ void copystat_add_ilp_iter(int iters)
        curr_vals[I_ILP_ITER] += iters;
 }
 
-#endif /* WITH_ILP */
+/**
+ * Opens a file named base.ext with the mode mode.
+ */
+static FILE *be_ffopen(const char *base, const char *ext, const char *mode)
+{
+       FILE *out;
+       char buf[1024];
+
+       snprintf(buf, sizeof(buf), "%s.%s", base, ext);
+       buf[sizeof(buf) - 1] = '\0';
+       if (! (out = fopen(buf, mode))) {
+               fprintf(stderr, "Cannot open file %s in mode %s\n", buf, mode);
+               return NULL;
+       }
+       return out;
+}
 
 void copystat_dump(ir_graph *irg)
 {
@@ -225,7 +236,7 @@ void copystat_dump(ir_graph *irg)
        buf[sizeof(buf) - 1] = '\0';
        out = be_ffopen(buf, "stat", "wt");
 
-       fprintf(out, "%d\n", ASIZE);
+       fprintf(out, "%d\n", (int)ASIZE);
        for (i = 0; i < ASIZE; i++) {
 #if 0
                if (i >= I_PHI_ARITY_S && i <= I_PHI_ARITY_E)