[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