Allow targets to inject passes before the virtual register rewriter.

Such passes can be used to tweak the register assignments in a
target-dependent way, for example to avoid write-after-write
dependencies.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159209 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Jakob Stoklund Olesen
2012-06-26 17:09:29 +00:00
parent 0e20eb496e
commit 34f5a2b596
2 changed files with 17 additions and 1 deletions

View File

@@ -603,7 +603,11 @@ void TargetPassConfig::addOptimizedRegAlloc(FunctionPass *RegAllocPass) {
// Add the selected register allocation pass.
PM->add(RegAllocPass);
printAndVerify("After Register Allocation");
printAndVerify("After Register Allocation, before rewriter");
// Allow targets to change the register assignments before rewriting.
if (addPreRewrite())
printAndVerify("After pre-rewrite passes");
// Finally rewrite virtual registers.
addPass(VirtRegRewriterID);