| 321 | } |
| 322 | |
| 323 | Status LlvmCodeGen::LoadModuleFromFile( |
| 324 | const string& file, unique_ptr<llvm::Module>* module) { |
| 325 | unique_ptr<llvm::MemoryBuffer> file_buffer; |
| 326 | { |
| 327 | SCOPED_TIMER(load_module_timer_); |
| 328 | |
| 329 | llvm::ErrorOr<unique_ptr<llvm::MemoryBuffer>> tmp_file_buffer = |
| 330 | llvm::MemoryBuffer::getFile(file); |
| 331 | if (!tmp_file_buffer) { |
| 332 | stringstream ss; |
| 333 | ss << "Could not load module " << file << ": " |
| 334 | << tmp_file_buffer.getError().message(); |
| 335 | return Status(ss.str()); |
| 336 | } |
| 337 | file_buffer = move(tmp_file_buffer.get()); |
| 338 | } |
| 339 | |
| 340 | COUNTER_ADD(module_bitcode_size_, file_buffer->getBufferSize()); |
| 341 | return LoadModuleFromMemory(move(file_buffer), file, module); |
| 342 | } |
| 343 | |
| 344 | Status LlvmCodeGen::LoadModuleFromMemory(unique_ptr<llvm::MemoryBuffer> module_ir_buf, |
| 345 | const string& module_name, unique_ptr<llvm::Module>* module) { |