Skip to content

Commit 655f9af

Browse files
committed
Add flag to enable communication
1 parent da5ecec commit 655f9af

File tree

4 files changed

+12
-6
lines changed

4 files changed

+12
-6
lines changed

benches/helpers/miri_helper.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ impl rustc_driver::Callbacks for MiriCompilerCalls<'_> {
2525
);
2626

2727
self.bencher.iter(|| {
28-
let config = miri::MiriConfig { validate: true, args: vec![], seed: None };
28+
let config = miri::MiriConfig { validate: true, communicate: false, args: vec![], seed: None };
2929
eval_main(tcx, entry_def_id, config);
3030
});
3131
});

src/bin/miri-rustc-tests.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ impl rustc_driver::Callbacks for MiriCompilerCalls {
4848
fn visit_item(&mut self, i: &'hir hir::Item) {
4949
if let hir::ItemKind::Fn(.., body_id) = i.node {
5050
if i.attrs.iter().any(|attr| attr.check_name(syntax::symbol::sym::test)) {
51-
let config = MiriConfig { validate: true, args: vec![], seed: None };
51+
let config = MiriConfig { validate: true, communicate: false, args: vec![], seed: None };
5252
let did = self.0.hir().body_owner_def_id(body_id);
5353
println!("running test: {}", self.0.def_path_debug_str(did));
5454
miri::eval_main(self.0, did, config);
@@ -61,7 +61,8 @@ impl rustc_driver::Callbacks for MiriCompilerCalls {
6161
}
6262
tcx.hir().krate().visit_all_item_likes(&mut Visitor(tcx));
6363
} else if let Some((entry_def_id, _)) = tcx.entry_fn(LOCAL_CRATE) {
64-
let config = MiriConfig { validate: true, args: vec![], seed: None };
64+
65+
let config = MiriConfig { validate: true, communicate: false, args: vec![], seed: None };
6566
miri::eval_main(tcx, entry_def_id, config);
6667

6768
compiler.session().abort_if_errors();

src/bin/miri.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ fn main() {
130130

131131
// Parse our arguments and split them across `rustc` and `miri`.
132132
let mut validate = true;
133+
let mut communicate = false;
133134
let mut seed: Option<u64> = None;
134135
let mut rustc_args = vec![];
135136
let mut miri_args = vec![];
@@ -147,6 +148,9 @@ fn main() {
147148
"-Zmiri-disable-validation" => {
148149
validate = false;
149150
},
151+
"-Zmiri-enable-communication" => {
152+
communicate = true;
153+
},
150154
"--" => {
151155
after_dashdash = true;
152156
}
@@ -196,7 +200,7 @@ fn main() {
196200

197201
debug!("rustc arguments: {:?}", rustc_args);
198202
debug!("miri arguments: {:?}", miri_args);
199-
let miri_config = miri::MiriConfig { validate, args: miri_args, seed };
203+
let miri_config = miri::MiriConfig { validate, communicate, args: miri_args, seed };
200204
let result = rustc_driver::report_ices_to_stderr_if_any(move || {
201205
rustc_driver::run_compiler(&rustc_args, &mut MiriCompilerCalls { miri_config }, None, None)
202206
}).and_then(|result| result);

src/eval.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,11 @@ use crate::{
1818
#[derive(Clone)]
1919
pub struct MiriConfig {
2020
pub validate: bool,
21+
pub communicate: bool,
2122
pub args: Vec<String>,
2223

2324
// The seed to use when non-determinism is required (e.g. getrandom())
24-
pub seed: Option<u64>
25+
pub seed: Option<u64>,
2526
}
2627

2728
// Used by priroda.
@@ -158,7 +159,7 @@ pub fn create_ecx<'mir, 'tcx: 'mir>(
158159
cur_ptr = cur_ptr.offset(char_size, tcx)?;
159160
}
160161
}
161-
162+
162163
assert!(args.next().is_none(), "start lang item has more arguments than expected");
163164

164165
Ok(ecx)

0 commit comments

Comments
 (0)