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