[llvm-commits] [llvm] r44987 - /llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp
Owen Anderson
resistor at mac.com
Wed Dec 12 21:53:03 PST 2007
Author: resistor
Date: Wed Dec 12 23:53:03 2007
New Revision: 44987
URL: http://llvm.org/viewvc/llvm-project?rev=44987&view=rev
Log:
Add register pairs to the list to check for local interferences.
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=44987&r1=44986&r2=44987&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp (original)
+++ llvm/trunk/lib/CodeGen/StrongPHIElimination.cpp Wed Dec 12 23:53:03 2007
@@ -99,7 +99,8 @@
std::vector<DomForestNode*> computeDomForest(std::set<unsigned>& instrs);
void processPHIUnion(MachineInstr* Inst,
std::set<unsigned>& PHIUnion,
- std::vector<StrongPHIElimination::DomForestNode*>& DF);
+ std::vector<StrongPHIElimination::DomForestNode*>& DF,
+ std::vector<std::pair<unsigned, unsigned> >& locals);
void breakCriticalEdges(MachineFunction &Fn);
};
@@ -300,6 +301,10 @@
computeDomForest(PHIUnion);
// Walk DomForest to resolve interferences
+ std::vector<std::pair<unsigned, unsigned> > localInterferences;
+ processPHIUnion(P, PHIUnion, DF, localInterferences);
+
+ // FIXME: Check for local interferences
ProcessedNames.insert(PHIUnion.begin(), PHIUnion.end());
++P;
@@ -308,7 +313,8 @@
void StrongPHIElimination::processPHIUnion(MachineInstr* Inst,
std::set<unsigned>& PHIUnion,
- std::vector<StrongPHIElimination::DomForestNode*>& DF) {
+ std::vector<StrongPHIElimination::DomForestNode*>& DF,
+ std::vector<std::pair<unsigned, unsigned> >& locals) {
std::vector<DomForestNode*> worklist(DF.begin(), DF.end());
SmallPtrSet<DomForestNode*, 4> visited;
@@ -323,7 +329,6 @@
visited.insert(DFNode);
bool inserted = false;
- SmallPtrSet<DomForestNode*, 4> interferences;
for (DomForestNode::iterator CI = DFNode->begin(), CE = DFNode->end();
CI != CE; ++CI) {
DomForestNode* child = *CI;
@@ -342,7 +347,8 @@
}
} else if (isLiveIn(Info, CInfo.DefInst->getParent()) ||
Info.DefInst->getParent() == CInfo.DefInst->getParent()) {
- // FIXME: Add (p, c) to possible local interferences
+ // Add (p, c) to possible local interferences
+ locals.push_back(std::make_pair(DFNode->getReg(), child->getReg()));
}
if (!visited.count(child)) {
More information about the llvm-commits
mailing list