Reintroduce VirtRegRewriter.
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Fri, 8 Jun 2012 23:44:45 +0000 (23:44 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Fri, 8 Jun 2012 23:44:45 +0000 (23:44 +0000)
commit05ec712e7f75635abbdd84dced69f4a45fe0f541
treeb4875d83d9b937cce865beb726faa7b574203874
parent6660ed5f2f51a91e34664437f0218c52e80a95b8
Reintroduce VirtRegRewriter.

OK, not really. We don't want to reintroduce the old rewriter hacks.

This patch extracts virtual register rewriting as a separate pass that
runs after the register allocator. This is possible now that
CodeGen/Passes.cpp can configure the full optimizing register allocator
pipeline.

The rewriter pass uses register assignments in VirtRegMap to rewrite
virtual registers to physical registers, and it inserts kill flags based
on live intervals.

These finalization steps are the same for the optimizing register
allocators: RABasic, RAGreedy, and PBQP.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158244 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/CodeGen/Passes.h
include/llvm/InitializePasses.h
lib/CodeGen/CodeGen.cpp
lib/CodeGen/Passes.cpp
lib/CodeGen/RegAllocBasic.cpp
lib/CodeGen/RegAllocGreedy.cpp
lib/CodeGen/RegAllocPBQP.cpp
lib/CodeGen/VirtRegMap.cpp
lib/CodeGen/VirtRegMap.h