llvm/lib
Jim Grosbach b58f498f75 Add register-reuse to frame-index register scavenging. When a target uses
a virtual register to eliminate a frame index, it can return that register
and the constant stored there to PEI to track. When scavenging to allocate
for those registers, PEI then tracks the last-used register and value, and
if it is still available and matches the value for the next index, reuses
the existing value rather and removes the re-materialization instructions.
Fancier tracking and adjustment of scavenger allocations to keep more
values live for longer is possible, but not yet implemented and would likely
be better done via a different, less special-purpose, approach to the
problem.

eliminateFrameIndex() is modified so the target implementations can return
the registers they wish to be tracked for reuse.

ARM Thumb1 implements and utilizes the new mechanism. All other targets are
simply modified to adjust for the changed eliminateFrameIndex() prototype.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83467 91177308-0d34-0410-b5e6-96231b3b80d8
2009-10-07 17:12:56 +00:00
..
Analysis Add PR to this FIXME, looks like I didn't commit this change after all. 2009-10-07 09:22:55 +00:00
Archive Prune #includes from llvm/Linker.h and llvm/System/Path.h, 2009-08-23 22:45:37 +00:00
AsmParser strength reduce a ton of type equality tests to check the typeid (Through 2009-10-05 05:54:46 +00:00
Bitcode strength reduce a ton of type equality tests to check the typeid (Through 2009-10-05 05:54:46 +00:00
CodeGen Add register-reuse to frame-index register scavenging. When a target uses 2009-10-07 17:12:56 +00:00
CompilerDriver convert LoopInfo.h and GraphWriter.h to use raw_ostream 2009-08-23 07:19:13 +00:00
ExecutionEngine Introduce and use convenience methods for getting pointer types 2009-10-06 15:40:36 +00:00
Linker Remove unnecessary #include. 2009-09-12 22:24:25 +00:00
MC No newline at end of files. 2009-10-05 18:43:19 +00:00
Support r83391 was completely broken since Twines keep references to their inputs, and 2009-10-06 21:45:26 +00:00
System MingW build fixes 2009-10-02 19:36:31 +00:00
Target Add register-reuse to frame-index register scavenging. When a target uses 2009-10-07 17:12:56 +00:00
Transforms Add FreeInst to the "is a call" check for Insts that are calls, but 2009-10-07 00:54:08 +00:00
VMCore Do not assume that the module is set. 2009-10-07 16:37:55 +00:00
Makefile remove llvm-db: it is completely broken and if anyone wants to do a debugger, 2009-10-05 02:29:51 +00:00