Skip to content

Commit 811cb89

Browse files
committed
!! (WIP) enable branch coverage in all tests
(This is mostly for flushing out issues with branch coverage; not sure whether I actually want to merge something like this.)
1 parent ec8b62a commit 811cb89

File tree

78 files changed

+2821
-1192
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

78 files changed

+2821
-1192
lines changed

src/tools/compiletest/src/runtest.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -2491,7 +2491,7 @@ impl<'test> TestCx<'test> {
24912491
rustc.arg(dir_opt);
24922492
}
24932493
CoverageMap => {
2494-
rustc.arg("-Cinstrument-coverage");
2494+
rustc.args(["-Zunstable-options", "-Cinstrument-coverage=branch"]);
24952495
// These tests only compile to LLVM IR, so they don't need the
24962496
// profiler runtime to be present.
24972497
rustc.arg("-Zno-profiler-runtime");
@@ -2501,7 +2501,7 @@ impl<'test> TestCx<'test> {
25012501
rustc.arg("-Copt-level=2");
25022502
}
25032503
CoverageRun => {
2504-
rustc.arg("-Cinstrument-coverage");
2504+
rustc.args(["-Zunstable-options", "-Cinstrument-coverage=branch"]);
25052505
// Coverage reports are sometimes sensitive to optimizations,
25062506
// and the current snapshots assume `opt-level=2` unless
25072507
// overridden by `compile-flags`.

tests/coverage/abort.cov-map

+49-27
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,79 @@
11
Function name: abort::main
2-
Raw bytes (105): 0x[01, 01, 12, 01, 47, 05, 09, 03, 0d, 42, 11, 03, 0d, 11, 3e, 42, 11, 03, 0d, 3b, 15, 11, 3e, 42, 11, 03, 0d, 15, 36, 3b, 15, 11, 3e, 42, 11, 03, 0d, 05, 09, 0d, 01, 0d, 01, 01, 1b, 03, 02, 0b, 00, 18, 42, 01, 0c, 00, 19, 11, 00, 1a, 02, 0a, 3e, 02, 0a, 00, 0b, 3b, 02, 0c, 00, 19, 15, 00, 1a, 00, 31, 36, 00, 31, 00, 32, 33, 04, 0c, 00, 19, 05, 00, 1a, 00, 31, 09, 00, 31, 00, 32, 47, 01, 09, 00, 17, 0d, 02, 05, 01, 02]
2+
Raw bytes (147): 0x[01, 01, 19, 01, 63, 05, 09, 03, 0d, 03, 0d, 5e, 11, 03, 0d, 5e, 11, 03, 0d, 11, 5a, 5e, 11, 03, 0d, 57, 15, 11, 5a, 5e, 11, 03, 0d, 57, 15, 11, 5a, 5e, 11, 03, 0d, 15, 52, 57, 15, 11, 5a, 5e, 11, 03, 0d, 05, 09, 11, 01, 0d, 01, 01, 1b, 03, 02, 0b, 00, 18, 20, 5e, 0d, 00, 0b, 00, 18, 5e, 01, 0c, 00, 19, 20, 11, 5a, 00, 0c, 00, 19, 11, 00, 1a, 02, 0a, 5a, 02, 0a, 00, 0b, 57, 02, 0c, 00, 19, 20, 15, 52, 00, 0c, 00, 19, 15, 00, 1a, 00, 31, 52, 00, 31, 00, 32, 4f, 04, 0c, 00, 19, 20, 05, 09, 00, 0c, 00, 19, 05, 00, 1a, 00, 31, 09, 00, 31, 00, 32, 63, 01, 09, 00, 17, 0d, 02, 05, 01, 02]
33
Number of files: 1
44
- file 0 => global file 1
5-
Number of expressions: 18
6-
- expression 0 operands: lhs = Counter(0), rhs = Expression(17, Add)
5+
Number of expressions: 25
6+
- expression 0 operands: lhs = Counter(0), rhs = Expression(24, Add)
77
- expression 1 operands: lhs = Counter(1), rhs = Counter(2)
88
- expression 2 operands: lhs = Expression(0, Add), rhs = Counter(3)
9-
- expression 3 operands: lhs = Expression(16, Sub), rhs = Counter(4)
10-
- expression 4 operands: lhs = Expression(0, Add), rhs = Counter(3)
11-
- expression 5 operands: lhs = Counter(4), rhs = Expression(15, Sub)
12-
- expression 6 operands: lhs = Expression(16, Sub), rhs = Counter(4)
9+
- expression 3 operands: lhs = Expression(0, Add), rhs = Counter(3)
10+
- expression 4 operands: lhs = Expression(23, Sub), rhs = Counter(4)
11+
- expression 5 operands: lhs = Expression(0, Add), rhs = Counter(3)
12+
- expression 6 operands: lhs = Expression(23, Sub), rhs = Counter(4)
1313
- expression 7 operands: lhs = Expression(0, Add), rhs = Counter(3)
14-
- expression 8 operands: lhs = Expression(14, Add), rhs = Counter(5)
15-
- expression 9 operands: lhs = Counter(4), rhs = Expression(15, Sub)
16-
- expression 10 operands: lhs = Expression(16, Sub), rhs = Counter(4)
17-
- expression 11 operands: lhs = Expression(0, Add), rhs = Counter(3)
18-
- expression 12 operands: lhs = Counter(5), rhs = Expression(13, Sub)
19-
- expression 13 operands: lhs = Expression(14, Add), rhs = Counter(5)
20-
- expression 14 operands: lhs = Counter(4), rhs = Expression(15, Sub)
21-
- expression 15 operands: lhs = Expression(16, Sub), rhs = Counter(4)
22-
- expression 16 operands: lhs = Expression(0, Add), rhs = Counter(3)
23-
- expression 17 operands: lhs = Counter(1), rhs = Counter(2)
24-
Number of file 0 mappings: 13
14+
- expression 8 operands: lhs = Counter(4), rhs = Expression(22, Sub)
15+
- expression 9 operands: lhs = Expression(23, Sub), rhs = Counter(4)
16+
- expression 10 operands: lhs = Expression(0, Add), rhs = Counter(3)
17+
- expression 11 operands: lhs = Expression(21, Add), rhs = Counter(5)
18+
- expression 12 operands: lhs = Counter(4), rhs = Expression(22, Sub)
19+
- expression 13 operands: lhs = Expression(23, Sub), rhs = Counter(4)
20+
- expression 14 operands: lhs = Expression(0, Add), rhs = Counter(3)
21+
- expression 15 operands: lhs = Expression(21, Add), rhs = Counter(5)
22+
- expression 16 operands: lhs = Counter(4), rhs = Expression(22, Sub)
23+
- expression 17 operands: lhs = Expression(23, Sub), rhs = Counter(4)
24+
- expression 18 operands: lhs = Expression(0, Add), rhs = Counter(3)
25+
- expression 19 operands: lhs = Counter(5), rhs = Expression(20, Sub)
26+
- expression 20 operands: lhs = Expression(21, Add), rhs = Counter(5)
27+
- expression 21 operands: lhs = Counter(4), rhs = Expression(22, Sub)
28+
- expression 22 operands: lhs = Expression(23, Sub), rhs = Counter(4)
29+
- expression 23 operands: lhs = Expression(0, Add), rhs = Counter(3)
30+
- expression 24 operands: lhs = Counter(1), rhs = Counter(2)
31+
Number of file 0 mappings: 17
2532
- Code(Counter(0)) at (prev + 13, 1) to (start + 1, 27)
2633
- Code(Expression(0, Add)) at (prev + 2, 11) to (start + 0, 24)
2734
= (c0 + (c1 + c2))
28-
- Code(Expression(16, Sub)) at (prev + 1, 12) to (start + 0, 25)
35+
- Branch { true: Expression(23, Sub), false: Counter(3) } at (prev + 0, 11) to (start + 0, 24)
36+
true = ((c0 + (c1 + c2)) - c3)
37+
false = c3
38+
- Code(Expression(23, Sub)) at (prev + 1, 12) to (start + 0, 25)
2939
= ((c0 + (c1 + c2)) - c3)
40+
- Branch { true: Counter(4), false: Expression(22, Sub) } at (prev + 0, 12) to (start + 0, 25)
41+
true = c4
42+
false = (((c0 + (c1 + c2)) - c3) - c4)
3043
- Code(Counter(4)) at (prev + 0, 26) to (start + 2, 10)
31-
- Code(Expression(15, Sub)) at (prev + 2, 10) to (start + 0, 11)
44+
- Code(Expression(22, Sub)) at (prev + 2, 10) to (start + 0, 11)
3245
= (((c0 + (c1 + c2)) - c3) - c4)
33-
- Code(Expression(14, Add)) at (prev + 2, 12) to (start + 0, 25)
46+
- Code(Expression(21, Add)) at (prev + 2, 12) to (start + 0, 25)
3447
= (c4 + (((c0 + (c1 + c2)) - c3) - c4))
48+
- Branch { true: Counter(5), false: Expression(20, Sub) } at (prev + 0, 12) to (start + 0, 25)
49+
true = c5
50+
false = ((c4 + (((c0 + (c1 + c2)) - c3) - c4)) - c5)
3551
- Code(Counter(5)) at (prev + 0, 26) to (start + 0, 49)
36-
- Code(Expression(13, Sub)) at (prev + 0, 49) to (start + 0, 50)
52+
- Code(Expression(20, Sub)) at (prev + 0, 49) to (start + 0, 50)
3753
= ((c4 + (((c0 + (c1 + c2)) - c3) - c4)) - c5)
38-
- Code(Expression(12, Add)) at (prev + 4, 12) to (start + 0, 25)
54+
- Code(Expression(19, Add)) at (prev + 4, 12) to (start + 0, 25)
3955
= (c5 + ((c4 + (((c0 + (c1 + c2)) - c3) - c4)) - c5))
56+
- Branch { true: Counter(1), false: Counter(2) } at (prev + 0, 12) to (start + 0, 25)
57+
true = c1
58+
false = c2
4059
- Code(Counter(1)) at (prev + 0, 26) to (start + 0, 49)
4160
- Code(Counter(2)) at (prev + 0, 49) to (start + 0, 50)
42-
- Code(Expression(17, Add)) at (prev + 1, 9) to (start + 0, 23)
61+
- Code(Expression(24, Add)) at (prev + 1, 9) to (start + 0, 23)
4362
= (c1 + c2)
4463
- Code(Counter(3)) at (prev + 2, 5) to (start + 1, 2)
4564

4665
Function name: abort::might_abort
47-
Raw bytes (21): 0x[01, 01, 01, 01, 05, 03, 01, 04, 01, 01, 14, 05, 02, 09, 01, 24, 02, 02, 0c, 03, 02]
66+
Raw bytes (28): 0x[01, 01, 01, 01, 05, 04, 01, 04, 01, 01, 14, 20, 05, 02, 01, 08, 00, 14, 05, 01, 09, 01, 24, 02, 02, 0c, 03, 02]
4867
Number of files: 1
4968
- file 0 => global file 1
5069
Number of expressions: 1
5170
- expression 0 operands: lhs = Counter(0), rhs = Counter(1)
52-
Number of file 0 mappings: 3
71+
Number of file 0 mappings: 4
5372
- Code(Counter(0)) at (prev + 4, 1) to (start + 1, 20)
54-
- Code(Counter(1)) at (prev + 2, 9) to (start + 1, 36)
73+
- Branch { true: Counter(1), false: Expression(0, Sub) } at (prev + 1, 8) to (start + 0, 20)
74+
true = c1
75+
false = (c0 - c1)
76+
- Code(Counter(1)) at (prev + 1, 9) to (start + 1, 36)
5577
- Code(Expression(0, Sub)) at (prev + 2, 12) to (start + 3, 2)
5678
= (c0 - c1)
5779

tests/coverage/abort.coverage

+15
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
LL| |
44
LL| 12|extern "C" fn might_abort(should_abort: bool) {
55
LL| 12| if should_abort {
6+
------------------
7+
| Branch (LL:8): [True: 0, False: 12]
8+
------------------
69
LL| 0| println!("aborting...");
710
LL| 0| panic!("panics and aborts");
811
LL| 12| } else {
@@ -13,17 +16,29 @@
1316
LL| 1|fn main() -> Result<(), u8> {
1417
LL| 1| let mut countdown = 10;
1518
LL| 11| while countdown > 0 {
19+
------------------
20+
| Branch (LL:11): [True: 10, False: 1]
21+
------------------
1622
LL| 10| if countdown < 5 {
23+
------------------
24+
| Branch (LL:12): [True: 4, False: 6]
25+
------------------
1726
LL| 4| might_abort(false);
1827
LL| 6| }
1928
LL| | // See discussion (below the `Notes` section) on coverage results for the closing brace.
2029
LL| 10| if countdown < 5 { might_abort(false); } // Counts for different regions on one line.
2130
^4 ^6
31+
------------------
32+
| Branch (LL:12): [True: 4, False: 6]
33+
------------------
2234
LL| | // For the following example, the closing brace is the last character on the line.
2335
LL| | // This shows the character after the closing brace is highlighted, even if that next
2436
LL| | // character is a newline.
2537
LL| 10| if countdown < 5 { might_abort(false); }
2638
^4 ^6
39+
------------------
40+
| Branch (LL:12): [True: 4, False: 6]
41+
------------------
2742
LL| 10| countdown -= 1;
2843
LL| | }
2944
LL| 1| Ok(())

tests/coverage/assert.cov-map

+30-15
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,55 @@
11
Function name: assert::main
2-
Raw bytes (65): 0x[01, 01, 08, 01, 1b, 05, 1f, 09, 0d, 03, 11, 16, 05, 03, 11, 05, 1f, 09, 0d, 09, 01, 09, 01, 01, 1b, 03, 02, 0b, 00, 18, 16, 01, 0c, 00, 1a, 05, 00, 1b, 02, 0a, 12, 02, 13, 00, 20, 09, 00, 21, 02, 0a, 0d, 02, 0a, 00, 0b, 1b, 01, 09, 00, 17, 11, 02, 05, 01, 02]
2+
Raw bytes (92): 0x[01, 01, 0b, 01, 27, 05, 2b, 09, 0d, 03, 11, 03, 11, 22, 05, 03, 11, 22, 05, 03, 11, 05, 2b, 09, 0d, 0c, 01, 09, 01, 01, 1b, 03, 02, 0b, 00, 18, 20, 22, 11, 00, 0b, 00, 18, 22, 01, 0c, 00, 1a, 20, 05, 1e, 00, 0c, 00, 1a, 05, 00, 1b, 02, 0a, 1e, 02, 13, 00, 20, 20, 09, 0d, 00, 13, 00, 20, 09, 00, 21, 02, 0a, 0d, 02, 0a, 00, 0b, 27, 01, 09, 00, 17, 11, 02, 05, 01, 02]
33
Number of files: 1
44
- file 0 => global file 1
5-
Number of expressions: 8
6-
- expression 0 operands: lhs = Counter(0), rhs = Expression(6, Add)
7-
- expression 1 operands: lhs = Counter(1), rhs = Expression(7, Add)
5+
Number of expressions: 11
6+
- expression 0 operands: lhs = Counter(0), rhs = Expression(9, Add)
7+
- expression 1 operands: lhs = Counter(1), rhs = Expression(10, Add)
88
- expression 2 operands: lhs = Counter(2), rhs = Counter(3)
99
- expression 3 operands: lhs = Expression(0, Add), rhs = Counter(4)
10-
- expression 4 operands: lhs = Expression(5, Sub), rhs = Counter(1)
11-
- expression 5 operands: lhs = Expression(0, Add), rhs = Counter(4)
12-
- expression 6 operands: lhs = Counter(1), rhs = Expression(7, Add)
13-
- expression 7 operands: lhs = Counter(2), rhs = Counter(3)
14-
Number of file 0 mappings: 9
10+
- expression 4 operands: lhs = Expression(0, Add), rhs = Counter(4)
11+
- expression 5 operands: lhs = Expression(8, Sub), rhs = Counter(1)
12+
- expression 6 operands: lhs = Expression(0, Add), rhs = Counter(4)
13+
- expression 7 operands: lhs = Expression(8, Sub), rhs = Counter(1)
14+
- expression 8 operands: lhs = Expression(0, Add), rhs = Counter(4)
15+
- expression 9 operands: lhs = Counter(1), rhs = Expression(10, Add)
16+
- expression 10 operands: lhs = Counter(2), rhs = Counter(3)
17+
Number of file 0 mappings: 12
1518
- Code(Counter(0)) at (prev + 9, 1) to (start + 1, 27)
1619
- Code(Expression(0, Add)) at (prev + 2, 11) to (start + 0, 24)
1720
= (c0 + (c1 + (c2 + c3)))
18-
- Code(Expression(5, Sub)) at (prev + 1, 12) to (start + 0, 26)
21+
- Branch { true: Expression(8, Sub), false: Counter(4) } at (prev + 0, 11) to (start + 0, 24)
22+
true = ((c0 + (c1 + (c2 + c3))) - c4)
23+
false = c4
24+
- Code(Expression(8, Sub)) at (prev + 1, 12) to (start + 0, 26)
1925
= ((c0 + (c1 + (c2 + c3))) - c4)
26+
- Branch { true: Counter(1), false: Expression(7, Sub) } at (prev + 0, 12) to (start + 0, 26)
27+
true = c1
28+
false = (((c0 + (c1 + (c2 + c3))) - c4) - c1)
2029
- Code(Counter(1)) at (prev + 0, 27) to (start + 2, 10)
21-
- Code(Expression(4, Sub)) at (prev + 2, 19) to (start + 0, 32)
30+
- Code(Expression(7, Sub)) at (prev + 2, 19) to (start + 0, 32)
2231
= (((c0 + (c1 + (c2 + c3))) - c4) - c1)
32+
- Branch { true: Counter(2), false: Counter(3) } at (prev + 0, 19) to (start + 0, 32)
33+
true = c2
34+
false = c3
2335
- Code(Counter(2)) at (prev + 0, 33) to (start + 2, 10)
2436
- Code(Counter(3)) at (prev + 2, 10) to (start + 0, 11)
25-
- Code(Expression(6, Add)) at (prev + 1, 9) to (start + 0, 23)
37+
- Code(Expression(9, Add)) at (prev + 1, 9) to (start + 0, 23)
2638
= (c1 + (c2 + c3))
2739
- Code(Counter(4)) at (prev + 2, 5) to (start + 1, 2)
2840

2941
Function name: assert::might_fail_assert
30-
Raw bytes (21): 0x[01, 01, 01, 01, 05, 03, 01, 04, 01, 02, 0f, 02, 02, 25, 00, 3d, 05, 01, 01, 00, 02]
42+
Raw bytes (28): 0x[01, 01, 01, 01, 05, 04, 01, 04, 01, 02, 0f, 20, 05, 02, 02, 05, 00, 3e, 02, 00, 25, 00, 3d, 05, 01, 01, 00, 02]
3143
Number of files: 1
3244
- file 0 => global file 1
3345
Number of expressions: 1
3446
- expression 0 operands: lhs = Counter(0), rhs = Counter(1)
35-
Number of file 0 mappings: 3
47+
Number of file 0 mappings: 4
3648
- Code(Counter(0)) at (prev + 4, 1) to (start + 2, 15)
37-
- Code(Expression(0, Sub)) at (prev + 2, 37) to (start + 0, 61)
49+
- Branch { true: Counter(1), false: Expression(0, Sub) } at (prev + 2, 5) to (start + 0, 62)
50+
true = c1
51+
false = (c0 - c1)
52+
- Code(Expression(0, Sub)) at (prev + 0, 37) to (start + 0, 61)
3853
= (c0 - c1)
3954
- Code(Counter(1)) at (prev + 1, 1) to (start + 0, 2)
4055

tests/coverage/assert.coverage

+12
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,26 @@
55
LL| 4| println!("does 1 + 1 = {}?", one_plus_one);
66
LL| 4| assert_eq!(1 + 1, one_plus_one, "the argument was wrong");
77
^1
8+
------------------
9+
| Branch (LL:5): [True: 3, False: 1]
10+
------------------
811
LL| 3|}
912
LL| |
1013
LL| 1|fn main() -> Result<(), u8> {
1114
LL| 1| let mut countdown = 10;
1215
LL| 11| while countdown > 0 {
16+
------------------
17+
| Branch (LL:11): [True: 11, False: 0]
18+
------------------
1319
LL| 11| if countdown == 1 {
20+
------------------
21+
| Branch (LL:12): [True: 1, False: 10]
22+
------------------
1423
LL| 1| might_fail_assert(3);
1524
LL| 10| } else if countdown < 5 {
25+
------------------
26+
| Branch (LL:19): [True: 3, False: 6]
27+
------------------
1628
LL| 3| might_fail_assert(2);
1729
LL| 6| }
1830
LL| 10| countdown -= 1;

0 commit comments

Comments
 (0)