[LLVMdev] Virtual Register allocation across functions
Villmow, Micah
Micah.Villmow at amd.com
Mon Oct 20 14:14:35 PDT 2008
I'm targeting a language that uses virtual registers and not physical
registers. So the easiest way to implement this is to use virtual
registers, except that they are being restarted after each function and
clobbering registers in previous functions. For example:
start function 0
r1024 = mov %var0.0
r1025 = mov %var0.1
lots of intermediate code
call function1 w/ 3 parameters
more intermediate code
%r1300 = add %call.result, %r1024
end function 0
start function 1
%r1024 = mov %var1.0
%r1025 = mov %var1.1
%r1026 = mov %var1.2
some code
return some value
end function 0
The mov to r1024 in function 1 clobbers the data from function 0. The
only ways I can think to get around this, is to push every virtual
register used in a function to a stack or some internal data structure
and then pull them back out for each function call. The other option is
to run a separate pass just to renumber register. This is not what I
would like to do as the easiest solution is just to get a variable start
point.
Any other ideas that might accomplish what I want, that I might be
missing?
Thanks,
________________________________
From: llvmdev-bounces at cs.uiuc.edu [mailto:llvmdev-bounces at cs.uiuc.edu]
On Behalf Of Evan Cheng
Sent: Monday, October 20, 2008 2:03 PM
To: LLVM Developers Mailing List
Subject: Re: [LLVMdev] Virtual Register allocation across functions
No, there isn't something like that right now. What are you trying to
accomplish?
If you wish to implement this, it shouldn't be hard to do. Right now,
MachineRegisterInfo re-starts virtual register number at
TargetRegisterInfo::FirstVirtualRegister. You can add a mechanism to
change that to a variable instead.
Evan
On Oct 20, 2008, at 1:43 PM, Villmow, Micah wrote:
Is there currently a way to have virtual register allocation information
be saved across functions so that if I create a new virtual register in
a function that it doesn't use a virtual register allocated in any
previous function?
Thanks,
Micah Villmow
Systems Engineer
Advanced Technology & Performance
Advanced Micro Devices Inc.
4555 Great America Pkwy,
Santa Clara, CA. 95054
P: 408-572-6219
F: 408-572-6596
_______________________________________________
LLVM Developers mailing list
LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20081020/98005733/attachment.html>
More information about the llvm-dev
mailing list