#define ValueType ir_edge_t*
#define NullValue NULL
#define DeletedValue ((ir_edge_t*)-1)
-#define Hash(this,key) (HASH_PTR(key->src) ^ key->pos)
+#define Hash(this,key) (HASH_PTR(key->src) ^ (key->pos * 40013))
#define KeysEqual(this,key1,key2) ((key1->src) == (key2->src) && (key1->pos == key2->pos))
#define SetRangeEmpty(ptr,size) memset(ptr, 0, (size) * sizeof((ptr)[0]))
void edges_init_graph_kind(ir_graph *irg, ir_edge_kind_t kind) {
if (edges_activated_kind(irg, kind)) {
irg_edge_info_t *info = _get_irg_edge_info(irg, kind);
- size_t amount = 32;
+ size_t amount = irg->estimated_node_count * 2;
edges_used = 1;
if(info->allocated) {
}
}
-/* Walks only over Block nodes in the graph. Has it's own visited
- flag, so that it can be interleaved with the other walker. */
void irg_block_edges_walk(ir_node *node,
irg_walk_func *pre, irg_walk_func *post,
void *env) {
assert(edges_activated(current_ir_graph));
assert(is_Block(node));
+ set_using_block_visited(current_ir_graph);
+
inc_irg_block_visited(current_ir_graph);
irg_block_edges_walk2(node, pre, post, env);
+
+ clear_using_block_visited(current_ir_graph);
}