about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMark Rousskov <mark.simulacrum@gmail.com>2019-06-03 12:14:10 -0600
committerMark Rousskov <mark.simulacrum@gmail.com>2019-06-03 12:57:29 -0600
commit5ce3c8137b4d29481038d4b322f6db28d946d648 (patch)
tree994226b105661deeef58560c4de5c7ab3d2a225b
parent61d286e9d0530bea8fb1ae24be3989baa9ea08eb (diff)
downloadrust-5ce3c8137b4d29481038d4b322f6db28d946d648.tar.gz
rust-5ce3c8137b4d29481038d4b322f6db28d946d648.zip
Treat 0 as special value for codegen-units-std
Fixes #57669
-rw-r--r--src/bootstrap/config.rs19
1 files changed, 10 insertions, 9 deletions
diff --git a/src/bootstrap/config.rs b/src/bootstrap/config.rs
index d618654b129..edeb07fda1d 100644
--- a/src/bootstrap/config.rs
+++ b/src/bootstrap/config.rs
@@ -11,7 +11,6 @@ use std::process;
 use std::cmp;
 
 use build_helper::t;
-use num_cpus;
 use toml;
 use serde::Deserialize;
 use crate::cache::{INTERNER, Interned};
@@ -401,7 +400,7 @@ impl Config {
         config.rustc_error_format = flags.rustc_error_format;
         config.on_fail = flags.on_fail;
         config.stage = flags.stage;
-        config.jobs = flags.jobs;
+        config.jobs = flags.jobs.map(threads_from_config);
         config.cmd = flags.cmd;
         config.incremental = flags.incremental;
         config.dry_run = flags.dry_run;
@@ -583,13 +582,8 @@ impl Config {
 
             set(&mut config.rust_codegen_backends_dir, rust.codegen_backends_dir.clone());
 
-            match rust.codegen_units {
-                Some(0) => config.rust_codegen_units = Some(num_cpus::get() as u32),
-                Some(n) => config.rust_codegen_units = Some(n),
-                None => {}
-            }
-
-            config.rust_codegen_units_std = rust.codegen_units_std;
+            config.rust_codegen_units = rust.codegen_units.map(threads_from_config);
+            config.rust_codegen_units_std = rust.codegen_units_std.map(threads_from_config);
         }
 
         if let Some(ref t) = toml.target {
@@ -688,3 +682,10 @@ fn set<T>(field: &mut T, val: Option<T>) {
         *field = v;
     }
 }
+
+fn threads_from_config(v: u32) -> u32 {
+    match v {
+        0 => num_cpus::get() as u32,
+        n => n,
+    }
+}