This is the mail archive of the
mailing list for the GCC project.
Re: Make more use of register insv and ext*v expanders
- From: Adam Nemet <anemet at caviumnetworks dot com>
- To: gcc-patches at gcc dot gnu dot org
- Cc: richard at codesourcery dot com
- Date: Wed, 18 Jul 2007 11:22:19 -0700
- Subject: Re: Make more use of register insv and ext*v expanders
- References: <firstname.lastname@example.org>
Richard Sandiford <email@example.com> writes:
> Unfortunately, on ports like MIPS, the structure operand isn't enough
> on its own to determine whether a given memory operation is supported.
> The expanders check for various combinations of operands and FAIL on
> invalid ones.
Yes, we also have a similar change in our tree that I was meaning to
prepare for submission. Thanks for working on this!
> If an expander FAILs on invalid memory operations, store_bit_field
> and extract_bit_field just carry on as though no expander existed.
> On ports that have both register and memory operations, it would be
> better to try a register operation instead, just as if the memory
> operand had been rejected outright.
I haven't applied the patch and the diff is kind of hard to read so
let me just ask. Once we fall back on the register case do you
reverse the effect of advancing the memory operand to the first byte
via adjust_address? We really want to fetch the original aligned
whole word on SLOW_BYTE_ACCESS targets (MIPS).