#include "irprintf.h"
#include "irgwalk.h"
#include "irhooks.h"
+#include "execfreq.h"
#include "dbginfo_t.h"
#include "firmstat_t.h"
#include "irtools.h"
#include "pset.h"
+#include "statev.h"
#include "bearch_t.h"
#include "bestat.h"
static int cmp_stat_data(const void *a, const void *b, size_t len) {
const be_stat_irg_t *p1 = a;
const be_stat_irg_t *p2 = b;
+ (void) len;
return p1->irg != p2->irg;
}
for (i = 0; i < n; i++) {
const arch_register_class_t *cls = arch_isa_get_reg_class(aenv->isa, i);
- ir_node *irn;
- pset *live_nodes = pset_new_ptr(64);
- int max_live;
+ ir_node *irn;
+ ir_nodeset_t live_nodes;
+ int max_live;
- live_nodes = be_liveness_end_of_block(env->lv, aenv, cls, block, live_nodes);
- max_live = pset_count(live_nodes);
+ ir_nodeset_init(&live_nodes);
+ be_liveness_end_of_block(env->lv, aenv, cls, block, &live_nodes);
+ max_live = ir_nodeset_size(&live_nodes);
sched_foreach_reverse(block, irn) {
int cnt;
if(is_Phi(irn))
break;
- live_nodes = be_liveness_transfer(aenv, cls, irn, live_nodes);
- cnt = pset_count(live_nodes);
+ be_liveness_transfer(aenv, cls, irn, &live_nodes);
+ cnt = ir_nodeset_size(&live_nodes);
max_live = cnt < max_live ? max_live : cnt;
}
stat_be_block_regpressure(irg, block, max_live, cls->name);
+ ir_nodeset_destroy(&live_nodes);
}
}
#ifdef FIRM_STATISTICS
-const char *be_stat_tags[STAT_TAG_LAST];
-FILE *be_stat_file = NULL;
-
-void be_init_stat_file(const char *stat_file_name, const char *sourcefilename)
-{
- static char time_str[32];
-
- assert(be_stat_file == NULL);
-
- /* if we want to do some statistics, push the environment. */
- if (strlen(stat_file_name) == 0)
- return;
-
- be_stat_file = fopen(stat_file_name, "at");
- if (be_stat_file == NULL) {
- fprintf(stderr, "Warning couldn't open statfile '%s'\n", stat_file_name);
- return;
- }
-
- /* initialize the statistics tags */
- ir_snprintf(time_str, sizeof(time_str),"%u", time(NULL));
-
- be_stat_tags[STAT_TAG_FILE] = sourcefilename;
- be_stat_tags[STAT_TAG_TIME] = time_str;
- be_stat_tags[STAT_TAG_IRG] = "<all>";
- be_stat_tags[STAT_TAG_CLS] = "<all>";
-
- be_stat_ev_push(be_stat_tags, STAT_TAG_LAST, be_stat_file);
-}
-
-void be_close_stat_file()
-{
- be_stat_ev_pop();
- if (be_stat_file != NULL) {
- fclose(be_stat_file);
- be_stat_file = NULL;
- }
-}
#else /* FIRM_STATISTICS */
void (be_stat_init_irg)(const arch_env_t *arch_env, ir_graph *irg) {}
void (be_do_stat_nodes)(ir_graph *irg, const char *phase) {}
void (be_do_stat_reg_pressure)(be_irg_t *birg) {}
-void (be_do_stat_sched_ready)(ir_node *block, nodeset *ready_set) {}
+void (be_do_stat_sched_ready)(ir_node *block, ir_nodeset_t *ready_set) {}
void (be_do_stat_perm)(const char *class_name, int n_regs, ir_node *perm, ir_node *block, int n, int real_size) {}
#endif /* FIRM_STATISTICS */