[llvm-commits] [llvm] r45759 - /llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp
Owen Anderson
resistor at mac.com
Tue Jan 8 13:54:55 PST 2008
Author: resistor
Date: Tue Jan 8 15:54:52 2008
New Revision: 45759
URL: http://llvm.org/viewvc/llvm-project?rev=45759&view=rev
Log:
Rename registers that do not need copies.
Modified:
llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp
Modified: llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp?rev=45759&r1=45758&r2=45759&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp (original)
+++ llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp Tue Jan 8 15:54:52 2008
@@ -44,6 +44,7 @@
std::map<unsigned, std::vector<unsigned> > Stacks;
std::set<unsigned> UsedByAnother;
+ std::map<unsigned, std::set<unsigned> > RenameSets;
bool runOnMachineFunction(MachineFunction &Fn);
@@ -442,7 +443,8 @@
}
}
- // FIXME: Cache renaming information
+ // Cache renaming information
+ RenameSets.insert(std::make_pair(P->getOperand(0).getReg(), PHIUnion));
ProcessedNames.insert(PHIUnion.begin(), PHIUnion.end());
++P;
@@ -649,8 +651,22 @@
// FIXME: This process should probably preserve LiveVariables
InsertCopies(Fn.begin());
- // FIXME: Perform renaming
- // FIXME: Remove Phi instrs
+ // Perform renaming
+ typedef std::map<unsigned, std::set<unsigned> > RenameSetType;
+ for (RenameSetType::iterator I = RenameSets.begin(), E = RenameSets.end();
+ I != E; ++I)
+ for (std::set<unsigned>::iterator SI = I->second.begin(),
+ SE = I->second.end(); SI != SE; ++SI)
+ Fn.getRegInfo().replaceRegWith(*SI, I->first);
+
+ // FIXME: Insert last-minute copies
+
+ // Remove PHIs
+ for (MachineFunction::iterator I = Fn.begin(), E = Fn.end(); I != E; ++I)
+ for (MachineBasicBlock::iterator BI = I->begin(), BE = I->end();
+ BI != BE; ++BI)
+ if (BI->getOpcode() == TargetInstrInfo::PHI)
+ BI->eraseFromParent();
return false;
}
More information about the llvm-commits
mailing list