use back::lto;
use back::link::{get_linker, remove};
-use rustc_incremental::save_trans_partition;
+use rustc_incremental::{save_trans_partition, in_incr_comp_dir};
use session::config::{OutputFilenames, OutputTypes, Passes, SomePasses, AllPasses};
use session::Session;
use session::config::{self, OutputType};
remark: Passes,
// Worker thread number
worker: usize,
- // Directory where incremental data is stored (if any)
- incremental: Option<PathBuf>,
+ // The incremental compilation session directory, or None if we are not
+ // compiling incrementally
+ incr_comp_session_dir: Option<PathBuf>
}
impl<'a> CodegenContext<'a> {
plugin_passes: sess.plugin_llvm_passes.borrow().clone(),
remark: sess.opts.cg.remark.clone(),
worker: 0,
- incremental: sess.opts.incremental.clone(),
+ incr_comp_session_dir: sess.incr_comp_session_dir_opt().map(|r| r.clone())
}
}
}
work_item.output_names);
}
ModuleSource::Preexisting(wp) => {
- let incremental = cgcx.incremental.as_ref().unwrap();
+ let incr_comp_session_dir = cgcx.incr_comp_session_dir
+ .as_ref()
+ .unwrap();
let name = &work_item.mtrans.name;
for (kind, saved_file) in wp.saved_files {
let obj_out = work_item.output_names.temp_path(kind, Some(name));
- let source_file = incremental.join(&saved_file);
+ let source_file = in_incr_comp_dir(&incr_comp_session_dir,
+ &saved_file);
debug!("copying pre-existing module `{}` from {:?} to {}",
work_item.mtrans.name,
source_file,
obj_out.display());
match link_or_copy(&source_file, &obj_out) {
- Ok(()) => { }
+ Ok(_) => { }
Err(err) => {
cgcx.handler.err(&format!("unable to copy {} to {}: {}",
source_file.display(),
let mut tx = Some(tx);
futures.push(rx);
- let incremental = sess.opts.incremental.clone();
+ let incr_comp_session_dir = sess.incr_comp_session_dir_opt().map(|r| r.clone());
thread::Builder::new().name(format!("codegen-{}", i)).spawn(move || {
let diag_handler = Handler::with_emitter(true, false, box diag_emitter);
plugin_passes: plugin_passes,
remark: remark,
worker: i,
- incremental: incremental,
+ incr_comp_session_dir: incr_comp_session_dir
};
loop {
// inline with lifetime intrinsics, and O2+ we add an inliner with a
// thresholds copied from clang.
match (opt_level, opt_size, inline_threshold) {
- (_, _, Some(t)) => {
+ (.., Some(t)) => {
llvm::LLVMPassManagerBuilderUseInlinerWithThreshold(builder, t as u32);
}
- (llvm::CodeGenOptLevel::Aggressive, _, _) => {
+ (llvm::CodeGenOptLevel::Aggressive, ..) => {
llvm::LLVMPassManagerBuilderUseInlinerWithThreshold(builder, 275);
}
(_, llvm::CodeGenOptSizeDefault, _) => {
(_, llvm::CodeGenOptSizeAggressive, _) => {
llvm::LLVMPassManagerBuilderUseInlinerWithThreshold(builder, 25);
}
- (llvm::CodeGenOptLevel::None, _, _) => {
+ (llvm::CodeGenOptLevel::None, ..) => {
llvm::LLVMRustAddAlwaysInlinePass(builder, false);
}
- (llvm::CodeGenOptLevel::Less, _, _) => {
+ (llvm::CodeGenOptLevel::Less, ..) => {
llvm::LLVMRustAddAlwaysInlinePass(builder, true);
}
- (llvm::CodeGenOptLevel::Default, _, _) => {
+ (llvm::CodeGenOptLevel::Default, ..) => {
llvm::LLVMPassManagerBuilderUseInlinerWithThreshold(builder, 225);
}
- (llvm::CodeGenOptLevel::Other, _, _) => {
+ (llvm::CodeGenOptLevel::Other, ..) => {
bug!("CodeGenOptLevel::Other selected")
}
}