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] _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits