X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbeabi.c;h=75e43ff92b037d21f511e830dface62a76232871;hb=64723d1bd8ace74ca5f0018db8655f2a1f443532;hp=b67a4c38d8c0e3253c702283607d7d01d5ba6e43;hpb=a38e2989a02963136e46547f762d96bca7229d94;p=libfirm diff --git a/ir/be/beabi.c b/ir/be/beabi.c index b67a4c38d..75e43ff92 100644 --- a/ir/be/beabi.c +++ b/ir/be/beabi.c @@ -1233,8 +1233,6 @@ static ir_type *compute_arg_type(be_abi_irg_t *env, be_abi_call_t *call, arg->stack_ent = copy_entity_own(val_ent, res); set_entity_link(val_ent, arg->stack_ent); set_entity_link(arg->stack_ent, NULL); - /* must be automatic to set a fixed layout */ - set_entity_allocation(arg->stack_ent, allocation_automatic); } else { /* create a new entity */ snprintf(buf, sizeof(buf), "param_%d", i); @@ -1507,7 +1505,6 @@ static ir_entity *get_argument_entity(ir_entity *ent, lower_frame_sels_env_t *ct argument_ent = copy_entity_own(ent, frame_tp); /* must be automatic to set a fixed layout */ - set_entity_allocation(argument_ent, allocation_automatic); set_entity_offset(argument_ent, offset); offset += get_type_size_bytes(tp); @@ -1667,7 +1664,6 @@ static void fix_address_of_parameter_access(be_abi_irg_t *env, ent_pos_pair *val set_entity_owner(ent, frame_tp); add_class_member(frame_tp, ent); /* must be automatic to set a fixed layout */ - set_entity_allocation(ent, allocation_automatic); set_entity_offset(ent, offset); offset += get_type_size_bytes(tp); } @@ -1759,7 +1755,9 @@ static void fix_outer_variable_access(be_abi_irg_t *env, if (! is_method_entity(ent)) continue; - if (get_entity_peculiarity(ent) == peculiarity_description) + + irg = get_entity_irg(ent); + if (irg == NULL) continue; /* @@ -1768,7 +1766,6 @@ static void fix_outer_variable_access(be_abi_irg_t *env, */ ctx->static_link_pos = 0; - irg = get_entity_irg(ent); irg_walk_graph(irg, NULL, update_outer_frame_sels, ctx); } } @@ -2114,8 +2111,7 @@ static ir_entity *create_trampoline(be_main_env_t *be, ir_entity *method) ir_type *parent = be->pic_trampolines_type; ir_entity *ent = new_entity(parent, old_id, type); set_entity_ld_ident(ent, id); - set_entity_visibility(ent, visibility_local); - set_entity_variability(ent, variability_uninitialized); + set_entity_visibility(ent, ir_visibility_local); return ent; } @@ -2143,8 +2139,7 @@ static ir_entity *create_pic_symbol(be_main_env_t *be, ir_entity *entity) ir_type *parent = be->pic_symbols_type; ir_entity *ent = new_entity(parent, old_id, type); set_entity_ld_ident(ent, id); - set_entity_visibility(ent, visibility_local); - set_entity_variability(ent, variability_uninitialized); + set_entity_visibility(ent, ir_visibility_local); return ent; } @@ -2167,7 +2162,7 @@ static ir_entity *get_pic_symbol(be_main_env_t *env, ir_entity *entity) */ static int can_address_relative(ir_entity *entity) { - return get_entity_visibility(entity) != visibility_external_allocated; + return get_entity_visibility(entity) != ir_visibility_external; } /** patches SymConsts to work in position independent code */ @@ -2177,7 +2172,6 @@ static void fix_pic_symconsts(ir_node *node, void *data) ir_node *pic_base; ir_node *add; ir_node *block; - ir_node *unknown; ir_mode *mode; ir_node *load; ir_node *load_res; @@ -2219,7 +2213,6 @@ static void fix_pic_symconsts(ir_node *node, void *data) /* everything else is accessed relative to EIP */ mode = get_irn_mode(pred); - unknown = new_r_Unknown(irg, mode); pic_base = arch_code_generator_get_pic_base(env->birg->cg); /* all ok now for locally constructed stuff */ @@ -2259,7 +2252,6 @@ be_abi_irg_t *be_abi_introduce(be_irg_t *birg) pmap_entry *ent; ir_node *dummy; - optimization_state_t state; unsigned *limited_bitset; arch_register_req_t *sp_req; @@ -2293,12 +2285,7 @@ be_abi_irg_t *be_abi_introduce(be_irg_t *birg) sp_req->type |= arch_register_req_type_ignore; } - /* Beware: later we replace this node by the real one, ensure it is not CSE'd - to another Unknown or the stack pointer gets used */ - save_optimization_state(&state); - set_optimize(0); - env->init_sp = dummy = new_r_Unknown(irg, env->arch_env->sp->reg_class->mode); - restore_optimization_state(&state); + env->init_sp = dummy = new_r_Dummy(irg, env->arch_env->sp->reg_class->mode); env->calls = NEW_ARR_F(ir_node*, 0); @@ -2639,10 +2626,9 @@ void be_abi_fix_stack_bias(be_abi_irg_t *env) frame_tp = get_irg_frame_type(irg); for (i = get_class_n_members(frame_tp) - 1; i >= 0; --i) { ir_entity *ent = get_class_member(frame_tp, i); + ir_graph *irg = get_entity_irg(ent); - if (is_method_entity(ent) && get_entity_peculiarity(ent) != peculiarity_description) { - ir_graph *irg = get_entity_irg(ent); - + if (irg != NULL) { irg_walk_graph(irg, NULL, lower_outer_frame_sels, env); } }