[llvm-commits] [llvm] r81364 - /llvm/trunk/lib/Analysis/ProfileInfoLoaderPass.cpp

Andreas Neustifter astifter-llvm at gmx.at
Wed Sep 9 11:24:50 PDT 2009


It was not the missed semicolon alone, I'm afraid.

Andreas Neustifter wrote:
> Author: astifter
> Date: Wed Sep  9 13:19:35 2009
> New Revision: 81364
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=81364&view=rev
> Log:
> Reverted r81358.
> 
> 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=81364&r1=81363&r2=81364&view=diff
> 
> ==============================================================================
> --- llvm/trunk/lib/Analysis/ProfileInfoLoaderPass.cpp (original)
> +++ llvm/trunk/lib/Analysis/ProfileInfoLoaderPass.cpp Wed Sep  9 13:19:35 2009
> @@ -61,8 +61,8 @@
>      // blocks as possbile.
>      virtual void recurseBasicBlock(const BasicBlock *BB);
>      virtual void readEdgeOrRemember(Edge, Edge&, unsigned &, unsigned &);
> -    virtual unsigned readEdge(ProfileInfo::Edge, std::vector<unsigned>,
> -                              unsigned, Function*);
> +    virtual void readOrRememberEdge(ProfileInfo::Edge, unsigned,
> +                                    unsigned, Function*);
>  
>      /// run - Load the profile information from the specified file.
>      virtual bool runOnModule(Module &M);
> @@ -156,21 +156,15 @@
>    }
>  }
>  
> -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++;
> +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");
>    } else {
> -    return ei;
> +    SpanningTree.insert(e);
>    }
>  }
>  
> @@ -183,15 +177,18 @@
>      unsigned ei = 0;
>      for (Module::iterator F = M.begin(), E = M.end(); F != E; ++F) {
>        if (F->isDeclaration()) continue;
> -      DEBUG(errs()<<"Working on "<<F->getNameStr()<<"\n");
> -      ei = readEdge(getEdge(0,&F->getEntryBlock()), ECs, ei, F);
> +      if (ei < ECs.size())
> +        EdgeInformation[F][ProfileInfo::getEdge(0, &F->getEntryBlock())] +=
> +          ECs[ei++];
>        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) {
> -          ei = readEdge(getEdge(BB,TI->getSuccessor(s)), ECs, ei, F);
> +          if (ei < ECs.size())
> +            EdgeInformation[F][ProfileInfo::getEdge(BB, TI->getSuccessor(s))] +=
> +              ECs[ei++];
>          }
>        }
>      }
> @@ -208,14 +205,22 @@
>      for (Module::iterator F = M.begin(), E = M.end(); F != E; ++F) {
>        if (F->isDeclaration()) continue;
>        DEBUG(errs()<<"Working on "<<F->getNameStr()<<"\n");
> -      ei = readEdge(getEdge(0,&F->getEntryBlock()), ECs, ei, F);
> +      if (ei < ECs.size()) {
> +        readOrRememberEdge(getEdge(0,&F->getEntryBlock()), ECs[ei], ei, F); 
> +        ei++;
> +      }
>        for (Function::iterator BB = F->begin(), E = F->end(); BB != E; ++BB) {
>          TerminatorInst *TI = BB->getTerminator();
>          if (TI->getNumSuccessors() == 0) {
> -          ei = readEdge(getEdge(BB,0), ECs, ei, F);
> +          if (ei < ECs.size()) {
> +            readOrRememberEdge(getEdge(BB,0), ECs[ei], ei, F); ei++;
> +          }
>          }
>          for (unsigned s = 0, e = TI->getNumSuccessors(); s != e; ++s) {
> -          ei = readEdge(getEdge(BB,TI->getSuccessor(s)), ECs, ei, F);
> +          if (ei < ECs.size()) {
> +            readOrRememberEdge(getEdge(BB,TI->getSuccessor(s)), ECs[ei], ei, F);
> +            ei++;
> +          }
>          }
>        }
>        while (SpanningTree.size() > 0) {
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> 

-- 
==========================================================================
This email is signed, for more information see
http://web.student.tuwien.ac.at/~e0325716/gpg.html



More information about the llvm-commits mailing list