incr.comp.: Add -Cincremental in addition to -Zincremental
This commit is contained in:
parent
5a0dc2d06d
commit
796264b6df
3 changed files with 25 additions and 5 deletions
|
|
@ -1013,6 +1013,8 @@ options! {CodegenOptions, CodegenSetter, basic_codegen_options,
|
|||
"set the threshold for inlining a function (default: 225)"),
|
||||
panic: Option<PanicStrategy> = (None, parse_panic_strategy,
|
||||
[TRACKED], "panic strategy to compile crate with"),
|
||||
incremental: Option<String> = (None, parse_opt_string, [UNTRACKED],
|
||||
"enable incremental compilation"),
|
||||
}
|
||||
|
||||
options! {DebuggingOptions, DebuggingSetter, basic_debugging_options,
|
||||
|
|
@ -1663,7 +1665,24 @@ pub fn build_session_options_and_crate_config(matches: &getopts::Matches)
|
|||
early_error(error_format, "Value for codegen units must be a positive nonzero integer");
|
||||
}
|
||||
|
||||
if cg.lto && debugging_opts.incremental.is_some() {
|
||||
let incremental = match (&debugging_opts.incremental, &cg.incremental) {
|
||||
(&Some(ref path1), &Some(ref path2)) => {
|
||||
if path1 != path2 {
|
||||
early_error(error_format,
|
||||
&format!("conflicting paths for `-Z incremental` and \
|
||||
`-C incremental` specified: {} versus {}",
|
||||
path1,
|
||||
path2));
|
||||
} else {
|
||||
Some(path1)
|
||||
}
|
||||
}
|
||||
(&Some(ref path), &None) => Some(path),
|
||||
(&None, &Some(ref path)) => Some(path),
|
||||
(&None, &None) => None,
|
||||
}.map(|m| PathBuf::from(m));
|
||||
|
||||
if cg.lto && incremental.is_some() {
|
||||
early_error(error_format, "can't perform LTO when compiling incrementally");
|
||||
}
|
||||
|
||||
|
|
@ -1837,8 +1856,6 @@ pub fn build_session_options_and_crate_config(matches: &getopts::Matches)
|
|||
|
||||
let crate_name = matches.opt_str("crate-name");
|
||||
|
||||
let incremental = debugging_opts.incremental.as_ref().map(|m| PathBuf::from(m));
|
||||
|
||||
(Options {
|
||||
crate_types,
|
||||
optimize: opt_level,
|
||||
|
|
@ -2581,6 +2598,9 @@ mod tests {
|
|||
opts.cg.save_temps = true;
|
||||
assert_eq!(reference.dep_tracking_hash(), opts.dep_tracking_hash());
|
||||
|
||||
opts.cg.incremental = Some(String::from("abc"));
|
||||
assert_eq!(reference.dep_tracking_hash(), opts.dep_tracking_hash());
|
||||
|
||||
|
||||
// Make sure changing a [TRACKED] option changes the hash
|
||||
opts = reference.clone();
|
||||
|
|
|
|||
|
|
@ -1025,7 +1025,7 @@ fn collect_and_partition_translation_items<'a, 'tcx>(
|
|||
|
||||
assert_symbols_are_distinct(tcx, items.iter());
|
||||
|
||||
let strategy = if tcx.sess.opts.debugging_opts.incremental.is_some() {
|
||||
let strategy = if tcx.sess.opts.incremental.is_some() {
|
||||
PartitioningStrategy::PerModule
|
||||
} else {
|
||||
PartitioningStrategy::FixedUnitCount(tcx.sess.codegen_units())
|
||||
|
|
|
|||
|
|
@ -1506,7 +1506,7 @@ impl<'test> TestCx<'test> {
|
|||
|
||||
if let Some(ref incremental_dir) = self.props.incremental_dir {
|
||||
rustc.args(&[
|
||||
"-Z",
|
||||
"-C",
|
||||
&format!("incremental={}", incremental_dir.display()),
|
||||
]);
|
||||
rustc.args(&["-Z", "incremental-verify-ich"]);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue