(mut future: F) -> F::Output {
+ 47| 1| let mut future = unsafe { Pin::new_unchecked(&mut future) };
+ 48| 1|
+ 49| 1| static VTABLE: RawWakerVTable = RawWakerVTable::new(
+ 50| 1| |_| unimplemented!("clone"),
+ 51| 1| |_| unimplemented!("wake"),
+ 52| 1| |_| unimplemented!("wake_by_ref"),
+ 53| 1| |_| (),
+ 54| 1| );
+ 55| 1| let waker = unsafe { Waker::from_raw(RawWaker::new(core::ptr::null(), &VTABLE)) };
+ 56| 1| let mut context = Context::from_waker(&waker);
+ 57| |
+ 58| | loop {
+ 59| 1| if let Poll::Ready(val) = future.as_mut().poll(&mut context) {
+ 60| 1| break val;
+ 61| | }
+ 62| 0| }
+ 63| 1| }
+ 64| |}
+
diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.conditions.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.conditions.txt
index 173ff4aa4c48..e55a574c056b 100644
--- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.conditions.txt
+++ b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.conditions.txt
@@ -27,7 +27,8 @@
27| |
28| 1| if countdown > 7 {
29| 1| countdown -= 4;
- 30| 0| } else if countdown > 2 {
+ 30| 1| } else if countdown > 2 {
+ ^0
31| 0| if countdown < 1 || countdown > 5 || countdown != 9 {
32| 0| countdown = 0;
33| 0| }
@@ -36,34 +37,70 @@
36| 0| return;
37| | }
38| |
- 39| 1| let mut countdown = 0;
- 40| 1| if true {
- 41| 1| countdown = 1;
- 42| 1| }
- 43| |
- 44| 1| let z = if countdown > 7 {
- ^0
- 45| 0| countdown -= 4;
- 46| 1| } else if countdown > 2 {
- 47| 0| if countdown < 1 || countdown > 5 || countdown != 9 {
- 48| 0| countdown = 0;
- 49| 0| }
- 50| 0| countdown -= 5;
- 51| | } else {
- 52| 1| let should_be_reachable = countdown;
- 53| 1| println!("reached");
- 54| 1| return;
- 55| | };
+ 39| 1| if true {
+ 40| | // Demonstrate the difference with `TerminatorKind::Assert` as of 2020-11-15. Assert is no
+ 41| | // longer treated as a `BasicCoverageBlock` terminator, which changed the coverage region,
+ 42| | // for the executed `then` block above, to include the closing brace on line 30. That
+ 43| | // changed the line count, but the coverage code region (for the `else if` condition) is
+ 44| | // still valid.
+ 45| | //
+ 46| | // Note that `if` (then) and `else` blocks include the closing brace in their coverage
+ 47| | // code regions when the last line in the block ends in a semicolon, because the Rust
+ 48| | // compiler inserts a `StatementKind::Assign` to assign `const ()` to a `Place`, for the
+ 49| | // empty value for the executed block. When the last line does not end in a semicolon
+ 50| | // (that is, when the block actually results in a value), the additional `Assign` is not
+ 51| | // generated, and the brace is not included.
+ 52| 1| let mut countdown = 0;
+ 53| 1| if true {
+ 54| 1| countdown = 10;
+ 55| 1| }
56| |
- 57| 0| let w = if countdown > 7 {
- 58| 0| countdown -= 4;
- 59| 0| } else if countdown > 2 {
- 60| 0| if countdown < 1 || countdown > 5 || countdown != 9 {
- 61| 0| countdown = 0;
- 62| 0| }
- 63| 0| countdown -= 5;
- 64| | } else {
- 65| 0| return;
- 66| | };
- 67| 1|}
+ 57| 1| if countdown > 7 {
+ 58| 1| countdown -= 4;
+ 59| 1| }
+ 60| | // The closing brace of the `then` branch is now included in the coverage region, and shown
+ 61| | // as "executed" (giving its line a count of 1 here). Since, in the original version above,
+ 62| | // the closing brace shares the same line as the `else if` conditional expression (which is
+ 63| | // not executed if the first `then` condition is true), only the condition's code region is
+ 64| | // marked with a count of 0 now.
+ 65| 0| else if countdown > 2 {
+ 66| 0| if countdown < 1 || countdown > 5 || countdown != 9 {
+ 67| 0| countdown = 0;
+ 68| 0| }
+ 69| 0| countdown -= 5;
+ 70| | } else {
+ 71| 0| return;
+ 72| | }
+ 73| 1| }
+ 74| |
+ 75| 1| let mut countdown = 0;
+ 76| 1| if true {
+ 77| 1| countdown = 1;
+ 78| 1| }
+ 79| |
+ 80| 1| let z = if countdown > 7 {
+ ^0
+ 81| 0| countdown -= 4;
+ 82| 1| } else if countdown > 2 {
+ 83| 0| if countdown < 1 || countdown > 5 || countdown != 9 {
+ 84| 0| countdown = 0;
+ 85| 0| }
+ 86| 0| countdown -= 5;
+ 87| | } else {
+ 88| 1| let should_be_reachable = countdown;
+ 89| 1| println!("reached");
+ 90| 1| return;
+ 91| | };
+ 92| |
+ 93| 0| let w = if countdown > 7 {
+ 94| 0| countdown -= 4;
+ 95| 0| } else if countdown > 2 {
+ 96| 0| if countdown < 1 || countdown > 5 || countdown != 9 {
+ 97| 0| countdown = 0;
+ 98| 0| }
+ 99| 0| countdown -= 5;
+ 100| | } else {
+ 101| 0| return;
+ 102| | };
+ 103| 1|}
diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.inner_items.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.inner_items.txt
index 4a51f842a4bb..efd9cd4f72d3 100644
--- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.inner_items.txt
+++ b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.inner_items.txt
@@ -38,7 +38,7 @@
37| | }
38| |
39| | impl InTrait for InStruct {
- 40| | fn trait_func(&mut self, incr: u32) {
+ 40| 1| fn trait_func(&mut self, incr: u32) {
41| 1| self.in_struct_field += incr;
42| 1| in_func(self.in_struct_field);
43| 1| }
diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.nested_loops.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.nested_loops.txt
index c9f373bf6a7c..dd86a85815b3 100644
--- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.nested_loops.txt
+++ b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.nested_loops.txt
@@ -15,7 +15,7 @@
15| 1| a -= 10;
16| 1| if is_true {
17| 1| break 'outer;
- 18| | } else {
+ 18| 0| } else {
19| 0| a -= 2;
20| 0| }
21| 2| }
diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.overflow.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.overflow.txt
new file mode 100644
index 000000000000..322de1da25a2
--- /dev/null
+++ b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.overflow.txt
@@ -0,0 +1,64 @@
+ 1| |#![allow(unused_assignments)]
+ 2| |// expect-exit-status-101
+ 3| |
+ 4| |fn might_overflow(to_add: u32) -> u32 {
+ 5| 4| if to_add > 5 {
+ 6| 1| println!("this will probably overflow");
+ 7| 3| }
+ 8| 4| let add_to = u32::MAX - 5;
+ 9| 4| println!("does {} + {} overflow?", add_to, to_add);
+ 10| 4| let result = to_add + add_to;
+ 11| 4| println!("continuing after overflow check");
+ 12| 4| result
+ 13| 4|}
+ 14| |
+ 15| |fn main() -> Result<(),u8> {
+ 16| 1| let mut countdown = 10;
+ 17| 10| while countdown > 0 {
+ 18| 10| if countdown == 1 {
+ 19| 0| let result = might_overflow(10);
+ 20| 0| println!("Result: {}", result);
+ 21| 10| } else if countdown < 5 {
+ 22| 3| let result = might_overflow(1);
+ 23| 3| println!("Result: {}", result);
+ 24| 15| }
+ 25| 9| countdown -= 1;
+ 26| | }
+ 27| 0| Ok(())
+ 28| 0|}
+ 29| |
+ 30| |// Notes:
+ 31| |// 1. Compare this program and its coverage results to those of the very similar test `assert.rs`,
+ 32| |// and similar tests `panic_unwind.rs`, abort.rs` and `try_error_result.rs`.
+ 33| |// 2. This test confirms the coverage generated when a program passes or fails a
+ 34| |// compiler-generated `TerminatorKind::Assert` (based on an overflow check, in this case).
+ 35| |// 3. Similar to how the coverage instrumentation handles `TerminatorKind::Call`,
+ 36| |// compiler-generated assertion failures are assumed to be a symptom of a program bug, not
+ 37| |// expected behavior. To simplify the coverage graphs and keep instrumented programs as
+ 38| |// small and fast as possible, `Assert` terminators are assumed to always succeed, and
+ 39| |// therefore are considered "non-branching" terminators. So, an `Assert` terminator does not
+ 40| |// get its own coverage counter.
+ 41| |// 4. After an unhandled panic or failed Assert, coverage results may not always be intuitive.
+ 42| |// In this test, the final count for the statements after the `if` block in `might_overflow()`
+ 43| |// is 4, even though the lines after `to_add + add_to` were executed only 3 times. Depending
+ 44| |// on the MIR graph and the structure of the code, this count could have been 3 (which might
+ 45| |// have been valid for the overflowed add `+`, but should have been 4 for the lines before
+ 46| |// the overflow. The reason for this potential uncertainty is, a `CounterKind` is incremented
+ 47| |// via StatementKind::Counter at the end of the block, but (as in the case in this test),
+ 48| |// a CounterKind::Expression is always evaluated. In this case, the expression was based on
+ 49| |// a `Counter` incremented as part of the evaluation of the `if` expression, which was
+ 50| |// executed, and counted, 4 times, before reaching the overflow add.
+ 51| |
+ 52| |// If the program did not overflow, the coverage for `might_overflow()` would look like this:
+ 53| |//
+ 54| |// 4| |fn might_overflow(to_add: u32) -> u32 {
+ 55| |// 5| 4| if to_add > 5 {
+ 56| |// 6| 0| println!("this will probably overflow");
+ 57| |// 7| 4| }
+ 58| |// 8| 4| let add_to = u32::MAX - 5;
+ 59| |// 9| 4| println!("does {} + {} overflow?", add_to, to_add);
+ 60| |// 10| 4| let result = to_add + add_to;
+ 61| |// 11| 4| println!("continuing after overflow check");
+ 62| |// 12| 4| result
+ 63| |// 13| 4|}
+
diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.panic_unwind.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.panic_unwind.txt
new file mode 100644
index 000000000000..f5149c11b7be
--- /dev/null
+++ b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.panic_unwind.txt
@@ -0,0 +1,50 @@
+ 1| |#![allow(unused_assignments)]
+ 2| |// expect-exit-status-101
+ 3| |
+ 4| |fn might_panic(should_panic: bool) {
+ 5| 4| if should_panic {
+ 6| 1| println!("panicking...");
+ 7| 1| panic!("panics");
+ 8| 3| } else {
+ 9| 3| println!("Don't Panic");
+ 10| 3| }
+ 11| 3|}
+ 12| |
+ 13| |fn main() -> Result<(),u8> {
+ 14| 1| let mut countdown = 10;
+ 15| 10| while countdown > 0 {
+ 16| 10| if countdown == 1 {
+ 17| 0| might_panic(true);
+ 18| 10| } else if countdown < 5 {
+ 19| 3| might_panic(false);
+ 20| 15| }
+ 21| 9| countdown -= 1;
+ 22| | }
+ 23| 0| Ok(())
+ 24| 0|}
+ 25| |
+ 26| |// Notes:
+ 27| |// 1. Compare this program and its coverage results to those of the similar tests `abort.rs` and
+ 28| |// `try_error_result.rs`.
+ 29| |// 2. Since the `panic_unwind.rs` test is allowed to unwind, it is also allowed to execute the
+ 30| |// normal program exit cleanup, including writing out the current values of the coverage
+ 31| |// counters.
+ 32| |// 3. The coverage results show (interestingly) that the `panic!()` call did execute, but it does
+ 33| |// not show coverage of the `if countdown == 1` branch in `main()` that calls
+ 34| |// `might_panic(true)` (causing the call to `panic!()`).
+ 35| |// 4. The reason `main()`s `if countdown == 1` branch, calling `might_panic(true)`, appears
+ 36| |// "uncovered" is, InstrumentCoverage (intentionally) treats `TerminatorKind::Call` terminators
+ 37| |// as non-branching, because when a program executes normally, they always are. Errors handled
+ 38| |// via the try `?` operator produce error handling branches that *are* treated as branches in
+ 39| |// coverage results. By treating calls without try `?` operators as non-branching (assumed to
+ 40| |// return normally and continue) the coverage graph can be simplified, producing smaller,
+ 41| |// faster binaries, and cleaner coverage results.
+ 42| |// 5. The reason the coverage results actually show `panic!()` was called is most likely because
+ 43| |// `panic!()` is a macro, not a simple function call, and there are other `Statement`s and/or
+ 44| |// `Terminator`s that execute with a coverage counter before the panic and unwind occur.
+ 45| |// 6. By best practice, programs should not panic. By design, the coverage implementation will not
+ 46| |// incur additional cost (in program size and execution time) to improve coverage results for
+ 47| |// an event that is not supposted to happen.
+ 48| |// 7. FIXME(#78544): This issue describes a feature request for a proposed option to enable
+ 49| |// more accurate coverage results for tests that intentionally panic.
+
diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.yield.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.yield.txt
new file mode 100644
index 000000000000..28813dd6d0b0
--- /dev/null
+++ b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.yield.txt
@@ -0,0 +1,38 @@
+ 1| |#![feature(generators, generator_trait)]
+ 2| |#![allow(unused_assignments)]
+ 3| |
+ 4| |use std::ops::{Generator, GeneratorState};
+ 5| |use std::pin::Pin;
+ 6| |
+ 7| |fn main() {
+ 8| 1| let mut generator = || {
+ 9| 1| yield 1;
+ 10| 1| return "foo"
+ 11| 1| };
+ 12| |
+ 13| 1| match Pin::new(&mut generator).resume(()) {
+ 14| 1| GeneratorState::Yielded(1) => {}
+ 15| 0| _ => panic!("unexpected value from resume"),
+ 16| | }
+ 17| 1| match Pin::new(&mut generator).resume(()) {
+ 18| 1| GeneratorState::Complete("foo") => {}
+ 19| 0| _ => panic!("unexpected value from resume"),
+ 20| | }
+ 21| |
+ 22| 1| let mut generator = || {
+ 23| 1| yield 1;
+ 24| 1| yield 2;
+ 25| 0| yield 3;
+ 26| 0| return "foo"
+ 27| 0| };
+ 28| |
+ 29| 1| match Pin::new(&mut generator).resume(()) {
+ 30| 1| GeneratorState::Yielded(1) => {}
+ 31| 0| _ => panic!("unexpected value from resume"),
+ 32| | }
+ 33| 1| match Pin::new(&mut generator).resume(()) {
+ 34| 1| GeneratorState::Yielded(2) => {}
+ 35| 0| _ => panic!("unexpected value from resume"),
+ 36| | }
+ 37| 1|}
+
diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.abort.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.abort.txt
new file mode 100644
index 000000000000..e787e5e152d5
--- /dev/null
+++ b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.abort.txt
@@ -0,0 +1,41 @@
+Counter in file 0 15:9 -> 15:27, #1
+Counter in file 0 16:11 -> 16:24, (#1 + (#2 + #3))
+Counter in file 0 17:12 -> 17:25, ((#1 + (#2 + #3)) - #4)
+Counter in file 0 17:26 -> 19:10, #2
+Counter in file 0 19:10 -> 19:11, #3
+Counter in file 0 20:9 -> 20:23, (#2 + #3)
+Counter in file 0 22:5 -> 23:2, #4
+Counter in file 0 6:8 -> 6:20, #1
+Counter in file 0 7:9 -> 8:37, #2
+Counter in file 0 9:12 -> 12:2, (#1 - #2)
+Emitting segments for file: ../coverage/abort.rs
+Combined regions:
+ 6:8 -> 6:20 (count=4)
+ 7:9 -> 8:37 (count=0)
+ 9:12 -> 12:2 (count=4)
+ 15:9 -> 15:27 (count=1)
+ 16:11 -> 16:24 (count=11)
+ 17:12 -> 17:25 (count=10)
+ 17:26 -> 19:10 (count=4)
+ 19:10 -> 19:11 (count=6)
+ 20:9 -> 20:23 (count=10)
+ 22:5 -> 23:2 (count=1)
+Segment at 6:8 (count = 4), RegionEntry
+Segment at 6:20 (count = 0), Skipped
+Segment at 7:9 (count = 0), RegionEntry
+Segment at 8:37 (count = 0), Skipped
+Segment at 9:12 (count = 4), RegionEntry
+Segment at 12:2 (count = 0), Skipped
+Segment at 15:9 (count = 1), RegionEntry
+Segment at 15:27 (count = 0), Skipped
+Segment at 16:11 (count = 11), RegionEntry
+Segment at 16:24 (count = 0), Skipped
+Segment at 17:12 (count = 10), RegionEntry
+Segment at 17:25 (count = 0), Skipped
+Segment at 17:26 (count = 4), RegionEntry
+Segment at 19:10 (count = 6), RegionEntry
+Segment at 19:11 (count = 0), Skipped
+Segment at 20:9 (count = 10), RegionEntry
+Segment at 20:23 (count = 0), Skipped
+Segment at 22:5 (count = 1), RegionEntry
+Segment at 23:2 (count = 0), Skipped
diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.assert.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.assert.txt
new file mode 100644
index 000000000000..81cb6c03da70
--- /dev/null
+++ b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.assert.txt
@@ -0,0 +1,54 @@
+Counter in file 0 10:9 -> 10:27, #1
+Counter in file 0 11:11 -> 11:24, (#1 + (#2 + (#3 + #4)))
+Counter in file 0 12:12 -> 12:26, ((#1 + (#2 + (#3 + #4))) - #5)
+Counter in file 0 12:27 -> 14:10, #2
+Counter in file 0 14:19 -> 14:32, (((#1 + (#2 + (#3 + #4))) - #5) - #2)
+Counter in file 0 14:33 -> 16:10, #3
+Counter in file 0 16:10 -> 16:11, #4
+Counter in file 0 16:10 -> 16:11, (#3 + #4)
+Counter in file 0 17:9 -> 17:23, (#2 + (#3 + #4))
+Counter in file 0 19:5 -> 20:2, #5
+Counter in file 0 5:5 -> 5:48, #1
+Counter in file 0 6:16 -> 6:21, (#1 + 0)
+Counter in file 0 6:37 -> 6:61, #2
+Counter in file 0 7:1 -> 7:2, (#1 - #2)
+Emitting segments for file: ../coverage/assert.rs
+Combined regions:
+ 5:5 -> 5:48 (count=4)
+ 6:16 -> 6:21 (count=4)
+ 6:37 -> 6:61 (count=1)
+ 7:1 -> 7:2 (count=3)
+ 10:9 -> 10:27 (count=1)
+ 11:11 -> 11:24 (count=10)
+ 12:12 -> 12:26 (count=10)
+ 12:27 -> 14:10 (count=0)
+ 14:19 -> 14:32 (count=10)
+ 14:33 -> 16:10 (count=3)
+ 16:10 -> 16:11 (count=15)
+ 17:9 -> 17:23 (count=9)
+ 19:5 -> 20:2 (count=0)
+Segment at 5:5 (count = 4), RegionEntry
+Segment at 5:48 (count = 0), Skipped
+Segment at 6:16 (count = 4), RegionEntry
+Segment at 6:21 (count = 0), Skipped
+Segment at 6:37 (count = 1), RegionEntry
+Segment at 6:61 (count = 0), Skipped
+Segment at 7:1 (count = 3), RegionEntry
+Segment at 7:2 (count = 0), Skipped
+Segment at 10:9 (count = 1), RegionEntry
+Segment at 10:27 (count = 0), Skipped
+Segment at 11:11 (count = 10), RegionEntry
+Segment at 11:24 (count = 0), Skipped
+Segment at 12:12 (count = 10), RegionEntry
+Segment at 12:26 (count = 0), Skipped
+Segment at 12:27 (count = 0), RegionEntry
+Segment at 14:10 (count = 0), Skipped
+Segment at 14:19 (count = 10), RegionEntry
+Segment at 14:32 (count = 0), Skipped
+Segment at 14:33 (count = 3), RegionEntry
+Segment at 16:10 (count = 15), RegionEntry
+Segment at 16:11 (count = 0), Skipped
+Segment at 17:9 (count = 9), RegionEntry
+Segment at 17:23 (count = 0), Skipped
+Segment at 19:5 (count = 0), RegionEntry
+Segment at 20:2 (count = 0), Skipped
diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.async.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.async.txt
new file mode 100644
index 000000000000..f1f02faba536
--- /dev/null
+++ b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.async.txt
@@ -0,0 +1,85 @@
+Counter in file 0 15:9 -> 15:75, #1
+Counter in file 0 15:9 -> 15:75, #1
+Counter in file 0 15:9 -> 15:75, #1
+Counter in file 0 47:13 -> 56:54, #1
+Counter in file 0 59:32 -> 59:35, ((#1 + #2) - #2)
+Counter in file 0 59:39 -> 59:73, (#1 + #2)
+Counter in file 0 60:23 -> 60:26, (((#1 + #2) - #2) + 0)
+Counter in file 0 62:10 -> 62:11, #2
+Counter in file 0 63:5 -> 63:6, (((#1 + #2) - #2) + 0)
+Counter in file 0 53:17 -> 53:19, #1
+Counter in file 0 7:44 -> 7:45, #1
+Counter in file 0 5:24 -> 5:25, #1
+Counter in file 0 5:22 -> 5:25, #1
+Counter in file 0 25:19 -> 26:12, #1
+Counter in file 0 27:9 -> 27:10, #3
+Counter in file 0 27:14 -> 27:17, (#1 + 0)
+Counter in file 0 27:27 -> 27:32, #2
+Counter in file 0 27:32 -> 27:33, (#2 - #3)
+Counter in file 0 27:36 -> 27:38, (#3 + 0)
+Counter in file 0 28:14 -> 28:16, #4
+Counter in file 0 30:1 -> 30:2, (#3 + #4)
+Counter in file 0 32:11 -> 37:2, #1
+Counter in file 0 30:1 -> 30:2, #1
+Counter in file 0 14:1 -> 14:2, #1
+Counter in file 0 23:1 -> 23:2, #1
+Emitting segments for file: ../coverage/async.rs
+Combined regions:
+ 5:22 -> 5:25 (count=1)
+ 5:24 -> 5:25 (count=1)
+ 14:1 -> 14:2 (count=1)
+ 23:1 -> 23:2 (count=1)
+ 25:19 -> 26:12 (count=1)
+ 27:9 -> 27:10 (count=0)
+ 27:14 -> 27:17 (count=1)
+ 27:27 -> 27:32 (count=1)
+ 27:32 -> 27:33 (count=1)
+ 27:36 -> 27:38 (count=0)
+ 28:14 -> 28:16 (count=1)
+ 30:1 -> 30:2 (count=2)
+ 32:11 -> 37:2 (count=1)
+ 47:13 -> 56:54 (count=1)
+ 53:17 -> 53:19 (count=1)
+ 59:32 -> 59:35 (count=1)
+ 59:39 -> 59:73 (count=1)
+ 60:23 -> 60:26 (count=1)
+ 62:10 -> 62:11 (count=0)
+ 63:5 -> 63:6 (count=1)
+Segment at 5:22 (count = 1), RegionEntry
+Segment at 5:24 (count = 1), RegionEntry
+Segment at 5:25 (count = 0), Skipped
+Segment at 14:1 (count = 1), RegionEntry
+Segment at 14:2 (count = 0), Skipped
+Segment at 23:1 (count = 1), RegionEntry
+Segment at 23:2 (count = 0), Skipped
+Segment at 25:19 (count = 1), RegionEntry
+Segment at 26:12 (count = 0), Skipped
+Segment at 27:9 (count = 0), RegionEntry
+Segment at 27:10 (count = 0), Skipped
+Segment at 27:14 (count = 1), RegionEntry
+Segment at 27:17 (count = 0), Skipped
+Segment at 27:27 (count = 1), RegionEntry
+Segment at 27:32 (count = 1), RegionEntry
+Segment at 27:33 (count = 0), Skipped
+Segment at 27:36 (count = 0), RegionEntry
+Segment at 27:38 (count = 0), Skipped
+Segment at 28:14 (count = 1), RegionEntry
+Segment at 28:16 (count = 0), Skipped
+Segment at 30:1 (count = 2), RegionEntry
+Segment at 30:2 (count = 0), Skipped
+Segment at 32:11 (count = 1), RegionEntry
+Segment at 37:2 (count = 0), Skipped
+Segment at 47:13 (count = 1), RegionEntry
+Segment at 53:17 (count = 1), RegionEntry
+Segment at 53:19 (count = 1)
+Segment at 56:54 (count = 0), Skipped
+Segment at 59:32 (count = 1), RegionEntry
+Segment at 59:35 (count = 0), Skipped
+Segment at 59:39 (count = 1), RegionEntry
+Segment at 59:73 (count = 0), Skipped
+Segment at 60:23 (count = 1), RegionEntry
+Segment at 60:26 (count = 0), Skipped
+Segment at 62:10 (count = 0), RegionEntry
+Segment at 62:11 (count = 0), Skipped
+Segment at 63:5 (count = 1), RegionEntry
+Segment at 63:6 (count = 0), Skipped
diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.conditions.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.conditions.txt
index d48cd8074beb..a4c1a9c0f121 100644
--- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.conditions.txt
+++ b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.conditions.txt
@@ -1,72 +1,91 @@
Counter in file 0 4:9 -> 4:26, #1
Counter in file 0 5:8 -> 5:12, (#1 + 0)
Counter in file 0 5:13 -> 7:6, #2
-Counter in file 0 10:9 -> 10:10, (#4 + #11)
+Counter in file 0 10:9 -> 10:10, (#3 + (#12 + #13))
Counter in file 0 10:16 -> 10:29, (#2 + 0)
-Counter in file 0 11:9 -> 12:10, #4
+Counter in file 0 11:9 -> 12:10, #3
Counter in file 0 13:15 -> 13:28, ((#2 + 0) - #3)
-Counter in file 0 14:12 -> 14:25, #5
-Counter in file 0 14:29 -> 14:42, (#5 - #13)
-Counter in file 0 14:42 -> 14:43, (#13 + #14)
-Counter in file 0 14:42 -> 14:43, ((#5 - #13) - #14)
-Counter in file 0 14:46 -> 14:60, #21
-Counter in file 0 14:60 -> 14:61, (#17 + #18)
-Counter in file 0 14:60 -> 14:61, (#21 - #18)
-Counter in file 0 14:61 -> 16:10, #22
-Counter in file 0 16:10 -> 16:11, #23
-Counter in file 0 17:9 -> 18:18, #11
-Counter in file 0 20:9 -> 20:15, (((#2 + 0) - #3) - #5)
-Counter in file 0 23:9 -> 23:26, ((#4 + #11) + 0)
-Counter in file 0 24:8 -> 24:12, ((#4 + #11) + 0)
-Counter in file 0 24:13 -> 26:6, #12
-Counter in file 0 28:8 -> 28:21, (#12 + 0)
-Counter in file 0 29:9 -> 29:23, #16
-Counter in file 0 30:15 -> 30:28, ((#12 + 0) - #15)
-Counter in file 0 31:12 -> 31:25, (((#12 + 0) - #15) - #8)
-Counter in file 0 31:29 -> 31:42, ((((#12 + 0) - #15) - #8) - #24)
-Counter in file 0 31:42 -> 31:43, (((((#12 + 0) - #15) - #8) - #24) - #25)
+Counter in file 0 14:12 -> 14:25, #4
+Counter in file 0 14:29 -> 14:42, (#4 - #15)
+Counter in file 0 14:42 -> 14:43, ((#4 - #15) - #16)
+Counter in file 0 14:42 -> 14:43, (#15 + #16)
+Counter in file 0 14:46 -> 14:60, #23
+Counter in file 0 14:60 -> 14:61, (#18 + #19)
+Counter in file 0 14:60 -> 14:61, (#23 - #19)
+Counter in file 0 14:61 -> 16:10, #12
+Counter in file 0 16:10 -> 16:11, #13
+Counter in file 0 17:9 -> 18:18, (#12 + #13)
+Counter in file 0 20:9 -> 20:15, (((#2 + 0) - #3) - #4)
+Counter in file 0 23:9 -> 23:26, ((#3 + (#12 + #13)) + 0)
+Counter in file 0 24:8 -> 24:12, ((#3 + (#12 + #13)) + 0)
+Counter in file 0 24:13 -> 26:6, #14
+Counter in file 0 28:8 -> 28:21, (#14 + 0)
+Counter in file 0 28:22 -> 30:6, #17
+Counter in file 0 30:15 -> 30:28, ((#14 + 0) - #17)
+Counter in file 0 31:12 -> 31:25, (((#14 + 0) - #17) - #8)
+Counter in file 0 31:29 -> 31:42, ((((#14 + 0) - #17) - #8) - #24)
+Counter in file 0 31:42 -> 31:43, (((((#14 + 0) - #17) - #8) - #24) - #25)
Counter in file 0 31:42 -> 31:43, (#24 + #25)
-Counter in file 0 31:46 -> 31:60, #32
-Counter in file 0 31:60 -> 31:61, (#28 + #29)
-Counter in file 0 31:60 -> 31:61, (#32 - #29)
-Counter in file 0 31:61 -> 33:10, #33
-Counter in file 0 33:10 -> 33:11, #34
-Counter in file 0 34:9 -> 34:23, #19
+Counter in file 0 31:46 -> 31:60, #34
+Counter in file 0 31:60 -> 31:61, (#34 - #32)
+Counter in file 0 31:60 -> 31:61, (#31 + #32)
+Counter in file 0 31:61 -> 33:10, #20
+Counter in file 0 33:10 -> 33:11, #21
+Counter in file 0 34:9 -> 34:23, (#20 + #21)
Counter in file 0 36:9 -> 36:15, #8
-Counter in file 0 39:9 -> 39:26, (#16 + #19)
-Counter in file 0 40:8 -> 40:12, ((#16 + #19) + 0)
-Counter in file 0 40:13 -> 42:6, #20
-Counter in file 0 44:9 -> 44:10, (#27 + #30)
-Counter in file 0 44:16 -> 44:29, (#20 + 0)
-Counter in file 0 45:9 -> 45:23, #27
-Counter in file 0 46:15 -> 46:28, ((#20 + 0) - #26)
-Counter in file 0 47:12 -> 47:25, (((#20 + 0) - #26) - #7)
-Counter in file 0 47:29 -> 47:42, ((((#20 + 0) - #26) - #7) - #35)
-Counter in file 0 47:42 -> 47:43, (#35 + #36)
-Counter in file 0 47:42 -> 47:43, (((((#20 + 0) - #26) - #7) - #35) - #36)
-Counter in file 0 47:46 -> 47:60, #41
-Counter in file 0 47:60 -> 47:61, (#37 + #38)
-Counter in file 0 47:60 -> 47:61, (#41 - #38)
-Counter in file 0 47:61 -> 49:10, #42
-Counter in file 0 49:10 -> 49:11, #43
-Counter in file 0 50:9 -> 50:23, #30
-Counter in file 0 52:13 -> 54:15, #7
-Counter in file 0 57:9 -> 57:10, (#9 + #10)
-Counter in file 0 57:16 -> 57:29, ((#27 + #30) + 0)
-Counter in file 0 58:9 -> 58:23, #9
-Counter in file 0 59:15 -> 59:28, ((#27 + #30) - #31)
-Counter in file 0 60:12 -> 60:25, (((#27 + #30) - #31) - #6)
-Counter in file 0 60:29 -> 60:42, ((((#27 + #30) - #31) - #6) - #39)
-Counter in file 0 60:42 -> 60:43, (#39 + #40)
-Counter in file 0 60:42 -> 60:43, (((((#27 + #30) - #31) - #6) - #39) - #40)
-Counter in file 0 60:46 -> 60:60, #46
-Counter in file 0 60:60 -> 60:61, (#46 - #45)
-Counter in file 0 60:60 -> 60:61, (#44 + #45)
-Counter in file 0 60:61 -> 62:10, #47
-Counter in file 0 62:10 -> 62:11, #48
-Counter in file 0 63:9 -> 63:23, #10
-Counter in file 0 65:9 -> 65:15, #6
-Counter in file 0 67:1 -> 67:2, ((#9 + #10) + (((#6 + #7) + #8) + (((#2 + 0) - #3) - #5)))
+Counter in file 0 39:8 -> 39:12, (#17 + (#20 + #21))
+Counter in file 0 52:13 -> 52:30, #22
+Counter in file 0 53:12 -> 53:16, (#22 + 0)
+Counter in file 0 53:17 -> 55:10, #26
+Counter in file 0 57:12 -> 57:25, (#26 + 0)
+Counter in file 0 57:26 -> 59:10, #27
+Counter in file 0 65:17 -> 65:30, ((#26 + 0) - #27)
+Counter in file 0 66:16 -> 66:29, (((#26 + 0) - #27) - #7)
+Counter in file 0 66:33 -> 66:46, ((((#26 + 0) - #27) - #7) - #37)
+Counter in file 0 66:46 -> 66:47, (#37 + #38)
+Counter in file 0 66:46 -> 66:47, (((((#26 + 0) - #27) - #7) - #37) - #38)
+Counter in file 0 66:50 -> 66:64, #47
+Counter in file 0 66:64 -> 66:65, (#47 - #42)
+Counter in file 0 66:64 -> 66:65, (#41 + #42)
+Counter in file 0 66:65 -> 68:14, #28
+Counter in file 0 68:14 -> 68:15, #29
+Counter in file 0 69:13 -> 69:27, (#28 + #29)
+Counter in file 0 71:13 -> 71:19, #7
+Counter in file 0 73:6 -> 73:7, (#27 + (#28 + #29))
+Counter in file 0 75:9 -> 75:26, ((#27 + (#28 + #29)) + 0)
+Counter in file 0 76:8 -> 76:12, (((#27 + (#28 + #29)) + 0) + 0)
+Counter in file 0 76:13 -> 78:6, #30
+Counter in file 0 80:9 -> 80:10, (#33 + (#35 + #36))
+Counter in file 0 80:16 -> 80:29, (#30 + 0)
+Counter in file 0 80:30 -> 82:6, #33
+Counter in file 0 82:15 -> 82:28, ((#30 + 0) - #33)
+Counter in file 0 83:12 -> 83:25, (((#30 + 0) - #33) - #6)
+Counter in file 0 83:29 -> 83:42, ((((#30 + 0) - #33) - #6) - #39)
+Counter in file 0 83:42 -> 83:43, (#39 + #40)
+Counter in file 0 83:42 -> 83:43, (((((#30 + 0) - #33) - #6) - #39) - #40)
+Counter in file 0 83:46 -> 83:60, #48
+Counter in file 0 83:60 -> 83:61, (#43 + #44)
+Counter in file 0 83:60 -> 83:61, (#48 - #44)
+Counter in file 0 83:61 -> 85:10, #35
+Counter in file 0 85:10 -> 85:11, #36
+Counter in file 0 86:9 -> 86:23, (#35 + #36)
+Counter in file 0 88:13 -> 90:15, #6
+Counter in file 0 93:9 -> 93:10, (#9 + (#10 + #11))
+Counter in file 0 93:16 -> 93:29, ((#33 + (#35 + #36)) + 0)
+Counter in file 0 93:30 -> 95:6, #9
+Counter in file 0 95:15 -> 95:28, ((#33 + (#35 + #36)) - #9)
+Counter in file 0 96:12 -> 96:25, (((#33 + (#35 + #36)) - #9) - #5)
+Counter in file 0 96:29 -> 96:42, ((((#33 + (#35 + #36)) - #9) - #5) - #45)
+Counter in file 0 96:42 -> 96:43, (#45 + #46)
+Counter in file 0 96:42 -> 96:43, (((((#33 + (#35 + #36)) - #9) - #5) - #45) - #46)
+Counter in file 0 96:46 -> 96:60, #51
+Counter in file 0 96:60 -> 96:61, (#49 + #50)
+Counter in file 0 96:60 -> 96:61, (#51 - #50)
+Counter in file 0 96:61 -> 98:10, #10
+Counter in file 0 98:10 -> 98:11, #11
+Counter in file 0 99:9 -> 99:23, (#10 + #11)
+Counter in file 0 101:9 -> 101:15, #5
+Counter in file 0 103:1 -> 103:2, ((#9 + (#10 + #11)) + (((#5 + #6) + (#7 + #8)) + (((#2 + 0) - #3) - #4)))
Emitting segments for file: ../coverage/conditions.rs
Combined regions:
4:9 -> 4:26 (count=1)
@@ -89,7 +108,7 @@ Combined regions:
24:8 -> 24:12 (count=1)
24:13 -> 26:6 (count=1)
28:8 -> 28:21 (count=1)
- 29:9 -> 29:23 (count=1)
+ 28:22 -> 30:6 (count=1)
30:15 -> 30:28 (count=0)
31:12 -> 31:25 (count=0)
31:29 -> 31:42 (count=0)
@@ -100,36 +119,53 @@ Combined regions:
33:10 -> 33:11 (count=0)
34:9 -> 34:23 (count=0)
36:9 -> 36:15 (count=0)
- 39:9 -> 39:26 (count=1)
- 40:8 -> 40:12 (count=1)
- 40:13 -> 42:6 (count=1)
- 44:9 -> 44:10 (count=0)
- 44:16 -> 44:29 (count=1)
- 45:9 -> 45:23 (count=0)
- 46:15 -> 46:28 (count=1)
- 47:12 -> 47:25 (count=0)
- 47:29 -> 47:42 (count=0)
- 47:42 -> 47:43 (count=0)
- 47:46 -> 47:60 (count=0)
- 47:60 -> 47:61 (count=0)
- 47:61 -> 49:10 (count=0)
- 49:10 -> 49:11 (count=0)
- 50:9 -> 50:23 (count=0)
- 52:13 -> 54:15 (count=1)
- 57:9 -> 57:10 (count=0)
- 57:16 -> 57:29 (count=0)
- 58:9 -> 58:23 (count=0)
- 59:15 -> 59:28 (count=0)
- 60:12 -> 60:25 (count=0)
- 60:29 -> 60:42 (count=0)
- 60:42 -> 60:43 (count=0)
- 60:46 -> 60:60 (count=0)
- 60:60 -> 60:61 (count=0)
- 60:61 -> 62:10 (count=0)
- 62:10 -> 62:11 (count=0)
- 63:9 -> 63:23 (count=0)
- 65:9 -> 65:15 (count=0)
- 67:1 -> 67:2 (count=1)
+ 39:8 -> 39:12 (count=1)
+ 52:13 -> 52:30 (count=1)
+ 53:12 -> 53:16 (count=1)
+ 53:17 -> 55:10 (count=1)
+ 57:12 -> 57:25 (count=1)
+ 57:26 -> 59:10 (count=1)
+ 65:17 -> 65:30 (count=0)
+ 66:16 -> 66:29 (count=0)
+ 66:33 -> 66:46 (count=0)
+ 66:46 -> 66:47 (count=0)
+ 66:50 -> 66:64 (count=0)
+ 66:64 -> 66:65 (count=0)
+ 66:65 -> 68:14 (count=0)
+ 68:14 -> 68:15 (count=0)
+ 69:13 -> 69:27 (count=0)
+ 71:13 -> 71:19 (count=0)
+ 73:6 -> 73:7 (count=1)
+ 75:9 -> 75:26 (count=1)
+ 76:8 -> 76:12 (count=1)
+ 76:13 -> 78:6 (count=1)
+ 80:9 -> 80:10 (count=0)
+ 80:16 -> 80:29 (count=1)
+ 80:30 -> 82:6 (count=0)
+ 82:15 -> 82:28 (count=1)
+ 83:12 -> 83:25 (count=0)
+ 83:29 -> 83:42 (count=0)
+ 83:42 -> 83:43 (count=0)
+ 83:46 -> 83:60 (count=0)
+ 83:60 -> 83:61 (count=0)
+ 83:61 -> 85:10 (count=0)
+ 85:10 -> 85:11 (count=0)
+ 86:9 -> 86:23 (count=0)
+ 88:13 -> 90:15 (count=1)
+ 93:9 -> 93:10 (count=0)
+ 93:16 -> 93:29 (count=0)
+ 93:30 -> 95:6 (count=0)
+ 95:15 -> 95:28 (count=0)
+ 96:12 -> 96:25 (count=0)
+ 96:29 -> 96:42 (count=0)
+ 96:42 -> 96:43 (count=0)
+ 96:46 -> 96:60 (count=0)
+ 96:60 -> 96:61 (count=0)
+ 96:61 -> 98:10 (count=0)
+ 98:10 -> 98:11 (count=0)
+ 99:9 -> 99:23 (count=0)
+ 101:9 -> 101:15 (count=0)
+ 103:1 -> 103:2 (count=1)
Segment at 4:9 (count = 1), RegionEntry
Segment at 4:26 (count = 0), Skipped
Segment at 5:8 (count = 1), RegionEntry
@@ -166,8 +202,8 @@ Segment at 24:13 (count = 1), RegionEntry
Segment at 26:6 (count = 0), Skipped
Segment at 28:8 (count = 1), RegionEntry
Segment at 28:21 (count = 0), Skipped
-Segment at 29:9 (count = 1), RegionEntry
-Segment at 29:23 (count = 0), Skipped
+Segment at 28:22 (count = 1), RegionEntry
+Segment at 30:6 (count = 0), Skipped
Segment at 30:15 (count = 0), RegionEntry
Segment at 30:28 (count = 0), Skipped
Segment at 31:12 (count = 0), RegionEntry
@@ -184,55 +220,85 @@ Segment at 34:9 (count = 0), RegionEntry
Segment at 34:23 (count = 0), Skipped
Segment at 36:9 (count = 0), RegionEntry
Segment at 36:15 (count = 0), Skipped
-Segment at 39:9 (count = 1), RegionEntry
-Segment at 39:26 (count = 0), Skipped
-Segment at 40:8 (count = 1), RegionEntry
-Segment at 40:12 (count = 0), Skipped
-Segment at 40:13 (count = 1), RegionEntry
-Segment at 42:6 (count = 0), Skipped
-Segment at 44:9 (count = 0), RegionEntry
-Segment at 44:10 (count = 0), Skipped
-Segment at 44:16 (count = 1), RegionEntry
-Segment at 44:29 (count = 0), Skipped
-Segment at 45:9 (count = 0), RegionEntry
-Segment at 45:23 (count = 0), Skipped
-Segment at 46:15 (count = 1), RegionEntry
-Segment at 46:28 (count = 0), Skipped
-Segment at 47:12 (count = 0), RegionEntry
-Segment at 47:25 (count = 0), Skipped
-Segment at 47:29 (count = 0), RegionEntry
-Segment at 47:42 (count = 0), RegionEntry
-Segment at 47:43 (count = 0), Skipped
-Segment at 47:46 (count = 0), RegionEntry
-Segment at 47:60 (count = 0), RegionEntry
-Segment at 47:61 (count = 0), RegionEntry
-Segment at 49:10 (count = 0), RegionEntry
-Segment at 49:11 (count = 0), Skipped
-Segment at 50:9 (count = 0), RegionEntry
-Segment at 50:23 (count = 0), Skipped
+Segment at 39:8 (count = 1), RegionEntry
+Segment at 39:12 (count = 0), Skipped
Segment at 52:13 (count = 1), RegionEntry
-Segment at 54:15 (count = 0), Skipped
-Segment at 57:9 (count = 0), RegionEntry
-Segment at 57:10 (count = 0), Skipped
-Segment at 57:16 (count = 0), RegionEntry
-Segment at 57:29 (count = 0), Skipped
-Segment at 58:9 (count = 0), RegionEntry
-Segment at 58:23 (count = 0), Skipped
-Segment at 59:15 (count = 0), RegionEntry
-Segment at 59:28 (count = 0), Skipped
-Segment at 60:12 (count = 0), RegionEntry
-Segment at 60:25 (count = 0), Skipped
-Segment at 60:29 (count = 0), RegionEntry
-Segment at 60:42 (count = 0), RegionEntry
-Segment at 60:43 (count = 0), Skipped
-Segment at 60:46 (count = 0), RegionEntry
-Segment at 60:60 (count = 0), RegionEntry
-Segment at 60:61 (count = 0), RegionEntry
-Segment at 62:10 (count = 0), RegionEntry
-Segment at 62:11 (count = 0), Skipped
-Segment at 63:9 (count = 0), RegionEntry
-Segment at 63:23 (count = 0), Skipped
-Segment at 65:9 (count = 0), RegionEntry
-Segment at 65:15 (count = 0), Skipped
-Segment at 67:1 (count = 1), RegionEntry
-Segment at 67:2 (count = 0), Skipped
+Segment at 52:30 (count = 0), Skipped
+Segment at 53:12 (count = 1), RegionEntry
+Segment at 53:16 (count = 0), Skipped
+Segment at 53:17 (count = 1), RegionEntry
+Segment at 55:10 (count = 0), Skipped
+Segment at 57:12 (count = 1), RegionEntry
+Segment at 57:25 (count = 0), Skipped
+Segment at 57:26 (count = 1), RegionEntry
+Segment at 59:10 (count = 0), Skipped
+Segment at 65:17 (count = 0), RegionEntry
+Segment at 65:30 (count = 0), Skipped
+Segment at 66:16 (count = 0), RegionEntry
+Segment at 66:29 (count = 0), Skipped
+Segment at 66:33 (count = 0), RegionEntry
+Segment at 66:46 (count = 0), RegionEntry
+Segment at 66:47 (count = 0), Skipped
+Segment at 66:50 (count = 0), RegionEntry
+Segment at 66:64 (count = 0), RegionEntry
+Segment at 66:65 (count = 0), RegionEntry
+Segment at 68:14 (count = 0), RegionEntry
+Segment at 68:15 (count = 0), Skipped
+Segment at 69:13 (count = 0), RegionEntry
+Segment at 69:27 (count = 0), Skipped
+Segment at 71:13 (count = 0), RegionEntry
+Segment at 71:19 (count = 0), Skipped
+Segment at 73:6 (count = 1), RegionEntry
+Segment at 73:7 (count = 0), Skipped
+Segment at 75:9 (count = 1), RegionEntry
+Segment at 75:26 (count = 0), Skipped
+Segment at 76:8 (count = 1), RegionEntry
+Segment at 76:12 (count = 0), Skipped
+Segment at 76:13 (count = 1), RegionEntry
+Segment at 78:6 (count = 0), Skipped
+Segment at 80:9 (count = 0), RegionEntry
+Segment at 80:10 (count = 0), Skipped
+Segment at 80:16 (count = 1), RegionEntry
+Segment at 80:29 (count = 0), Skipped
+Segment at 80:30 (count = 0), RegionEntry
+Segment at 82:6 (count = 0), Skipped
+Segment at 82:15 (count = 1), RegionEntry
+Segment at 82:28 (count = 0), Skipped
+Segment at 83:12 (count = 0), RegionEntry
+Segment at 83:25 (count = 0), Skipped
+Segment at 83:29 (count = 0), RegionEntry
+Segment at 83:42 (count = 0), RegionEntry
+Segment at 83:43 (count = 0), Skipped
+Segment at 83:46 (count = 0), RegionEntry
+Segment at 83:60 (count = 0), RegionEntry
+Segment at 83:61 (count = 0), RegionEntry
+Segment at 85:10 (count = 0), RegionEntry
+Segment at 85:11 (count = 0), Skipped
+Segment at 86:9 (count = 0), RegionEntry
+Segment at 86:23 (count = 0), Skipped
+Segment at 88:13 (count = 1), RegionEntry
+Segment at 90:15 (count = 0), Skipped
+Segment at 93:9 (count = 0), RegionEntry
+Segment at 93:10 (count = 0), Skipped
+Segment at 93:16 (count = 0), RegionEntry
+Segment at 93:29 (count = 0), Skipped
+Segment at 93:30 (count = 0), RegionEntry
+Segment at 95:6 (count = 0), Skipped
+Segment at 95:15 (count = 0), RegionEntry
+Segment at 95:28 (count = 0), Skipped
+Segment at 96:12 (count = 0), RegionEntry
+Segment at 96:25 (count = 0), Skipped
+Segment at 96:29 (count = 0), RegionEntry
+Segment at 96:42 (count = 0), RegionEntry
+Segment at 96:43 (count = 0), Skipped
+Segment at 96:46 (count = 0), RegionEntry
+Segment at 96:60 (count = 0), RegionEntry
+Segment at 96:61 (count = 0), RegionEntry
+Segment at 98:10 (count = 0), RegionEntry
+Segment at 98:11 (count = 0), Skipped
+Segment at 99:9 (count = 0), RegionEntry
+Segment at 99:23 (count = 0), Skipped
+Segment at 101:9 (count = 0), RegionEntry
+Segment at 101:15 (count = 0), Skipped
+Segment at 103:1 (count = 1), RegionEntry
+Segment at 103:2 (count = 0), Skipped
diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.inner_items.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.inner_items.txt
index 65cd6481af4c..e4dfae768178 100644
--- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.inner_items.txt
+++ b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.inner_items.txt
@@ -1,7 +1,4 @@
-Counter in file 0 19:13 -> 19:18, #1
-Counter in file 0 20:13 -> 20:14, #2
-Counter in file 0 20:17 -> 20:22, (#1 + 0)
-Counter in file 0 21:9 -> 22:6, (#2 + 0)
+Counter in file 0 19:13 -> 22:6, #1
Counter in file 0 7:9 -> 9:26, #1
Counter in file 0 10:8 -> 10:15, (#1 + 0)
Counter in file 0 10:16 -> 12:6, #2
@@ -11,21 +8,16 @@ Counter in file 0 48:16 -> 50:6, #3
Counter in file 0 50:6 -> 50:7, ((#2 + (#1 - #2)) - #3)
Counter in file 0 52:9 -> 57:2, (#3 + ((#2 + (#1 - #2)) - #3))
Counter in file 0 33:42 -> 36:10, #1
-Counter in file 0 41:37 -> 41:41, #1
-Counter in file 0 42:13 -> 43:10, #2
+Counter in file 0 40:45 -> 43:10, #1
Emitting segments for file: ../coverage/inner_items.rs
Combined regions:
7:9 -> 9:26 (count=1)
10:8 -> 10:15 (count=1)
10:16 -> 12:6 (count=1)
12:6 -> 12:7 (count=0)
- 19:13 -> 19:18 (count=3)
- 20:13 -> 20:14 (count=3)
- 20:17 -> 20:22 (count=3)
- 21:9 -> 22:6 (count=3)
+ 19:13 -> 22:6 (count=3)
33:42 -> 36:10 (count=1)
- 41:37 -> 41:41 (count=1)
- 42:13 -> 43:10 (count=1)
+ 40:45 -> 43:10 (count=1)
48:8 -> 48:15 (count=1)
48:16 -> 50:6 (count=1)
50:6 -> 50:7 (count=0)
@@ -38,18 +30,10 @@ Segment at 10:16 (count = 1), RegionEntry
Segment at 12:6 (count = 0), RegionEntry
Segment at 12:7 (count = 0), Skipped
Segment at 19:13 (count = 3), RegionEntry
-Segment at 19:18 (count = 0), Skipped
-Segment at 20:13 (count = 3), RegionEntry
-Segment at 20:14 (count = 0), Skipped
-Segment at 20:17 (count = 3), RegionEntry
-Segment at 20:22 (count = 0), Skipped
-Segment at 21:9 (count = 3), RegionEntry
Segment at 22:6 (count = 0), Skipped
Segment at 33:42 (count = 1), RegionEntry
Segment at 36:10 (count = 0), Skipped
-Segment at 41:37 (count = 1), RegionEntry
-Segment at 41:41 (count = 0), Skipped
-Segment at 42:13 (count = 1), RegionEntry
+Segment at 40:45 (count = 1), RegionEntry
Segment at 43:10 (count = 0), Skipped
Segment at 48:8 (count = 1), RegionEntry
Segment at 48:15 (count = 0), Skipped
diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.nested_loops.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.nested_loops.txt
index f50300735331..f8e504c56c48 100644
--- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.nested_loops.txt
+++ b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.nested_loops.txt
@@ -1,21 +1,20 @@
Counter in file 0 2:9 -> 3:27, #1
-Counter in file 0 5:19 -> 5:32, (#1 + #2)
-Counter in file 0 6:13 -> 7:24, ((#1 + #2) - #3)
-Counter in file 0 8:13 -> 8:14, ((((#1 + #2) - #3) + (#5 + #6)) - #7)
-Counter in file 0 8:18 -> 8:23, (((#1 + #2) - #3) + (#5 + #6))
-Counter in file 0 9:16 -> 9:22, (((((#1 + #2) - #3) + (#5 + #6)) - #7) + 0)
-Counter in file 0 10:17 -> 10:22, #8
-Counter in file 0 12:13 -> 12:19, #9
-Counter in file 0 13:13 -> 13:19, #10
-Counter in file 0 14:16 -> 14:22, (#10 + 0)
-Counter in file 0 15:17 -> 16:27, #11
-Counter in file 0 17:21 -> 17:33, #4
-Counter in file 0 19:21 -> 21:14, #5
-Counter in file 0 21:14 -> 21:15, #6
-Counter in file 0 22:10 -> 22:11, (#5 + #6)
-Counter in file 0 23:9 -> 23:23, #2
-Counter in file 0 24:6 -> 24:7, #3
-Counter in file 0 25:1 -> 25:2, (#4 + #3)
+Counter in file 0 5:19 -> 5:32, (#1 + (#2 + #3))
+Counter in file 0 6:13 -> 7:24, ((#1 + (#2 + #3)) - #4)
+Counter in file 0 8:13 -> 8:14, ((((#1 + (#2 + #3)) - #4) + (#6 + #7)) - #3)
+Counter in file 0 8:18 -> 8:23, (((#1 + (#2 + #3)) - #4) + (#6 + #7))
+Counter in file 0 9:16 -> 9:22, (((((#1 + (#2 + #3)) - #4) + (#6 + #7)) - #3) + 0)
+Counter in file 0 10:17 -> 10:22, #2
+Counter in file 0 12:13 -> 13:19, (((((#1 + (#2 + #3)) - #4) + (#6 + #7)) - #3) - #2)
+Counter in file 0 14:16 -> 14:22, ((((((#1 + (#2 + #3)) - #4) + (#6 + #7)) - #3) - #2) + 0)
+Counter in file 0 15:17 -> 16:27, ((((((#1 + (#2 + #3)) - #4) + (#6 + #7)) - #3) - #2) - #7)
+Counter in file 0 17:21 -> 17:33, #5
+Counter in file 0 18:24 -> 21:14, #6
+Counter in file 0 21:14 -> 21:15, #7
+Counter in file 0 22:10 -> 22:11, (#6 + #7)
+Counter in file 0 23:9 -> 23:23, (#2 + #3)
+Counter in file 0 24:6 -> 24:7, #4
+Counter in file 0 25:1 -> 25:2, (#5 + #4)
Emitting segments for file: ../coverage/nested_loops.rs
Combined regions:
2:9 -> 3:27 (count=1)
@@ -25,12 +24,11 @@ Combined regions:
8:18 -> 8:23 (count=3)
9:16 -> 9:22 (count=3)
10:17 -> 10:22 (count=0)
- 12:13 -> 12:19 (count=3)
- 13:13 -> 13:19 (count=3)
+ 12:13 -> 13:19 (count=3)
14:16 -> 14:22 (count=3)
15:17 -> 16:27 (count=1)
17:21 -> 17:33 (count=1)
- 19:21 -> 21:14 (count=0)
+ 18:24 -> 21:14 (count=0)
21:14 -> 21:15 (count=2)
22:10 -> 22:11 (count=2)
23:9 -> 23:23 (count=0)
@@ -51,8 +49,6 @@ Segment at 9:22 (count = 0), Skipped
Segment at 10:17 (count = 0), RegionEntry
Segment at 10:22 (count = 0), Skipped
Segment at 12:13 (count = 3), RegionEntry
-Segment at 12:19 (count = 0), Skipped
-Segment at 13:13 (count = 3), RegionEntry
Segment at 13:19 (count = 0), Skipped
Segment at 14:16 (count = 3), RegionEntry
Segment at 14:22 (count = 0), Skipped
@@ -60,7 +56,7 @@ Segment at 15:17 (count = 1), RegionEntry
Segment at 16:27 (count = 0), Skipped
Segment at 17:21 (count = 1), RegionEntry
Segment at 17:33 (count = 0), Skipped
-Segment at 19:21 (count = 0), RegionEntry
+Segment at 18:24 (count = 0), RegionEntry
Segment at 21:14 (count = 2), RegionEntry
Segment at 21:15 (count = 0), Skipped
Segment at 22:10 (count = 2), RegionEntry
diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.overflow.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.overflow.txt
new file mode 100644
index 000000000000..8696e102b568
--- /dev/null
+++ b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.overflow.txt
@@ -0,0 +1,53 @@
+Counter in file 0 16:9 -> 16:27, #1
+Counter in file 0 17:11 -> 17:24, (#1 + (#2 + (#3 + #4)))
+Counter in file 0 18:12 -> 18:26, ((#1 + (#2 + (#3 + #4))) - #5)
+Counter in file 0 18:27 -> 21:10, #2
+Counter in file 0 21:19 -> 21:32, (((#1 + (#2 + (#3 + #4))) - #5) - #2)
+Counter in file 0 21:33 -> 24:10, #3
+Counter in file 0 24:10 -> 24:11, #4
+Counter in file 0 24:10 -> 24:11, (#3 + #4)
+Counter in file 0 25:9 -> 25:23, (#2 + (#3 + #4))
+Counter in file 0 27:5 -> 28:2, #5
+Counter in file 0 5:8 -> 5:18, #1
+Counter in file 0 5:19 -> 7:6, #2
+Counter in file 0 7:6 -> 7:7, (#1 - #2)
+Counter in file 0 8:9 -> 13:2, (#2 + (#1 - #2))
+Emitting segments for file: ../coverage/overflow.rs
+Combined regions:
+ 5:8 -> 5:18 (count=4)
+ 5:19 -> 7:6 (count=1)
+ 7:6 -> 7:7 (count=3)
+ 8:9 -> 13:2 (count=4)
+ 16:9 -> 16:27 (count=1)
+ 17:11 -> 17:24 (count=10)
+ 18:12 -> 18:26 (count=10)
+ 18:27 -> 21:10 (count=0)
+ 21:19 -> 21:32 (count=10)
+ 21:33 -> 24:10 (count=3)
+ 24:10 -> 24:11 (count=15)
+ 25:9 -> 25:23 (count=9)
+ 27:5 -> 28:2 (count=0)
+Segment at 5:8 (count = 4), RegionEntry
+Segment at 5:18 (count = 0), Skipped
+Segment at 5:19 (count = 1), RegionEntry
+Segment at 7:6 (count = 3), RegionEntry
+Segment at 7:7 (count = 0), Skipped
+Segment at 8:9 (count = 4), RegionEntry
+Segment at 13:2 (count = 0), Skipped
+Segment at 16:9 (count = 1), RegionEntry
+Segment at 16:27 (count = 0), Skipped
+Segment at 17:11 (count = 10), RegionEntry
+Segment at 17:24 (count = 0), Skipped
+Segment at 18:12 (count = 10), RegionEntry
+Segment at 18:26 (count = 0), Skipped
+Segment at 18:27 (count = 0), RegionEntry
+Segment at 21:10 (count = 0), Skipped
+Segment at 21:19 (count = 10), RegionEntry
+Segment at 21:32 (count = 0), Skipped
+Segment at 21:33 (count = 3), RegionEntry
+Segment at 24:10 (count = 15), RegionEntry
+Segment at 24:11 (count = 0), Skipped
+Segment at 25:9 (count = 9), RegionEntry
+Segment at 25:23 (count = 0), Skipped
+Segment at 27:5 (count = 0), RegionEntry
+Segment at 28:2 (count = 0), Skipped
diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.panic_unwind.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.panic_unwind.txt
new file mode 100644
index 000000000000..9602ff1a985a
--- /dev/null
+++ b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.panic_unwind.txt
@@ -0,0 +1,50 @@
+Counter in file 0 14:9 -> 14:27, #1
+Counter in file 0 15:11 -> 15:24, (#1 + (#2 + (#3 + #4)))
+Counter in file 0 16:12 -> 16:26, ((#1 + (#2 + (#3 + #4))) - #5)
+Counter in file 0 16:27 -> 18:10, #2
+Counter in file 0 18:19 -> 18:32, (((#1 + (#2 + (#3 + #4))) - #5) - #2)
+Counter in file 0 18:33 -> 20:10, #3
+Counter in file 0 20:10 -> 20:11, #4
+Counter in file 0 20:10 -> 20:11, (#3 + #4)
+Counter in file 0 21:9 -> 21:23, (#2 + (#3 + #4))
+Counter in file 0 23:5 -> 24:2, #5
+Counter in file 0 5:8 -> 5:20, #1
+Counter in file 0 6:9 -> 7:26, #2
+Counter in file 0 8:12 -> 11:2, (#1 - #2)
+Emitting segments for file: ../coverage/panic_unwind.rs
+Combined regions:
+ 5:8 -> 5:20 (count=4)
+ 6:9 -> 7:26 (count=1)
+ 8:12 -> 11:2 (count=3)
+ 14:9 -> 14:27 (count=1)
+ 15:11 -> 15:24 (count=10)
+ 16:12 -> 16:26 (count=10)
+ 16:27 -> 18:10 (count=0)
+ 18:19 -> 18:32 (count=10)
+ 18:33 -> 20:10 (count=3)
+ 20:10 -> 20:11 (count=15)
+ 21:9 -> 21:23 (count=9)
+ 23:5 -> 24:2 (count=0)
+Segment at 5:8 (count = 4), RegionEntry
+Segment at 5:20 (count = 0), Skipped
+Segment at 6:9 (count = 1), RegionEntry
+Segment at 7:26 (count = 0), Skipped
+Segment at 8:12 (count = 3), RegionEntry
+Segment at 11:2 (count = 0), Skipped
+Segment at 14:9 (count = 1), RegionEntry
+Segment at 14:27 (count = 0), Skipped
+Segment at 15:11 (count = 10), RegionEntry
+Segment at 15:24 (count = 0), Skipped
+Segment at 16:12 (count = 10), RegionEntry
+Segment at 16:26 (count = 0), Skipped
+Segment at 16:27 (count = 0), RegionEntry
+Segment at 18:10 (count = 0), Skipped
+Segment at 18:19 (count = 10), RegionEntry
+Segment at 18:32 (count = 0), Skipped
+Segment at 18:33 (count = 3), RegionEntry
+Segment at 20:10 (count = 15), RegionEntry
+Segment at 20:11 (count = 0), Skipped
+Segment at 21:9 (count = 9), RegionEntry
+Segment at 21:23 (count = 0), Skipped
+Segment at 23:5 (count = 0), RegionEntry
+Segment at 24:2 (count = 0), Skipped
diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.partial_eq.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.partial_eq.txt
index 2b9285202f97..329e0f3889a9 100644
--- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.partial_eq.txt
+++ b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.partial_eq.txt
@@ -1,28 +1,28 @@
-Counter in file 0 4:32 -> 4:33, (#3 + (#1 + #2))
Counter in file 0 4:48 -> 4:49, ((#1 + #2) + ((#3 + #4) + ((#5 + #6) + #7)))
+Counter in file 0 7:5 -> 7:6, #1
Counter in file 0 21:11 -> 26:2, #1
-Counter in file 0 8:5 -> 8:17, #1
-Counter in file 0 8:5 -> 8:17, #1
Counter in file 0 4:39 -> 4:40, #1
Counter in file 0 4:48 -> 4:49, (#1 + 0)
+Counter in file 0 7:5 -> 7:6, #1
Counter in file 0 4:39 -> 4:40, #1
Counter in file 0 4:48 -> 4:49, (#1 + 0)
-Counter in file 0 8:5 -> 8:17, #1
Counter in file 0 4:32 -> 4:33, ((#4 + #5) + #6)
+Counter in file 0 7:5 -> 7:6, #1
Counter in file 0 4:53 -> 4:54, (#1 + (#2 + (#3 + #4)))
-Counter in file 0 13:9 -> 18:6, #1
-Counter in file 0 4:39 -> 4:40, #1
-Counter in file 0 4:48 -> 4:49, (#1 + 0)
-Counter in file 0 7:5 -> 7:6, #1
-Counter in file 0 4:10 -> 4:15, #1
-Counter in file 0 4:35 -> 4:37, #1
-Counter in file 0 7:5 -> 7:6, #1
-Counter in file 0 7:5 -> 7:6, #1
-Counter in file 0 4:17 -> 4:22, #1
Counter in file 0 8:5 -> 8:17, #1
+Counter in file 0 13:9 -> 18:6, #1
+Counter in file 0 7:5 -> 7:6, #1
Counter in file 0 4:39 -> 4:40, #1
Counter in file 0 4:48 -> 4:49, (#1 + 0)
-Counter in file 0 7:5 -> 7:6, #1
+Counter in file 0 4:10 -> 4:15, #1
+Counter in file 0 8:5 -> 8:17, #1
+Counter in file 0 4:35 -> 4:37, #1
+Counter in file 0 8:5 -> 8:17, #1
+Counter in file 0 8:5 -> 8:17, #1
+Counter in file 0 4:17 -> 4:22, #1
+Counter in file 0 4:39 -> 4:40, #1
+Counter in file 0 4:48 -> 4:49, (#1 + 0)
+Counter in file 0 4:32 -> 4:33, (#3 + (#1 + #2))
Emitting segments for file: ../coverage/partial_eq.rs
Combined regions:
4:17 -> 4:22 (count=2)
diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.simple_loop.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.simple_loop.txt
index 255173e5534d..6ea09248d65c 100644
--- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.simple_loop.txt
+++ b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.simple_loop.txt
@@ -3,10 +3,10 @@ Counter in file 0 12:9 -> 12:16, (#1 + 0)
Counter in file 0 13:5 -> 18:6, #2
Counter in file 0 18:6 -> 18:7, (#1 - #2)
Counter in file 0 23:13 -> 25:14, ((#2 + (#1 - #2)) + #3)
-Counter in file 0 27:13 -> 27:18, #4
+Counter in file 0 27:13 -> 27:18, (((#2 + (#1 - #2)) + #3) - #3)
Counter in file 0 30:9 -> 32:10, #3
Counter in file 0 34:6 -> 34:7, (#2 + (#1 - #2))
-Counter in file 0 35:1 -> 35:2, (#4 + 0)
+Counter in file 0 35:1 -> 35:2, ((((#2 + (#1 - #2)) + #3) - #3) + 0)
Emitting segments for file: ../coverage/simple_loop.rs
Combined regions:
7:9 -> 9:26 (count=1)
diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.try_error_result.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.try_error_result.txt
index a317cd792910..5b7f5496af81 100644
--- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.try_error_result.txt
+++ b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.try_error_result.txt
@@ -1,12 +1,12 @@
Counter in file 0 13:9 -> 14:23, #1
Counter in file 0 17:9 -> 17:10, ((#1 + (#2 + #3)) - #4)
Counter in file 0 19:9 -> 19:14, (#1 + (#2 + #3))
-Counter in file 0 21:9 -> 25:26, #8
-Counter in file 0 27:13 -> 27:41, #9
+Counter in file 0 21:9 -> 25:26, (((#1 + (#2 + #3)) - #4) + 0)
+Counter in file 0 27:13 -> 27:41, #8
Counter in file 0 27:41 -> 27:42, #5
-Counter in file 0 28:13 -> 28:42, (#9 - #5)
+Counter in file 0 28:13 -> 28:42, (#8 - #5)
Counter in file 0 28:42 -> 28:43, #6
-Counter in file 0 32:13 -> 32:42, (#8 - #9)
+Counter in file 0 32:13 -> 32:42, (((#1 + (#2 + #3)) - #4) - #8)
Counter in file 0 32:42 -> 32:43, #7
Counter in file 0 33:10 -> 33:11, #2
Counter in file 0 33:10 -> 33:11, #3
diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.while_early_ret.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.while_early_ret.txt
index f541baec50c0..7e79a8f00e1a 100644
--- a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.while_early_ret.txt
+++ b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.while_early_ret.txt
@@ -1,7 +1,7 @@
Counter in file 0 5:9 -> 5:27, #1
Counter in file 0 7:9 -> 9:10, (#1 + #2)
Counter in file 0 12:13 -> 14:14, ((#1 + #2) - #3)
-Counter in file 0 18:21 -> 20:22, #6
+Counter in file 0 18:21 -> 20:22, (((#1 + #2) - #3) - #2)
Counter in file 0 22:21 -> 22:27, #4
Counter in file 0 26:21 -> 26:27, #5
Counter in file 0 30:9 -> 32:10, #2
diff --git a/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.yield.txt b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.yield.txt
new file mode 100644
index 000000000000..a10753582116
--- /dev/null
+++ b/src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.yield.txt
@@ -0,0 +1,90 @@
+Counter in file 0 8:9 -> 8:22, #1
+Counter in file 0 13:11 -> 14:35, (#1 + 0)
+Counter in file 0 14:39 -> 14:41, #4
+Counter in file 0 15:14 -> 15:52, (#2 + #3)
+Counter in file 0 17:11 -> 17:46, (#4 + 0)
+Counter in file 0 18:34 -> 18:39, (#4 - #5)
+Counter in file 0 18:44 -> 18:46, ((#4 - #5) - #6)
+Counter in file 0 19:14 -> 19:52, (#5 + #6)
+Counter in file 0 22:9 -> 22:22, (((#4 - #5) - #6) + 0)
+Counter in file 0 29:11 -> 30:35, (((#4 - #5) - #6) + 0)
+Counter in file 0 30:39 -> 30:41, #9
+Counter in file 0 31:14 -> 31:52, (#7 + #8)
+Counter in file 0 33:11 -> 34:35, (#9 + 0)
+Counter in file 0 34:39 -> 34:41, #12
+Counter in file 0 35:14 -> 35:52, (#10 + #11)
+Counter in file 0 37:1 -> 37:2, (#12 + 0)
+Counter in file 0 9:9 -> 9:16, #1
+Counter in file 0 10:16 -> 11:6, #2
+Counter in file 0 23:9 -> 23:16, #1
+Counter in file 0 24:9 -> 24:16, #2
+Counter in file 0 25:9 -> 25:16, #3
+Counter in file 0 26:16 -> 27:6, #4
+Emitting segments for file: ../coverage/yield.rs
+Combined regions:
+ 8:9 -> 8:22 (count=1)
+ 9:9 -> 9:16 (count=1)
+ 10:16 -> 11:6 (count=1)
+ 13:11 -> 14:35 (count=1)
+ 14:39 -> 14:41 (count=1)
+ 15:14 -> 15:52 (count=0)
+ 17:11 -> 17:46 (count=1)
+ 18:34 -> 18:39 (count=1)
+ 18:44 -> 18:46 (count=1)
+ 19:14 -> 19:52 (count=0)
+ 22:9 -> 22:22 (count=1)
+ 23:9 -> 23:16 (count=1)
+ 24:9 -> 24:16 (count=1)
+ 25:9 -> 25:16 (count=0)
+ 26:16 -> 27:6 (count=0)
+ 29:11 -> 30:35 (count=1)
+ 30:39 -> 30:41 (count=1)
+ 31:14 -> 31:52 (count=0)
+ 33:11 -> 34:35 (count=1)
+ 34:39 -> 34:41 (count=1)
+ 35:14 -> 35:52 (count=0)
+ 37:1 -> 37:2 (count=1)
+Segment at 8:9 (count = 1), RegionEntry
+Segment at 8:22 (count = 0), Skipped
+Segment at 9:9 (count = 1), RegionEntry
+Segment at 9:16 (count = 0), Skipped
+Segment at 10:16 (count = 1), RegionEntry
+Segment at 11:6 (count = 0), Skipped
+Segment at 13:11 (count = 1), RegionEntry
+Segment at 14:35 (count = 0), Skipped
+Segment at 14:39 (count = 1), RegionEntry
+Segment at 14:41 (count = 0), Skipped
+Segment at 15:14 (count = 0), RegionEntry
+Segment at 15:52 (count = 0), Skipped
+Segment at 17:11 (count = 1), RegionEntry
+Segment at 17:46 (count = 0), Skipped
+Segment at 18:34 (count = 1), RegionEntry
+Segment at 18:39 (count = 0), Skipped
+Segment at 18:44 (count = 1), RegionEntry
+Segment at 18:46 (count = 0), Skipped
+Segment at 19:14 (count = 0), RegionEntry
+Segment at 19:52 (count = 0), Skipped
+Segment at 22:9 (count = 1), RegionEntry
+Segment at 22:22 (count = 0), Skipped
+Segment at 23:9 (count = 1), RegionEntry
+Segment at 23:16 (count = 0), Skipped
+Segment at 24:9 (count = 1), RegionEntry
+Segment at 24:16 (count = 0), Skipped
+Segment at 25:9 (count = 0), RegionEntry
+Segment at 25:16 (count = 0), Skipped
+Segment at 26:16 (count = 0), RegionEntry
+Segment at 27:6 (count = 0), Skipped
+Segment at 29:11 (count = 1), RegionEntry
+Segment at 30:35 (count = 0), Skipped
+Segment at 30:39 (count = 1), RegionEntry
+Segment at 30:41 (count = 0), Skipped
+Segment at 31:14 (count = 0), RegionEntry
+Segment at 31:52 (count = 0), Skipped
+Segment at 33:11 (count = 1), RegionEntry
+Segment at 34:35 (count = 0), Skipped
+Segment at 34:39 (count = 1), RegionEntry
+Segment at 34:41 (count = 0), Skipped
+Segment at 35:14 (count = 0), RegionEntry
+Segment at 35:52 (count = 0), Skipped
+Segment at 37:1 (count = 1), RegionEntry
+Segment at 37:2 (count = 0), Skipped
diff --git a/src/test/run-make-fulldeps/coverage-spanview-base/Makefile b/src/test/run-make-fulldeps/coverage-spanview-base/Makefile
index 9f9440340e0e..c62cbc1c91f7 100644
--- a/src/test/run-make-fulldeps/coverage-spanview-base/Makefile
+++ b/src/test/run-make-fulldeps/coverage-spanview-base/Makefile
@@ -43,6 +43,9 @@ endif
%: $(SOURCEDIR)/%.rs
# Compile the test program with coverage instrumentation and generate relevant MIR.
$(RUSTC) $(SOURCEDIR)/$@.rs \
+ $$( grep -q '^\/\/ require-rust-edition-2018' $(SOURCEDIR)/$@.rs && \
+ echo "--edition=2018" \
+ ) \
-Zinstrument-coverage \
-Clink-dead-code=$(LINK_DEAD_CODE) \
-Zdump-mir=InstrumentCoverage \
diff --git a/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.abort/abort.main.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.abort/abort.main.-------.InstrumentCoverage.0.html
new file mode 100644
index 000000000000..a8227cffc60f
--- /dev/null
+++ b/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.abort/abort.main.-------.InstrumentCoverage.0.html
@@ -0,0 +1,99 @@
+
+
+
+
+abort.main - Coverage Spans
+
+
+
+fn main() -> Result<(),u8> {
+ let @0⦊mut countdown = 10⦉@0;
+ while @1,2⦊countdown > 0⦉@1,2 {
+ if @3,5⦊countdown < 5⦉@3,5 @6,8,9⦊{
+ might_abort(false);
+ }⦉@6,8,9@7⦊‸⦉@7
+ @10,11⦊countdown -= 1⦉@10,11;
+ }
+ @4⦊Ok(())
+}⦉@4
+
+
diff --git a/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.abort/abort.might_abort.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.abort/abort.might_abort.-------.InstrumentCoverage.0.html
new file mode 100644
index 000000000000..daef056a19aa
--- /dev/null
+++ b/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.abort/abort.might_abort.-------.InstrumentCoverage.0.html
@@ -0,0 +1,164 @@
+
+
+
+
+abort.might_abort - Coverage Spans
+
+
+
+fn might_abort(should_abort: bool) {
+ if @0⦊should_abort⦉@0 {
+ @1,3,4,5⦊println!("aborting...");
+ panic!("panics and aborts");⦉@1,3,4,5
+ } else @2,6,7⦊{
+ println!("Don't Panic");
+ }
+}⦉@2,6,7
+
+
diff --git a/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.assert/assert.main.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.assert/assert.main.-------.InstrumentCoverage.0.html
new file mode 100644
index 000000000000..499825445ace
--- /dev/null
+++ b/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.assert/assert.main.-------.InstrumentCoverage.0.html
@@ -0,0 +1,103 @@
+
+
+
+
+assert.main - Coverage Spans
+
+
+
+fn main() -> Result<(),u8> {
+ let @0⦊mut countdown = 10⦉@0;
+ while @1,2⦊countdown > 0⦉@1,2 {
+ if @3,5⦊countdown == 1⦉@3,5 @6,8,9⦊{
+ might_fail_assert(3);
+ }⦉@6,8,9 else if @7⦊countdown < 5⦉@7 @10,12,13⦊{
+ might_fail_assert(2);
+ }⦉@10,12,13@11⦊‸⦉@11@14⦊‸⦉@14
+ @15,16⦊countdown -= 1⦉@15,16;
+ }
+ @4⦊Ok(())
+}⦉@4
+
+
diff --git a/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.assert/assert.might_fail_assert.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.assert/assert.might_fail_assert.-------.InstrumentCoverage.0.html
new file mode 100644
index 000000000000..98be3485a417
--- /dev/null
+++ b/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.assert/assert.might_fail_assert.-------.InstrumentCoverage.0.html
@@ -0,0 +1,97 @@
+
+
+
+
+assert.might_fail_assert - Coverage Spans
+
+
+
+fn might_fail_assert(one_plus_one: u32) {
+ @0,1,2,3,4⦊println!("does 1 + 1 = {}?", one_plus_one);⦉@0,1,2,3,4
+ assert_eq!(@0,1,2,3,4⦊1 + 1⦉@0,1,2,3,4, one_plus_one, @5,7,8,9,10,11,12⦊"the argument was wrong"⦉@5,7,8,9,10,11,12);
+}@6⦊‸⦉@6
+
+
diff --git a/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.executor-block_on-VTABLE-{closure#0}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.executor-block_on-VTABLE-{closure#0}.-------.InstrumentCoverage.0.html
new file mode 100644
index 000000000000..31646f8ce81d
--- /dev/null
+++ b/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.executor-block_on-VTABLE-{closure#0}.-------.InstrumentCoverage.0.html
@@ -0,0 +1,89 @@
+
+
+
+
+async.executor-block_on-VTABLE-{closure#0} - Coverage Spans
+
+
+
+ {
+ @0,1,2,3⦊$crate::rt::begin_panic_fmt(&$crate::format_args!($fmt, $($arg)+))⦉@0,1,2,3
+ }
+
+
diff --git a/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.executor-block_on-VTABLE-{closure#1}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.executor-block_on-VTABLE-{closure#1}.-------.InstrumentCoverage.0.html
new file mode 100644
index 000000000000..ddc791f074fb
--- /dev/null
+++ b/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.executor-block_on-VTABLE-{closure#1}.-------.InstrumentCoverage.0.html
@@ -0,0 +1,89 @@
+
+
+
+
+async.executor-block_on-VTABLE-{closure#1} - Coverage Spans
+
+
+
+ {
+ @0,1,2,3⦊$crate::rt::begin_panic_fmt(&$crate::format_args!($fmt, $($arg)+))⦉@0,1,2,3
+ }
+
+
diff --git a/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.executor-block_on-VTABLE-{closure#2}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.executor-block_on-VTABLE-{closure#2}.-------.InstrumentCoverage.0.html
new file mode 100644
index 000000000000..709b87fc5019
--- /dev/null
+++ b/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.executor-block_on-VTABLE-{closure#2}.-------.InstrumentCoverage.0.html
@@ -0,0 +1,89 @@
+
+
+
+
+async.executor-block_on-VTABLE-{closure#2} - Coverage Spans
+
+
+
+ {
+ @0,1,2,3⦊$crate::rt::begin_panic_fmt(&$crate::format_args!($fmt, $($arg)+))⦉@0,1,2,3
+ }
+
+
diff --git a/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.executor-block_on-VTABLE-{closure#3}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.executor-block_on-VTABLE-{closure#3}.-------.InstrumentCoverage.0.html
new file mode 100644
index 000000000000..abd2621481a3
--- /dev/null
+++ b/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.executor-block_on-VTABLE-{closure#3}.-------.InstrumentCoverage.0.html
@@ -0,0 +1,75 @@
+
+
+
+
+async.executor-block_on-VTABLE-{closure#3} - Coverage Spans
+
+
+
+ |_| @0⦊()⦉@0
+
+
diff --git a/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.executor-block_on.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.executor-block_on.-------.InstrumentCoverage.0.html
new file mode 100644
index 000000000000..9d71d8ccc6e0
--- /dev/null
+++ b/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.executor-block_on.-------.InstrumentCoverage.0.html
@@ -0,0 +1,226 @@
+
+
+
+
+async.executor-block_on - Coverage Spans
+
+
+
+ pub fn block_on<F: Future>(mut future: F) -> F::Output {
+ let @0,1,2,3,4,5⦊mut future = unsafe { Pin::new_unchecked(&mut future) };
+
+ static VTABLE: RawWakerVTable = RawWakerVTable::new(
+ |_| unimplemented!("clone"),
+ |_| unimplemented!("wake"),
+ |_| unimplemented!("wake_by_ref"),
+ |_| (),
+ );
+ let waker = unsafe { Waker::from_raw(RawWaker::new(core::ptr::null(), &VTABLE)) };
+ let mut context = Context::from_waker(&waker)⦉@0,1,2,3,4,5;
+
+ loop {
+ if let Poll::Ready(@10,12,14,15,16,17⦊val⦉@10,12,14,15,16,17) = @6,7,8,9⦊future.as_mut().poll(&mut context)⦉@6,7,8,9 {
+ break @10,12,14,15,16,17⦊val⦉@10,12,14,15,16,17;
+ }
+ }@11,13⦊‸⦉@11,13
+ }@10,12,14,15,16,17⦊‸⦉@10,12,14,15,16,17
+
+
diff --git a/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.f-{closure#0}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.f-{closure#0}.-------.InstrumentCoverage.0.html
new file mode 100644
index 000000000000..779f67fd7c10
--- /dev/null
+++ b/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.f-{closure#0}.-------.InstrumentCoverage.0.html
@@ -0,0 +1,75 @@
+
+
+
+
+async.f-{closure#0} - Coverage Spans
+
+
+
+ { @0⦊1 }⦉@0
+
+
diff --git a/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.f.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.f.-------.InstrumentCoverage.0.html
new file mode 100644
index 000000000000..050ae67efc98
--- /dev/null
+++ b/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.f.-------.InstrumentCoverage.0.html
@@ -0,0 +1,74 @@
+
+
+
+
+async.f - Coverage Spans
+
+
+
+async fn f() -> u8 { 1 }@0,1⦊‸⦉@0,1
+
+
diff --git a/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.foo-{closure#0}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.foo-{closure#0}.-------.InstrumentCoverage.0.html
new file mode 100644
index 000000000000..d176a607d3b5
--- /dev/null
+++ b/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.foo-{closure#0}.-------.InstrumentCoverage.0.html
@@ -0,0 +1,75 @@
+
+
+
+
+async.foo-{closure#0} - Coverage Spans
+
+
+
+ { @0⦊[false; 10] }⦉@0
+
+
diff --git a/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.foo.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.foo.-------.InstrumentCoverage.0.html
new file mode 100644
index 000000000000..64eeaefa8946
--- /dev/null
+++ b/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.foo.-------.InstrumentCoverage.0.html
@@ -0,0 +1,74 @@
+
+
+
+
+async.foo - Coverage Spans
+
+
+
+async fn foo() -> [bool; 10] { [false; 10] }@0,1⦊‸⦉@0,1
+
+
diff --git a/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.g-{closure#0}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.g-{closure#0}.-------.InstrumentCoverage.0.html
new file mode 100644
index 000000000000..4e894eecd16a
--- /dev/null
+++ b/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.g-{closure#0}.-------.InstrumentCoverage.0.html
@@ -0,0 +1,80 @@
+
+
+
+
+async.g-{closure#0} - Coverage Spans
+
+
+
+ @0,2,3⦊{
+ match x⦉@0,2,3 {
+ @16⦊y⦉@16 if @0,2,3⦊f()⦉@0,2,3.await == @9,12,14,15⦊y⦉@9,12,14,15@17⦊‸⦉@17 => @16⦊()⦉@16,
+ _ => @1⦊()⦉@1,
+ }
+}@18,19⦊‸⦉@18,19
+
+
diff --git a/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.g.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.g.-------.InstrumentCoverage.0.html
new file mode 100644
index 000000000000..4788562a9d4f
--- /dev/null
+++ b/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.g.-------.InstrumentCoverage.0.html
@@ -0,0 +1,79 @@
+
+
+
+
+async.g - Coverage Spans
+
+
+
+pub async fn g(x: u8) {
+ match x {
+ y if f().await == y => (),
+ _ => (),
+ }
+}@0,1⦊‸⦉@0,1
+
+
diff --git a/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.h-{closure#0}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.h-{closure#0}.-------.InstrumentCoverage.0.html
new file mode 100644
index 000000000000..de48232efde6
--- /dev/null
+++ b/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.h-{closure#0}.-------.InstrumentCoverage.0.html
@@ -0,0 +1,80 @@
+
+
+
+
+async.h-{closure#0} - Coverage Spans
+
+
+
+ @0,2,3⦊{
+ match x⦉@0,2,3 {
+ @17⦊y⦉@17 if @0,2,3⦊foo()⦉@0,2,3.await[@9,12,14,15,16⦊y⦉@9,12,14,15,16]@18⦊‸⦉@18 => @17⦊()⦉@17,
+ _ => @1⦊()⦉@1,
+ }
+}@19,20⦊‸⦉@19,20
+
+
diff --git a/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.h.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.h.-------.InstrumentCoverage.0.html
new file mode 100644
index 000000000000..83b0a3e0d43a
--- /dev/null
+++ b/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.h.-------.InstrumentCoverage.0.html
@@ -0,0 +1,79 @@
+
+
+
+
+async.h - Coverage Spans
+
+
+
+async fn h(x: usize) {
+ match x {
+ y if foo().await[y] => (),
+ _ => (),
+ }
+}@0,1⦊‸⦉@0,1
+
+
diff --git a/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.i-{closure#0}.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.i-{closure#0}.-------.InstrumentCoverage.0.html
new file mode 100644
index 000000000000..71397d396253
--- /dev/null
+++ b/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.i-{closure#0}.-------.InstrumentCoverage.0.html
@@ -0,0 +1,82 @@
+
+
+
+
+async.i-{closure#0} - Coverage Spans
+
+
+
+ @0,2,3⦊{
+ match x⦉@0,2,3 {
+ @17⦊y⦉@17 if @0,2,3⦊f()⦉@0,2,3.await == @9,12,14,15,16⦊y + 1⦉@9,12,14,15,16@18⦊‸⦉@18 => @17⦊()⦉@17,
+ _ => @1⦊()⦉@1,
+ }
+}@19,20⦊‸⦉@19,20
+
+
diff --git a/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.i.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.i.-------.InstrumentCoverage.0.html
new file mode 100644
index 000000000000..55efca744817
--- /dev/null
+++ b/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.i.-------.InstrumentCoverage.0.html
@@ -0,0 +1,79 @@
+
+
+
+
+async.i - Coverage Spans
+
+
+
+async fn i(x: u8) {
+ match x {
+ y if f().await == y + 1 => (),
+ _ => (),
+ }
+}@0,1⦊‸⦉@0,1
+
+
diff --git a/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.main.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.main.-------.InstrumentCoverage.0.html
new file mode 100644
index 000000000000..2f14339d9e95
--- /dev/null
+++ b/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.async/async.main.-------.InstrumentCoverage.0.html
@@ -0,0 +1,133 @@
+
+
+
+
+async.main - Coverage Spans
+
+
+
+fn main() @0,1,2,3,4,5,6,7,8,9⦊{
+ let _ = g(10);
+ let _ = h(9);
+ let mut future = Box::pin(i(8));
+ executor::block_on(future.as_mut());
+}⦉@0,1,2,3,4,5,6,7,8,9
+
+
diff --git a/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.conditions/conditions.main.-------.InstrumentCoverage.0.html b/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.conditions/conditions.main.-------.InstrumentCoverage.0.html
index cda1040c2911..09adc12cefdb 100644
--- a/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.conditions/conditions.main.-------.InstrumentCoverage.0.html
+++ b/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.conditions/conditions.main.-------.InstrumentCoverage.0.html
@@ -87,10 +87,12 @@ For revisions in Pull Requests (PR):
let @25⦊x⦉@25 = if @4⦊countdown > 7⦉@4 {
- @8⦊countdown -= 4;
- B⦉@8
+ @5,7,8⦊countdown -= 4;
+ B⦉@5,7,8
} else if @6⦊countdown > 2⦉@6 {
@@ -106,10 +108,12 @@ For revisions in Pull Requests (PR):
}⦉@20,22@21⦊‸⦉@21
- @24⦊countdown -= 5;
- countdown⦉@24
+ @23,24⦊countdown -= 5;
+ countdown⦉@23,24
} else {
@10⦊return⦉@10;
};
@@ -129,9 +133,15 @@ For revisions in Pull Requests (PR):
if @29⦊countdown > 7⦉@29 {
- @33⦊countdown -= 4⦉@33;
- } else if @29⦊countdown > 7⦉@29 @30,32,33⦊{
+ countdown -= 4;
+ }⦉@30,32,33 else if @31⦊countdown > 2⦉@31 {
if }⦉@45,47@46⦊‸⦉@46
- @49⦊countdown -= 5⦉@49;
+ @48,49⦊countdown -= 5⦉@48,49;
} else {
@35⦊return⦉@35;
}
- let @50⦊mut countdown = 0⦉@50;
- if @50⦊true⦉@50 @51,53⦊{
- countdown = 1;
- }⦉@51,53@52⦊‸⦉@52
+ if @50⦊true⦉@50 {
+ // Demonstrate the difference with `TerminatorKind::Assert` as of 2020-11-15. Assert is no
+ // longer treated as a `BasicCoverageBlock` terminator, which changed the coverage region,
+ // for the executed `then` block above, to include the closing brace on line 30. That
+ // changed the line count, but the coverage code region (for the `else if` condition) is
+ // still valid.
+ //
+ // Note that `if` (then) and `else` blocks include the closing brace in their coverage
+ // code regions when the last line in the block ends in a semicolon, because the Rust
+ // compiler inserts a `StatementKind::Assign` to assign `const ()` to a `Place`, for the
+ // empty value for the executed block. When the last line does not end in a semicolon
+ // (that is, when the block actually results in a value), the additional `Assign` is not
+ // generated, and the brace is not included.
+ let @51,53⦊mut countdown = 0⦉@51,53;
+ if @51,53⦊true⦉@51,53 @54,56⦊{
+ countdown = 10;
+ }⦉@54,56@55⦊‸⦉@55
- let @77⦊z⦉@77 = if @54⦊countdown > 7⦉@54 {
- @58⦊countdown -= 4⦉@58;
- } else if @56⦊countdown > 2⦉@56 {
- if @59,61⦊countdown < 1⦉@59,61 || @68⦊countdown > 5⦉@68@66⦊‸⦉@66@67⦊‸⦉@67 || @64⦊countdown != 9⦉@64@62⦊‸⦉@62@63⦊‸⦉@63 @70,72⦊{
- countdown = 0;
- }⦉@70,72@71⦊‸⦉@71
- @74⦊countdown -= 5⦉@74;
+ if @57⦊countdown > 7⦉@57 @58,60,61⦊{
+ countdown -= 4;
+ }⦉@58,60,61
+ // The closing brace of the `then` branch is now included in the coverage region, and shown
+ // as "executed" (giving its line a count of 1 here). Since, in the original version above,
+ // the closing brace shares the same line as the `else if` conditional expression (which is
+ // not executed if the first `then` condition is true), only the condition's code region is
+ // marked with a count of 0 now.
+ else if @59⦊countdown > 2⦉@59 {
+ if @62,64⦊countdown < 1⦉@62,64 || @71⦊countdown > 5⦉@71@69⦊‸⦉@69@70⦊‸⦉@70 || @67⦊countdown != 9⦉@67@65⦊‸⦉@65@66⦊‸⦉@66 @73,75⦊{
+ countdown = 0;
+ }⦉@73,75@74⦊‸⦉@74
+ @76,77⦊countdown -= 5⦉@76,77;
+ } else {
+ @63⦊return⦉@63;
+ }
+ }@78⦊‸⦉@78@52⦊‸⦉@52
+
+ let @79⦊mut countdown = 0⦉@79;
+ if @79⦊true⦉@79 @80,82⦊{
+ countdown = 1;
+ }⦉@80,82@81⦊‸⦉@81
+
+ let @106⦊z⦉@106 = if @83⦊countdown > 7⦉@83 @84,86,87⦊{
+ countdown -= 4;
+ }⦉@84,86,87 else if @85⦊countdown > 2⦉@85 {
+ if @88,90⦊countdown < 1⦉@88,90 || @97⦊countdown > 5⦉@97@95⦊‸⦉@95@96⦊‸⦉@96 || @93⦊countdown != 9⦉@93@91⦊‸⦉@91@92⦊‸⦉@92 @99,101⦊{
+ countdown = 0;
+ }⦉@99,101@100⦊‸⦉@100
+ @102,103⦊countdown -= 5⦉@102,103;
} else {
- let @60,75,76⦊should_be_reachable = countdown;
- println!("reached");
- return⦉@60,75,76;
+ let @89,104,105⦊should_be_reachable = countdown;
+ println!("reached");
+ return⦉@89,104,105;
};
- let @98⦊w⦉@98 = if @77⦊countdown > 7⦉@77 {
- @81⦊countdown -= 4⦉@81;
- } else if @79⦊countdown > 2⦉@79 {
- if @82,84⦊countdown < 1⦉@82,84 || @91⦊countdown > 5⦉@91@89⦊‸⦉@89@90⦊‸⦉@90 || @87⦊countdown != 9⦉@87@85⦊‸⦉@85@86⦊‸⦉@86 @93,95⦊{
- countdown = 0;
- }⦉@93,95@94⦊‸⦉@94
- @97⦊countdown -= 5⦉@97;
+ let @127⦊w⦉@127 = if @106⦊countdown > 7⦉@106 @107,109,110⦊{
+ countdown -= 4;
+ }⦉@107,109,110 else if @108⦊countdown > 2⦉@108 {
+ if @111,113⦊countdown < 1⦉@111,113 || @120⦊countdown > 5⦉@120@118⦊‸⦉@118@119⦊‸⦉@119 || @116⦊countdown != 9⦉@116@114⦊‸⦉@114@115⦊‸⦉@115 @122,124⦊{
+ countdown = 0;
+ }⦉@122,124@123⦊‸⦉@123
+ @125,126⦊countdown -= 5⦉@125,126;
} else {
- @83⦊return⦉@83;
+ @112⦊return⦉@112;
};
-}@101⦊‸⦉@101@102⦊‸⦉@102
+}@130⦊‸⦉@130@131⦊‸⦉@131