Make more use of register insv and ext*v expanders

Adam Nemet anemet@caviumnetworks.com
Wed Jul 18 18:48:00 GMT 2007


Richard Sandiford <richard@codesourcery.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).

Adam



More information about the Gcc-patches mailing list