LLVMdev Digest, Vol 83, Issue 25

             here's another way to look at it....

you are asking for a "half" [*] of a register allocator, in that a traditional graph coloring allocator
is divided into a coloring algorithm followed by (sometimes integrated with) a spilling
algorithm, but what you want is just the coloring part without the spilling part.

the coloring algorithm is so trivial that you might want to simply write one from scratch.
(or even copy it out of an existing allocator if you really don't want to write any new code).

as opposed to your current choices which seem to be to take an existing allocator and
find clever ways to trick it into not doing spilling through the target machine description.
While that might work eventually, it requires way more intimate knowledge of the
allocators and the machine descriptions, and could be flaky in that future register-allocator
implementors might not be able to figure out that some "feature" of the machine description
interface allowed for this "trick" and the functionality might accidentally disappear.

just my $0.02, you milage my vary...

-Peter Lawrence.

[*] "half" isn't fair, the coloring algorithm is a very very small fraction of the work, spilling is
a hard problem, and that is where all the real work in a quality allocator goes, as I am
sure the folks recently working on Linear and Greedy will tell you.!.