This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/20969] unrolling does not take target register pressure into account.
- From: "amylaar at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 12 Apr 2005 17:48:28 -0000
- Subject: [Bug rtl-optimization/20969] unrolling does not take target register pressure into account.
- References: <20050412154215.20969.amylaar@gcc.gnu.org>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Additional Comments From amylaar at gcc dot gnu dot org 2005-04-12 17:48 -------
(In reply to comment #9)
> > But if we go down that route, the register allocator has to know about every
> > other optimization. Throttling register pressure is usually much simpler
> > than un-doing a complex optimization, and then re-doing it with different
> > parameters, or doing some other optimizations instead.
...
>
> No it does not, it only needs to know about reroller, resplitter and moving
things back into loops,
> nothing more.
Does the reroller also roll? Sometimes unrolling three or four times is bad,
but unrolling two times is good.
When you reroll, you might als want to re-do other things like combine and
the scheduling. Will the register allocator re-start all the passes after
unrolling when it re-rolls a loop?
> Also note both XLC and ICC take the route of a reroller, and they both do
better than us at register
> allocatation. In fact XLC compiles for a lot of targets, not just PPC, so
don't use the excuse of these
> compilers only compile for one target.
AFAIK the problem with branch target register pressure arises only for SH64
and freecore. That is not to say that I'm sure that you couldn't make the
reroller work effectively, but the circumstantial evidence does not apply
to the problem currently under discussion.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20969