This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Make more use of register insv and ext*v expanders
- From: Ian Lance Taylor <iant at google dot com>
- To: Richard Sandiford <richard at codesourcery dot com>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: 26 Jul 2007 21:58:02 -0700
- Subject: Re: Make more use of register insv and ext*v expanders
- References: <87d4ypzxba.fsf@firetop.home>
Richard Sandiford <richard@codesourcery.com> writes:
> gcc/
> * expr.h (store_bit_field): Don't return a value.
> * expmed.c (check_predicate_volatile_ok): New function.
> (store_bit_field_1): New function, extracted from store_bit_field.
> Take a fallback_p argument and return true if the operation succeeded.
> Only use store_fixed_bit_field if fallback_p. Don't recompute
> mode_for_extraction; use op_mode instead. Try forcing memories
> into registers if the insv expander fails.
> (store_bit_field): Use store_bit_field_1 with fallback_p true.
> Don't return a value.
> (convert_extracted_bit_field): New function, extracted from
> store_bit_field.
> (extract_bit_field_1): Likewise. Take a fallback_p argument
> and return NULL if the operation succeeded. Only use
> extract_fixed_bit_field if fallback_p. Only calculate one
> extraction mode. Combine code for extv and extzv. Try forcing
> memories into registers if the ext(z)v expander fails.
> (extract_bit_field): Use extract_bit_field_1 with fallback_p true.
>
> gcc/testsuite/
> * gcc.target/mips/ins-1.c: New test.
This is OK.
Thanks.
Ian