forked from OSchip/llvm-project
Convert code to use the DEBUG macro so that debug code can simply be
enabled with the -debug command line option. llvm-svn: 2721
This commit is contained in:
parent
559f0ee9c9
commit
e1fc2d965f
|
@ -201,12 +201,9 @@ void insertBB(Edge ed,
|
|||
BasicBlock* BB1=ed.getFirst()->getElement();
|
||||
BasicBlock* BB2=ed.getSecond()->getElement();
|
||||
|
||||
#ifdef DEBUG_PATH_PROFILES
|
||||
//debugging info
|
||||
cerr<<"Edges with codes ######################\n";
|
||||
cerr<<BB1->getName()<<"->"<<BB2->getName()<<"\n";
|
||||
cerr<<"########################\n";
|
||||
#endif
|
||||
DEBUG(cerr << "Edges with codes ######################\n";
|
||||
cerr << BB1->getName() << "->" << BB2->getName() << "\n";
|
||||
cerr << "########################\n");
|
||||
|
||||
//We need to insert a BB between BB1 and BB2
|
||||
TerminatorInst *TI=BB1->getTerminator();
|
||||
|
@ -250,10 +247,8 @@ void insertBB(Edge ed,
|
|||
BB2Inst!=BBend; ++BB2Inst){
|
||||
|
||||
if(PHINode *phiInst=dyn_cast<PHINode>(*BB2Inst)){
|
||||
#ifdef DEBUG_PATH_PROFILES
|
||||
cerr<<"YYYYYYYYYYYYYYYYY\n";
|
||||
#endif
|
||||
|
||||
DEBUG(cerr<<"YYYYYYYYYYYYYYYYY\n");
|
||||
|
||||
int bbIndex=phiInst->getBasicBlockIndex(BB1);
|
||||
if(bbIndex>=0)
|
||||
phiInst->setIncomingBlock(bbIndex, newBB);
|
||||
|
|
|
@ -239,17 +239,15 @@ Graph* Graph::getMaxSpanningTree(){
|
|||
//keep pulling out vertex of min wt from vt
|
||||
while(!vt.empty()){
|
||||
Node *u=*(min_element(vt.begin(), vt.end(), compare_nodes()));
|
||||
#ifdef DEBUG_PATH_PROFILES
|
||||
cerr<<"popped wt"<<(u)->getWeight()<<"\n";
|
||||
printNode(u);
|
||||
#endif
|
||||
DEBUG(cerr<<"popped wt"<<(u)->getWeight()<<"\n";
|
||||
printNode(u));
|
||||
|
||||
if(parent[u]!=NULL){ //so not root
|
||||
Edge edge(parent[u],u, ed_weight[u]); //assign edge in spanning tree
|
||||
st->addEdge(edge,ed_weight[u]);
|
||||
#ifdef DEBUG_PATH_PROFILES
|
||||
cerr<<"added:\n";
|
||||
printEdge(edge);
|
||||
#endif
|
||||
|
||||
DEBUG(cerr<<"added:\n";
|
||||
printEdge(edge));
|
||||
}
|
||||
|
||||
//vt.erase(u);
|
||||
|
@ -276,21 +274,19 @@ Graph* Graph::getMaxSpanningTree(){
|
|||
break;
|
||||
}
|
||||
}
|
||||
#ifdef DEBUG_PATH_PROFILES
|
||||
cerr<<"wt:v->wt"<<weight<<":"<<v->getWeight()<<"\n";
|
||||
printNode(v);cerr<<"node wt:"<<(*v).weight<<"\n";
|
||||
#endif
|
||||
DEBUG(cerr<<"wt:v->wt"<<weight<<":"<<v->getWeight()<<"\n";
|
||||
printNode(v);cerr<<"node wt:"<<(*v).weight<<"\n");
|
||||
|
||||
//so if v in in vt, change wt(v) to wt(u->v)
|
||||
//only if wt(u->v)<wt(v)
|
||||
if(contains && weight<v->getWeight()){
|
||||
parent[v]=u;
|
||||
ed_weight[v]=weight;
|
||||
v->setWeight(weight);
|
||||
#ifdef DEBUG_PATH_PROFILES
|
||||
cerr<<v->getWeight()<<":Set weight------\n";
|
||||
printGraph();
|
||||
printEdge(Edge(u,v,weight));
|
||||
#endif
|
||||
|
||||
DEBUG(cerr<<v->getWeight()<<":Set weight------\n";
|
||||
printGraph();
|
||||
printEdge(Edge(u,v,weight)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -352,10 +348,8 @@ void Graph::makeUnDirectional(){
|
|||
for(nodeList::iterator NLI=nl.begin(), NLE=nl.end(); NLI!=NLE; ++NLI){
|
||||
Edge ed(NLI->element, *NI, NLI->weight);
|
||||
if(!hasEdgeAndWt(ed)){
|
||||
#ifdef DEBUG_PATH_PROFILES
|
||||
cerr<<"######doesn't hv\n";
|
||||
printEdge(ed);
|
||||
#endif
|
||||
DEBUG(cerr<<"######doesn't hv\n";
|
||||
printEdge(ed));
|
||||
addEdgeForce(ed);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -355,19 +355,17 @@ static void moveDummyCode(const vector<Edge> &stDummy,
|
|||
map<Edge, getEdgeCode *> &insertions){
|
||||
typedef vector<Edge >::const_iterator vec_iter;
|
||||
|
||||
#ifdef DEBUG_PATH_PROFILES
|
||||
//print all back, st and ex dummy
|
||||
cerr<<"BackEdges---------------\n";
|
||||
for(vec_iter VI=be.begin(); VI!=be.end(); ++VI)
|
||||
printEdge(*VI);
|
||||
cerr<<"StEdges---------------\n";
|
||||
for(vec_iter VI=stDummy.begin(); VI!=stDummy.end(); ++VI)
|
||||
printEdge(*VI);
|
||||
cerr<<"ExitEdges---------------\n";
|
||||
for(vec_iter VI=exDummy.begin(); VI!=exDummy.end(); ++VI)
|
||||
printEdge(*VI);
|
||||
cerr<<"------end all edges\n";
|
||||
#endif
|
||||
DEBUG( //print all back, st and ex dummy
|
||||
cerr<<"BackEdges---------------\n";
|
||||
for(vec_iter VI=be.begin(); VI!=be.end(); ++VI)
|
||||
printEdge(*VI);
|
||||
cerr<<"StEdges---------------\n";
|
||||
for(vec_iter VI=stDummy.begin(); VI!=stDummy.end(); ++VI)
|
||||
printEdge(*VI);
|
||||
cerr<<"ExitEdges---------------\n";
|
||||
for(vec_iter VI=exDummy.begin(); VI!=exDummy.end(); ++VI)
|
||||
printEdge(*VI);
|
||||
cerr<<"------end all edges\n");
|
||||
|
||||
std::vector<Edge> toErase;
|
||||
for(map<Edge,getEdgeCode *>::iterator MI=insertions.begin(),
|
||||
|
@ -375,17 +373,16 @@ static void moveDummyCode(const vector<Edge> &stDummy,
|
|||
Edge ed=MI->first;
|
||||
getEdgeCode *edCd=MI->second;
|
||||
bool dummyHasIt=false;
|
||||
#ifdef DEBUG_PATH_PROFILES
|
||||
cerr<<"Current edge considered---\n";
|
||||
printEdge(ed);
|
||||
#endif
|
||||
|
||||
DEBUG(cerr<<"Current edge considered---\n";
|
||||
printEdge(ed));
|
||||
|
||||
//now check if stDummy has ed
|
||||
for(vec_iter VI=stDummy.begin(), VE=stDummy.end(); VI!=VE && !dummyHasIt;
|
||||
++VI){
|
||||
if(*VI==ed){
|
||||
#ifdef DEBUG_PATH_PROFILES
|
||||
cerr<<"Edge matched with stDummy\n";
|
||||
#endif
|
||||
DEBUG(cerr<<"Edge matched with stDummy\n");
|
||||
|
||||
dummyHasIt=true;
|
||||
bool dummyInBe=false;
|
||||
//dummy edge with code
|
||||
|
@ -395,10 +392,9 @@ static void moveDummyCode(const vector<Edge> &stDummy,
|
|||
Node *dm=ed.getSecond();
|
||||
if(*dm==*st){
|
||||
//so this is the back edge to use
|
||||
#ifdef DEBUG_PATH_PROFILES
|
||||
cerr<<"Moving to backedge\n";
|
||||
printEdge(backEdge);
|
||||
#endif
|
||||
DEBUG(cerr<<"Moving to backedge\n";
|
||||
printEdge(backEdge));
|
||||
|
||||
getEdgeCode *ged=new getEdgeCode();
|
||||
ged->setCdIn(edCd);
|
||||
toErase.push_back(ed);
|
||||
|
@ -416,9 +412,7 @@ static void moveDummyCode(const vector<Edge> &stDummy,
|
|||
++VI){
|
||||
if(*VI==ed){
|
||||
inExDummy=true;
|
||||
#ifdef DEBUG_PATH_PROFILES
|
||||
cerr<<"Edge matched with exDummy\n";
|
||||
#endif
|
||||
DEBUG(cerr<<"Edge matched with exDummy\n");
|
||||
bool dummyInBe2=false;
|
||||
//dummy edge with code
|
||||
for(vec_iter BE=be.begin(), BEE=be.end(); BE!=BEE && !dummyInBe2;
|
||||
|
@ -445,17 +439,13 @@ static void moveDummyCode(const vector<Edge> &stDummy,
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef DEBUG_PATH_PROFILES
|
||||
cerr<<"size of deletions: "<<toErase.size()<<"\n";
|
||||
#endif
|
||||
DEBUG(cerr<<"size of deletions: "<<toErase.size()<<"\n");
|
||||
|
||||
for(vector<Edge >::iterator vmi=toErase.begin(), vme=toErase.end(); vmi!=vme;
|
||||
++vmi)
|
||||
insertions.erase(*vmi);
|
||||
|
||||
#ifdef DEBUG_PATH_PROFILES
|
||||
cerr<<"SIZE OF INSERTIONS AFTER DEL "<<insertions.size()<<"\n";
|
||||
#endif
|
||||
DEBUG(cerr<<"SIZE OF INSERTIONS AFTER DEL "<<insertions.size()<<"\n");
|
||||
}
|
||||
|
||||
//Do graph processing: to determine minimal edge increments,
|
||||
|
@ -490,9 +480,8 @@ void processGraph(Graph &g,
|
|||
|
||||
|
||||
//step 1-3 are already done on the graph when this function is called
|
||||
#ifdef DEBUG_PATH_PROFILES
|
||||
printGraph(g);
|
||||
#endif
|
||||
DEBUG(printGraph(g));
|
||||
|
||||
//step 4: Get Max spanning tree of graph
|
||||
|
||||
//now insert exit to root edge
|
||||
|
@ -510,13 +499,11 @@ void processGraph(Graph &g,
|
|||
//make g2 undirectional: this gives a better
|
||||
//maximal spanning tree
|
||||
g2.makeUnDirectional();
|
||||
#ifdef DEBUG_PATH_PROFILES
|
||||
printGraph(g2);
|
||||
#endif
|
||||
DEBUG(printGraph(g2));
|
||||
|
||||
Graph *t=g2.getMaxSpanningTree();
|
||||
#ifdef DEBUG_PATH_PROFILES
|
||||
printGraph(*t);
|
||||
#endif
|
||||
DEBUG(printGraph(*t));
|
||||
|
||||
//now edges of tree t have weights reversed
|
||||
//(negative) because the algorithm used
|
||||
//to find max spanning tree is
|
||||
|
@ -539,11 +526,11 @@ void processGraph(Graph &g,
|
|||
//the tree so that now, all edge directions in the tree match
|
||||
//the edge directions of corresponding edges in the directed graph
|
||||
removeTreeEdges(g, *t);
|
||||
#ifdef DEBUG_PATH_PROFILES
|
||||
cerr<<"Spanning tree---------\n";
|
||||
printGraph(*t);
|
||||
cerr<<"-------end spanning tree\n";
|
||||
#endif
|
||||
|
||||
DEBUG(cerr<<"Spanning tree---------\n";
|
||||
printGraph(*t);
|
||||
cerr<<"-------end spanning tree\n");
|
||||
|
||||
//now remove the exit->root node
|
||||
//and re-add it with weight 0
|
||||
//since infinite weight is kinda confusing
|
||||
|
@ -555,10 +542,9 @@ void processGraph(Graph &g,
|
|||
t->addEdge(edNew,0);
|
||||
}
|
||||
|
||||
#ifdef DEBUG_PATH_PROFILES
|
||||
printGraph(g);
|
||||
printGraph(*t);
|
||||
#endif
|
||||
DEBUG(printGraph(g);
|
||||
printGraph(*t));
|
||||
|
||||
//step 5: Get edge increments
|
||||
|
||||
//Now we select a subset of all edges
|
||||
|
@ -566,14 +552,13 @@ void processGraph(Graph &g,
|
|||
//if we consider just this subset, it still represents
|
||||
//the path sum along any path in the graph
|
||||
map<Edge, int> increment=getEdgeIncrements(g,*t);
|
||||
#ifdef DEBUG_PATH_PROFILES
|
||||
//print edge increments for debugging
|
||||
for(map<Edge, int>::iterator M_I=increment.begin(), M_E=increment.end();
|
||||
M_I!=M_E; ++M_I){
|
||||
printEdge(M_I->first);
|
||||
cerr<<"Increment for above:"<<M_I->second<<"\n";
|
||||
}
|
||||
#endif
|
||||
|
||||
DEBUG(//print edge increments for debugging
|
||||
for(map<Edge, int>::iterator MI=increment.begin(), ME = increment.end();
|
||||
MI != ME; ++MI) {
|
||||
printEdge(MI->first);
|
||||
cerr << "Increment for above:" << MI->second << "\n";
|
||||
});
|
||||
|
||||
//step 6: Get code insertions
|
||||
|
||||
|
@ -587,33 +572,30 @@ void processGraph(Graph &g,
|
|||
map<Edge, getEdgeCode *> codeInsertions;
|
||||
getCodeInsertions(g, codeInsertions, chords,increment);
|
||||
|
||||
#ifdef DEBUG_PATH_PROFILES
|
||||
//print edges with code for debugging
|
||||
cerr<<"Code inserted in following---------------\n";
|
||||
for(map<Edge, getEdgeCode *>::iterator cd_i=codeInsertions->begin(),
|
||||
cd_e=codeInsertions->end(); cd_i!=cd_e; ++cd_i){
|
||||
printEdge(cd_i->first);
|
||||
cerr<<cd_i->second->getCond()<<":"<<cd_i->second->getInc()<<"\n";
|
||||
}
|
||||
cerr<<"-----end insertions\n";
|
||||
#endif
|
||||
DEBUG (//print edges with code for debugging
|
||||
cerr<<"Code inserted in following---------------\n";
|
||||
for(map<Edge, getEdgeCode *>::iterator cd_i=codeInsertions.begin(),
|
||||
cd_e=codeInsertions.end(); cd_i!=cd_e; ++cd_i){
|
||||
printEdge(cd_i->first);
|
||||
cerr<<cd_i->second->getCond()<<":"<<cd_i->second->getInc()<<"\n";
|
||||
}
|
||||
cerr<<"-----end insertions\n");
|
||||
|
||||
//step 7: move code on dummy edges over to the back edges
|
||||
|
||||
//Move the incoming dummy edge code and outgoing dummy
|
||||
//edge code over to the corresponding back edge
|
||||
moveDummyCode(stDummy, exDummy, be, codeInsertions);
|
||||
|
||||
#ifdef DEBUG_PATH_PROFILES
|
||||
//debugging info
|
||||
cerr<<"After moving dummy code\n";
|
||||
for(map<Edge, getEdgeCode *>::iterator cd_i=codeInsertions.begin(),
|
||||
cd_e=codeInsertions.end(); cd_i != cd_e; ++cd_i){
|
||||
printEdge(cd_i->first);
|
||||
cerr<<cd_i->second->getCond()<<":"
|
||||
<<cd_i->second->getInc()<<"\n";
|
||||
}
|
||||
cerr<<"Dummy end------------\n";
|
||||
#endif
|
||||
DEBUG(//debugging info
|
||||
cerr<<"After moving dummy code\n";
|
||||
for(map<Edge, getEdgeCode *>::iterator cd_i=codeInsertions.begin(),
|
||||
cd_e=codeInsertions.end(); cd_i != cd_e; ++cd_i){
|
||||
printEdge(cd_i->first);
|
||||
cerr<<cd_i->second->getCond()<<":"
|
||||
<<cd_i->second->getInc()<<"\n";
|
||||
}
|
||||
cerr<<"Dummy end------------\n");
|
||||
|
||||
//see what it looks like...
|
||||
//now insert code along edges which have codes on them
|
||||
|
|
|
@ -355,19 +355,17 @@ static void moveDummyCode(const vector<Edge> &stDummy,
|
|||
map<Edge, getEdgeCode *> &insertions){
|
||||
typedef vector<Edge >::const_iterator vec_iter;
|
||||
|
||||
#ifdef DEBUG_PATH_PROFILES
|
||||
//print all back, st and ex dummy
|
||||
cerr<<"BackEdges---------------\n";
|
||||
for(vec_iter VI=be.begin(); VI!=be.end(); ++VI)
|
||||
printEdge(*VI);
|
||||
cerr<<"StEdges---------------\n";
|
||||
for(vec_iter VI=stDummy.begin(); VI!=stDummy.end(); ++VI)
|
||||
printEdge(*VI);
|
||||
cerr<<"ExitEdges---------------\n";
|
||||
for(vec_iter VI=exDummy.begin(); VI!=exDummy.end(); ++VI)
|
||||
printEdge(*VI);
|
||||
cerr<<"------end all edges\n";
|
||||
#endif
|
||||
DEBUG( //print all back, st and ex dummy
|
||||
cerr<<"BackEdges---------------\n";
|
||||
for(vec_iter VI=be.begin(); VI!=be.end(); ++VI)
|
||||
printEdge(*VI);
|
||||
cerr<<"StEdges---------------\n";
|
||||
for(vec_iter VI=stDummy.begin(); VI!=stDummy.end(); ++VI)
|
||||
printEdge(*VI);
|
||||
cerr<<"ExitEdges---------------\n";
|
||||
for(vec_iter VI=exDummy.begin(); VI!=exDummy.end(); ++VI)
|
||||
printEdge(*VI);
|
||||
cerr<<"------end all edges\n");
|
||||
|
||||
std::vector<Edge> toErase;
|
||||
for(map<Edge,getEdgeCode *>::iterator MI=insertions.begin(),
|
||||
|
@ -375,17 +373,16 @@ static void moveDummyCode(const vector<Edge> &stDummy,
|
|||
Edge ed=MI->first;
|
||||
getEdgeCode *edCd=MI->second;
|
||||
bool dummyHasIt=false;
|
||||
#ifdef DEBUG_PATH_PROFILES
|
||||
cerr<<"Current edge considered---\n";
|
||||
printEdge(ed);
|
||||
#endif
|
||||
|
||||
DEBUG(cerr<<"Current edge considered---\n";
|
||||
printEdge(ed));
|
||||
|
||||
//now check if stDummy has ed
|
||||
for(vec_iter VI=stDummy.begin(), VE=stDummy.end(); VI!=VE && !dummyHasIt;
|
||||
++VI){
|
||||
if(*VI==ed){
|
||||
#ifdef DEBUG_PATH_PROFILES
|
||||
cerr<<"Edge matched with stDummy\n";
|
||||
#endif
|
||||
DEBUG(cerr<<"Edge matched with stDummy\n");
|
||||
|
||||
dummyHasIt=true;
|
||||
bool dummyInBe=false;
|
||||
//dummy edge with code
|
||||
|
@ -395,10 +392,9 @@ static void moveDummyCode(const vector<Edge> &stDummy,
|
|||
Node *dm=ed.getSecond();
|
||||
if(*dm==*st){
|
||||
//so this is the back edge to use
|
||||
#ifdef DEBUG_PATH_PROFILES
|
||||
cerr<<"Moving to backedge\n";
|
||||
printEdge(backEdge);
|
||||
#endif
|
||||
DEBUG(cerr<<"Moving to backedge\n";
|
||||
printEdge(backEdge));
|
||||
|
||||
getEdgeCode *ged=new getEdgeCode();
|
||||
ged->setCdIn(edCd);
|
||||
toErase.push_back(ed);
|
||||
|
@ -416,9 +412,7 @@ static void moveDummyCode(const vector<Edge> &stDummy,
|
|||
++VI){
|
||||
if(*VI==ed){
|
||||
inExDummy=true;
|
||||
#ifdef DEBUG_PATH_PROFILES
|
||||
cerr<<"Edge matched with exDummy\n";
|
||||
#endif
|
||||
DEBUG(cerr<<"Edge matched with exDummy\n");
|
||||
bool dummyInBe2=false;
|
||||
//dummy edge with code
|
||||
for(vec_iter BE=be.begin(), BEE=be.end(); BE!=BEE && !dummyInBe2;
|
||||
|
@ -445,17 +439,13 @@ static void moveDummyCode(const vector<Edge> &stDummy,
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef DEBUG_PATH_PROFILES
|
||||
cerr<<"size of deletions: "<<toErase.size()<<"\n";
|
||||
#endif
|
||||
DEBUG(cerr<<"size of deletions: "<<toErase.size()<<"\n");
|
||||
|
||||
for(vector<Edge >::iterator vmi=toErase.begin(), vme=toErase.end(); vmi!=vme;
|
||||
++vmi)
|
||||
insertions.erase(*vmi);
|
||||
|
||||
#ifdef DEBUG_PATH_PROFILES
|
||||
cerr<<"SIZE OF INSERTIONS AFTER DEL "<<insertions.size()<<"\n";
|
||||
#endif
|
||||
DEBUG(cerr<<"SIZE OF INSERTIONS AFTER DEL "<<insertions.size()<<"\n");
|
||||
}
|
||||
|
||||
//Do graph processing: to determine minimal edge increments,
|
||||
|
@ -490,9 +480,8 @@ void processGraph(Graph &g,
|
|||
|
||||
|
||||
//step 1-3 are already done on the graph when this function is called
|
||||
#ifdef DEBUG_PATH_PROFILES
|
||||
printGraph(g);
|
||||
#endif
|
||||
DEBUG(printGraph(g));
|
||||
|
||||
//step 4: Get Max spanning tree of graph
|
||||
|
||||
//now insert exit to root edge
|
||||
|
@ -510,13 +499,11 @@ void processGraph(Graph &g,
|
|||
//make g2 undirectional: this gives a better
|
||||
//maximal spanning tree
|
||||
g2.makeUnDirectional();
|
||||
#ifdef DEBUG_PATH_PROFILES
|
||||
printGraph(g2);
|
||||
#endif
|
||||
DEBUG(printGraph(g2));
|
||||
|
||||
Graph *t=g2.getMaxSpanningTree();
|
||||
#ifdef DEBUG_PATH_PROFILES
|
||||
printGraph(*t);
|
||||
#endif
|
||||
DEBUG(printGraph(*t));
|
||||
|
||||
//now edges of tree t have weights reversed
|
||||
//(negative) because the algorithm used
|
||||
//to find max spanning tree is
|
||||
|
@ -539,11 +526,11 @@ void processGraph(Graph &g,
|
|||
//the tree so that now, all edge directions in the tree match
|
||||
//the edge directions of corresponding edges in the directed graph
|
||||
removeTreeEdges(g, *t);
|
||||
#ifdef DEBUG_PATH_PROFILES
|
||||
cerr<<"Spanning tree---------\n";
|
||||
printGraph(*t);
|
||||
cerr<<"-------end spanning tree\n";
|
||||
#endif
|
||||
|
||||
DEBUG(cerr<<"Spanning tree---------\n";
|
||||
printGraph(*t);
|
||||
cerr<<"-------end spanning tree\n");
|
||||
|
||||
//now remove the exit->root node
|
||||
//and re-add it with weight 0
|
||||
//since infinite weight is kinda confusing
|
||||
|
@ -555,10 +542,9 @@ void processGraph(Graph &g,
|
|||
t->addEdge(edNew,0);
|
||||
}
|
||||
|
||||
#ifdef DEBUG_PATH_PROFILES
|
||||
printGraph(g);
|
||||
printGraph(*t);
|
||||
#endif
|
||||
DEBUG(printGraph(g);
|
||||
printGraph(*t));
|
||||
|
||||
//step 5: Get edge increments
|
||||
|
||||
//Now we select a subset of all edges
|
||||
|
@ -566,14 +552,13 @@ void processGraph(Graph &g,
|
|||
//if we consider just this subset, it still represents
|
||||
//the path sum along any path in the graph
|
||||
map<Edge, int> increment=getEdgeIncrements(g,*t);
|
||||
#ifdef DEBUG_PATH_PROFILES
|
||||
//print edge increments for debugging
|
||||
for(map<Edge, int>::iterator M_I=increment.begin(), M_E=increment.end();
|
||||
M_I!=M_E; ++M_I){
|
||||
printEdge(M_I->first);
|
||||
cerr<<"Increment for above:"<<M_I->second<<"\n";
|
||||
}
|
||||
#endif
|
||||
|
||||
DEBUG(//print edge increments for debugging
|
||||
for(map<Edge, int>::iterator MI=increment.begin(), ME = increment.end();
|
||||
MI != ME; ++MI) {
|
||||
printEdge(MI->first);
|
||||
cerr << "Increment for above:" << MI->second << "\n";
|
||||
});
|
||||
|
||||
//step 6: Get code insertions
|
||||
|
||||
|
@ -587,33 +572,30 @@ void processGraph(Graph &g,
|
|||
map<Edge, getEdgeCode *> codeInsertions;
|
||||
getCodeInsertions(g, codeInsertions, chords,increment);
|
||||
|
||||
#ifdef DEBUG_PATH_PROFILES
|
||||
//print edges with code for debugging
|
||||
cerr<<"Code inserted in following---------------\n";
|
||||
for(map<Edge, getEdgeCode *>::iterator cd_i=codeInsertions->begin(),
|
||||
cd_e=codeInsertions->end(); cd_i!=cd_e; ++cd_i){
|
||||
printEdge(cd_i->first);
|
||||
cerr<<cd_i->second->getCond()<<":"<<cd_i->second->getInc()<<"\n";
|
||||
}
|
||||
cerr<<"-----end insertions\n";
|
||||
#endif
|
||||
DEBUG (//print edges with code for debugging
|
||||
cerr<<"Code inserted in following---------------\n";
|
||||
for(map<Edge, getEdgeCode *>::iterator cd_i=codeInsertions.begin(),
|
||||
cd_e=codeInsertions.end(); cd_i!=cd_e; ++cd_i){
|
||||
printEdge(cd_i->first);
|
||||
cerr<<cd_i->second->getCond()<<":"<<cd_i->second->getInc()<<"\n";
|
||||
}
|
||||
cerr<<"-----end insertions\n");
|
||||
|
||||
//step 7: move code on dummy edges over to the back edges
|
||||
|
||||
//Move the incoming dummy edge code and outgoing dummy
|
||||
//edge code over to the corresponding back edge
|
||||
moveDummyCode(stDummy, exDummy, be, codeInsertions);
|
||||
|
||||
#ifdef DEBUG_PATH_PROFILES
|
||||
//debugging info
|
||||
cerr<<"After moving dummy code\n";
|
||||
for(map<Edge, getEdgeCode *>::iterator cd_i=codeInsertions.begin(),
|
||||
cd_e=codeInsertions.end(); cd_i != cd_e; ++cd_i){
|
||||
printEdge(cd_i->first);
|
||||
cerr<<cd_i->second->getCond()<<":"
|
||||
<<cd_i->second->getInc()<<"\n";
|
||||
}
|
||||
cerr<<"Dummy end------------\n";
|
||||
#endif
|
||||
DEBUG(//debugging info
|
||||
cerr<<"After moving dummy code\n";
|
||||
for(map<Edge, getEdgeCode *>::iterator cd_i=codeInsertions.begin(),
|
||||
cd_e=codeInsertions.end(); cd_i != cd_e; ++cd_i){
|
||||
printEdge(cd_i->first);
|
||||
cerr<<cd_i->second->getCond()<<":"
|
||||
<<cd_i->second->getInc()<<"\n";
|
||||
}
|
||||
cerr<<"Dummy end------------\n");
|
||||
|
||||
//see what it looks like...
|
||||
//now insert code along edges which have codes on them
|
||||
|
|
|
@ -102,9 +102,7 @@ bool ProfilePaths::runOnFunction(Function *M){
|
|||
|
||||
Graph g(nodes,edges, startNode, exitNode);
|
||||
|
||||
#ifdef DEBUG_PATH_PROFILES
|
||||
printGraph(g);
|
||||
#endif
|
||||
DEBUG(printGraph(g));
|
||||
|
||||
BasicBlock *fr=M->front();
|
||||
|
||||
|
@ -114,9 +112,8 @@ bool ProfilePaths::runOnFunction(Function *M){
|
|||
// by removing back edges for now, and adding them later on
|
||||
vector<Edge> be;
|
||||
g.getBackEdges(be);
|
||||
#ifdef DEBUG_PATH_PROFILES
|
||||
cerr<<"Backedges:"<<be.size()<<endl;
|
||||
#endif
|
||||
DEBUG(cerr << "Backedges:" << be.size() << "\n");
|
||||
|
||||
// Now we need to reflect the effect of back edges
|
||||
// This is done by adding dummy edges
|
||||
// If a->b is a back edge
|
||||
|
|
Loading…
Reference in New Issue