X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Farm%2Fbearch_arm.c;h=2ba456b8f860373d5dff42375b9944e947c09886;hb=abba32f7ea7e0362d2fbbad9b18b39bbd5e2b57d;hp=d7d3bd5339ac68a7d2367715f16c190d69a382e2;hpb=de3a2dd34bde1c1128f6afb0643b8fac13d38d76;p=libfirm diff --git a/ir/be/arm/bearch_arm.c b/ir/be/arm/bearch_arm.c index d7d3bd533..2ba456b8f 100644 --- a/ir/be/arm/bearch_arm.c +++ b/ir/be/arm/bearch_arm.c @@ -231,7 +231,7 @@ static entity *arm_get_frame_entity(const void *self, const ir_node *irn) { return NULL; } -static void arm_set_frame_entity(const void *self, const ir_node *irn, entity *ent) { +static void arm_set_frame_entity(const void *self, ir_node *irn, entity *ent) { /* TODO: set the entity assigned to the frame */ } @@ -243,6 +243,10 @@ static void arm_set_stack_bias(const void *self, ir_node *irn, int bias) { /* TODO: correct offset if irn accesses the stack */ } +static int arm_get_sp_bias(const void *self, const ir_node *irn) { + return 0; +} + /* fill register allocator interface */ static const arch_irn_ops_if_t arm_irn_ops_if = { @@ -254,6 +258,7 @@ static const arch_irn_ops_if_t arm_irn_ops_if = { arm_get_frame_entity, arm_set_frame_entity, arm_set_stack_bias, + arm_get_sp_bias, NULL, /* get_inverse */ NULL, /* get_op_estimated_cost */ NULL, /* possible_memory_operand */ @@ -936,7 +941,8 @@ static void arm_abi_epilogue(void *self, ir_node *bl, ir_node **mem, pmap *reg_m // TODO: Activate Omit fp in epilogue if(env->flags.try_omit_fp) { - curr_sp = be_new_IncSP(env->isa->sp, env->irg, bl, curr_sp, *mem, BE_STACK_FRAME_SIZE, be_stack_dir_shrink); + curr_sp = be_new_IncSP(env->isa->sp, env->irg, bl, curr_sp, BE_STACK_FRAME_SIZE_SHRINK); + add_irn_dep(curr_sp, *mem); curr_lr = be_new_CopyKeep_single(&arm_reg_classes[CLASS_arm_gp], env->irg, bl, curr_lr, curr_sp, get_irn_mode(curr_lr)); be_node_set_reg_class(curr_lr, 1, &arm_reg_classes[CLASS_arm_gp]); @@ -1054,7 +1060,7 @@ list_sched_selector_t arm_sched_selector; /** * Returns the reg_pressure scheduler with to_appear_in_schedule() over\loaded */ -static const list_sched_selector_t *arm_get_list_sched_selector(const void *self) { +static const list_sched_selector_t *arm_get_list_sched_selector(const void *self, list_sched_selector_t *selector) { memcpy(&arm_sched_selector, reg_pressure_selector, sizeof(list_sched_selector_t)); arm_sched_selector.to_appear_in_schedule = arm_to_appear_in_schedule; return &arm_sched_selector;