On Tue, Jun 18, 2013 at 3:52 AM, Oleg Endo <oleg.e...@t-online.de> wrote:
> On Mon, 2013-06-17 at 10:41 +0200, Eric Botcazou wrote:
>> > My mistake. It's because arm_legitimize_address cannot re-factor "[r105 +
>> > r165*4 + (-2064)]" into "rx = r105 + (-2064); [rx + r165*4]".  Do you
>> > suggest that this kind of transformation should be done in backend?  I can
>> > think of some disadvantages by doing it in backend:
>> > Different kinds of address expression might be wanted in different phase of
>> > compilation, for example, sometimes GCC wants to force computation of
>> > address expression out of memory access because it cannot CSE array
>> > indexing.  It's difficult to differentiate in backend.
>>
>> It's equally difficult in memory_address_addr_space and it affects all the
>> architectures at once...  You said in the original message that Thumb2 and 
>> ARM
>> modes are already not equally sensitive to it, so it's not unthinkable that
>> some architectures might not want it at all.  Therefore, yes, this should
>> preferably be handled in arm_legitimize_address.
>
> My observation is, that legitimizing addressing modes in the backend by
> looking at one isolated address works, but doesn't give good results.
> In the SH backend there is this a particular case with displacement
> addressing (register + constant).  On SH displacements for byte
> addressing are 0..15, 0..31 for 16 bit words and 0..63 for 32 bit words.
> sh_legitimize_address (or rather sh_find_mov_disp_adjust) uses a fixed
> heuristic to satisfy the displacement constraint and splits out a plus
> insn if needed to adjust the base address.  Of course that fixed
> heuristic doesn't work for some cases and thus sometimes results in
> unnecessary base address adjustments.
> I had the idea of replacing the current (partially defunct) auto-inc-dec
> RTL pass with a more generic addressing mode selection pass:
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56590
>
> Any suggestions/comments/... are highly appreciated.
>
In PR56590, is PR50749 the only one that correlate with auto-inc-dec?
Others seem just problems of wrong addressing mode.

And one point on PR50749, auto-inc-dec depends on ivopt to choose
auto-increment candidate.  Since you disabled ivopt, I bet GCC will
miss lots of auto-increment opportunities.

Thanks.
bin
--
Best Regards.

Reply via email to