You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: doc/genmc.md
+3Lines changed: 3 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -24,6 +24,8 @@ Note that `cargo miri test` in GenMC mode is currently not supported.
24
24
### Supported Parameters
25
25
26
26
-`-Zmiri-genmc`: Enable GenMC mode (not required if any other GenMC options are used).
27
+
-`-Zmiri-genmc-estimate`: This enables estimation of the concurrent execution space and verification time, before running the full verification. This should help users detect when their program is too complex to fully verify in a reasonable time. This will explore enough executions to make a good estimation, but at least 10 and at most `estimation-max` executions.
28
+
-`-Zmiri-genmc-estimation-max={MAX_ITERATIONS}`: Set the maximum number of executions that will be explored during estimation (default: 1000).
27
29
-`-Zmiri-genmc-print-exec-graphs={none,explored,blocked,all}`: Make GenMC print the execution graph of the program after every explored, every blocked, or after every execution (default: None).
28
30
-`-Zmiri-genmc-print-exec-graphs`: Shorthand for suffix `=explored`.
29
31
-`-Zmiri-genmc-print-genmc-output`: Print the output that GenMC provides. NOTE: this output is quite verbose and the events in the printed execution graph are hard to map back to the Rust code location they originate from.
@@ -36,6 +38,7 @@ Note that `cargo miri test` in GenMC mode is currently not supported.
36
38
-`debug1`: Print revisits considered by GenMC.
37
39
-`debug2`: Print the execution graph after every memory access.
38
40
-`debug3`: Print reads-from values considered by GenMC.
41
+
-`-Zmiri-genmc-verbose`: Show more information, such as estimated number of executions, and time taken for verification.
39
42
40
43
#### Regular Miri parameters useful for GenMC mode
Copy file name to clipboardExpand all lines: src/concurrency/genmc/config.rs
+17Lines changed: 17 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -10,11 +10,15 @@ use crate::{IsolatedOp, MiriConfig, RejectOpWith};
10
10
pubstructGenmcConfig{
11
11
/// Parameters sent to the C++ side to create a new handle to the GenMC model checker.
12
12
pub(super)params:GenmcParams,
13
+
pub(super)do_estimation:bool,
13
14
/// Print the output message that GenMC generates when an error occurs.
14
15
/// This error message is currently hard to use, since there is no clear mapping between the events that GenMC sees and the Rust code location where this event was produced.
15
16
pub(super)print_genmc_output:bool,
16
17
/// The log level for GenMC.
17
18
pub(super)log_level:LogLevel,
19
+
/// Enable more verbose output, such as number of executions estimate
20
+
/// and time to completion of verification step.
21
+
pub(super)verbose_output:bool,
18
22
}
19
23
20
24
implGenmcConfig{
@@ -57,8 +61,21 @@ impl GenmcConfig {
57
61
"Invalid suffix to GenMC argument '-Zmiri-genmc-print-exec-graphs', expected '', '=none', '=explored', '=blocked' or '=all'"
58
62
)),
59
63
}
64
+
}elseif trimmed_arg == "estimate"{
65
+
// FIXME(genmc): should this be on by default (like for GenMC)?
66
+
// Enable estimating the execution space and require time before running the actual verification.
0 commit comments