diff options
| author | Hal Finkel <hfinkel@anl.gov> | 2013-03-26 18:56:54 +0000 |
|---|---|---|
| committer | Hal Finkel <hfinkel@anl.gov> | 2013-03-26 18:56:54 +0000 |
| commit | 4e05788cc3d75a8b413aaa629ba813ce38d288a1 (patch) | |
| tree | 10dec5c8a865fc3a94fbe8deba04724eddd04186 /llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp | |
| parent | 7c0788b2d91bdbaa5d58fb96234fd153c18c293c (diff) | |
| download | bcm5719-llvm-4e05788cc3d75a8b413aaa629ba813ce38d288a1.tar.gz bcm5719-llvm-4e05788cc3d75a8b413aaa629ba813ce38d288a1.zip | |
Update PEI's virtual-register-based scavenging to support multiple simultaneous mappings
The previous algorithm could not deal properly with scavenging multiple virtual
registers because it kept only one live virtual -> physical mapping (and
iterated through operands in order). Now we don't maintain a current mapping,
but rather use replaceRegWith to completely remove the virtual register as
soon as the mapping is established.
In order to allow the register scavenger to return a physical register killed
by an instruction for definition by that same instruction, we now call
RS->forward(I) prior to eliminating virtual registers defined in I. This
requires a minor update to forward to ignore virtual registers.
These new features will be tested in forthcoming commits.
llvm-svn: 178058
Diffstat (limited to 'llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp')
0 files changed, 0 insertions, 0 deletions

