diff --git a/lib/Analysis/ProfileInfo.cpp b/lib/Analysis/ProfileInfo.cpp
index 26328d0..1b86ec8 100644
--- a/lib/Analysis/ProfileInfo.cpp
+++ b/lib/Analysis/ProfileInfo.cpp
@@ -27,6 +27,9 @@
 ProfileInfo::~ProfileInfo() {}
 
 unsigned ProfileInfo::getExecutionCount(const BasicBlock *BB) const {
+  if (BlockCounts.find(BB) != BlockCounts.end()) 
+    return BlockCounts.find(BB)->second;
+
   pred_const_iterator PI = pred_begin(BB), PE = pred_end(BB);
 
   // Are there zero predecessors of this block?
@@ -76,7 +79,9 @@
 }
 
 unsigned ProfileInfo::getExecutionCount(const Function *F) const {
-  if (F->isDeclaration()) return -1;
+  if (FunctionCounts.find(F) != FunctionCounts.end())
+    return FunctionCounts.find(F)->second;
+
   return getExecutionCount(&F->getEntryBlock());
 }
 
diff --git a/lib/Analysis/ProfileInfoLoaderPass.cpp b/lib/Analysis/ProfileInfoLoaderPass.cpp
index 2d9c8b9..323174b 100644
--- a/lib/Analysis/ProfileInfoLoaderPass.cpp
+++ b/lib/Analysis/ProfileInfoLoaderPass.cpp
@@ -72,21 +72,29 @@
   EdgeCounts.clear();
 
   std::vector<unsigned> ECs = PIL.getRawEdgeCounts();
+  std::vector<unsigned> BCs = PIL.getRawBlockCounts();
+  std::vector<unsigned> FCs = PIL.getRawFunctionCounts();
   // Instrument all of the edges...
-  unsigned i = 0;
-  for (Module::iterator F = M.begin(), E = M.end(); F != E; ++F)
+  unsigned ei = 0;
+  unsigned bi = 0;
+  unsigned fi = 0;
+  for (Module::iterator F = M.begin(), E = M.end(); F != E; ++F) {
+    if (F->isDeclaration()) continue;
+    if (fi<FCs.size()) FunctionCounts[F] = FCs[fi++];
     for (Function::iterator BB = F->begin(), E = F->end(); BB != E; ++BB) {
+      if (bi<BCs.size()) BlockCounts[BB] = BCs[bi++];
       // 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 (i < ECs.size())
-          EdgeCounts[std::make_pair(BB, TI->getSuccessor(s))]+= ECs[i++];
+        if (ei < ECs.size())
+          EdgeCounts[std::make_pair(BB, TI->getSuccessor(s))]+= ECs[ei++];
       }
     }
+  }
  
-  if (i != ECs.size()) {
+  if (ei != ECs.size()) {
     cerr << "WARNING: profile information is inconsistent with "
          << "the current program!\n";
   }
