diff --git a/llvm/lib/Analysis/ProfileInfoLoaderPass.cpp b/llvm/lib/Analysis/ProfileInfoLoaderPass.cpp
index 854cc3c..be95669 100644
--- a/llvm/lib/Analysis/ProfileInfoLoaderPass.cpp
+++ b/llvm/lib/Analysis/ProfileInfoLoaderPass.cpp
@@ -15,14 +15,22 @@
 #include "llvm/Pass.h"
 #include "llvm/Analysis/ProfileInfo.h"
 #include "llvm/Analysis/ProfileInfoLoader.h"
+#include "Support/CommandLine.h"
 using namespace llvm;
 
 namespace {
+  cl::opt<std::string>
+  ProfileInfoFilename("profile-info-file", cl::init("llvmprof.out"),
+                      cl::desc(""));
+
   class LoaderPass : public Pass, public ProfileInfo {
     std::string Filename;
+    std::map<BasicBlock*, unsigned> ExecutionCounts;
   public:
-    LoaderPass(const std::string &filename = "llvmprof.out")
-      : Filename(filename) {}
+    LoaderPass(const std::string &filename = "")
+      : Filename(filename) {
+      if (filename.empty()) Filename = ProfileInfoFilename;
+    }
 
     virtual void getAnalysisUsage(AnalysisUsage &AU) const {
       AU.setPreservesAll();
@@ -35,7 +43,10 @@
     /// run - Load the profile information from the specified file.
     virtual bool run(Module &M);
 
-    unsigned getExecutionCount(BasicBlock *BB) { return 0; }
+    virtual unsigned getExecutionCount(BasicBlock *BB) {
+      std::map<BasicBlock*, unsigned>::iterator I = ExecutionCounts.find(BB);
+      return I != ExecutionCounts.end() ? I->second : 0;
+    }
   };
  
   RegisterOpt<LoaderPass>
@@ -53,6 +64,11 @@
 }
 
 bool LoaderPass::run(Module &M) {
-
+  ProfileInfoLoader PIL("opt", Filename, M);
+  if (PIL.hasAccurateBlockCounts()) {
+    std::vector<std::pair<BasicBlock*, unsigned> > Counts;
+    PIL.getBlockCounts(Counts);
+    ExecutionCounts.insert(Counts.begin(), Counts.end());
+  }
   return false;
 }
