Revert r178845 - Fix bug in PEI's virtual-register scavenging
authorHal Finkel <hfinkel@anl.gov>
Fri, 5 Apr 2013 21:30:40 +0000 (21:30 +0000)
committerHal Finkel <hfinkel@anl.gov>
Fri, 5 Apr 2013 21:30:40 +0000 (21:30 +0000)
commit81c46d0809b3734d8ecc1a8969c9f071d6439632
tree224ae2a4800beb908c05cf6cff667ac5da0a8dbd
parentbdbd73460c77512c99aab7f6d86b06c2fedacd4f
Revert r178845 - Fix bug in PEI's virtual-register scavenging

Reverting because this breaks one of the LTO builders. Original commit message:

    This change fixes a bug that I introduced in r178058. After a register is
    scavenged using one of the available spills slots the instruction defining the
    virtual register needs to be moved to after the spill code. The scavenger has
    already processed the defining instruction so that registers killed by that
    instruction are available for definition in that same instruction. Unfortunately,
    after this, the scavenger needs to iterate through the spill code and then
    visit, again, the instruction that defines the now-scavenged register. In order
    to avoid confusion, the register scavenger needs the ability to 'back up'
    through the spill code so that it can again process the instructions in the
    appropriate order. Prior to this fix, once the scavenger reached the
    just-moved instruction, it would assert if it killed any registers because,
    having already processed the instruction, it believed they were undefined.

    Unfortunately, I don't yet have a small test case. Thanks to Pranav Bhandarkar
    for diagnosing the problem and testing this fix.

llvm-svn: 178916
llvm/include/llvm/CodeGen/RegisterScavenging.h
llvm/lib/CodeGen/PrologEpilogInserter.cpp
llvm/lib/CodeGen/RegisterScavenging.cpp