Start of revamping the register scavenging in PEI. ARM Thumb1 is the driving
authorJim Grosbach <grosbach@apple.com>
Thu, 24 Sep 2009 23:52:18 +0000 (23:52 +0000)
committerJim Grosbach <grosbach@apple.com>
Thu, 24 Sep 2009 23:52:18 +0000 (23:52 +0000)
commit3d6cb88a64fe67064de206405951eb326d86fc0c
treea5981a4064d04f8b16464ca64c9781e21bb383be
parent2bbcd33febc8b9d40ff62ff2f7fff9d025660ad4
Start of revamping the register scavenging in PEI. ARM Thumb1 is the driving
interest for this, as it currently reserves a register rather than using
the scavenger for matierializing constants as needed.

Instead of scavenging registers on the fly while eliminating frame indices,
new virtual registers are created, and then a scavenged collectively in a
post-pass over the function. This isolates the bits that need to interact
with the scavenger, and sets the stage for more intelligent use, and reuse,
of scavenged registers.

For the time being, this is disabled by default. Once the bugs are worked out,
the current scavenging calls in replaceFrameIndices() will be removed and
the post-pass scavenging will be the default. Until then,
-enable-frame-index-scavenging enables the new code. Currently, only the
Thumb1 back end is set up to use it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82734 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/PrologEpilogInserter.cpp
lib/CodeGen/PrologEpilogInserter.h
lib/Target/ARM/ARMBaseRegisterInfo.cpp
lib/Target/ARM/Thumb1RegisterInfo.cpp