llvm/clang/test/Analysis/exploded-graph-rewriter/trimmers.dot

// RUN: %exploded_graph_rewriter %s \
// RUN:     | FileCheck %s -check-prefixes=ONE,TWO,THREE,FOUR
// RUN: %exploded_graph_rewriter -s %s \
// RUN:     | FileCheck %s -check-prefixes=ONE,TWO,NOTTHREE,FOUR
// RUN: %exploded_graph_rewriter --to=0x2 %s \
// RUN:     | FileCheck %s -check-prefixes=ONE,TWO,NOTTHREE,NOTFOUR
// RUN: %exploded_graph_rewriter --to 2 %s \
// RUN:     | FileCheck %s -check-prefixes=ONE,TWO,NOTTHREE,NOTFOUR
// RUN: %exploded_graph_rewriter --to 2,3 %s \
// RUN:     | FileCheck %s -check-prefixes=ONE,TWO,THREE,NOTFOUR
// RUN: %exploded_graph_rewriter --to 4 %s \
// RUN:     | FileCheck %s -check-prefixes=ONE,TWO,THREE,FOUR
// RUN: %exploded_graph_rewriter --to 4 -s %s \
// RUN:     | FileCheck %s -check-prefixes=ONE,TWO,NOTTHREE,FOUR

Node0x1 [shape=record,label=
 "{{ "state_id": 0, "program_state": null, "program_points": [
       {
         "kind": "BlockEntrance", "block_id": 1,
         "terminator": null, "term_kind": null,
         "tag": null, "node_id": 1,
         "has_report": 0, "is_sink": 0
       }
     ]}\l}"];

Node0x2 [shape=record,label=
 "{{ "state_id": 0, "program_state": null, "program_points": [
       {
         "kind": "BlockEntrance", "block_id": 1,
         "terminator": null, "term_kind": null,
         "tag": null, "node_id": 2,
         "has_report": 0, "is_sink": 0
       }
     ]}\l}"];

Node0x3 [shape=record,label=
 "{{ "state_id": 0, "program_state": null, "program_points": [
       {
         "kind": "BlockEntrance", "block_id": 1,
         "terminator": null, "term_kind": null,
         "tag": null, "node_id": 3,
         "has_report": 0, "is_sink": 0
       }
     ]}\l}"];

Node0x4 [shape=record,label=
 "{{ "state_id": 0, "program_state": null, "program_points": [
       {
         "kind": "BlockEntrance", "block_id": 1,
         "terminator": null, "term_kind": null,
         "tag": null, "node_id": 4,
         "has_report": 0, "is_sink": 0
       }
     ]}\l}"];

Node0x1 -> Node0x2;
Node0x1 -> Node0x3;
Node0x2 -> Node0x4;
Node0x3 -> Node0x4;

// ONE: Node0x1
// NOTONE-NOT: Node0x1
// TWO: Node0x2
// NOTTWO-NOT: Node0x2
// THREE: Node0x3
// NOTTHREE-NOT: Node0x3
// FOUR: Node0x4
// NOTFOUR-NOT: Node0x4