On 18/06/11 20:02, Richard Henderson wrote:
> I couldn't find anything terribly tricky about the conversion.
> 
> The existing push_mult pattern would service thumb1 with just
> a tweak or two to the memory predicate and the length.
> 
> The existing emit_multi_reg_push wasn't set up to handle a
> complete switch of registers for unwind info.  I thought about
> trying to merge them, but thought chickened out.
> 
> I havn't cleaned out the code that is now dead in thumb_pushpop.
> I'd been thinking about maybe converting epilogues completely
> to rtl as well, which would allow the function to be deleted
> completely, rather than incrementally.
> 
> I'm unsure what testing should be applied.  I'm currently doing
> arm-elf, which does at least have a thumb1 multilib, and uses
> newlib so I don't have to fiddle with setting up a full native
> cross environment.  What else should be done?  arm-eabi?
> 

Testing this on arm-eabi is essential since this may affect C++ unwind
table generation (I can't see any obvious problems, but you never know).

> This is the only substantive bit of code left that tries to emit
> dwarf2 unwind info while emitting assembly as text.  So I'd like
> to get rid of this as soon as possible...
> 
> 
> r~
> 
> 
> d-thumb-1
> 
> 
>       * config/arm/arm.c (arm_output_function_prologue): Don't call
>       thumb1_output_function_prologue.
>       (arm_expand_prologue): Avoid dead store.
>       (number_of_first_bit_set): Use ctz_hwi.
>       (thumb1_emit_multi_reg_push): New.
>       (thumb1_expand_prologue): Merge thumb1_output_function_prologue
>       to emit the entire prologue as rtl.
>       (thumb1_output_interwork): Split out from
>       thumb1_output_function_prologue.
>       (thumb1_output_function_prologue): Remove.
>       (arm_attr_length_push_multi): Handle thumb1.
>       * config/arm/arm.md (VUNSPEC_THUMB1_INTERWORK): New.
>       (prologue_thumb1_interwork): New.
>       (*push_multi): Allow thumb1; use push_mult_memory_operand.
>       * config/arm/predicates.md (push_mult_memory_operand): New.
> 

OK if the arm-eabi tests are OK.

R.

Reply via email to