r364271 - [analyzer] print() JSONify: Create pointers
Csaba Dabis via cfe-commits
cfe-commits at lists.llvm.org
Mon Jun 24 20:17:56 PDT 2019
Author: charusso
Date: Mon Jun 24 20:17:55 2019
New Revision: 364271
URL: http://llvm.org/viewvc/llvm-project?rev=364271&view=rev
Log:
[analyzer] print() JSONify: Create pointers
Summary: -
Reviewers: NoQ
Reviewed By: NoQ
Subscribers: xazax.hun, baloghadamsoftware, szepet, a.sidorin,
mikhail.ramalho, Szelethus, donat.nagy, dkrupp, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D63726
Modified:
cfe/trunk/lib/StaticAnalyzer/Core/Environment.cpp
cfe/trunk/lib/StaticAnalyzer/Core/RegionStore.cpp
cfe/trunk/test/Analysis/exploded-graph-rewriter/environment.dot
cfe/trunk/test/Analysis/exploded-graph-rewriter/environment_diff.dot
cfe/trunk/test/Analysis/exploded-graph-rewriter/store.dot
cfe/trunk/test/Analysis/exploded-graph-rewriter/store_diff.dot
cfe/trunk/test/Analysis/expr-inspection.c
cfe/trunk/utils/analyzer/exploded-graph-rewriter.py
Modified: cfe/trunk/lib/StaticAnalyzer/Core/Environment.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Core/Environment.cpp?rev=364271&r1=364270&r2=364271&view=diff
==============================================================================
--- cfe/trunk/lib/StaticAnalyzer/Core/Environment.cpp (original)
+++ cfe/trunk/lib/StaticAnalyzer/Core/Environment.cpp Mon Jun 24 20:17:55 2019
@@ -204,13 +204,13 @@ void Environment::printJson(raw_ostream
const LocationContext *LCtx, const char *NL,
unsigned int Space, bool IsDot) const {
Indent(Out, Space, IsDot) << "\"environment\": ";
- ++Space;
if (ExprBindings.isEmpty()) {
Out << "null," << NL;
return;
}
+ ++Space;
if (!LCtx) {
// Find the freshest location context.
llvm::SmallPtrSet<const LocationContext *, 16> FoundContexts;
@@ -227,7 +227,8 @@ void Environment::printJson(raw_ostream
assert(LCtx);
- Out << '[' << NL; // Start of Environment.
+ Out << "{ \"pointer\": \"" << (const void *)LCtx->getStackFrame()
+ << "\", \"items\": [" << NL;
PrintingPolicy PP = Ctx.getPrintingPolicy();
LCtx->printJson(Out, NL, Space, IsDot, [&](const LocationContext *LC) {
@@ -280,5 +281,5 @@ void Environment::printJson(raw_ostream
Out << "null ";
});
- Indent(Out, --Space, IsDot) << "]," << NL; // End of Environment.
+ Indent(Out, --Space, IsDot) << "]}," << NL;
}
Modified: cfe/trunk/lib/StaticAnalyzer/Core/RegionStore.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Core/RegionStore.cpp?rev=364271&r1=364270&r2=364271&view=diff
==============================================================================
--- cfe/trunk/lib/StaticAnalyzer/Core/RegionStore.cpp (original)
+++ cfe/trunk/lib/StaticAnalyzer/Core/RegionStore.cpp Mon Jun 24 20:17:55 2019
@@ -2640,7 +2640,7 @@ void RegionStoreManager::printJson(raw_o
return;
}
- Out << '[' << NL;
- Bindings.printJson(Out, NL, ++Space, IsDot);
- Indent(Out, --Space, IsDot) << "]," << NL;
+ Out << "{ \"pointer\": \"" << Bindings.asStore() << "\", \"items\": [" << NL;
+ Bindings.printJson(Out, NL, Space + 1, IsDot);
+ Indent(Out, Space, IsDot) << "]}," << NL;
}
Modified: cfe/trunk/test/Analysis/exploded-graph-rewriter/environment.dot
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/exploded-graph-rewriter/environment.dot?rev=364271&r1=364270&r2=364271&view=diff
==============================================================================
--- cfe/trunk/test/Analysis/exploded-graph-rewriter/environment.dot (original)
+++ cfe/trunk/test/Analysis/exploded-graph-rewriter/environment.dot Mon Jun 24 20:17:55 2019
@@ -34,21 +34,24 @@ Node0x1 [shape=record,label=
"program_state": {
"store": null,
"constraints": null,
- "environment": [
- {
- "location_context": "#0 Call",
- "lctx_id": 3,
- "calling": "foo",
- "call_line": 4,
- "items": [
- {
- "stmt_id": 5,
- "pretty": "bar()",
- "value": "Unknown"
- }
- ]
- }
- ]
+ "environment": {
+ "pointer": "0x2",
+ "items": [
+ {
+ "location_context": "#0 Call",
+ "lctx_id": 3,
+ "calling": "foo",
+ "call_line": 4,
+ "items": [
+ {
+ "stmt_id": 5,
+ "pretty": "bar()",
+ "value": "Unknown"
+ }
+ ]
+ }
+ ]
+ }
}
}
\l}"];
Modified: cfe/trunk/test/Analysis/exploded-graph-rewriter/environment_diff.dot
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/exploded-graph-rewriter/environment_diff.dot?rev=364271&r1=364270&r2=364271&view=diff
==============================================================================
--- cfe/trunk/test/Analysis/exploded-graph-rewriter/environment_diff.dot (original)
+++ cfe/trunk/test/Analysis/exploded-graph-rewriter/environment_diff.dot Mon Jun 24 20:17:55 2019
@@ -13,21 +13,24 @@ Node0x1 [shape=record,label=
"program_state": {
"store": null,
"constraints": null,
- "environment": [
- {
- "location_context": "#0 Call",
- "lctx_id": 3,
- "calling": "foo",
- "call_line": 4,
- "items": [
- {
- "stmt_id": 5,
- "pretty": "bar()",
- "value": "Unknown"
- }
- ]
- }
- ]
+ "environment": {
+ "pointer": "0x2",
+ "items": [
+ {
+ "location_context": "#0 Call",
+ "lctx_id": 3,
+ "calling": "foo",
+ "call_line": 4,
+ "items": [
+ {
+ "stmt_id": 5,
+ "pretty": "bar()",
+ "value": "Unknown"
+ }
+ ]
+ }
+ ]
+ }
}
}
\l}"];
@@ -56,21 +59,24 @@ Node0x6 [shape=record,label=
"program_state": {
"store": null,
"constraints": null,
- "environment": [
- {
- "location_context": "#0 Call",
- "lctx_id": 3,
- "calling": "foo",
- "call_line": 4,
- "items": [
- {
- "stmt_id": 9,
- "pretty": "baz()",
- "value": "Undefined"
- }
- ]
- }
- ]
+ "environment": {
+ "pointer": "0x2",
+ "items": [
+ {
+ "location_context": "#0 Call",
+ "lctx_id": 3,
+ "calling": "foo",
+ "call_line": 4,
+ "items": [
+ {
+ "stmt_id": 9,
+ "pretty": "baz()",
+ "value": "Undefined"
+ }
+ ]
+ }
+ ]
+ }
}
}
\l}"];
@@ -93,21 +99,24 @@ Node0x9 [shape=record,label=
"program_state": {
"store": null,
"constraints": null,
- "environment": [
- {
- "location_context": "#0 Call",
- "lctx_id": 3,
- "calling": "foo",
- "call_line": 4,
- "items": [
- {
- "stmt_id": 9,
- "pretty": "baz()",
- "value": "Undefined"
- }
- ]
- }
- ]
+ "environment": {
+ "pointer": "0x2",
+ "items": [
+ {
+ "location_context": "#0 Call",
+ "lctx_id": 3,
+ "calling": "foo",
+ "call_line": 4,
+ "items": [
+ {
+ "stmt_id": 9,
+ "pretty": "baz()",
+ "value": "Undefined"
+ }
+ ]
+ }
+ ]
+ }
}
}
\l}"];
Modified: cfe/trunk/test/Analysis/exploded-graph-rewriter/store.dot
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/exploded-graph-rewriter/store.dot?rev=364271&r1=364270&r2=364271&view=diff
==============================================================================
--- cfe/trunk/test/Analysis/exploded-graph-rewriter/store.dot (original)
+++ cfe/trunk/test/Analysis/exploded-graph-rewriter/store.dot Mon Jun 24 20:17:55 2019
@@ -29,19 +29,22 @@ Node0x1 [shape=record,label=
"program_state": {
"environment": null,
"constraints": null,
- "store": [
- {
- "cluster": "x",
- "pointer": "0x3",
- "items": [
- {
- "kind": "Default",
- "offset": 0,
- "value": "Undefined"
- }
- ]
- }
- ]
+ "store": {
+ "pointer": "0x2",
+ "items": [
+ {
+ "cluster": "x",
+ "pointer": "0x3",
+ "items": [
+ {
+ "kind": "Default",
+ "offset": 0,
+ "value": "Undefined"
+ }
+ ]
+ }
+ ]
+ }
}
}
\l}"];
Modified: cfe/trunk/test/Analysis/exploded-graph-rewriter/store_diff.dot
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/exploded-graph-rewriter/store_diff.dot?rev=364271&r1=364270&r2=364271&view=diff
==============================================================================
--- cfe/trunk/test/Analysis/exploded-graph-rewriter/store_diff.dot (original)
+++ cfe/trunk/test/Analysis/exploded-graph-rewriter/store_diff.dot Mon Jun 24 20:17:55 2019
@@ -12,19 +12,22 @@ Node0x1 [shape=record,label=
"program_state": {
"environment": null,
"constraints": null,
- "store": [
- {
- "cluster": "x",
- "pointer": "0x3",
- "items": [
- {
- "kind": "Default",
- "offset": 0,
- "value": "Undefined"
- }
- ]
- }
- ]
+ "store": {
+ "pointer": "0x2",
+ "items": [
+ {
+ "cluster": "x",
+ "pointer": "0x3",
+ "items": [
+ {
+ "kind": "Default",
+ "offset": 0,
+ "value": "Undefined"
+ }
+ ]
+ }
+ ]
+ }
}
}
\l}"];
@@ -54,19 +57,22 @@ Node0x4 [shape=record,label=
"program_state": {
"environment": null,
"constraints": null,
- "store": [
- {
- "cluster": "x",
- "pointer": "0x3",
- "items": [
- {
- "kind": "Default",
- "offset": 0,
- "value": "Unknown"
- }
- ]
- }
- ]
+ "store": {
+ "pointer": "0x5",
+ "items": [
+ {
+ "cluster": "x",
+ "pointer": "0x3",
+ "items": [
+ {
+ "kind": "Default",
+ "offset": 0,
+ "value": "Unknown"
+ }
+ ]
+ }
+ ]
+ }
}
}
\l}"];
Modified: cfe/trunk/test/Analysis/expr-inspection.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/expr-inspection.c?rev=364271&r1=364270&r2=364271&view=diff
==============================================================================
--- cfe/trunk/test/Analysis/expr-inspection.c (original)
+++ cfe/trunk/test/Analysis/expr-inspection.c Mon Jun 24 20:17:55 2019
@@ -24,16 +24,16 @@ void foo(int x) {
}
// CHECK: "program_state": {
-// CHECK-NEXT: "store": [
+// CHECK-NEXT: "store": { "pointer": "{{0x[0-9a-f]+}}", "items": [
// CHECK-NEXT: { "cluster": "y", "pointer": "{{0x[0-9a-f]+}}", "items": [
// CHECK-NEXT: { "kind": "Direct", "offset": 0, "value": "2 S32b" }
// CHECK-NEXT: ]}
-// CHECK-NEXT: ],
-// CHECK-NEXT: "environment": [
+// CHECK-NEXT: ]},
+// CHECK-NEXT: "environment": { "pointer": "{{0x[0-9a-f]+}}", "items": [
// CHECK-NEXT: { "lctx_id": 1, "location_context": "#0 Call", "calling": "foo", "call_line": null, "items": [
// CHECK-NEXT: { "stmt_id": {{[0-9]+}}, "pretty": "clang_analyzer_printState", "value": "&code{clang_analyzer_printState}" }
// CHECK-NEXT: ]}
-// CHECK-NEXT: ],
+// CHECK-NEXT: ]},
// CHECK-NEXT: "constraints": [
// CHECK-NEXT: { "symbol": "reg_$0<int x>", "range": "{ [-2147483648, 13] }" }
// CHECK-NEXT: ],
Modified: cfe/trunk/utils/analyzer/exploded-graph-rewriter.py
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/utils/analyzer/exploded-graph-rewriter.py?rev=364271&r1=364270&r2=364271&view=diff
==============================================================================
--- cfe/trunk/utils/analyzer/exploded-graph-rewriter.py (original)
+++ cfe/trunk/utils/analyzer/exploded-graph-rewriter.py Mon Jun 24 20:17:55 2019
@@ -126,7 +126,8 @@ class EnvironmentFrame(object):
class Environment(object):
def __init__(self, json_e):
super(Environment, self).__init__()
- self.frames = [EnvironmentFrame(f) for f in json_e]
+ self.ptr = json_e['pointer']
+ self.frames = [EnvironmentFrame(f) for f in json_e['items']]
def diff_frames(self, prev):
# TODO: It's difficult to display a good diff when frame numbers shift.
@@ -190,8 +191,9 @@ class StoreCluster(object):
class Store(object):
def __init__(self, json_s):
super(Store, self).__init__()
+ self.ptr = json_s['pointer']
self.clusters = collections.OrderedDict(
- [(c['pointer'], StoreCluster(c)) for c in json_s])
+ [(c['pointer'], StoreCluster(c)) for c in json_s['items']])
def diff_clusters(self, prev):
removed = [k for k in prev.clusters if k not in self.clusters]
More information about the cfe-commits
mailing list