This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Make more use of register insv and ext*v expanders


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]