compiletest: support --pass=check and --pass=build for mir-opt tests.

This commit is contained in:
Eduard-Mihai Burtescu 2020-04-11 13:38:12 +03:00
parent 1d58e6ba05
commit 15719cde5e

View file

@ -357,14 +357,15 @@ impl<'test> TestCx<'test> {
Ui if pm == Some(PassMode::Run) || self.props.fail_mode == Some(FailMode::Run) => {
WillExecute::Yes
}
Ui => WillExecute::No,
MirOpt if pm == Some(PassMode::Run) => WillExecute::Yes,
Ui | MirOpt => WillExecute::No,
mode => panic!("unimplemented for mode {:?}", mode),
}
}
fn should_run_successfully(&self, pm: Option<PassMode>) -> bool {
match self.config.mode {
Ui => pm == Some(PassMode::Run),
Ui | MirOpt => pm == Some(PassMode::Run),
mode => panic!("unimplemented for mode {:?}", mode),
}
}
@ -3057,18 +3058,24 @@ impl<'test> TestCx<'test> {
}
fn run_mir_opt_test(&self) {
let proc_res = self.compile_test(WillExecute::Yes, EmitMetadata::No);
let pm = self.pass_mode();
let should_run = self.should_run(pm);
let emit_metadata = self.should_emit_metadata(pm);
let proc_res = self.compile_test(should_run, emit_metadata);
if !proc_res.status.success() {
self.fatal_proc_rec("compilation failed!", &proc_res);
}
let proc_res = self.exec_compiled_test();
if !proc_res.status.success() {
self.fatal_proc_rec("test run failed!", &proc_res);
}
self.check_mir_dump();
if let WillExecute::Yes = should_run {
let proc_res = self.exec_compiled_test();
if !proc_res.status.success() {
self.fatal_proc_rec("test run failed!", &proc_res);
}
}
}
fn check_mir_dump(&self) {