[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