From 8d92709b302769474149852204e5f93e1b7cf9fe Mon Sep 17 00:00:00 2001 From: Camil Staps Date: Tue, 29 Nov 2016 19:47:30 +0000 Subject: Fix some negative offsets to A-stack pointer (decrease, load, increase) --- cgopt.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/cgopt.c b/cgopt.c index 8d25d90..1cb802a 100644 --- a/cgopt.c +++ b/cgopt.c @@ -921,12 +921,6 @@ void optimize_stack_access (struct basic_block *block,int *a_offset_p,int *b_off { # ifdef THUMB2 int offset=instruction->instruction_parameters[1].parameter_offset+=fix_a_offset; - if (offset < -255) - { - insert_decrement_a_stack_pointer (instruction,-offset); - instruction->instruction_parameters[1].parameter_offset*=-1; - instruction->instruction_parameters[1].parameter_type=P_INDIRECT_WITH_UPDATE; - } # endif previous_a_stack_parameter=&instruction->instruction_parameters[1]; previous_a_stack_parameter_icode=IMOVE; @@ -938,8 +932,11 @@ void optimize_stack_access (struct basic_block *block,int *a_offset_p,int *b_off if (offset < -255) { insert_decrement_a_stack_pointer (instruction,-offset); - instruction->instruction_parameters[0].parameter_offset*=-1; - instruction->instruction_parameters[0].parameter_type=P_INDIRECT_WITH_UPDATE; + instruction->instruction_parameters[0].parameter_offset=0; + if (instruction->instruction_next) + insert_decrement_a_stack_pointer (instruction->instruction_next,-offset); + else + i_lea_id_r (-offset,A_STACK_POINTER,A_STACK_POINTER); } # endif previous_a_stack_parameter=&instruction->instruction_parameters[0]; -- cgit v1.2.3