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