diff --git a/src/bootstrap/check.rs b/src/bootstrap/check.rs index 1187376e177..5faec279438 100644 --- a/src/bootstrap/check.rs +++ b/src/bootstrap/check.rs @@ -792,6 +792,7 @@ impl Step for Compiletest { flags.push("-g".to_string()); } flags.push("-Zmiri -Zunstable-options".to_string()); + flags.push(build.config.cmd.rustc_args().join(" ")); if let Some(linker) = build.linker(target) { cmd.arg("--linker").arg(linker); diff --git a/src/bootstrap/flags.rs b/src/bootstrap/flags.rs index b5d51598fab..0816c4dfe3d 100644 --- a/src/bootstrap/flags.rs +++ b/src/bootstrap/flags.rs @@ -54,6 +54,7 @@ pub enum Subcommand { Test { paths: Vec, test_args: Vec, + rustc_args: Vec, fail_fast: bool, }, Bench { @@ -150,6 +151,12 @@ To learn more about a subcommand, run `./x.py -h`"); "test" => { opts.optflag("", "no-fail-fast", "Run all tests regardless of failure"); opts.optmulti("", "test-args", "extra arguments", "ARGS"); + opts.optmulti( + "", + "rustc-args", + "extra options to pass the compiler when running tests", + "ARGS", + ); }, "bench" => { opts.optmulti("", "test-args", "extra arguments", "ARGS"); }, "clean" => { opts.optflag("", "all", "clean all build artifacts"); }, @@ -283,6 +290,7 @@ Arguments: Subcommand::Test { paths, test_args: matches.opt_strs("test-args"), + rustc_args: matches.opt_strs("rustc-args"), fail_fast: !matches.opt_present("no-fail-fast"), } } @@ -362,6 +370,15 @@ impl Subcommand { } } + pub fn rustc_args(&self) -> Vec<&str> { + match *self { + Subcommand::Test { ref rustc_args, .. } => { + rustc_args.iter().flat_map(|s| s.split_whitespace()).collect() + } + _ => Vec::new(), + } + } + pub fn fail_fast(&self) -> bool { match *self { Subcommand::Test { fail_fast, .. } => fail_fast,