Skip to content

Commit 9500a72

Browse files
committed
Revert "[Coverage] Enable emitting gap area between macros"
This reverts commit a31c89c.
1 parent ba319ac commit 9500a72

File tree

7 files changed

+36
-34
lines changed

7 files changed

+36
-34
lines changed

clang/lib/CodeGen/CoverageMappingGen.cpp

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -868,13 +868,22 @@ struct CounterCoverageMappingBuilder
868868
/// Find a valid gap range between \p AfterLoc and \p BeforeLoc.
869869
Optional<SourceRange> findGapAreaBetween(SourceLocation AfterLoc,
870870
SourceLocation BeforeLoc) {
871-
AfterLoc = SM.getExpansionLoc(AfterLoc);
872-
BeforeLoc = SM.getExpansionLoc(BeforeLoc);
871+
// If the start and end locations of the gap are both within the same macro
872+
// file, the range may not be in source order.
873+
if (AfterLoc.isMacroID() || BeforeLoc.isMacroID())
874+
return None;
873875
if (!SM.isWrittenInSameFile(AfterLoc, BeforeLoc))
874876
return None;
875877
return {{AfterLoc, BeforeLoc}};
876878
}
877879

880+
/// Find the source range after \p AfterStmt and before \p BeforeStmt.
881+
Optional<SourceRange> findGapAreaBetween(const Stmt *AfterStmt,
882+
const Stmt *BeforeStmt) {
883+
return findGapAreaBetween(getPreciseTokenLocEnd(getEnd(AfterStmt)),
884+
getStart(BeforeStmt));
885+
}
886+
878887
/// Emit a gap region between \p StartLoc and \p EndLoc with the given count.
879888
void fillGapAreaWithCount(SourceLocation StartLoc, SourceLocation EndLoc,
880889
Counter Count) {
@@ -1039,8 +1048,7 @@ struct CounterCoverageMappingBuilder
10391048
adjustForOutOfOrderTraversal(getEnd(S));
10401049

10411050
// The body count applies to the area immediately after the increment.
1042-
auto Gap = findGapAreaBetween(getPreciseTokenLocEnd(S->getRParenLoc()),
1043-
getStart(S->getBody()));
1051+
auto Gap = findGapAreaBetween(S->getCond(), S->getBody());
10441052
if (Gap)
10451053
fillGapAreaWithCount(Gap->getBegin(), Gap->getEnd(), BodyCount);
10461054

@@ -1257,8 +1265,7 @@ struct CounterCoverageMappingBuilder
12571265
propagateCounts(ParentCount, S->getCond());
12581266

12591267
// The 'then' count applies to the area immediately after the condition.
1260-
auto Gap = findGapAreaBetween(getPreciseTokenLocEnd(S->getRParenLoc()),
1261-
getStart(S->getThen()));
1268+
auto Gap = findGapAreaBetween(S->getCond(), S->getThen());
12621269
if (Gap)
12631270
fillGapAreaWithCount(Gap->getBegin(), Gap->getEnd(), ThenCount);
12641271

@@ -1268,8 +1275,7 @@ struct CounterCoverageMappingBuilder
12681275
Counter ElseCount = subtractCounters(ParentCount, ThenCount);
12691276
if (const Stmt *Else = S->getElse()) {
12701277
// The 'else' count applies to the area immediately after the 'then'.
1271-
Gap = findGapAreaBetween(getPreciseTokenLocEnd(getEnd(S->getThen())),
1272-
getStart(Else));
1278+
Gap = findGapAreaBetween(S->getThen(), Else);
12731279
if (Gap)
12741280
fillGapAreaWithCount(Gap->getBegin(), Gap->getEnd(), ElseCount);
12751281
extendRegion(Else);

clang/test/CoverageMapping/if.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,3 +44,10 @@ int main() { // CHECK: File 0, [[@LINE]]:12 -> {{[0-9]+}}:2 =
4444

4545
return 0;
4646
}
47+
48+
#define FOO true
49+
50+
// CHECK-LABEL: _Z7ternaryv:
51+
void ternary() {
52+
true ? FOO : FOO; // CHECK-NOT: Gap,{{.*}}, [[@LINE]]:8 ->
53+
}

clang/test/CoverageMapping/macro-expressions.cpp

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,7 @@ void foo(int i) {
5757
// CHECK: File 0, [[@LINE+1]]:10 -> [[@LINE+1]]:12 = #1
5858
if (0) {}
5959

60-
// CHECK-NEXT: Expansion,File 0, [[@LINE+3]]:7 -> [[@LINE+3]]:11 = #0
61-
// CHECK-NEXT: Gap,File 0, [[@LINE+2]]:15 -> [[@LINE+2]]:16 = #2
60+
// CHECK-NEXT: Expansion,File 0, [[@LINE+2]]:7 -> [[@LINE+2]]:11 = #0
6261
// CHECK-NEXT: File 0, [[@LINE+1]]:16 -> [[@LINE+1]]:18 = #2
6362
if (EXPR(i)) {}
6463
// CHECK-NEXT: Expansion,File 0, [[@LINE+2]]:9 -> [[@LINE+2]]:14 = (#0 + #3)
@@ -71,8 +70,7 @@ void foo(int i) {
7170
for (ASSIGN(DECL(int, j), 0); LT(j, i); INC(j)) {}
7271
// CHECK-NEXT: Expansion,File 0, [[@LINE+1]]:3 -> [[@LINE+1]]:9 = #0
7372
ASSIGN(DECL(int, k), 0);
74-
// CHECK-NEXT: Expansion,File 0, [[@LINE+4]]:10 -> [[@LINE+4]]:12 = (#0 + #5)
75-
// CHECK-NEXT: Gap,File 0, [[@LINE+3]]:19 -> [[@LINE+3]]:20 = #5
73+
// CHECK-NEXT: Expansion,File 0, [[@LINE+3]]:10 -> [[@LINE+3]]:12 = (#0 + #5)
7674
// CHECK-NEXT: File 0, [[@LINE+2]]:20 -> [[@LINE+2]]:31 = #5
7775
// CHECK-NEXT: Expansion,File 0, [[@LINE+1]]:22 -> [[@LINE+1]]:25 = #5
7876
while (LT(k, i)) { INC(k); }
@@ -84,7 +82,6 @@ void foo(int i) {
8482
// CHECK: File 0, [[@LINE+1]]:42 -> [[@LINE+1]]:44 = #7
8583
for (DECL(int, j) : ARR(int, 1, 2, 3)) {}
8684

87-
// CHECK-NEXT: Gap,File 0, [[@LINE+3]]:12 -> [[@LINE+3]]:14 = #8
8885
// CHECK-NEXT: Expansion,File 0, [[@LINE+2]]:14 -> [[@LINE+2]]:20 = #0
8986
// CHECK-NEXT: Expansion,File 0, [[@LINE+1]]:23 -> [[@LINE+1]]:29 = #0
9087
(void)(i ? PRIo64 : PRIu64);

clang/test/CoverageMapping/macroparams2.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,11 @@ struct S {
66
int i, j;
77
};
88

9-
// CHECK: File 0, [[@LINE+1]]:12 -> [[@LINE+11]]:2 = #0
9+
// CHECK: File 0, [[@LINE+1]]:12 -> [[@LINE+10]]:2 = #0
1010
int main() {
1111
struct S arr[32] = { 0 };
1212
int n = 0;
13-
// CHECK-NEXT: Expansion,File 0, [[@LINE+3]]:7 -> [[@LINE+3]]:12 = #0
14-
// CHECK-NEXT: Gap,File 0, [[@LINE+2]]:33 -> [[@LINE+2]]:34 = #1
13+
// CHECK-NEXT: Expansion,File 0, [[@LINE+2]]:7 -> [[@LINE+2]]:12 = #0
1514
// CHECK-NEXT: File 0, [[@LINE+1]]:34 -> [[@LINE+3]]:4 = #1
1615
if (MACRO(arr[n].j, arr[n].i)) {
1716
n = 1;

clang/test/CoverageMapping/macros.c

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,32 +38,29 @@ void func3() { // CHECK-NEXT: File 0, [[@LINE]]:14 -> [[@LINE+3]]:2 = #0
3838
// CHECK-NEXT: File 2, 4:17 -> 4:22 = #0
3939

4040
// CHECK-NEXT: func4
41-
void func4() { // CHECK-NEXT: File 0, [[@LINE]]:14 -> [[@LINE+7]]:2 = #0
41+
void func4() { // CHECK-NEXT: File 0, [[@LINE]]:14 -> [[@LINE+6]]:2 = #0
4242
int i = 0;
4343
while (i++ < 10) // CHECK-NEXT: File 0, [[@LINE]]:10 -> [[@LINE]]:18 = (#0 + #1)
44-
if (i < 5) // CHECK: File 0, [[@LINE]]:5 -> [[@LINE+3]]:14 = #1
44+
if (i < 5) // CHECK: File 0, [[@LINE]]:5 -> [[@LINE+2]]:14 = #1
4545
// CHECK-NEXT: File 0, [[@LINE-1]]:9 -> [[@LINE-1]]:14 = #1
46-
// CHECK-NEXT: Gap,File 0, [[@LINE-2]]:15 -> [[@LINE+1]]:7 = #2
4746
MACRO_2; // CHECK-NEXT: Expansion,File 0, [[@LINE]]:7 -> [[@LINE]]:14 = #2
4847
}
4948
// CHECK-NEXT: File 1, 4:17 -> 4:22 = #2
5049
// CHECK-NOT: File 1
5150

5251
// CHECK-NEXT: func5
53-
void func5() { // CHECK-NEXT: File 0, [[@LINE]]:14 -> [[@LINE+5]]:2 = #0
52+
void func5() { // CHECK-NEXT: File 0, [[@LINE]]:14 -> [[@LINE+4]]:2 = #0
5453
int i = 0;
5554
if (i > 5) // CHECK-NEXT: File 0, [[@LINE]]:7 -> [[@LINE]]:12 = #0
56-
// CHECK-NEXT: Gap,File 0, [[@LINE-1]]:13 -> [[@LINE+1]]:5 = #1
5755
MACRO_3; // CHECK-NEXT: Expansion,File 0, [[@LINE]]:5 -> [[@LINE]]:12 = #1
5856
}
5957
// CHECK-NEXT: Expansion,File 1, 6:17 -> 6:24 = #1
6058
// CHECK-NEXT: File 2, 4:17 -> 4:22 = #1
6159

6260
// CHECK-NEXT: func6
63-
void func6(unsigned count) { // CHECK-NEXT: File 0, [[@LINE]]:28 -> [[@LINE+5]]:2 = #0
64-
begin: // CHECK-NEXT: File 0, [[@LINE]]:1 -> [[@LINE+4]]:2 = #1
61+
void func6(unsigned count) { // CHECK-NEXT: File 0, [[@LINE]]:28 -> [[@LINE+4]]:2 = #0
62+
begin: // CHECK-NEXT: File 0, [[@LINE]]:1 -> [[@LINE+3]]:2 = #1
6563
if (count--) // CHECK-NEXT: File 0, [[@LINE]]:9 -> [[@LINE]]:16 = #1
66-
// CHECK-NEXT: Gap,File 0, [[@LINE-1]]:17 -> [[@LINE+1]]:9 = #2
6764
GOTO begin; // CHECK-NEXT: File 0, [[@LINE]]:9 -> [[@LINE]]:19 = #2
6865
}
6966
// CHECK-NEXT: Expansion,File 0, [[@LINE-2]]:9 -> [[@LINE-2]]:13 = #2

clang/test/CoverageMapping/macroscopes.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,15 +61,13 @@ int main() {
6161
starts_a_scope
6262
ends_a_scope
6363

64-
// CHECK-NEXT: Expansion,File 0, [[@LINE+3]]:3 -> [[@LINE+3]]:17 = #0
65-
// CHECK-NEXT: Gap,File 0, [[@LINE+2]]:3 -> [[@LINE+3]]:5 = #8
64+
// CHECK-NEXT: Expansion,File 0, [[@LINE+2]]:3 -> [[@LINE+2]]:17 = #0
6665
// CHECK-NEXT: Expansion,File 0, [[@LINE+2]]:5 -> [[@LINE+2]]:16 = #8
6766
starts_a_while
6867
simple_stmt;
6968

7069
x = 0;
71-
// CHECK-NEXT: Expansion,File 0, [[@LINE+5]]:3 -> [[@LINE+5]]:17 = #0
72-
// CHECK-NEXT: Gap,File 0, [[@LINE+4]]:3 -> [[@LINE+4]]:18 = #9
70+
// CHECK-NEXT: Expansion,File 0, [[@LINE+4]]:3 -> [[@LINE+4]]:17 = #0
7371
// CHECK-NEXT: File 0, [[@LINE+3]]:18 -> [[@LINE+5]]:15 = #9
7472
// CHECK-NEXT: Expansion,File 0, [[@LINE+3]]:5 -> [[@LINE+3]]:16 = #9
7573
// CHECK-NEXT: Expansion,File 0, [[@LINE+3]]:3 -> [[@LINE+3]]:15 = #9

clang/test/CoverageMapping/moremacros.c

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,16 @@ int main(int argc, const char *argv[]) {
99
// CHECK-NEXT: File 0, [[@LINE+1]]:7 -> [[@LINE+1]]:12 = #0
1010
if (!argc) {} // CHECK: File 0, [[@LINE]]:14 -> [[@LINE]]:16 = #1
1111

12-
// CHECK-NEXT: File 0, [[@LINE+4]]:7 -> [[@LINE+4]]:12 = #0
13-
// CHECK-NEXT: Gap,File 0, [[@LINE+3]]:13 -> [[@LINE+3]]:14 = #2
12+
// CHECK-NEXT: File 0, [[@LINE+3]]:7 -> [[@LINE+3]]:12 = #0
1413
// CHECK-NEXT: Expansion,File 0, [[@LINE+2]]:14 -> [[@LINE+2]]:19 = #2
1514
// CHECK-NEXT: File 0, [[@LINE+1]]:19 -> [[@LINE+4]]:8 = #2
1615
if (!argc) LBRAC
1716
return 0;
1817
// CHECK-NEXT: Expansion,File 0, [[@LINE+1]]:3 -> [[@LINE+1]]:8 = #2
19-
RBRAC // CHECK-NEXT: [[@LINE]]:8 -> [[@LINE+7]]:3 = (#0 - #2)
18+
RBRAC // CHECK-NEXT: [[@LINE]]:8 -> [[@LINE+6]]:3 = (#0 - #2)
2019

21-
// CHECK-NEXT: File 0, [[@LINE+5]]:3 -> [[@LINE+16]]:2 = (#0 - #2)
22-
// CHECK-NEXT: File 0, [[@LINE+4]]:7 -> [[@LINE+4]]:12 = (#0 - #2)
23-
// CHECK-NEXT: Gap,File 0, [[@LINE+3]]:13 -> [[@LINE+3]]:14 = #3
20+
// CHECK-NEXT: File 0, [[@LINE+4]]:3 -> [[@LINE+15]]:2 = (#0 - #2)
21+
// CHECK-NEXT: File 0, [[@LINE+3]]:7 -> [[@LINE+3]]:12 = (#0 - #2)
2422
// CHECK-NEXT: Expansion,File 0, [[@LINE+2]]:14 -> [[@LINE+2]]:19 = #3
2523
// CHECK-NEXT: File 0, [[@LINE+1]]:19 -> [[@LINE+3]]:4 = #3
2624
if (!argc) LBRAC

0 commit comments

Comments
 (0)