diff --git a/clang/lib/StaticAnalyzer/Core/BugReporter.cpp b/clang/lib/StaticAnalyzer/Core/BugReporter.cpp
index 76cfb89d49f9..09b35da361e2 100644
--- a/clang/lib/StaticAnalyzer/Core/BugReporter.cpp
+++ b/clang/lib/StaticAnalyzer/Core/BugReporter.cpp
@@ -1026,7 +1026,8 @@ public:
PrevLoc = PathDiagnosticLocation();
}
- void addEdge(PathDiagnosticLocation NewLoc, bool alwaysAdd = false);
+ void addEdge(PathDiagnosticLocation NewLoc, bool alwaysAdd = false,
+ bool IsPostJump = false);
void rawAddEdge(PathDiagnosticLocation NewLoc);
@@ -1122,7 +1123,8 @@ void EdgeBuilder::rawAddEdge(PathDiagnosticLocation NewLoc) {
PrevLoc = NewLoc;
}
-void EdgeBuilder::addEdge(PathDiagnosticLocation NewLoc, bool alwaysAdd) {
+void EdgeBuilder::addEdge(PathDiagnosticLocation NewLoc, bool alwaysAdd,
+ bool IsPostJump) {
if (!alwaysAdd && NewLoc.asLocation().isMacroID())
return;
@@ -1135,13 +1137,14 @@ void EdgeBuilder::addEdge(PathDiagnosticLocation NewLoc, bool alwaysAdd) {
// Is the top location context the same as the one for the new location?
if (TopContextLoc == CLoc) {
if (alwaysAdd) {
- if (IsConsumedExpr(TopContextLoc) &&
- !IsControlFlowExpr(TopContextLoc.asStmt()))
- TopContextLoc.markDead();
+ if (IsConsumedExpr(TopContextLoc))
+ TopContextLoc.markDead();
rawAddEdge(NewLoc);
}
+ if (IsPostJump)
+ TopContextLoc.markDead();
return;
}
@@ -1149,13 +1152,13 @@ void EdgeBuilder::addEdge(PathDiagnosticLocation NewLoc, bool alwaysAdd) {
if (alwaysAdd) {
rawAddEdge(NewLoc);
- if (IsConsumedExpr(CLoc) && !IsControlFlowExpr(CLoc.asStmt())) {
- CLocs.push_back(ContextLocation(CLoc, true));
+ if (IsConsumedExpr(CLoc)) {
+ CLocs.push_back(ContextLocation(CLoc, /*IsDead=*/true));
return;
}
}
- CLocs.push_back(CLoc);
+ CLocs.push_back(ContextLocation(CLoc, /*IsDead=*/IsPostJump));
return;
}
@@ -1409,7 +1412,7 @@ static bool GenerateExtensivePathDiagnostic(PathDiagnostic& PD,
GRBugReporter& BR = PDB.getBugReporter();
BR.addCallPieceLocationContextPair(C, CE->getCalleeContext());
- EB.addEdge(C->callReturn, true);
+ EB.addEdge(C->callReturn, /*AlwaysAdd=*/true, /*IsPostJump=*/true);
EB.flushLocations();
PD.getActivePath().push_front(C);
diff --git a/clang/test/Analysis/inline-plist.c b/clang/test/Analysis/inline-plist.c
index a2dd98a6d06e..b969c5f65799 100644
--- a/clang/test/Analysis/inline-plist.c
+++ b/clang/test/Analysis/inline-plist.c
@@ -1229,40 +1229,6 @@ void test_block_arg() {
// CHECK-NEXT:
// CHECK-NEXT:
// CHECK-NEXT: line66
-// CHECK-NEXT: col3
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line66
-// CHECK-NEXT: col5
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: end
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line66
-// CHECK-NEXT: col12
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line66
-// CHECK-NEXT: col12
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: kindcontrol
-// CHECK-NEXT: edges
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: start
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line66
// CHECK-NEXT: col12
// CHECK-NEXT: file0
// CHECK-NEXT:
diff --git a/clang/test/Analysis/inlining/eager-reclamation-path-notes.c b/clang/test/Analysis/inlining/eager-reclamation-path-notes.c
index f3e7376156b6..3841f8199bdc 100644
--- a/clang/test/Analysis/inlining/eager-reclamation-path-notes.c
+++ b/clang/test/Analysis/inlining/eager-reclamation-path-notes.c
@@ -120,40 +120,6 @@ void testChainedCalls() {
// CHECK-NEXT:
// CHECK-NEXT:
// CHECK-NEXT: line21
-// CHECK-NEXT: col3
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line21
-// CHECK-NEXT: col5
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: end
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line21
-// CHECK-NEXT: col10
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line21
-// CHECK-NEXT: col16
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: kindcontrol
-// CHECK-NEXT: edges
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: start
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line21
// CHECK-NEXT: col10
// CHECK-NEXT: file0
// CHECK-NEXT:
@@ -577,40 +543,6 @@ void testChainedCalls() {
// CHECK-NEXT:
// CHECK-NEXT:
// CHECK-NEXT: line33
-// CHECK-NEXT: col3
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line33
-// CHECK-NEXT: col6
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: end
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line33
-// CHECK-NEXT: col11
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line33
-// CHECK-NEXT: col17
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: kindcontrol
-// CHECK-NEXT: edges
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: start
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line33
// CHECK-NEXT: col11
// CHECK-NEXT: file0
// CHECK-NEXT:
diff --git a/clang/test/Analysis/inlining/eager-reclamation-path-notes.cpp b/clang/test/Analysis/inlining/eager-reclamation-path-notes.cpp
index 3ee9d92b0170..08c84695ccb1 100644
--- a/clang/test/Analysis/inlining/eager-reclamation-path-notes.cpp
+++ b/clang/test/Analysis/inlining/eager-reclamation-path-notes.cpp
@@ -217,40 +217,6 @@ int memberCallBaseDisappears() {
// CHECK-NEXT:
// CHECK-NEXT:
// CHECK-NEXT: line24
-// CHECK-NEXT: col3
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line24
-// CHECK-NEXT: col12
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: end
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line24
-// CHECK-NEXT: col21
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line24
-// CHECK-NEXT: col34
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: kindcontrol
-// CHECK-NEXT: edges
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: start
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line24
// CHECK-NEXT: col21
// CHECK-NEXT: file0
// CHECK-NEXT:
diff --git a/clang/test/Analysis/inlining/path-notes.c b/clang/test/Analysis/inlining/path-notes.c
index b128aabf7e92..07bc824dde6c 100644
--- a/clang/test/Analysis/inlining/path-notes.c
+++ b/clang/test/Analysis/inlining/path-notes.c
@@ -1123,40 +1123,6 @@ void testUseOfNullPointer() {
// CHECK-NEXT:
// CHECK-NEXT:
// CHECK-NEXT: line65
-// CHECK-NEXT: col3
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line65
-// CHECK-NEXT: col3
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: end
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line65
-// CHECK-NEXT: col4
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line65
-// CHECK-NEXT: col10
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: kindcontrol
-// CHECK-NEXT: edges
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: start
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line65
// CHECK-NEXT: col4
// CHECK-NEXT: file0
// CHECK-NEXT:
@@ -1469,40 +1435,6 @@ void testUseOfNullPointer() {
// CHECK-NEXT:
// CHECK-NEXT:
// CHECK-NEXT: line72
-// CHECK-NEXT: col3
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line72
-// CHECK-NEXT: col8
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: end
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line72
-// CHECK-NEXT: col11
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line72
-// CHECK-NEXT: col17
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: kindcontrol
-// CHECK-NEXT: edges
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: start
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line72
// CHECK-NEXT: col11
// CHECK-NEXT: file0
// CHECK-NEXT:
@@ -1815,40 +1747,6 @@ void testUseOfNullPointer() {
// CHECK-NEXT:
// CHECK-NEXT:
// CHECK-NEXT: line79
-// CHECK-NEXT: col3
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line79
-// CHECK-NEXT: col5
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: end
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line79
-// CHECK-NEXT: col12
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line79
-// CHECK-NEXT: col18
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: kindcontrol
-// CHECK-NEXT: edges
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: start
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line79
// CHECK-NEXT: col12
// CHECK-NEXT: file0
// CHECK-NEXT:
@@ -2224,40 +2122,6 @@ void testUseOfNullPointer() {
// CHECK-NEXT:
// CHECK-NEXT:
// CHECK-NEXT: line88
-// CHECK-NEXT: col3
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line88
-// CHECK-NEXT: col3
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: end
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line88
-// CHECK-NEXT: col7
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line88
-// CHECK-NEXT: col13
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: kindcontrol
-// CHECK-NEXT: edges
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: start
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line88
// CHECK-NEXT: col7
// CHECK-NEXT: file0
// CHECK-NEXT:
@@ -2625,40 +2489,6 @@ void testUseOfNullPointer() {
// CHECK-NEXT: Returning from 'getZero'
// CHECK-NEXT:
// CHECK-NEXT:
-// CHECK-NEXT: kindcontrol
-// CHECK-NEXT: edges
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: start
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line103
-// CHECK-NEXT: col3
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line103
-// CHECK-NEXT: col12
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: end
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line103
-// CHECK-NEXT: col14
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line103
-// CHECK-NEXT: col20
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
// CHECK-NEXT: kindevent
// CHECK-NEXT: location
// CHECK-NEXT:
diff --git a/clang/test/Analysis/inlining/path-notes.cpp b/clang/test/Analysis/inlining/path-notes.cpp
index 895ee28e8b61..e78c05249e5c 100644
--- a/clang/test/Analysis/inlining/path-notes.cpp
+++ b/clang/test/Analysis/inlining/path-notes.cpp
@@ -2106,40 +2106,6 @@ void testPathNoteOnInitializer() {
// CHECK-NEXT:
// CHECK-NEXT:
// CHECK-NEXT:
-// CHECK-NEXT: kindcontrol
-// CHECK-NEXT: edges
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: start
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line145
-// CHECK-NEXT: col5
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line145
-// CHECK-NEXT: col5
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: end
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line145
-// CHECK-NEXT: col9
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line145
-// CHECK-NEXT: col12
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
// CHECK-NEXT: kindevent
// CHECK-NEXT: location
// CHECK-NEXT:
@@ -2754,40 +2720,6 @@ void testPathNoteOnInitializer() {
// CHECK-NEXT:
// CHECK-NEXT:
// CHECK-NEXT: line173
-// CHECK-NEXT: col5
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line173
-// CHECK-NEXT: col7
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: end
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line173
-// CHECK-NEXT: col23
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line173
-// CHECK-NEXT: col29
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: kindcontrol
-// CHECK-NEXT: edges
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: start
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line173
// CHECK-NEXT: col23
// CHECK-NEXT: file0
// CHECK-NEXT:
@@ -3134,40 +3066,6 @@ void testPathNoteOnInitializer() {
// CHECK-NEXT:
// CHECK-NEXT:
// CHECK-NEXT: line180
-// CHECK-NEXT: col5
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line180
-// CHECK-NEXT: col7
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: end
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line180
-// CHECK-NEXT: col23
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line180
-// CHECK-NEXT: col34
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: kindcontrol
-// CHECK-NEXT: edges
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: start
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line180
// CHECK-NEXT: col23
// CHECK-NEXT: file0
// CHECK-NEXT:
diff --git a/clang/test/Analysis/inlining/path-notes.m b/clang/test/Analysis/inlining/path-notes.m
index f3a7b6cc0fea..af3e3c30dde8 100644
--- a/clang/test/Analysis/inlining/path-notes.m
+++ b/clang/test/Analysis/inlining/path-notes.m
@@ -408,40 +408,6 @@ int testDispatchSyncInliningNoPruning(int coin) {
// CHECK-NEXT:
// CHECK-NEXT:
// CHECK-NEXT: line21
-// CHECK-NEXT: col3
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line21
-// CHECK-NEXT: col3
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: end
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line21
-// CHECK-NEXT: col4
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line21
-// CHECK-NEXT: col15
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: kindcontrol
-// CHECK-NEXT: edges
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: start
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line21
// CHECK-NEXT: col4
// CHECK-NEXT: file0
// CHECK-NEXT:
diff --git a/clang/test/Analysis/retain-release-path-notes.m b/clang/test/Analysis/retain-release-path-notes.m
index 82b4be21595d..ea943d1ca93e 100644
--- a/clang/test/Analysis/retain-release-path-notes.m
+++ b/clang/test/Analysis/retain-release-path-notes.m
@@ -4922,40 +4922,6 @@ static int Cond;
// CHECK-NEXT:
// CHECK-NEXT:
// CHECK-NEXT: line225
-// CHECK-NEXT: col3
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line225
-// CHECK-NEXT: col4
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: end
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line225
-// CHECK-NEXT: col10
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line225
-// CHECK-NEXT: col10
-// CHECK-NEXT: file0
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: kindcontrol
-// CHECK-NEXT: edges
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: start
-// CHECK-NEXT:
-// CHECK-NEXT:
-// CHECK-NEXT: line225
// CHECK-NEXT: col10
// CHECK-NEXT: file0
// CHECK-NEXT: