Commit 4ef40fb7 authored by Matthias Braun's avatar Matthias Braun
Browse files

put execfreq in block-attrs instead of hashmap

The hashmap used to point to blocks which have already been deleted.
parent b2a8f430
......@@ -59,30 +59,16 @@
#define MAX_INT_FREQ 1000000
typedef struct freq_t {
double freq;
} freq_t;
static ir_nodehashmap_t freq_map;
static struct obstack obst;
static hook_entry_t hook;
static hook_entry_t hook;
double get_block_execfreq(const ir_node *block)
{
const freq_t *freq = ir_nodehashmap_get(freq_t, &freq_map, block);
if (freq == NULL)
return 0.0;
return freq->freq;
return block->attr.block.execfreq;
}
void set_block_execfreq(ir_node *block, double newfreq)
{
freq_t *freq = ir_nodehashmap_get(freq_t, &freq_map, block);
if (freq == NULL) {
freq = OALLOC(&obst, freq_t);
ir_nodehashmap_insert(&freq_map, block, freq);
}
freq->freq = newfreq;
block->attr.block.execfreq = newfreq;
}
static void exec_freq_node_info(void *ctx, FILE *f, const ir_node *irn)
......@@ -90,16 +76,13 @@ static void exec_freq_node_info(void *ctx, FILE *f, const ir_node *irn)
(void)ctx;
if (!is_Block(irn))
return;
const freq_t *freq = ir_nodehashmap_get(freq_t, &freq_map, irn);
if (freq != NULL)
fprintf(f, "execution frequency: %g\n", get_block_execfreq(irn));
double freq = get_block_execfreq(irn);
if (freq != 0.0)
fprintf(f, "execution frequency: %g\n", freq);
}
void init_execfreq(void)
{
ir_nodehashmap_init(&freq_map);
obstack_init(&obst);
memset(&hook, 0, sizeof(hook));
hook.hook._hook_node_info = exec_freq_node_info;
register_hook(hook_node_info, &hook);
......@@ -108,9 +91,6 @@ void init_execfreq(void)
void exit_execfreq(void)
{
unregister_hook(hook_node_info, &hook);
obstack_free(&obst, NULL);
ir_nodehashmap_destroy(&freq_map);
}
......
......@@ -209,6 +209,7 @@ typedef struct block_attr {
bitset_t *backedge; /**< Bitfield n set to true if pred n is backedge.*/
ir_entity *entity; /**< entitiy representing this block */
ir_node *phis; /**< The list of Phi nodes in this block. */
double execfreq; /**< block execution frequency */
} block_attr;
/** Cond attributes. */
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment