Skip to content

Commit 5545c56

Browse files
committed
Added comments on remapping expression IDs, and URL to spanviews
1 parent 198ba3b commit 5545c56

File tree

111 files changed

+1188
-117
lines changed

Some content is hidden

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

111 files changed

+1188
-117
lines changed

compiler/rustc_codegen_ssa/src/coverageinfo/map.rs

+19-1
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,25 @@ impl<'tcx> FunctionCoverage<'tcx> {
157157
let mut counter_expressions = Vec::with_capacity(self.expressions.len());
158158
let mut expression_regions = Vec::with_capacity(self.expressions.len());
159159
let mut new_indexes = IndexVec::from_elem_n(None, self.expressions.len());
160-
// Note that an `Expression`s at any given index can include other expressions as
160+
161+
// This closure converts any `Expression` operand (`lhs` or `rhs` of the `Op::Add` or
162+
// `Op::Subtract` operation) into its native `llvm::coverage::Counter::CounterKind` type
163+
// and value. Operand ID value `0` maps to `CounterKind::Zero`; values in the known range
164+
// of injected LLVM counters map to `CounterKind::CounterValueReference` (and the value
165+
// matches the injected counter index); and any other value is converted into a
166+
// `CounterKind::Expression` with the expression's `new_index`.
167+
//
168+
// Expressions will be returned from this function in a sequential vector (array) of
169+
// `CounterExpression`, so the expression IDs must be mapped from their original,
170+
// potentially sparse set of indexes, originally in reverse order from `u32::MAX`.
171+
//
172+
// An `Expression` as an operand will have already been encountered as an `Expression` with
173+
// operands, so its new_index will already have been generated (as a 1-up index value).
174+
// (If an `Expression` as an operand does not have a corresponding new_index, it was
175+
// probably optimized out, after the expression was injected into the MIR, so it will
176+
// get a `CounterKind::Zero` instead.)
177+
//
178+
// In other words, an `Expression`s at any given index can include other expressions as
161179
// operands, but expression operands can only come from the subset of expressions having
162180
// `expression_index`s lower than the referencing `Expression`. Therefore, it is
163181
// reasonable to look up the new index of an expression operand while the `new_indexes`

src/test/run-make-fulldeps/coverage-reports-base/expected_export_coverage.try_error_result.json

+10-10
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,15 @@
1616
"percent": 100
1717
},
1818
"lines": {
19-
"count": 19,
19+
"count": 20,
2020
"covered": 18,
21-
"percent": 94.73684210526315
21+
"percent": 90
2222
},
2323
"regions": {
24-
"count": 17,
24+
"count": 19,
2525
"covered": 14,
26-
"notcovered": 3,
27-
"percent": 82.35294117647058
26+
"notcovered": 5,
27+
"percent": 73.68421052631578
2828
}
2929
}
3030
}
@@ -41,15 +41,15 @@
4141
"percent": 100
4242
},
4343
"lines": {
44-
"count": 19,
44+
"count": 20,
4545
"covered": 18,
46-
"percent": 94.73684210526315
46+
"percent": 90
4747
},
4848
"regions": {
49-
"count": 17,
49+
"count": 19,
5050
"covered": 14,
51-
"notcovered": 3,
52-
"percent": 82.35294117647058
51+
"notcovered": 5,
52+
"percent": 73.68421052631578
5353
}
5454
}
5555
}

src/test/run-make-fulldeps/coverage-reports-base/expected_show_coverage.try_error_result.txt

+9-8
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,14 @@
2525
25| 6| countdown < 5
2626
26| | {
2727
27| 1| call(/*return_error=*/ true)?;
28-
28| | }
29-
29| | else
30-
30| | {
31-
31| 5| call(/*return_error=*/ false)?;
28+
28| 0| call(/*return_error=*/ false)?;
29+
29| | }
30+
30| | else
31+
31| | {
32+
32| 5| call(/*return_error=*/ false)?;
3233
^0
33-
32| 5| }
34-
33| 5| }
35-
34| 0| Ok(())
36-
35| 1|}
34+
33| 5| }
35+
34| 5| }
36+
35| 0| Ok(())
37+
36| 1|}
3738

src/test/run-make-fulldeps/coverage-reports-base/expected_show_coverage_counters.try_error_result.txt

+33-26
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,18 @@ Args: /usr/local/google/home/richkadel/rust/build/x86_64-unknown-linux-gnu/llvm/
22
Counter in file 0 13:9 -> 14:23, #1
33
Counter in file 0 17:9 -> 17:10, ((#1 + (#2 + #3)) - #4)
44
Counter in file 0 19:9 -> 19:14, (#1 + (#2 + #3))
5-
Counter in file 0 21:9 -> 25:26, #7
6-
Counter in file 0 27:13 -> 27:41, #8
5+
Counter in file 0 21:9 -> 25:26, #8
6+
Counter in file 0 27:13 -> 27:41, #9
77
Counter in file 0 27:41 -> 27:42, #5
8-
Counter in file 0 31:13 -> 31:42, (#7 - #8)
9-
Counter in file 0 31:42 -> 31:43, #6
10-
Counter in file 0 32:10 -> 32:11, #2
11-
Counter in file 0 32:10 -> 32:11, #3
12-
Counter in file 0 33:6 -> 33:7, (#2 + #3)
13-
Counter in file 0 34:5 -> 34:11, #4
14-
Counter in file 0 35:1 -> 35:2, ((#5 + #6) + #4)
8+
Counter in file 0 28:13 -> 28:42, (#9 - #5)
9+
Counter in file 0 28:42 -> 28:43, #6
10+
Counter in file 0 32:13 -> 32:42, (#8 - #9)
11+
Counter in file 0 32:42 -> 32:43, #7
12+
Counter in file 0 33:10 -> 33:11, #2
13+
Counter in file 0 33:10 -> 33:11, #3
14+
Counter in file 0 34:6 -> 34:7, (#2 + #3)
15+
Counter in file 0 35:5 -> 35:11, #4
16+
Counter in file 0 36:1 -> 36:2, ((#5 + (#6 + #7)) + #4)
1517
Counter in file 0 5:8 -> 5:20, #1
1618
Counter in file 0 6:9 -> 6:16, #2
1719
Counter in file 0 8:9 -> 8:15, (#1 - #2)
@@ -28,12 +30,14 @@ Combined regions:
2830
21:9 -> 25:26 (count=6)
2931
27:13 -> 27:41 (count=1)
3032
27:41 -> 27:42 (count=1)
31-
31:13 -> 31:42 (count=5)
32-
31:42 -> 31:43 (count=0)
33-
32:10 -> 32:11 (count=5)
34-
33:6 -> 33:7 (count=5)
35-
34:5 -> 34:11 (count=0)
36-
35:1 -> 35:2 (count=1)
33+
28:13 -> 28:42 (count=0)
34+
28:42 -> 28:43 (count=0)
35+
32:13 -> 32:42 (count=5)
36+
32:42 -> 32:43 (count=0)
37+
33:10 -> 33:11 (count=5)
38+
34:6 -> 34:7 (count=5)
39+
35:5 -> 35:11 (count=0)
40+
36:1 -> 36:2 (count=1)
3741
Segment at 5:8 (count = 6), RegionEntry
3842
Segment at 5:20 (count = 0), Skipped
3943
Segment at 6:9 (count = 1), RegionEntry
@@ -53,14 +57,17 @@ Segment at 25:26 (count = 0), Skipped
5357
Segment at 27:13 (count = 1), RegionEntry
5458
Segment at 27:41 (count = 1), RegionEntry
5559
Segment at 27:42 (count = 0), Skipped
56-
Segment at 31:13 (count = 5), RegionEntry
57-
Segment at 31:42 (count = 0), RegionEntry
58-
Segment at 31:43 (count = 0), Skipped
59-
Segment at 32:10 (count = 5), RegionEntry
60-
Segment at 32:11 (count = 0), Skipped
61-
Segment at 33:6 (count = 5), RegionEntry
62-
Segment at 33:7 (count = 0), Skipped
63-
Segment at 34:5 (count = 0), RegionEntry
64-
Segment at 34:11 (count = 0), Skipped
65-
Segment at 35:1 (count = 1), RegionEntry
66-
Segment at 35:2 (count = 0), Skipped
60+
Segment at 28:13 (count = 0), RegionEntry
61+
Segment at 28:42 (count = 0), RegionEntry
62+
Segment at 28:43 (count = 0), Skipped
63+
Segment at 32:13 (count = 5), RegionEntry
64+
Segment at 32:42 (count = 0), RegionEntry
65+
Segment at 32:43 (count = 0), Skipped
66+
Segment at 33:10 (count = 5), RegionEntry
67+
Segment at 33:11 (count = 0), Skipped
68+
Segment at 34:6 (count = 5), RegionEntry
69+
Segment at 34:7 (count = 0), Skipped
70+
Segment at 35:5 (count = 0), RegionEntry
71+
Segment at 35:11 (count = 0), Skipped
72+
Segment at 36:1 (count = 1), RegionEntry
73+
Segment at 36:2 (count = 0), Skipped

src/test/run-make-fulldeps/coverage-reports-deadcode/expected_export_coverage.try_error_result.json

+10-10
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,15 @@
1616
"percent": 100
1717
},
1818
"lines": {
19-
"count": 19,
19+
"count": 20,
2020
"covered": 18,
21-
"percent": 94.73684210526315
21+
"percent": 90
2222
},
2323
"regions": {
24-
"count": 17,
24+
"count": 19,
2525
"covered": 14,
26-
"notcovered": 3,
27-
"percent": 82.35294117647058
26+
"notcovered": 5,
27+
"percent": 73.68421052631578
2828
}
2929
}
3030
}
@@ -41,15 +41,15 @@
4141
"percent": 100
4242
},
4343
"lines": {
44-
"count": 19,
44+
"count": 20,
4545
"covered": 18,
46-
"percent": 94.73684210526315
46+
"percent": 90
4747
},
4848
"regions": {
49-
"count": 17,
49+
"count": 19,
5050
"covered": 14,
51-
"notcovered": 3,
52-
"percent": 82.35294117647058
51+
"notcovered": 5,
52+
"percent": 73.68421052631578
5353
}
5454
}
5555
}

src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage.try_error_result.txt

+9-8
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,14 @@
2525
25| 6| countdown < 5
2626
26| | {
2727
27| 1| call(/*return_error=*/ true)?;
28-
28| | }
29-
29| | else
30-
30| | {
31-
31| 5| call(/*return_error=*/ false)?;
28+
28| 0| call(/*return_error=*/ false)?;
29+
29| | }
30+
30| | else
31+
31| | {
32+
32| 5| call(/*return_error=*/ false)?;
3233
^0
33-
32| 5| }
34-
33| 5| }
35-
34| 0| Ok(())
36-
35| 1|}
34+
33| 5| }
35+
34| 5| }
36+
35| 0| Ok(())
37+
36| 1|}
3738

src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.partial_eq_counter_without_region.txt

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,29 @@
11
Args: /usr/local/google/home/richkadel/rust/build/x86_64-unknown-linux-gnu/llvm/build/bin/llvm-cov show --debug --Xdemangler=/usr/local/google/home/richkadel/rust/build/x86_64-unknown-linux-gnu/stage0-tools-bin/rust-demangler --show-line-counts-or-regions --instr-profile=/usr/local/google/home/richkadel/rust/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/coverage-reports-deadcode/coverage-reports-deadcode/partial_eq_counter_without_region.profdata /usr/local/google/home/richkadel/rust/build/x86_64-unknown-linux-gnu/test/run-make-fulldeps/coverage-reports-deadcode/coverage-reports-deadcode/partial_eq_counter_without_region
2+
Counter in file 0 4:32 -> 4:33, (#3 + (#1 + #2))
23
Counter in file 0 4:48 -> 4:49, ((#1 + #2) + ((#3 + #4) + ((#5 + #6) + #7)))
3-
Counter in file 0 8:5 -> 8:17, #1
44
Counter in file 0 21:11 -> 26:2, #1
5+
Counter in file 0 8:5 -> 8:17, #1
6+
Counter in file 0 8:5 -> 8:17, #1
57
Counter in file 0 4:39 -> 4:40, #1
68
Counter in file 0 4:48 -> 4:49, (#1 + 0)
7-
Counter in file 0 7:5 -> 7:6, #1
8-
Counter in file 0 8:5 -> 8:17, #1
99
Counter in file 0 4:39 -> 4:40, #1
1010
Counter in file 0 4:48 -> 4:49, (#1 + 0)
11+
Counter in file 0 8:5 -> 8:17, #1
1112
Counter in file 0 4:32 -> 4:33, ((#4 + #5) + #6)
1213
Counter in file 0 4:53 -> 4:54, (#1 + (#2 + (#3 + #4)))
1314
Counter in file 0 13:9 -> 18:6, #1
14-
Counter in file 0 7:5 -> 7:6, #1
1515
Counter in file 0 4:39 -> 4:40, #1
1616
Counter in file 0 4:48 -> 4:49, (#1 + 0)
1717
Counter in file 0 7:5 -> 7:6, #1
1818
Counter in file 0 4:10 -> 4:15, #1
1919
Counter in file 0 4:35 -> 4:37, #1
2020
Counter in file 0 7:5 -> 7:6, #1
21-
Counter in file 0 8:5 -> 8:17, #1
21+
Counter in file 0 7:5 -> 7:6, #1
2222
Counter in file 0 4:17 -> 4:22, #1
2323
Counter in file 0 8:5 -> 8:17, #1
2424
Counter in file 0 4:39 -> 4:40, #1
2525
Counter in file 0 4:48 -> 4:49, (#1 + 0)
26-
Counter in file 0 4:32 -> 4:33, (#3 + (#1 + #2))
26+
Counter in file 0 7:5 -> 7:6, #1
2727
Emitting segments for file: ../coverage/partial_eq_counter_without_region.rs
2828
Combined regions:
2929
4:17 -> 4:22 (count=2)

src/test/run-make-fulldeps/coverage-reports-deadcode/expected_show_coverage_counters.try_error_result.txt

+33-26
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,18 @@ Args: /usr/local/google/home/richkadel/rust/build/x86_64-unknown-linux-gnu/llvm/
22
Counter in file 0 13:9 -> 14:23, #1
33
Counter in file 0 17:9 -> 17:10, ((#1 + (#2 + #3)) - #4)
44
Counter in file 0 19:9 -> 19:14, (#1 + (#2 + #3))
5-
Counter in file 0 21:9 -> 25:26, #7
6-
Counter in file 0 27:13 -> 27:41, #8
5+
Counter in file 0 21:9 -> 25:26, #8
6+
Counter in file 0 27:13 -> 27:41, #9
77
Counter in file 0 27:41 -> 27:42, #5
8-
Counter in file 0 31:13 -> 31:42, (#7 - #8)
9-
Counter in file 0 31:42 -> 31:43, #6
10-
Counter in file 0 32:10 -> 32:11, #2
11-
Counter in file 0 32:10 -> 32:11, #3
12-
Counter in file 0 33:6 -> 33:7, (#2 + #3)
13-
Counter in file 0 34:5 -> 34:11, #4
14-
Counter in file 0 35:1 -> 35:2, ((#5 + #6) + #4)
8+
Counter in file 0 28:13 -> 28:42, (#9 - #5)
9+
Counter in file 0 28:42 -> 28:43, #6
10+
Counter in file 0 32:13 -> 32:42, (#8 - #9)
11+
Counter in file 0 32:42 -> 32:43, #7
12+
Counter in file 0 33:10 -> 33:11, #2
13+
Counter in file 0 33:10 -> 33:11, #3
14+
Counter in file 0 34:6 -> 34:7, (#2 + #3)
15+
Counter in file 0 35:5 -> 35:11, #4
16+
Counter in file 0 36:1 -> 36:2, ((#5 + (#6 + #7)) + #4)
1517
Counter in file 0 5:8 -> 5:20, #1
1618
Counter in file 0 6:9 -> 6:16, #2
1719
Counter in file 0 8:9 -> 8:15, (#1 - #2)
@@ -28,12 +30,14 @@ Combined regions:
2830
21:9 -> 25:26 (count=6)
2931
27:13 -> 27:41 (count=1)
3032
27:41 -> 27:42 (count=1)
31-
31:13 -> 31:42 (count=5)
32-
31:42 -> 31:43 (count=0)
33-
32:10 -> 32:11 (count=5)
34-
33:6 -> 33:7 (count=5)
35-
34:5 -> 34:11 (count=0)
36-
35:1 -> 35:2 (count=1)
33+
28:13 -> 28:42 (count=0)
34+
28:42 -> 28:43 (count=0)
35+
32:13 -> 32:42 (count=5)
36+
32:42 -> 32:43 (count=0)
37+
33:10 -> 33:11 (count=5)
38+
34:6 -> 34:7 (count=5)
39+
35:5 -> 35:11 (count=0)
40+
36:1 -> 36:2 (count=1)
3741
Segment at 5:8 (count = 6), RegionEntry
3842
Segment at 5:20 (count = 0), Skipped
3943
Segment at 6:9 (count = 1), RegionEntry
@@ -53,14 +57,17 @@ Segment at 25:26 (count = 0), Skipped
5357
Segment at 27:13 (count = 1), RegionEntry
5458
Segment at 27:41 (count = 1), RegionEntry
5559
Segment at 27:42 (count = 0), Skipped
56-
Segment at 31:13 (count = 5), RegionEntry
57-
Segment at 31:42 (count = 0), RegionEntry
58-
Segment at 31:43 (count = 0), Skipped
59-
Segment at 32:10 (count = 5), RegionEntry
60-
Segment at 32:11 (count = 0), Skipped
61-
Segment at 33:6 (count = 5), RegionEntry
62-
Segment at 33:7 (count = 0), Skipped
63-
Segment at 34:5 (count = 0), RegionEntry
64-
Segment at 34:11 (count = 0), Skipped
65-
Segment at 35:1 (count = 1), RegionEntry
66-
Segment at 35:2 (count = 0), Skipped
60+
Segment at 28:13 (count = 0), RegionEntry
61+
Segment at 28:42 (count = 0), RegionEntry
62+
Segment at 28:43 (count = 0), Skipped
63+
Segment at 32:13 (count = 5), RegionEntry
64+
Segment at 32:42 (count = 0), RegionEntry
65+
Segment at 32:43 (count = 0), Skipped
66+
Segment at 33:10 (count = 5), RegionEntry
67+
Segment at 33:11 (count = 0), Skipped
68+
Segment at 34:6 (count = 5), RegionEntry
69+
Segment at 34:7 (count = 0), Skipped
70+
Segment at 35:5 (count = 0), RegionEntry
71+
Segment at 35:11 (count = 0), Skipped
72+
Segment at 36:1 (count = 1), RegionEntry
73+
Segment at 36:2 (count = 0), Skipped

src/test/run-make-fulldeps/coverage-spanview-base/Makefile

+20
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
-include ../coverage/coverage_tools.mk
88

9+
BASEDIR=../coverage-spanview-base
910
SOURCEDIR=../coverage
1011

1112
all: $(patsubst $(SOURCEDIR)/%.rs,%,$(wildcard $(SOURCEDIR)/*.rs))
@@ -27,6 +28,25 @@ endif
2728
-Zdump-mir=InstrumentCoverage \
2829
-Zdump-mir-dir="$(TMPDIR)"/mir_dump.$@
2930

31+
for path in "$(TMPDIR)"/mir_dump.$@/*; do \
32+
echo $$path; \
33+
file="$$(basename "$$path")"; \
34+
echo $$file; \
35+
urlescaped="$$("$(PYTHON)" $(BASEDIR)/escape_url.py $$file)" || exit $$?; \
36+
echo $$urlescaped; \
37+
sed -i '1a\
38+
<!--\
39+
\
40+
Preview this file as rendered HTML from the github source at:\
41+
https://htmlpreview.github.io/?https://github.com/rust-lang/rust/blob/master/src/test/run-make-fulldeps/coverage-spanview-base/expected_mir_dump.$@/'"$$urlescaped"'\
42+
\
43+
For revisions in Pull Requests (PR):\
44+
* Replace "rust-lang" with the github PR author\
45+
* Replace "master" with the PR branch name\
46+
\
47+
-->' "$$path"; \
48+
done && true # for/done ends in non-zero status
49+
3050
ifdef RUSTC_BLESS_TEST
3151
mkdir -p expected_mir_dump.$@
3252
cp "$(TMPDIR)"/mir_dump.$@/*InstrumentCoverage.0.html expected_mir_dump.$@/
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#!/usr/bin/env python
2+
3+
import sys
4+
import six
5+
6+
# Support python 2 or 3
7+
from six.moves.urllib.parse import quote
8+
9+
# Converts the input string into a valid URL parameter string.
10+
print (quote(' '.join(sys.argv[1:])))

0 commit comments

Comments
 (0)