/** Returns the value of "key". */
FIRM_API void * pmap_get(pmap *map, const void * key);
+#define pmap_get(type, map, key) ((type*)pmap_get(map, key))
+
/** Return number of elements in the map */
FIRM_API size_t pmap_count(pmap *map);
}
-void * pmap_get(pmap *map, const void *key)
+void * (pmap_get)(pmap *map, const void *key)
{
pmap_entry * entry = pmap_find(map, key);
return entry == NULL ? NULL : entry->value;
ir_cdep *find_cdep(const ir_node *block)
{
assert(is_Block(block));
- return (ir_cdep*) pmap_get(cdep_data->cdep_map, block);
+ return pmap_get(ir_cdep, cdep_data->cdep_map, block);
}
void exchange_cdep(ir_node *old, const ir_node *nw)
{
ir_graph *irg = get_irn_irg(block);
ir_dom_front_info_t *info = &irg->domfront;
- return (ir_node**)pmap_get(info->df_map, block);
+ return pmap_get(ir_node*, info->df_map, block);
}
*/
static ir_type *clone_type_and_cache(ir_type *tp)
{
- ir_type *res = (ir_type*)pmap_get(mtp_map, tp);
+ ir_type *res = pmap_get(ir_type, mtp_map, tp);
if (res == NULL) {
res = clone_type_method(tp);
ir_type *res;
assert(get_irg_typeinfo_state(get_irn_irg(n)) != ir_typeinfo_none);
- res = (ir_type*)pmap_get(type_node_map, n);
+ res = pmap_get(ir_type, type_node_map, n);
if (res == NULL) {
res = initial_type;
}
if (!entity_access_map) entity_access_map = pmap_create();
if (pmap_contains(entity_access_map, ent)) {
- res = (ir_node **) pmap_get(entity_access_map, ent);
+ res = pmap_get(ir_node*, entity_access_map, ent);
} else {
res = NEW_ARR_F(ir_node *, 0);
pmap_insert(entity_access_map, ent, (void *)res);
if (!entity_reference_map) entity_reference_map = pmap_create();
if (pmap_contains(entity_reference_map, ent)) {
- res = (ir_node **) pmap_get(entity_reference_map, ent);
+ res = pmap_get(ir_node*, entity_reference_map, ent);
} else {
res = NEW_ARR_F(ir_node *, 0);
pmap_insert(entity_reference_map, ent, (void *)res);
if (!type_alloc_map) type_alloc_map = pmap_create();
if (pmap_contains(type_alloc_map, tp)) {
- res = (ir_node **) pmap_get(type_alloc_map, tp);
+ res = pmap_get(ir_node*, type_alloc_map, tp);
} else {
res = NEW_ARR_F(ir_node *, 0);
pmap_insert(type_alloc_map, tp, (void *)res);
if (!type_cast_map) type_cast_map = pmap_create();
if (pmap_contains(type_cast_map, tp)) {
- res = (ir_node **) pmap_get(type_cast_map, tp);
+ res = pmap_get(ir_node*, type_cast_map, tp);
} else {
res = NEW_ARR_F(ir_node *, 0);
pmap_insert(type_cast_map, tp, (void *)res);
if (!type_pointertype_map) type_pointertype_map = pmap_create();
if (pmap_contains(type_pointertype_map, tp)) {
- res = (ir_type **) pmap_get(type_pointertype_map, tp);
+ res = pmap_get(ir_type*, type_pointertype_map, tp);
} else {
res = NEW_ARR_F(ir_type *, 0);
pmap_insert(type_pointertype_map, tp, (void *)res);
if (!type_arraytype_map) type_arraytype_map = pmap_create();
if (pmap_contains(type_arraytype_map, tp)) {
- res = (ir_type **) pmap_get(type_arraytype_map, tp);
+ res = pmap_get(ir_type*, type_arraytype_map, tp);
} else {
res = NEW_ARR_F(ir_type *, 0);
pmap_insert(type_arraytype_map, tp, (void *)res);
}
be_transform_node(stack_pred);
- stack = (ir_node*)pmap_get(node_to_stack, stack_pred);
+ stack = pmap_get(ir_node, node_to_stack, stack_pred);
if (stack == NULL) {
return get_stack_pointer_for(stack_pred);
}
static ir_node *be_abi_reg_map_get(pmap *map, const arch_register_t *reg)
{
- return (ir_node*)pmap_get(map, reg);
+ return pmap_get(ir_node, map, reg);
}
static void be_abi_reg_map_set(pmap *map, const arch_register_t* reg,
const arch_env_t *arch_env = be_get_irg_arch_env(irg);
dbg_info *dbgi;
pmap *reg_map = pmap_create();
- ir_node *keep = (ir_node*)pmap_get(env->keep_map, bl);
+ ir_node *keep = pmap_get(ir_node, env->keep_map, bl);
size_t in_max;
ir_node *ret;
int i, n;
param_type = get_method_param_type(method_type, nr);
if (arg->in_reg) {
- repl = (ir_node*)pmap_get(env->regs, arg->reg);
+ repl = pmap_get(ir_node, env->regs, arg->reg);
} else if (arg->on_stack) {
ir_node *addr = be_new_FrameAddr(sp->reg_class, start_bl, frame_pointer, arg->stack_ent);
*/
static ir_entity *get_trampoline(be_main_env_t *env, ir_entity *method)
{
- ir_entity *result = (ir_entity*)pmap_get(env->ent_trampoline_map, method);
+ ir_entity *result = pmap_get(ir_entity, env->ent_trampoline_map, method);
if (result == NULL) {
result = create_trampoline(env, method);
pmap_insert(env->ent_trampoline_map, method, result);
static ir_entity *get_pic_symbol(be_main_env_t *env, ir_entity *entity)
{
- ir_entity *result = (ir_entity*)pmap_get(env->ent_pic_symbol_map, entity);
+ ir_entity *result = pmap_get(ir_entity, env->ent_pic_symbol_map, entity);
if (result == NULL) {
result = create_pic_symbol(env, entity);
pmap_insert(env->ent_pic_symbol_map, entity, result);
DBG((dbg, LEVEL_2, "\tsetting %+F to register %s\n", irn, reg->name));
}
- irn = (ir_node*)pmap_get(partners, alloc_nodes[i]);
+ irn = pmap_get(ir_node, partners, alloc_nodes[i]);
if (irn != NULL) {
arch_set_irn_register(irn, reg);
(void) pset_hinsert_ptr(alloc_env->pre_colored, irn);
/* Set up the border list in the block info */
head = OALLOC(env->obst, struct list_head);
INIT_LIST_HEAD(head);
- assert(pmap_get(env->border_heads, block) == NULL);
+ assert(pmap_get(struct list_head, env->border_heads, block) == NULL);
pmap_insert(env->border_heads, block, head);
/*
static void layout(const draw_chordal_env_t *env, ir_node *bl, int x)
{
const draw_chordal_opts_t *opts = env->opts;
- struct block_dims *dims = (struct block_dims*)pmap_get(env->block_dims, bl);
+ struct block_dims *dims = pmap_get(struct block_dims, env->block_dims, bl);
rect_t *rect = &dims->subtree_box;
int h_space = 0;
int v_space = 0;
rect->x = x;
dominates_for_each(bl, sub) {
- struct block_dims *bl_dim = (struct block_dims*)pmap_get(env->block_dims, sub);
+ struct block_dims *bl_dim = pmap_get(struct block_dims, env->block_dims, sub);
layout(env, sub, rect->x + rect->w);
static void set_y(const draw_chordal_env_t *env, ir_node *bl, int up)
{
const draw_chordal_opts_t *opts = env->opts;
- struct block_dims *dims = (struct block_dims*)pmap_get(env->block_dims, bl);
+ struct block_dims *dims = pmap_get(struct block_dims, env->block_dims, bl);
int max_height = dims->subtree_box.h - dims->box.h - opts->v_gap;
ir_node *sub;
dominates_for_each(bl, sub) {
- struct block_dims *bl_dim = (struct block_dims*)pmap_get(env->block_dims, sub);
+ struct block_dims *bl_dim = pmap_get(struct block_dims, env->block_dims, sub);
int height_diff = max_height - bl_dim->subtree_box.h;
set_y(env, sub, up + height_diff);
struct list_head *head = get_block_border_head(env->chordal_env, bl);
ir_node *dom = get_Block_idom(bl);
const draw_chordal_opts_t *opts = env->opts;
- struct block_dims *dims = (struct block_dims*)pmap_get(env->block_dims, bl);
+ struct block_dims *dims = pmap_get(struct block_dims, env->block_dims, bl);
char buf[64];
border_t *b;
int idx;
}
if (dom) {
- struct block_dims *dom_dims = (struct block_dims*)pmap_get(env->block_dims, dom);
+ struct block_dims *dom_dims = pmap_get(struct block_dims, env->block_dims, dom);
be_lv_foreach(lv, bl, be_lv_state_in, idx) {
ir_node *irn = be_lv_get_irn(lv, bl, idx);
irg_block_walk_graph(chordal_env->irg, block_dims_walker, NULL, &env);
layout(&env, start_block, opts->x_margin);
set_y(&env, start_block, opts->y_margin);
- start_dims = (struct block_dims*)pmap_get(env.block_dims, start_block);
+ start_dims = pmap_get(struct block_dims, env.block_dims, start_block);
draw(&env, &start_dims->subtree_box);
pmap_destroy(env.block_dims);
};
static inline struct list_head *_get_block_border_head(const be_chordal_env_t *inf, ir_node *bl) {
- return (list_head*)pmap_get(inf->border_heads, bl);
+ return pmap_get(list_head, inf->border_heads, bl);
}
#define get_block_border_head(info, bl) _get_block_border_head(info, bl)
static unsigned insert_file(const char *filename)
{
unsigned num;
- void *entry = pmap_get(env.file_map, filename);
+ void *entry = pmap_get(void, env.file_map, filename);
if (entry != NULL) {
return PTR_TO_INT(entry);
}
if (entity != NULL) {
be_gas_emit_entity(entity);
} else {
- void *nr_val = pmap_get(block_numbers, block);
+ void *nr_val = pmap_get(void, block_numbers, block);
int nr;
if (nr_val == NULL) {
nr = next_block_nr++;
ir_entity *ia32_create_float_const_entity(ia32_isa_t *isa, ir_tarval *tv,
ident *name)
{
- ir_entity *res = (ir_entity*)pmap_get(isa->tv_ent, tv);
+ ir_entity *res = pmap_get(ir_entity, isa->tv_ent, tv);
ir_initializer_t *initializer;
ir_mode *mode;
ir_type *tp;
*/
static blk_state *x87_get_bl_state(x87_simulator *sim, ir_node *block)
{
- blk_state *res = (blk_state*)pmap_get(sim->blk_states, block);
+ blk_state *res = pmap_get(blk_state, sim->blk_states, block);
if (res == NULL) {
res = OALLOC(&sim->obst, blk_state);
{
const arch_env_t *arch_env = be_get_irg_arch_env(current_ir_graph);
sparc_isa_t *isa = (sparc_isa_t*) arch_env;
- ir_entity *entity = (ir_entity*) pmap_get(isa->constants, tv);
+ ir_entity *entity = pmap_get(ir_entity, isa->constants, tv);
ir_initializer_t *initializer;
ir_mode *mode;
ir_type *type;
}
be_transform_node(stack_pred);
- stack = (ir_node*)pmap_get(node_to_stack, stack_pred);
+ stack = pmap_get(ir_node, node_to_stack, stack_pred);
if (stack == NULL) {
return get_stack_pointer_for(stack_pred);
}
return NULL;
if (pmap_contains(irdump_link_map, n))
- res = pmap_get(irdump_link_map, n);
+ res = pmap_get(void, irdump_link_map, n);
return res;
}
return NULL;
if (pmap_contains(irdump_link_map, irg))
- res = pmap_get(irdump_link_map, irg);
+ res = pmap_get(void, irdump_link_map, irg);
return res;
}
return res;
}
-typedef ir_node* (*read_node_func)(read_env_t *env);
+typedef ir_node* read_node_func(read_env_t *env);
static pmap *node_readers;
-static void register_node_reader(ident *ident, read_node_func func)
+static void register_node_reader(ident *ident, read_node_func* func)
{
pmap_insert(node_readers, ident, (void*)func);
}
static ir_node *read_node(read_env_t *env)
{
- ident *id = read_symbol(env);
- read_node_func func = (read_node_func)pmap_get(node_readers, id);
- long nr = read_long(env);
- ir_node *res;
+ ident *id = read_symbol(env);
+ read_node_func *func = pmap_get(read_node_func, node_readers, id);
+ long nr = read_long(env);
+ ir_node *res;
if (func == NULL) {
parse_error(env, "Unknown nodetype '%s'", get_id_str(id));
skip_to(env, '\n');
branch = skip_Tuple(branch);
if (is_Bad(branch))
continue;
- former_dest = (ir_node*)pmap_get(branch_nodes, branch);
+ former_dest = pmap_get(ir_node, branch_nodes, branch);
ASSERT_AND_RET_DBG(former_dest==NULL || is_unknown_jump(skip_Proj(branch)),
"Multiple users on mode_X node", 0,
ir_printf("node %+F\n", branch);
if (is_Proj(branch)) {
branch = skip_Proj(branch);
}
- former_branch = (ir_node*)pmap_get(branch_nodes, branch_block);
+ former_branch = pmap_get(ir_node, branch_nodes, branch_block);
ASSERT_AND_RET_DBG(former_branch == NULL || former_branch == branch,
"Multiple branching nodes in a block", 0,
static int verify_block_branch(const ir_node *block, check_cfg_env_t *env)
{
- ir_node *branch = (ir_node*)pmap_get(env->branch_nodes, block);
+ ir_node *branch = pmap_get(ir_node, env->branch_nodes, block);
ASSERT_AND_RET_DBG(branch != NULL
|| ir_nodeset_contains(&env->kept_nodes, block)
|| block == get_irg_end_block(get_irn_irg(block)),
snprintf(buf, sizeof(buf), "__%s%s2", name, gcc_machmode);
id = new_id_from_str(buf);
- entity = (ir_entity*)pmap_get(entities, id);
+ entity = pmap_get(ir_entity, entities, id);
if (entity == NULL) {
entity = create_compilerlib_entity(id, mtp);
pmap_insert(entities, id, entity);
*/
static ir_type *get_pointer_type(ir_type *dest_type)
{
- ir_type *res = (ir_type*)pmap_get(pointer_types, dest_type);
+ ir_type *res = pmap_get(ir_type, pointer_types, dest_type);
if (res == NULL) {
res = new_type_pointer(dest_type);
pmap_insert(pointer_types, dest_type, res);
if (!is_Method_type(mtp))
return mtp;
- lowered = (ir_type*)pmap_get(lowered_mtps, mtp);
+ lowered = pmap_get(ir_type, lowered_mtps, mtp);
if (lowered != NULL)
return lowered;
wlk_env *env)
{
/* use a map the check if we already create such an entity */
- ir_entity *ent = (ir_entity*)pmap_get(env->dummy_map, tp);
+ ir_entity *ent = pmap_get(ir_entity, env->dummy_map, tp);
if (ent == NULL) {
ir_type *ft = get_irg_frame_type(irg);
ident *dummy_id = id_unique("dummy.%u");
size_t n_res;
bool must_be_lowered;
- res = (ir_type*)pmap_get(lowered_type, mtp);
+ res = pmap_get(ir_type, lowered_type, mtp);
if (res != NULL)
return res;
if (type_visited(mtp))
size_t n_results;
bool must_be_lowered;
- res = (ir_type*)pmap_get(lowered_builtin_type_high, mtp);
+ res = pmap_get(ir_type, lowered_builtin_type_high, mtp);
if (res != NULL)
return res;
size_t n_results;
bool must_be_lowered;
- res = (ir_type*)pmap_get(lowered_builtin_type_low, mtp);
+ res = pmap_get(ir_type, lowered_builtin_type_low, mtp);
if (res != NULL)
return res;
return;
ent = get_SymConst_entity(symconst);
- r = (const i_call_record*)pmap_get(wenv->c_map, ent);
+ r = pmap_get(i_call_record const, wenv->c_map, ent);
if (r != NULL) {
wenv->nr_of_intrinsics += r->i_mapper(node, r->ctx) ? 1 : 0;
size_t n_param;
size_t n_res;
- res = (ir_type*)pmap_get(lowered_type, mtp);
+ res = pmap_get(ir_type, lowered_type, mtp);
if (res != NULL)
return res;
continue;
}
- calleee = (ir_graph*)pmap_get(copied_graphs, callee);
+ calleee = pmap_get(ir_graph, copied_graphs, callee);
if (calleee != NULL) {
/*
* Remap callee if we have a copy.
continue;
}
- calleee = (ir_graph*)pmap_get(copied_graphs, callee);
+ calleee = pmap_get(ir_graph, copied_graphs, callee);
if (calleee != NULL) {
int benefice = curr_call->benefice;
/*