- std::string ErrorMessage;
- if (Filename.exists()) {
- if (Verbose) cerr << "Loading '" << Filename.c_str() << "'\n";
- Module* Result = 0;
-
- if (Bitcode) {
- const std::string &FNStr = Filename.toString();
- MemoryBuffer *Buffer = MemoryBuffer::getFileOrSTDIN(&FNStr[0],
- FNStr.size());
- if (Buffer == 0)
- ErrorMessage = "Error reading file '" + FNStr + "'";
- else
- Result = ParseBitcodeFile(Buffer, &ErrorMessage);
- delete Buffer;
- } else {
- Result = ParseBytecodeFile(Filename.toString(),
- Compressor::decompressToNewBuffer,
- &ErrorMessage);
- }
- if (Result) return std::auto_ptr<Module>(Result); // Load successful!
-
- if (Verbose) {
- cerr << "Error opening bytecode file: '" << Filename.c_str() << "'";
- if (ErrorMessage.size()) cerr << ": " << ErrorMessage;
- cerr << "\n";
- }
- } else {
- cerr << "Bytecode file: '" << Filename.c_str() << "' does not exist.\n";
- }
+ SMDiagnostic Err;
+ if (Verbose) errs() << "Loading '" << Filename.c_str() << "'\n";
+ Module* Result = 0;
+
+ const std::string &FNStr = Filename.str();
+ Result = ParseIRFile(FNStr, Err, Context);
+ if (Result) return std::auto_ptr<Module>(Result); // Load successful!