Fix Twine corruption problem with diagnostics.
[oota-llvm.git] / lib / Transforms / Scalar / SampleProfile.cpp
index fedbcf3a7c003cbe9285c5ab8359c0c93de9aab3..89f0c27070b0e0297202f1a3567f384df3dbad5d 100644 (file)
@@ -737,8 +737,13 @@ INITIALIZE_PASS_END(SampleProfileLoader, "sample-profile",
                     "Sample Profile loader", false, false)
 
 bool SampleProfileLoader::doInitialization(Module &M) {
-  Reader.reset(new SampleProfileReader(M, Filename));
-  ProfileIsValid = Reader->load();
+  if (std::error_code EC =
+          SampleProfileReader::create(Filename, Reader, M.getContext())) {
+    std::string Msg = "Could not open profile: " + EC.message();
+    M.getContext().diagnose(DiagnosticInfoSampleProfile(Filename.data(), Msg));
+    return false;
+  }
+  ProfileIsValid = (Reader->read() == sampleprof_error::success);
   return true;
 }