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: Conflicting IRA patches


On 07/13/10 10:17, Bernd Schmidt wrote:
On 07/13/2010 06:09 PM, Jeff Law wrote:
On 07/13/10 09:49, Vladimir Makarov wrote:
I checked Bernd's patch on SPEC2000 on x86 (32-bit modes) last week.
Code of few benchmarks changed (only vpr, gcc, crafty, parser, eon,
vortex, mesa, facerec, sixtrack, apsi). The codes size for
SPECINT2000 was improved by 0.03% with patch and code size for
SPECFP2000 was worsen by 0.006%. There is no visible
improvement/degradation on changed benchmarks. Compilation time
increase was quite insignificant (less than 0.2%). So as I wrote
Ken Zadeck two years ago who tried to solve the problem for the old
RA, the complexity of the problem solution does not justify
the solution benefits.
I wouldn't expect huge benefits, particularly since I doubt those
benchmarks are highly dependent good allocation of double-word values.
We have a real benchmarking problem in that we don't have benchmarks
that are highly dependent on double-word allocations.
Another issue - maybe on x86 most of the DImode regs get eliminated by
lower-subreg? That's not the case on ARM, which doesn't run the
necessary splitters before reload. It's probably something we should
fix, but it's made nontrivial by the existence of NEON insns and
registers which can operate on 64 bit values directly.
For the stuff I look at, they're often not eliminated by lower-subreg. This is typically due to mixed usages.

I pondered what it might take to have lower-subreg handle those cases -- basically having lower-subreg work on regions and the ability to emit compensation code at region boundaries. Long term that's probably a good idea, but I wasn't ready to tackle it at the time.

jeff


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