[llvm-commits] [llvm] r81358 - /llvm/trunk/lib/Analysis/ProfileInfoLoaderPass.cpp
Daniel Dunbar
daniel at zuster.org
Wed Sep 9 11:02:55 PDT 2009
Hi Andress,
This or one of the subsequent two is still not building. Please
investigate & fix or revert.
- Daniel
On Wed, Sep 9, 2009 at 10:51 AM, Andreas Neustifter<astifter-llvm at gmx.at> wrote:
> Author: astifter
> Date: Wed Sep 9 12:51:39 2009
> New Revision: 81358
>
> URL: http://llvm.org/viewvc/llvm-project?rev=81358&view=rev
> Log:
> Cleaned up code by factoring out common portions of edge loading into funcion.
>
> Modified:
> llvm/trunk/lib/Analysis/ProfileInfoLoaderPass.cpp
>
> Modified: llvm/trunk/lib/Analysis/ProfileInfoLoaderPass.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/ProfileInfoLoaderPass.cpp?rev=81358&r1=81357&r2=81358&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Analysis/ProfileInfoLoaderPass.cpp (original)
> +++ llvm/trunk/lib/Analysis/ProfileInfoLoaderPass.cpp Wed Sep 9 12:51:39 2009
> @@ -61,8 +61,8 @@
> // blocks as possbile.
> virtual void recurseBasicBlock(const BasicBlock *BB);
> virtual void readEdgeOrRemember(Edge, Edge&, unsigned &, unsigned &);
> - virtual void readOrRememberEdge(ProfileInfo::Edge, unsigned,
> - unsigned, Function*);
> + virtual unsigned readEdge(ProfileInfo::Edge, std::vector<unsigned>,
> + unsigned, Function*);
>
> /// run - Load the profile information from the specified file.
> virtual bool runOnModule(Module &M);
> @@ -156,15 +156,21 @@
> }
> }
>
> -void LoaderPass::readOrRememberEdge(ProfileInfo::Edge e,
> - unsigned weight, unsigned ei,
> - Function *F) {
> - if (weight != ~0U) {
> - EdgeInformation[F][e] += weight;
> - DEBUG(errs()<<"--Read Edge Counter for " << e
> - <<" (# "<<ei<<"): "<<(unsigned)getEdgeWeight(e)<<"\n");
> +unsigned LoaderPass::readEdge(ProfileInfo::Edge e, std::vector<unsigned> ECs,
> + unsigned ei, Function *F) {
> + if (ei < ECs.size()) {
> + double weight = ECs[ei];
> + if (weight != ~0U) {
> + EdgeInformation[F][e] += weight;
> + DEBUG(errs()<<"--Read Edge Counter for " << e
> + <<" (# "<<ei<<"): "<<(unsigned)getEdgeWeight(e)<<"\n");
> + } else {
> + // This happens only when loading edges for optimal edge profiling.
> + SpanningTree.insert(e);
> + }
> + return ei++
> } else {
> - SpanningTree.insert(e);
> + return ei;
> }
> }
>
> @@ -177,18 +183,15 @@
> unsigned ei = 0;
> for (Module::iterator F = M.begin(), E = M.end(); F != E; ++F) {
> if (F->isDeclaration()) continue;
> - if (ei < ECs.size())
> - EdgeInformation[F][ProfileInfo::getEdge(0, &F->getEntryBlock())] +=
> - ECs[ei++];
> + DEBUG(errs()<<"Working on "<<F->getNameStr()<<"\n");
> + ei = readEdge(getEdge(0,&F->getEntryBlock()), ECs, ei, F);
> for (Function::iterator BB = F->begin(), E = F->end(); BB != E; ++BB) {
> // Okay, we have to add a counter of each outgoing edge. If the
> // outgoing edge is not critical don't split it, just insert the counter
> // in the source or destination of the edge.
> TerminatorInst *TI = BB->getTerminator();
> for (unsigned s = 0, e = TI->getNumSuccessors(); s != e; ++s) {
> - if (ei < ECs.size())
> - EdgeInformation[F][ProfileInfo::getEdge(BB, TI->getSuccessor(s))] +=
> - ECs[ei++];
> + ei = readEdge(getEdge(BB,TI->getSuccessor(s)), ECs, ei, F);
> }
> }
> }
> @@ -205,22 +208,14 @@
> for (Module::iterator F = M.begin(), E = M.end(); F != E; ++F) {
> if (F->isDeclaration()) continue;
> DEBUG(errs()<<"Working on "<<F->getNameStr()<<"\n");
> - if (ei < ECs.size()) {
> - readOrRememberEdge(getEdge(0,&F->getEntryBlock()), ECs[ei], ei, F);
> - ei++;
> - }
> + ei = readEdge(getEdge(0,&F->getEntryBlock()), ECs, ei, F);
> for (Function::iterator BB = F->begin(), E = F->end(); BB != E; ++BB) {
> TerminatorInst *TI = BB->getTerminator();
> if (TI->getNumSuccessors() == 0) {
> - if (ei < ECs.size()) {
> - readOrRememberEdge(getEdge(BB,0), ECs[ei], ei, F); ei++;
> - }
> + ei = readEdge(getEdge(BB,0), ECs, ei, F);
> }
> for (unsigned s = 0, e = TI->getNumSuccessors(); s != e; ++s) {
> - if (ei < ECs.size()) {
> - readOrRememberEdge(getEdge(BB,TI->getSuccessor(s)), ECs[ei], ei, F);
> - ei++;
> - }
> + ei = readEdge(getEdge(BB,TI->getSuccessor(s)), ECs, ei, F);
> }
> }
> while (SpanningTree.size() > 0) {
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
More information about the llvm-commits
mailing list