Patch Fix PR1936,24894,31644,31786 AVR target

Andrew Hutchinson andrewhutchinson@cox.net
Mon Feb 18 20:22:00 GMT 2008


I would not recommend splitting the moves until the full impact has been 
looked  at.

There are some movhi (and larger) patterns that cannot be replicated by 
single byte moves.
For example:
If a base pointer needs more than 64 bytes displacement it will force 
use of inline addition and subtraction. (The subtraction is sometimes 
removed by mov pattern)
 If you split pattern, then that will create pointer addition and 
subtraction per byte of the move. From what I have seen, this is too 
late for gcc to further optimise

There may be other situations where the split does not work well or 
causes regression Volatiles, overlaps and the like are possible areas to 
look at.

In summary, the principle is fine but it needs careful testing. I 
suspect we will need to fix some other problems  before we can make this 
split effective.


FWIW I have created splitters for logical operations. These work without 
too much problem.
However, even here I have come across issues that cause simplistic 
splitter to be "imperfect". For example, creating ORI R16,#0. All 
fixable, but not quite as simple as may first appear.
At this very moment I'm chasing  down the abilities of gcc to optimise 
code RTL - post split. This is very relevant to the gains that might be 
expected.


Andy








Weddington, Eric wrote:
>  
>
>   
>> -----Original Message-----
>> From: Andrew Hutchinson [mailto:andrewhutchinson@cox.net] 
>> Sent: Sunday, February 17, 2008 11:59 AM
>> To: Weddington, Eric
>> Cc: Anatoly Sokolov; gcc-patches@gcc.gnu.org
>> Subject: Re: Patch Fix PR1936,24894,31644,31786 AVR target
>>
>> Oddly, I had no problems. But I re-created it just the same:
>>
>> The change to avr.md is only one line. I'm guessing there was 
>> conflict 
>> with recent RAMPZ change.?
>>
>> Andy
>>
>>
>>
>>
>> Try attached.
>>     
>
>
> Ah, I found the problem. There is a conflict with the patch for bug
> #11180:
> <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11180>
> The patch there turns *movhi from define_insn to define_insn_and_split,
> which conflicts with your patch.
>
> Andy, you had a comment to that bug report. Can you help resolve any
> conflicts with these patches?
>
> Thanks,
> Eric Weddington
>
>   



More information about the Gcc-patches mailing list