[LLVMdev] global register allocation.
Fernando Magno Quintao Pereira
fernando at CS.UCLA.EDU
Fri Nov 23 09:59:43 PST 2007
I think you can do it in the same way that the other allocators have
been coded, i.e extend RA, register the pass and so forth. I am not sure
about the best way to pass information among a run of RegAlloc to the
other, maybe the other guys in the list could suggest something. Yet, you
can always dump it into a file, and read it again, everytime it is
necessary. Remember that RegAlloc will be called once per function. Also,
LLVM does very aggressive inlining of method calls, and this may cause the
benefits of interprocedural register allocation to be very small, if any.
There was one guy (google for Philip Brisk) who was working with
interprocedural RA on SSA-form programs.
> On 11/23/07, Fernando Magno Quintao Pereira <fernando at cs.ucla.edu> wrote:
>> Hi, Sanjiv,
>> those passes operate on the whole machine function. Each machine
>> function contains many basic blocks. If a program has many functions, the
>> register allocator will be called as many times, i.e it does not do
>> interprocedural allocation.
> Thanks for replying back.
> I am looking to write a regalloc pass that does interprocedural regalloc.
> By constructing a Call Graph and keeping the registers in a single call
> chain different so that i can avoid spilling (saving) across function calls.
> What will be the right place to do so?
>> As far as I understand , the regalloc passes provided operate on basic
>>> Is there anything that operate on the whole Module?
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
More information about the llvm-dev