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

Reply via email to