[analyzer] exploded-graph-rewriter: Fix dump for state 0.

It shouldn't say "unspecified" when the state is specified to be empty.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@375279 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/test/Analysis/exploded-graph-rewriter/edge.dot b/test/Analysis/exploded-graph-rewriter/edge.dot
index 3923f1f..43d6e3b 100644
--- a/test/Analysis/exploded-graph-rewriter/edge.dot
+++ b/test/Analysis/exploded-graph-rewriter/edge.dot
@@ -5,7 +5,7 @@
 // UNSUPPORTED: system-windows
 
 Node0x1 [shape=record,label=
- "{{ "program_state": null, "program_points": [
+ "{{ "state_id": 0, "program_state": null, "program_points": [
     {
       "kind": "BlockEntrance", "block_id": 1,
       "terminator": null, "term_kind": null,
@@ -19,7 +19,7 @@
 Node0x1 -> Node0x2;
 
 Node0x2 [shape=record,label=
- "{{ "program_state": null, "program_points": [
+ "{{ "state_id": 0, "program_state": null, "program_points": [
     {
       "kind": "BlockEntrance", "block_id": 1,
       "terminator": null, "term_kind": null,
diff --git a/test/Analysis/exploded-graph-rewriter/node_labels.dot b/test/Analysis/exploded-graph-rewriter/node_labels.dot
index a3d7420..89d5070 100644
--- a/test/Analysis/exploded-graph-rewriter/node_labels.dot
+++ b/test/Analysis/exploded-graph-rewriter/node_labels.dot
@@ -15,13 +15,12 @@
 // CHECK-SAME:   <tr>
 // LIGHT-SAME:     <td bgcolor="gray70">
 // DARK-SAME:      <td bgcolor="gray20">
-// CHECK-SAME:       <b>State Unspecified</b>
+// CHECK-SAME:       <b>State 0</b>
 // CHECK-SAME:     </td>
 // CHECK-SAME:   </tr>
 Node0x1 [shape=record,label=
  "{
-    { "node_id": 1, "pointer": "0x1", "has_report": false, "is_sink": false,
-      "program_state": null,
+    { "state_id": 0, "program_state": null,
       "program_points": [
         {
           "kind": "BlockEntrance", "block_id": 1,
@@ -48,7 +47,7 @@
 // CHECK-SAME: </tr>
 Node0x2 [shape=record,label=
  "{
-    { "program_state": null,
+    { "state_id": 0, "program_state": null,
       "program_points": [
         {
           "kind": "BlockEntrance", "block_id": 1,
diff --git a/test/Analysis/exploded-graph-rewriter/program_points.dot b/test/Analysis/exploded-graph-rewriter/program_points.dot
index c9492757..bee48d0 100644
--- a/test/Analysis/exploded-graph-rewriter/program_points.dot
+++ b/test/Analysis/exploded-graph-rewriter/program_points.dot
@@ -29,7 +29,7 @@
 Node0x1 [shape=record,label=
  "{
     {
-      "program_state": null, "program_points": [
+      "state_id": 0, "program_state": null, "program_points": [
       {
         "kind": "Edge",
         "src_id": 0,
@@ -80,7 +80,7 @@
 // CHECK-SAME: </table>
 Node0x3 [shape=record,label=
  "{
-    { "program_state": null, "program_points": [
+    { "state_id": 0, "program_state": null, "program_points": [
       {
         "kind": "Statement",
         "stmt_kind": "DeclRefExpr",
@@ -109,7 +109,7 @@
 Node0x4 [shape=record,label=
  "{
     {
-      "program_state": null, "program_points": [
+      "state_id": 0, "program_state": null, "program_points": [
       {
         "kind": "Statement",
         "stmt_kind": "CompoundStmt",
@@ -157,7 +157,7 @@
 // CHECK-SAME: </table>
 Node0x5 [shape=record,label=
  "{
-    { "program_state": null, "program_points": [
+    { "state_id": 0, "program_state": null, "program_points": [
       {
         "kind": "Statement",
         "stmt_kind": "ImplicitCastExpr",
diff --git a/test/Analysis/exploded-graph-rewriter/trimmers.dot b/test/Analysis/exploded-graph-rewriter/trimmers.dot
index 2c441e0..df6270d 100644
--- a/test/Analysis/exploded-graph-rewriter/trimmers.dot
+++ b/test/Analysis/exploded-graph-rewriter/trimmers.dot
@@ -17,7 +17,7 @@
 // UNSUPPORTED: system-windows
 
 Node0x1 [shape=record,label=
- "{{ "program_state": null, "program_points": [
+ "{{ "state_id": 0, "program_state": null, "program_points": [
        {
          "kind": "BlockEntrance", "block_id": 1,
          "terminator": null, "term_kind": null,
@@ -27,7 +27,7 @@
      ]}\l}"];
 
 Node0x2 [shape=record,label=
- "{{ "program_state": null, "program_points": [
+ "{{ "state_id": 0, "program_state": null, "program_points": [
        {
          "kind": "BlockEntrance", "block_id": 1,
          "terminator": null, "term_kind": null,
@@ -37,7 +37,7 @@
      ]}\l}"];
 
 Node0x3 [shape=record,label=
- "{{ "program_state": null, "program_points": [
+ "{{ "state_id": 0, "program_state": null, "program_points": [
        {
          "kind": "BlockEntrance", "block_id": 1,
          "terminator": null, "term_kind": null,
@@ -47,7 +47,7 @@
      ]}\l}"];
 
 Node0x4 [shape=record,label=
- "{{ "program_state": null, "program_points": [
+ "{{ "state_id": 0, "program_state": null, "program_points": [
        {
          "kind": "BlockEntrance", "block_id": 1,
          "terminator": null, "term_kind": null,
diff --git a/utils/analyzer/exploded-graph-rewriter.py b/utils/analyzer/exploded-graph-rewriter.py
index 79222bd..46c0415 100755
--- a/utils/analyzer/exploded-graph-rewriter.py
+++ b/utils/analyzer/exploded-graph-rewriter.py
@@ -273,6 +273,16 @@
         super(ProgramState, self).__init__()
         logging.debug('Adding ProgramState ' + str(state_id))
 
+        if json_ps is None:
+            json_ps = {
+                'store': None,
+                'environment': None,
+                'constraints': None,
+                'dynamic_types': None,
+                'constructing_objects': None,
+                'checker_messages': None
+            }
+
         self.state_id = state_id
 
         self.store = Store(json_ps['store']) \
@@ -316,8 +326,8 @@
         self.points = [ProgramPoint(p) for p in json_node['program_points']]
         self.node_id = self.points[-1].node_id
         self.state = ProgramState(json_node['state_id'],
-                                  json_node['program_state']) \
-            if json_node['program_state'] is not None else None
+                                  json_node['program_state']
+            if json_node['program_state'] is not None else None);
 
         assert self.node_name() == node_id