Specify the filename upon writing.
Change-Id: I5aac9401ab03cc5fa3a6573ef9c9dbdda9163149
diff --git a/src/compiler_llvm/compilation_unit.cc b/src/compiler_llvm/compilation_unit.cc
index 66fdba0..4eb7fb5 100644
--- a/src/compiler_llvm/compilation_unit.cc
+++ b/src/compiler_llvm/compilation_unit.cc
@@ -137,11 +137,11 @@
}
-bool CompilationUnit::WriteBitcodeToFile() {
+bool CompilationUnit::WriteBitcodeToFile(const std::string& bitcode_filename) {
std::string errmsg;
llvm::OwningPtr<llvm::tool_output_file> out_file(
- new llvm::tool_output_file(bitcode_filename_.c_str(), errmsg,
+ new llvm::tool_output_file(bitcode_filename.c_str(), errmsg,
llvm::raw_fd_ostream::F_Binary));
diff --git a/src/compiler_llvm/compilation_unit.h b/src/compiler_llvm/compilation_unit.h
index 953f4f4..b206c80 100644
--- a/src/compiler_llvm/compilation_unit.h
+++ b/src/compiler_llvm/compilation_unit.h
@@ -69,14 +69,6 @@
return irb_.get();
}
- std::string const& GetBitcodeFileName() const {
- return bitcode_filename_;
- }
-
- void SetBitcodeFileName(std::string const& filename) {
- bitcode_filename_ = filename;
- }
-
ElfImage GetElfImage() const {
return ElfImage(elf_image_);
}
@@ -86,7 +78,7 @@
return num_elf_funcs_++;
}
- bool WriteBitcodeToFile();
+ bool WriteBitcodeToFile(const std::string& bitcode_filename);
bool Materialize();
@@ -116,7 +108,6 @@
llvm::Module* module_;
std::string elf_image_;
- std::string bitcode_filename_;
SafeMap<const llvm::Function*, CompiledMethod*> compiled_methods_map_;
diff --git a/src/compiler_llvm/compiler_llvm.cc b/src/compiler_llvm/compiler_llvm.cc
index 8945210..28320c7 100644
--- a/src/compiler_llvm/compiler_llvm.cc
+++ b/src/compiler_llvm/compiler_llvm.cc
@@ -129,15 +129,8 @@
// Allocate compilation unit
size_t cunit_idx = cunits_.size();
-
curr_cunit_ = new CompilationUnit(insn_set_, cunit_idx);
- // Setup bitcode output filename
- if (IsBitcodeFileNameAvailable()) {
- curr_cunit_->SetBitcodeFileName(
- StringPrintf("%s-%zu", bitcode_filename_.c_str(), cunit_idx));
- }
-
// Register compilation unit
cunits_.push_back(curr_cunit_);
}
@@ -167,7 +160,9 @@
// Write bitcode to file when filename is set
if (IsBitcodeFileNameAvailable()) {
- curr_cunit_->WriteBitcodeToFile();
+ const size_t cunit_idx = cunits_.size();
+ curr_cunit_->WriteBitcodeToFile(
+ StringPrintf("%s-%zu", bitcode_filename_.c_str(), cunit_idx));
}
// Materialize the llvm::Module into ELF object file