Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Revert enabling parallelism by default #67379

Merged
merged 1 commit into from
Dec 18, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 13 additions & 13 deletions src/bootstrap/test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@
//! our CI.

use std::env;
//use std::ffi::OsString;
use std::ffi::OsString;
use std::fmt;
use std::fs;
//use std::iter;
use std::iter;
use std::path::{Path, PathBuf};
use std::process::Command;

Expand Down Expand Up @@ -204,8 +204,8 @@ impl Step for Cargo {
}

/// Runs `cargo test` for `cargo` packaged with Rust.
fn run(self, _builder: &Builder<'_>) {
/*let compiler = builder.compiler(self.stage, self.host);
fn run(self, builder: &Builder<'_>) {
let compiler = builder.compiler(self.stage, self.host);

builder.ensure(tool::Cargo {
compiler,
Expand Down Expand Up @@ -235,7 +235,7 @@ impl Step for Cargo {

cargo.env("PATH", &path_for_cargo(builder, compiler));

try_run(builder, &mut cargo.into());*/
try_run(builder, &mut cargo.into());
}
}

Expand Down Expand Up @@ -590,14 +590,14 @@ impl Step for Clippy {
}
}

//fn path_for_cargo(builder: &Builder<'_>, compiler: Compiler) -> OsString {
// // Configure PATH to find the right rustc. NB. we have to use PATH
// // and not RUSTC because the Cargo test suite has tests that will
// // fail if rustc is not spelled `rustc`.
// let path = builder.sysroot(compiler).join("bin");
// let old_path = env::var_os("PATH").unwrap_or_default();
// env::join_paths(iter::once(path).chain(env::split_paths(&old_path))).expect("")
//}
fn path_for_cargo(builder: &Builder<'_>, compiler: Compiler) -> OsString {
// Configure PATH to find the right rustc. NB. we have to use PATH
// and not RUSTC because the Cargo test suite has tests that will
// fail if rustc is not spelled `rustc`.
let path = builder.sysroot(compiler).join("bin");
let old_path = env::var_os("PATH").unwrap_or_default();
env::join_paths(iter::once(path).chain(env::split_paths(&old_path))).expect("")
}

#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub struct RustdocTheme {
Expand Down
5 changes: 3 additions & 2 deletions src/ci/run.sh
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,6 @@ if [ "$DIST_SRC" = "" ]; then
RUST_CONFIGURE_ARGS="$RUST_CONFIGURE_ARGS --disable-dist-src"
fi

RUST_CONFIGURE_ARGS="$RUST_CONFIGURE_ARGS --set rust.parallel-compiler"

# If we're deploying artifacts then we set the release channel, otherwise if
# we're not deploying then we want to be sure to enable all assertions because
# we'll be running tests
Expand All @@ -55,6 +53,9 @@ if [ "$DEPLOY$DEPLOY_ALT" = "1" ]; then
if [ "$NO_LLVM_ASSERTIONS" = "1" ]; then
RUST_CONFIGURE_ARGS="$RUST_CONFIGURE_ARGS --disable-llvm-assertions"
elif [ "$DEPLOY_ALT" != "" ]; then
if [ "$NO_PARALLEL_COMPILER" = "" ]; then
RUST_CONFIGURE_ARGS="$RUST_CONFIGURE_ARGS --set rust.parallel-compiler"
fi
RUST_CONFIGURE_ARGS="$RUST_CONFIGURE_ARGS --enable-llvm-assertions"
RUST_CONFIGURE_ARGS="$RUST_CONFIGURE_ARGS --set rust.verify-llvm-ir"
fi
Expand Down
14 changes: 7 additions & 7 deletions src/librustc/dep_graph/graph.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ use rustc_data_structures::stable_hasher::{HashStable, StableHasher};
use rustc_data_structures::fx::{FxHashMap, FxHashSet};
use rustc_index::vec::{Idx, IndexVec};
use smallvec::SmallVec;
use rustc_data_structures::sync::{Lrc, Lock, AtomicU32, AtomicUsize, Ordering};
use rustc_data_structures::sync::{Lrc, Lock, AtomicU32, AtomicU64, Ordering};
use rustc_data_structures::sharded::{self, Sharded};
use std::sync::atomic::Ordering::SeqCst;
use std::env;
Expand Down Expand Up @@ -485,8 +485,8 @@ impl DepGraph {
if cfg!(debug_assertions) {
let current_dep_graph = &self.data.as_ref().unwrap().current;

Some((current_dep_graph.total_read_count.load(SeqCst) as u64,
current_dep_graph.total_duplicate_read_count.load(SeqCst) as u64))
Some((current_dep_graph.total_read_count.load(SeqCst),
current_dep_graph.total_duplicate_read_count.load(SeqCst)))
} else {
None
}
Expand Down Expand Up @@ -970,8 +970,8 @@ pub(super) struct CurrentDepGraph {

/// These are simple counters that are for profiling and
/// debugging and only active with `debug_assertions`.
total_read_count: AtomicUsize,
total_duplicate_read_count: AtomicUsize,
total_read_count: AtomicU64,
total_duplicate_read_count: AtomicU64,
}

impl CurrentDepGraph {
Expand Down Expand Up @@ -1012,8 +1012,8 @@ impl CurrentDepGraph {
)),
anon_id_seed: stable_hasher.finish(),
forbidden_edge,
total_read_count: AtomicUsize::new(0),
total_duplicate_read_count: AtomicUsize::new(0),
total_read_count: AtomicU64::new(0),
total_duplicate_read_count: AtomicU64::new(0),
}
}

Expand Down
1 change: 0 additions & 1 deletion src/librustc_data_structures/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
#![feature(integer_atomics)]
#![feature(test)]
#![feature(associated_type_bounds)]
#![feature(cfg_target_has_atomic)]

#![cfg_attr(unix, feature(libc))]

Expand Down
4 changes: 1 addition & 3 deletions src/librustc_data_structures/sync.rs
Original file line number Diff line number Diff line change
Expand Up @@ -317,9 +317,7 @@ cfg_if! {
pub use parking_lot::MutexGuard as LockGuard;
pub use parking_lot::MappedMutexGuard as MappedLockGuard;

pub use std::sync::atomic::{AtomicBool, AtomicUsize, AtomicU32};
#[cfg(target_has_atomic = "64")]
pub use std::sync::atomic::{AtomicU64};
pub use std::sync::atomic::{AtomicBool, AtomicUsize, AtomicU32, AtomicU64};

pub use crossbeam_utils::atomic::AtomicCell;

Expand Down
10 changes: 5 additions & 5 deletions src/librustc_session/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1358,11 +1358,11 @@ options! {DebuggingOptions, DebuggingSetter, basic_debugging_options,
"prints the LLVM optimization passes being run"),
ast_json: bool = (false, parse_bool, [UNTRACKED],
"print the AST as JSON and halt"),
// We default to min(4, vCPUs) here since we want to avoid spawning *too*
// many threads -- that causes scalability issues due to contention on
// the jobserver pipe (at least) -- but 4 is a reasonable amount on systems
// with lots of cores.
threads: usize = (std::cmp::min(::num_cpus::get(), 4), parse_threads, [UNTRACKED],
// We default to 1 here since we want to behave like
// a sequential compiler for now. This'll likely be adjusted
// in the future. Note that -Zthreads=0 is the way to get
// the num_cpus behavior.
threads: usize = (1, parse_threads, [UNTRACKED],
"use a thread pool with N threads"),
ast_json_noexpand: bool = (false, parse_bool, [UNTRACKED],
"print the pre-expansion AST as JSON and halt"),
Expand Down
6 changes: 3 additions & 3 deletions src/librustc_session/session.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ use rustc_errors::ErrorReported;

use rustc_data_structures::base_n;
use rustc_data_structures::sync::{
self, Lrc, Lock, OneThread, Once, AtomicUsize, Ordering,
self, Lrc, Lock, OneThread, Once, AtomicU64, AtomicUsize, Ordering,
Ordering::SeqCst,
};
use rustc_data_structures::impl_stable_hash_via_hash;
Expand Down Expand Up @@ -119,7 +119,7 @@ pub struct Session {
/// If `-zprint-fuel=crate`, `Some(crate)`.
pub print_fuel_crate: Option<String>,
/// Always set to zero and incremented so that we can print fuel expended by a crate.
pub print_fuel: AtomicUsize,
pub print_fuel: AtomicU64,

/// Loaded up early on in the initialization of this `Session` to avoid
/// false positives about a job server in our environment.
Expand Down Expand Up @@ -1116,7 +1116,7 @@ fn build_session_(
out_of_fuel: false,
});
let print_fuel_crate = sopts.debugging_opts.print_fuel.clone();
let print_fuel = AtomicUsize::new(0);
let print_fuel = AtomicU64::new(0);

let working_dir = env::current_dir().unwrap_or_else(|e|
parse_sess.span_diagnostic
Expand Down
2 changes: 1 addition & 1 deletion src/test/ui/traits/cycle-cache-err-60010.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ struct SalsaStorage {
}

impl Database for RootDatabase {
type Storage = SalsaStorage;
type Storage = SalsaStorage; //~ ERROR overflow
}
impl HasQueryGroup for RootDatabase {}
impl<DB> Query<DB> for ParseQuery
Expand Down
18 changes: 17 additions & 1 deletion src/test/ui/traits/cycle-cache-err-60010.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,22 @@ LL | _parse: <ParseQuery as Query<RootDatabase>>::Data,
|
= note: required because of the requirements on the impl of `Query<RootDatabase>` for `ParseQuery`

error: aborting due to previous error
error[E0275]: overflow evaluating the requirement `Runtime<RootDatabase>: std::panic::RefUnwindSafe`
--> $DIR/cycle-cache-err-60010.rs:31:5
|
LL | type Storage;
| ------- associated type defined here
...
LL | impl Database for RootDatabase {
| ------------------------------ in this `impl` item
LL | type Storage = SalsaStorage;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: required because it appears within the type `RootDatabase`
= note: required because of the requirements on the impl of `SourceDatabase` for `RootDatabase`
= note: required because of the requirements on the impl of `Query<RootDatabase>` for `ParseQuery`
= note: required because it appears within the type `SalsaStorage`

error: aborting due to 2 previous errors

For more information about this error, try `rustc --explain E0275`.