This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
new-new-ra thoughts
- From: neroden at fastmail dot fm (Nathanael Nerode)
- To: gcc at gcc dot gnu dot org
- Date: Tue, 4 Jan 2005 22:40:40 -0500
- Subject: new-new-ra thoughts
OK, so we've come up with some interesting information...
Steven Bosscher said:
>Specifically, "instruction selection",
>or in GCC terms alternative selection, should happen before regalloc
>as much as possible, and in general machine descriptions should not
>rely on reload to fix all the silly insns that look nothing like the
>actual machine instructions.
This is clearly correct. This could be, in some sense, a "lowering" stage,
in which "generic RTL" (well, semi-generic) is transformed into
"machine-specific RTL".
Can this, in fact, be done before register allocation using the current
machine descriptions? If so, it would be worth working out a proof of concept.
--
I don't know the state of pseudo use prior to regalloc. Has liveness analysis
been performed, so that each pseudo corresponds to a single live range?
If so it would be worthwhile to have a pass which identified pseudos for
which there simply is no valid register class available, and split their
ranges early.
Thinking out loud:
If a particular pseudo (live range) has several alternative instruction
selection choices, but some combinations could only be satisfied by a
particularly small register class, perhaps some sort of cost mechanism could
encourage use of the instructions which have large register classes. Hmm.
That's not going to work because it won't spread the use of the classes
around. How about (grotesque, I know) producing solutions for both
expansions and providing them to the register allocator?...
--
This space intentionally left blank.