LLVM Bugzilla is read-only and represents the historical archive of all LLVM issues filled before November 26, 2021. Use github to submit LLVM bugs

Bug 768 - Register scavenging
Summary: Register scavenging
Status: RESOLVED FIXED
Alias: None
Product: libraries
Classification: Unclassified
Component: Register Allocator (show other bugs)
Version: trunk
Hardware: Macintosh MacOS X
: P enhancement
Assignee: Evan Cheng
URL:
Keywords: code-quality
Depends on:
Blocks:
 
Reported: 2006-05-04 13:09 PDT by Nate Begeman
Modified: 2008-02-18 00:46 PST (History)
2 users (show)

See Also:
Fixed By Commit(s):


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Nate Begeman 2006-05-04 13:09:36 PDT
I'm not sure this is technically a register allocator to-do, but we need a way to scavenge registers during 
frame index elimination and spilling for targets that need additional registers for creating large offsets, or 
cannot use immediate offsets in addresses during spilling.

Examples of this in the PPC backend include using r0 as a scratch register during frame index elimination 
for creating constant offsets larger than 32k, and using r0 as an index register for saving and restoring 
vector registers, which can only use reg+reg addressing.

Once this is done, all use of r0 should be removed from the PPC backend.
Comment 1 Evan Cheng 2007-05-21 18:31:38 PDT
ARM backend now happily makes use of register scavenger. Nate is doing the work to move PPC over.
Comment 2 Chris Lattner 2007-10-07 17:31:06 PDT
Evan, is this done?
Comment 3 Evan Cheng 2007-10-07 19:02:14 PDT
No, PPC still needs this.
Comment 4 Chris Lattner 2008-02-18 00:46:42 PST
We have a register scavenger now, targets can switch over to using it as they please.