mirror of
https://github.com/gonum/gonum.git
synced 2025-10-28 17:31:56 +08:00
graph/path: add benchmarks for Dominators
The initial test cases are from Robin Eklind's decomp project, the DOT
files were generated using his instructions:
git clone https://github.com/decomp/testdata
go get github.com/decomp/decomp/cmd/ll2dot
cd testdata/pathological/testdata
ll2dot *.ll
This commit is contained in:
258
graph/path/control_flow_bench_test.go
Normal file
258
graph/path/control_flow_bench_test.go
Normal file
@@ -0,0 +1,258 @@
|
|||||||
|
// Copyright ©2017 The gonum Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
// +build go1.7
|
||||||
|
|
||||||
|
package path
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"io/ioutil"
|
||||||
|
"math"
|
||||||
|
"math/rand"
|
||||||
|
"path/filepath"
|
||||||
|
"strings"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"gonum.org/v1/gonum/graph"
|
||||||
|
"gonum.org/v1/gonum/graph/encoding"
|
||||||
|
"gonum.org/v1/gonum/graph/encoding/dot"
|
||||||
|
"gonum.org/v1/gonum/graph/graphs/gen"
|
||||||
|
"gonum.org/v1/gonum/graph/simple"
|
||||||
|
"gonum.org/v1/gonum/graph/topo"
|
||||||
|
)
|
||||||
|
|
||||||
|
func BenchmarkDominators(b *testing.B) {
|
||||||
|
testdata := filepath.FromSlash("./testdata/flow")
|
||||||
|
|
||||||
|
fis, err := ioutil.ReadDir(testdata)
|
||||||
|
if err != nil {
|
||||||
|
b.Fatalf("failed to open control flow testdata: %v", err)
|
||||||
|
}
|
||||||
|
for _, fi := range fis {
|
||||||
|
name := fi.Name()
|
||||||
|
ext := filepath.Ext(name)
|
||||||
|
if ext != ".dot" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
test := name[:len(name)-len(ext)]
|
||||||
|
|
||||||
|
data, err := ioutil.ReadFile(filepath.Join(testdata, name))
|
||||||
|
if err != nil {
|
||||||
|
b.Errorf("failed to open control flow case: %v", err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
g := &labeled{DirectedGraph: simple.NewDirectedGraph()}
|
||||||
|
err = dot.Unmarshal(data, g)
|
||||||
|
if err != nil {
|
||||||
|
b.Errorf("failed to unmarshal graph data: %v", err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
want := g.root
|
||||||
|
if want == nil {
|
||||||
|
b.Error("no entry node label for graph")
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
b.Run(test, func(b *testing.B) {
|
||||||
|
for i := 0; i < b.N; i++ {
|
||||||
|
d := Dominators(g.root, g)
|
||||||
|
if got := d.Root(); got.ID() != want.ID() {
|
||||||
|
b.Fatalf("unexpected root node: got:%d want:%d", got.ID(), want.ID())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
type labeled struct {
|
||||||
|
*simple.DirectedGraph
|
||||||
|
|
||||||
|
root *node
|
||||||
|
}
|
||||||
|
|
||||||
|
func (g *labeled) NewNode() graph.Node {
|
||||||
|
return &node{Node: g.DirectedGraph.NewNode(), g: g}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (g *labeled) SetEdge(e graph.Edge) {
|
||||||
|
if e.To().ID() == e.From().ID() {
|
||||||
|
// Do not attempt to add self edges.
|
||||||
|
return
|
||||||
|
}
|
||||||
|
g.DirectedGraph.SetEdge(e)
|
||||||
|
}
|
||||||
|
|
||||||
|
type node struct {
|
||||||
|
graph.Node
|
||||||
|
name string
|
||||||
|
g *labeled
|
||||||
|
}
|
||||||
|
|
||||||
|
func (n *node) SetDOTID(id string) {
|
||||||
|
n.name = id
|
||||||
|
}
|
||||||
|
|
||||||
|
func (n *node) SetAttribute(attr encoding.Attribute) error {
|
||||||
|
if attr.Key != "label" {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
switch attr.Value {
|
||||||
|
default:
|
||||||
|
if attr.Value != `"{%0}"` && !strings.HasPrefix(attr.Value, `"{%0|`) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
fallthrough
|
||||||
|
case "entry", "root":
|
||||||
|
if n.g.root != nil {
|
||||||
|
return fmt.Errorf("set root for graph with existing root: old=%q new=%q", n.g.root.name, n.name)
|
||||||
|
}
|
||||||
|
n.g.root = n
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func BenchmarkRandomGraphDominators(b *testing.B) {
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
g func() *simple.DirectedGraph
|
||||||
|
}{
|
||||||
|
{name: "gnm-n=1e3-m=1e3", g: gnm(1e3, 1e3)},
|
||||||
|
{name: "gnm-n=1e3-m=3e3", g: gnm(1e3, 3e3)},
|
||||||
|
{name: "gnm-n=1e3-m=1e4", g: gnm(1e3, 1e4)},
|
||||||
|
{name: "gnm-n=1e3-m=3e4", g: gnm(1e3, 3e4)},
|
||||||
|
|
||||||
|
{name: "gnm-n=1e4-m=1e4", g: gnm(1e4, 1e4)},
|
||||||
|
{name: "gnm-n=1e4-m=3e4", g: gnm(1e4, 3e4)},
|
||||||
|
{name: "gnm-n=1e4-m=1e5", g: gnm(1e4, 1e5)},
|
||||||
|
{name: "gnm-n=1e4-m=3e5", g: gnm(1e4, 3e5)},
|
||||||
|
|
||||||
|
{name: "gnm-n=1e5-m=1e5", g: gnm(1e5, 1e5)},
|
||||||
|
{name: "gnm-n=1e5-m=3e5", g: gnm(1e5, 3e5)},
|
||||||
|
{name: "gnm-n=1e5-m=1e6", g: gnm(1e5, 1e6)},
|
||||||
|
{name: "gnm-n=1e5-m=3e6", g: gnm(1e5, 3e6)},
|
||||||
|
|
||||||
|
{name: "gnm-n=1e6-m=1e6", g: gnm(1e6, 1e6)},
|
||||||
|
{name: "gnm-n=1e6-m=3e6", g: gnm(1e6, 3e6)},
|
||||||
|
{name: "gnm-n=1e6-m=1e7", g: gnm(1e6, 1e7)},
|
||||||
|
{name: "gnm-n=1e6-m=3e7", g: gnm(1e6, 3e7)},
|
||||||
|
|
||||||
|
{name: "dup-n=1e3-d=0.8-a=0.1", g: duplication(1e3, 0.8, 0.1, math.NaN())},
|
||||||
|
{name: "dup-n=1e3-d=0.5-a=0.2", g: duplication(1e3, 0.5, 0.2, math.NaN())},
|
||||||
|
|
||||||
|
{name: "dup-n=1e4-d=0.8-a=0.1", g: duplication(1e4, 0.8, 0.1, math.NaN())},
|
||||||
|
{name: "dup-n=1e4-d=0.5-a=0.2", g: duplication(1e4, 0.5, 0.2, math.NaN())},
|
||||||
|
|
||||||
|
{name: "dup-n=1e5-d=0.8-a=0.1", g: duplication(1e5, 0.8, 0.1, math.NaN())},
|
||||||
|
{name: "dup-n=1e5-d=0.5-a=0.2", g: duplication(1e5, 0.5, 0.2, math.NaN())},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, test := range tests {
|
||||||
|
rnd := rand.New(rand.NewSource(1))
|
||||||
|
g := test.g()
|
||||||
|
|
||||||
|
// Guess a maximally expensive entry to the graph.
|
||||||
|
sort, err := topo.Sort(g)
|
||||||
|
root := sort[0]
|
||||||
|
if root == nil {
|
||||||
|
// If we did not get a node in the first position
|
||||||
|
// then there must be an unorderable set of nodes
|
||||||
|
// in the first position of the error. Pick one
|
||||||
|
// of the nodes at random.
|
||||||
|
unordered := err.(topo.Unorderable)
|
||||||
|
root = unordered[0][rnd.Intn(len(unordered[0]))]
|
||||||
|
}
|
||||||
|
if root == nil {
|
||||||
|
b.Error("no entry node label for graph")
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(sort) > 1 {
|
||||||
|
// Ensure that the graph has a complete path
|
||||||
|
// through the sorted nodes.
|
||||||
|
|
||||||
|
// unordered will only be accessed if there is
|
||||||
|
// a sort element that is nil, in which case
|
||||||
|
// unordered will contain a set of nodes from
|
||||||
|
// an SCC.
|
||||||
|
unordered, _ := err.(topo.Unorderable)
|
||||||
|
|
||||||
|
var ui int
|
||||||
|
for i, v := range sort[1:] {
|
||||||
|
u := sort[i]
|
||||||
|
if u == nil {
|
||||||
|
u = unordered[ui][rnd.Intn(len(unordered[ui]))]
|
||||||
|
ui++
|
||||||
|
}
|
||||||
|
if v == nil {
|
||||||
|
v = unordered[ui][rnd.Intn(len(unordered[ui]))]
|
||||||
|
}
|
||||||
|
if !g.HasEdgeFromTo(u, v) {
|
||||||
|
g.SetEdge(g.NewEdge(u, v))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
b.Run(test.name, func(b *testing.B) {
|
||||||
|
for i := 0; i < b.N; i++ {
|
||||||
|
d := Dominators(root, g)
|
||||||
|
if got := d.Root(); got.ID() != root.ID() {
|
||||||
|
b.Fatalf("unexpected root node: got:%d want:%d", got.ID(), root.ID())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// gnm returns a directed G(n,m) Erdõs-Rényi graph.
|
||||||
|
func gnm(n, m int) func() *simple.DirectedGraph {
|
||||||
|
return func() *simple.DirectedGraph {
|
||||||
|
dg := simple.NewDirectedGraph()
|
||||||
|
err := gen.Gnm(dg, n, m, rand.New(rand.NewSource(1)))
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
return dg
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// duplication returns an edge-induced directed subgraph of a
|
||||||
|
// duplication graph.
|
||||||
|
func duplication(n int, delta, alpha, sigma float64) func() *simple.DirectedGraph {
|
||||||
|
return func() *simple.DirectedGraph {
|
||||||
|
g := undirected{simple.NewDirectedGraph()}
|
||||||
|
rnd := rand.New(rand.NewSource(1))
|
||||||
|
err := gen.Duplication(g, n, delta, alpha, sigma, rnd)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
for _, e := range g.Edges() {
|
||||||
|
if rnd.Intn(2) == 0 {
|
||||||
|
g.RemoveEdge(e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return g.DirectedGraph
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
type undirected struct {
|
||||||
|
*simple.DirectedGraph
|
||||||
|
}
|
||||||
|
|
||||||
|
func (g undirected) From(n graph.Node) []graph.Node {
|
||||||
|
return append(g.DirectedGraph.From(n), g.DirectedGraph.To(n)...)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (g undirected) HasEdgeBetween(x, y graph.Node) bool {
|
||||||
|
return g.DirectedGraph.HasEdgeFromTo(x, y)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (g undirected) EdgeBetween(x, y graph.Node) graph.Edge {
|
||||||
|
return g.DirectedGraph.Edge(x, y)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (g undirected) SetEdge(e graph.Edge) {
|
||||||
|
g.DirectedGraph.SetEdge(e)
|
||||||
|
g.DirectedGraph.SetEdge(g.DirectedGraph.NewEdge(e.To(), e.From()))
|
||||||
|
}
|
||||||
5
graph/path/testdata/flow/README
vendored
Normal file
5
graph/path/testdata/flow/README
vendored
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
DOT files placed in this directory will be used to run benchmarks on the
|
||||||
|
path.Dominators function. The DOT files included should contain one node
|
||||||
|
that has the label "entry" or "root". This node will be used as the control
|
||||||
|
flow entry point to the graph.
|
||||||
|
|
||||||
5126
graph/path/testdata/flow/nested_if_n1024.dot
vendored
Normal file
5126
graph/path/testdata/flow/nested_if_n1024.dot
vendored
Normal file
File diff suppressed because it is too large
Load Diff
646
graph/path/testdata/flow/nested_if_n128.dot
vendored
Normal file
646
graph/path/testdata/flow/nested_if_n128.dot
vendored
Normal file
@@ -0,0 +1,646 @@
|
|||||||
|
digraph main {
|
||||||
|
// Node definitions.
|
||||||
|
2 [label=entry];
|
||||||
|
9;
|
||||||
|
774;
|
||||||
|
14;
|
||||||
|
773;
|
||||||
|
19;
|
||||||
|
772;
|
||||||
|
24;
|
||||||
|
771;
|
||||||
|
29;
|
||||||
|
770;
|
||||||
|
34;
|
||||||
|
769;
|
||||||
|
39;
|
||||||
|
768;
|
||||||
|
44;
|
||||||
|
767;
|
||||||
|
49;
|
||||||
|
766;
|
||||||
|
54;
|
||||||
|
765;
|
||||||
|
59;
|
||||||
|
764;
|
||||||
|
64;
|
||||||
|
763;
|
||||||
|
69;
|
||||||
|
762;
|
||||||
|
74;
|
||||||
|
761;
|
||||||
|
79;
|
||||||
|
760;
|
||||||
|
84;
|
||||||
|
759;
|
||||||
|
89;
|
||||||
|
758;
|
||||||
|
94;
|
||||||
|
757;
|
||||||
|
99;
|
||||||
|
756;
|
||||||
|
104;
|
||||||
|
755;
|
||||||
|
109;
|
||||||
|
754;
|
||||||
|
114;
|
||||||
|
753;
|
||||||
|
119;
|
||||||
|
752;
|
||||||
|
124;
|
||||||
|
751;
|
||||||
|
129;
|
||||||
|
750;
|
||||||
|
134;
|
||||||
|
749;
|
||||||
|
139;
|
||||||
|
748;
|
||||||
|
144;
|
||||||
|
747;
|
||||||
|
149;
|
||||||
|
746;
|
||||||
|
154;
|
||||||
|
745;
|
||||||
|
159;
|
||||||
|
744;
|
||||||
|
164;
|
||||||
|
743;
|
||||||
|
169;
|
||||||
|
742;
|
||||||
|
174;
|
||||||
|
741;
|
||||||
|
179;
|
||||||
|
740;
|
||||||
|
184;
|
||||||
|
739;
|
||||||
|
189;
|
||||||
|
738;
|
||||||
|
194;
|
||||||
|
737;
|
||||||
|
199;
|
||||||
|
736;
|
||||||
|
204;
|
||||||
|
735;
|
||||||
|
209;
|
||||||
|
734;
|
||||||
|
214;
|
||||||
|
733;
|
||||||
|
219;
|
||||||
|
732;
|
||||||
|
224;
|
||||||
|
731;
|
||||||
|
229;
|
||||||
|
730;
|
||||||
|
234;
|
||||||
|
729;
|
||||||
|
239;
|
||||||
|
728;
|
||||||
|
244;
|
||||||
|
727;
|
||||||
|
249;
|
||||||
|
726;
|
||||||
|
254;
|
||||||
|
725;
|
||||||
|
259;
|
||||||
|
724;
|
||||||
|
264;
|
||||||
|
723;
|
||||||
|
269;
|
||||||
|
722;
|
||||||
|
274;
|
||||||
|
721;
|
||||||
|
279;
|
||||||
|
720;
|
||||||
|
284;
|
||||||
|
719;
|
||||||
|
289;
|
||||||
|
718;
|
||||||
|
294;
|
||||||
|
717;
|
||||||
|
299;
|
||||||
|
716;
|
||||||
|
304;
|
||||||
|
715;
|
||||||
|
309;
|
||||||
|
714;
|
||||||
|
314;
|
||||||
|
713;
|
||||||
|
319;
|
||||||
|
712;
|
||||||
|
324;
|
||||||
|
711;
|
||||||
|
329;
|
||||||
|
710;
|
||||||
|
334;
|
||||||
|
709;
|
||||||
|
339;
|
||||||
|
708;
|
||||||
|
344;
|
||||||
|
707;
|
||||||
|
349;
|
||||||
|
706;
|
||||||
|
354;
|
||||||
|
705;
|
||||||
|
359;
|
||||||
|
704;
|
||||||
|
364;
|
||||||
|
703;
|
||||||
|
369;
|
||||||
|
702;
|
||||||
|
374;
|
||||||
|
701;
|
||||||
|
379;
|
||||||
|
700;
|
||||||
|
384;
|
||||||
|
699;
|
||||||
|
389;
|
||||||
|
698;
|
||||||
|
394;
|
||||||
|
697;
|
||||||
|
399;
|
||||||
|
696;
|
||||||
|
404;
|
||||||
|
695;
|
||||||
|
409;
|
||||||
|
694;
|
||||||
|
414;
|
||||||
|
693;
|
||||||
|
419;
|
||||||
|
692;
|
||||||
|
424;
|
||||||
|
691;
|
||||||
|
429;
|
||||||
|
690;
|
||||||
|
434;
|
||||||
|
689;
|
||||||
|
439;
|
||||||
|
688;
|
||||||
|
444;
|
||||||
|
687;
|
||||||
|
449;
|
||||||
|
686;
|
||||||
|
454;
|
||||||
|
685;
|
||||||
|
459;
|
||||||
|
684;
|
||||||
|
464;
|
||||||
|
683;
|
||||||
|
469;
|
||||||
|
682;
|
||||||
|
474;
|
||||||
|
681;
|
||||||
|
479;
|
||||||
|
680;
|
||||||
|
484;
|
||||||
|
679;
|
||||||
|
489;
|
||||||
|
678;
|
||||||
|
494;
|
||||||
|
677;
|
||||||
|
499;
|
||||||
|
676;
|
||||||
|
504;
|
||||||
|
675;
|
||||||
|
509;
|
||||||
|
674;
|
||||||
|
514;
|
||||||
|
673;
|
||||||
|
519;
|
||||||
|
672;
|
||||||
|
524;
|
||||||
|
671;
|
||||||
|
529;
|
||||||
|
670;
|
||||||
|
534;
|
||||||
|
669;
|
||||||
|
539;
|
||||||
|
668;
|
||||||
|
544;
|
||||||
|
667;
|
||||||
|
549;
|
||||||
|
666;
|
||||||
|
554;
|
||||||
|
665;
|
||||||
|
559;
|
||||||
|
664;
|
||||||
|
564;
|
||||||
|
663;
|
||||||
|
569;
|
||||||
|
662;
|
||||||
|
574;
|
||||||
|
661;
|
||||||
|
579;
|
||||||
|
660;
|
||||||
|
584;
|
||||||
|
659;
|
||||||
|
589;
|
||||||
|
658;
|
||||||
|
594;
|
||||||
|
657;
|
||||||
|
599;
|
||||||
|
656;
|
||||||
|
604;
|
||||||
|
655;
|
||||||
|
609;
|
||||||
|
654;
|
||||||
|
614;
|
||||||
|
653;
|
||||||
|
619;
|
||||||
|
652;
|
||||||
|
624;
|
||||||
|
651;
|
||||||
|
629;
|
||||||
|
650;
|
||||||
|
634;
|
||||||
|
649;
|
||||||
|
639;
|
||||||
|
648;
|
||||||
|
644;
|
||||||
|
647;
|
||||||
|
|
||||||
|
// Edge definitions.
|
||||||
|
2 -> 9 [label=true];
|
||||||
|
2 -> 774 [label=false];
|
||||||
|
9 -> 14 [label=true];
|
||||||
|
9 -> 773 [label=false];
|
||||||
|
14 -> 19 [label=true];
|
||||||
|
14 -> 772 [label=false];
|
||||||
|
773 -> 774;
|
||||||
|
19 -> 24 [label=true];
|
||||||
|
19 -> 771 [label=false];
|
||||||
|
772 -> 773;
|
||||||
|
24 -> 29 [label=true];
|
||||||
|
24 -> 770 [label=false];
|
||||||
|
771 -> 772;
|
||||||
|
29 -> 34 [label=true];
|
||||||
|
29 -> 769 [label=false];
|
||||||
|
770 -> 771;
|
||||||
|
34 -> 39 [label=true];
|
||||||
|
34 -> 768 [label=false];
|
||||||
|
769 -> 770;
|
||||||
|
39 -> 44 [label=true];
|
||||||
|
39 -> 767 [label=false];
|
||||||
|
768 -> 769;
|
||||||
|
44 -> 49 [label=true];
|
||||||
|
44 -> 766 [label=false];
|
||||||
|
767 -> 768;
|
||||||
|
49 -> 54 [label=true];
|
||||||
|
49 -> 765 [label=false];
|
||||||
|
766 -> 767;
|
||||||
|
54 -> 59 [label=true];
|
||||||
|
54 -> 764 [label=false];
|
||||||
|
765 -> 766;
|
||||||
|
59 -> 64 [label=true];
|
||||||
|
59 -> 763 [label=false];
|
||||||
|
764 -> 765;
|
||||||
|
64 -> 69 [label=true];
|
||||||
|
64 -> 762 [label=false];
|
||||||
|
763 -> 764;
|
||||||
|
69 -> 74 [label=true];
|
||||||
|
69 -> 761 [label=false];
|
||||||
|
762 -> 763;
|
||||||
|
74 -> 79 [label=true];
|
||||||
|
74 -> 760 [label=false];
|
||||||
|
761 -> 762;
|
||||||
|
79 -> 84 [label=true];
|
||||||
|
79 -> 759 [label=false];
|
||||||
|
760 -> 761;
|
||||||
|
84 -> 89 [label=true];
|
||||||
|
84 -> 758 [label=false];
|
||||||
|
759 -> 760;
|
||||||
|
89 -> 94 [label=true];
|
||||||
|
89 -> 757 [label=false];
|
||||||
|
758 -> 759;
|
||||||
|
94 -> 99 [label=true];
|
||||||
|
94 -> 756 [label=false];
|
||||||
|
757 -> 758;
|
||||||
|
99 -> 104 [label=true];
|
||||||
|
99 -> 755 [label=false];
|
||||||
|
756 -> 757;
|
||||||
|
104 -> 109 [label=true];
|
||||||
|
104 -> 754 [label=false];
|
||||||
|
755 -> 756;
|
||||||
|
109 -> 114 [label=true];
|
||||||
|
109 -> 753 [label=false];
|
||||||
|
754 -> 755;
|
||||||
|
114 -> 119 [label=true];
|
||||||
|
114 -> 752 [label=false];
|
||||||
|
753 -> 754;
|
||||||
|
119 -> 124 [label=true];
|
||||||
|
119 -> 751 [label=false];
|
||||||
|
752 -> 753;
|
||||||
|
124 -> 129 [label=true];
|
||||||
|
124 -> 750 [label=false];
|
||||||
|
751 -> 752;
|
||||||
|
129 -> 134 [label=true];
|
||||||
|
129 -> 749 [label=false];
|
||||||
|
750 -> 751;
|
||||||
|
134 -> 139 [label=true];
|
||||||
|
134 -> 748 [label=false];
|
||||||
|
749 -> 750;
|
||||||
|
139 -> 144 [label=true];
|
||||||
|
139 -> 747 [label=false];
|
||||||
|
748 -> 749;
|
||||||
|
144 -> 149 [label=true];
|
||||||
|
144 -> 746 [label=false];
|
||||||
|
747 -> 748;
|
||||||
|
149 -> 154 [label=true];
|
||||||
|
149 -> 745 [label=false];
|
||||||
|
746 -> 747;
|
||||||
|
154 -> 159 [label=true];
|
||||||
|
154 -> 744 [label=false];
|
||||||
|
745 -> 746;
|
||||||
|
159 -> 164 [label=true];
|
||||||
|
159 -> 743 [label=false];
|
||||||
|
744 -> 745;
|
||||||
|
164 -> 169 [label=true];
|
||||||
|
164 -> 742 [label=false];
|
||||||
|
743 -> 744;
|
||||||
|
169 -> 174 [label=true];
|
||||||
|
169 -> 741 [label=false];
|
||||||
|
742 -> 743;
|
||||||
|
174 -> 179 [label=true];
|
||||||
|
174 -> 740 [label=false];
|
||||||
|
741 -> 742;
|
||||||
|
179 -> 184 [label=true];
|
||||||
|
179 -> 739 [label=false];
|
||||||
|
740 -> 741;
|
||||||
|
184 -> 189 [label=true];
|
||||||
|
184 -> 738 [label=false];
|
||||||
|
739 -> 740;
|
||||||
|
189 -> 194 [label=true];
|
||||||
|
189 -> 737 [label=false];
|
||||||
|
738 -> 739;
|
||||||
|
194 -> 199 [label=true];
|
||||||
|
194 -> 736 [label=false];
|
||||||
|
737 -> 738;
|
||||||
|
199 -> 204 [label=true];
|
||||||
|
199 -> 735 [label=false];
|
||||||
|
736 -> 737;
|
||||||
|
204 -> 209 [label=true];
|
||||||
|
204 -> 734 [label=false];
|
||||||
|
735 -> 736;
|
||||||
|
209 -> 214 [label=true];
|
||||||
|
209 -> 733 [label=false];
|
||||||
|
734 -> 735;
|
||||||
|
214 -> 219 [label=true];
|
||||||
|
214 -> 732 [label=false];
|
||||||
|
733 -> 734;
|
||||||
|
219 -> 224 [label=true];
|
||||||
|
219 -> 731 [label=false];
|
||||||
|
732 -> 733;
|
||||||
|
224 -> 229 [label=true];
|
||||||
|
224 -> 730 [label=false];
|
||||||
|
731 -> 732;
|
||||||
|
229 -> 234 [label=true];
|
||||||
|
229 -> 729 [label=false];
|
||||||
|
730 -> 731;
|
||||||
|
234 -> 239 [label=true];
|
||||||
|
234 -> 728 [label=false];
|
||||||
|
729 -> 730;
|
||||||
|
239 -> 244 [label=true];
|
||||||
|
239 -> 727 [label=false];
|
||||||
|
728 -> 729;
|
||||||
|
244 -> 249 [label=true];
|
||||||
|
244 -> 726 [label=false];
|
||||||
|
727 -> 728;
|
||||||
|
249 -> 254 [label=true];
|
||||||
|
249 -> 725 [label=false];
|
||||||
|
726 -> 727;
|
||||||
|
254 -> 259 [label=true];
|
||||||
|
254 -> 724 [label=false];
|
||||||
|
725 -> 726;
|
||||||
|
259 -> 264 [label=true];
|
||||||
|
259 -> 723 [label=false];
|
||||||
|
724 -> 725;
|
||||||
|
264 -> 269 [label=true];
|
||||||
|
264 -> 722 [label=false];
|
||||||
|
723 -> 724;
|
||||||
|
269 -> 274 [label=true];
|
||||||
|
269 -> 721 [label=false];
|
||||||
|
722 -> 723;
|
||||||
|
274 -> 279 [label=true];
|
||||||
|
274 -> 720 [label=false];
|
||||||
|
721 -> 722;
|
||||||
|
279 -> 284 [label=true];
|
||||||
|
279 -> 719 [label=false];
|
||||||
|
720 -> 721;
|
||||||
|
284 -> 289 [label=true];
|
||||||
|
284 -> 718 [label=false];
|
||||||
|
719 -> 720;
|
||||||
|
289 -> 294 [label=true];
|
||||||
|
289 -> 717 [label=false];
|
||||||
|
718 -> 719;
|
||||||
|
294 -> 299 [label=true];
|
||||||
|
294 -> 716 [label=false];
|
||||||
|
717 -> 718;
|
||||||
|
299 -> 304 [label=true];
|
||||||
|
299 -> 715 [label=false];
|
||||||
|
716 -> 717;
|
||||||
|
304 -> 309 [label=true];
|
||||||
|
304 -> 714 [label=false];
|
||||||
|
715 -> 716;
|
||||||
|
309 -> 314 [label=true];
|
||||||
|
309 -> 713 [label=false];
|
||||||
|
714 -> 715;
|
||||||
|
314 -> 319 [label=true];
|
||||||
|
314 -> 712 [label=false];
|
||||||
|
713 -> 714;
|
||||||
|
319 -> 324 [label=true];
|
||||||
|
319 -> 711 [label=false];
|
||||||
|
712 -> 713;
|
||||||
|
324 -> 329 [label=true];
|
||||||
|
324 -> 710 [label=false];
|
||||||
|
711 -> 712;
|
||||||
|
329 -> 334 [label=true];
|
||||||
|
329 -> 709 [label=false];
|
||||||
|
710 -> 711;
|
||||||
|
334 -> 339 [label=true];
|
||||||
|
334 -> 708 [label=false];
|
||||||
|
709 -> 710;
|
||||||
|
339 -> 344 [label=true];
|
||||||
|
339 -> 707 [label=false];
|
||||||
|
708 -> 709;
|
||||||
|
344 -> 349 [label=true];
|
||||||
|
344 -> 706 [label=false];
|
||||||
|
707 -> 708;
|
||||||
|
349 -> 354 [label=true];
|
||||||
|
349 -> 705 [label=false];
|
||||||
|
706 -> 707;
|
||||||
|
354 -> 359 [label=true];
|
||||||
|
354 -> 704 [label=false];
|
||||||
|
705 -> 706;
|
||||||
|
359 -> 364 [label=true];
|
||||||
|
359 -> 703 [label=false];
|
||||||
|
704 -> 705;
|
||||||
|
364 -> 369 [label=true];
|
||||||
|
364 -> 702 [label=false];
|
||||||
|
703 -> 704;
|
||||||
|
369 -> 374 [label=true];
|
||||||
|
369 -> 701 [label=false];
|
||||||
|
702 -> 703;
|
||||||
|
374 -> 379 [label=true];
|
||||||
|
374 -> 700 [label=false];
|
||||||
|
701 -> 702;
|
||||||
|
379 -> 384 [label=true];
|
||||||
|
379 -> 699 [label=false];
|
||||||
|
700 -> 701;
|
||||||
|
384 -> 389 [label=true];
|
||||||
|
384 -> 698 [label=false];
|
||||||
|
699 -> 700;
|
||||||
|
389 -> 394 [label=true];
|
||||||
|
389 -> 697 [label=false];
|
||||||
|
698 -> 699;
|
||||||
|
394 -> 399 [label=true];
|
||||||
|
394 -> 696 [label=false];
|
||||||
|
697 -> 698;
|
||||||
|
399 -> 404 [label=true];
|
||||||
|
399 -> 695 [label=false];
|
||||||
|
696 -> 697;
|
||||||
|
404 -> 409 [label=true];
|
||||||
|
404 -> 694 [label=false];
|
||||||
|
695 -> 696;
|
||||||
|
409 -> 414 [label=true];
|
||||||
|
409 -> 693 [label=false];
|
||||||
|
694 -> 695;
|
||||||
|
414 -> 419 [label=true];
|
||||||
|
414 -> 692 [label=false];
|
||||||
|
693 -> 694;
|
||||||
|
419 -> 424 [label=true];
|
||||||
|
419 -> 691 [label=false];
|
||||||
|
692 -> 693;
|
||||||
|
424 -> 429 [label=true];
|
||||||
|
424 -> 690 [label=false];
|
||||||
|
691 -> 692;
|
||||||
|
429 -> 434 [label=true];
|
||||||
|
429 -> 689 [label=false];
|
||||||
|
690 -> 691;
|
||||||
|
434 -> 439 [label=true];
|
||||||
|
434 -> 688 [label=false];
|
||||||
|
689 -> 690;
|
||||||
|
439 -> 444 [label=true];
|
||||||
|
439 -> 687 [label=false];
|
||||||
|
688 -> 689;
|
||||||
|
444 -> 449 [label=true];
|
||||||
|
444 -> 686 [label=false];
|
||||||
|
687 -> 688;
|
||||||
|
449 -> 454 [label=true];
|
||||||
|
449 -> 685 [label=false];
|
||||||
|
686 -> 687;
|
||||||
|
454 -> 459 [label=true];
|
||||||
|
454 -> 684 [label=false];
|
||||||
|
685 -> 686;
|
||||||
|
459 -> 464 [label=true];
|
||||||
|
459 -> 683 [label=false];
|
||||||
|
684 -> 685;
|
||||||
|
464 -> 469 [label=true];
|
||||||
|
464 -> 682 [label=false];
|
||||||
|
683 -> 684;
|
||||||
|
469 -> 474 [label=true];
|
||||||
|
469 -> 681 [label=false];
|
||||||
|
682 -> 683;
|
||||||
|
474 -> 479 [label=true];
|
||||||
|
474 -> 680 [label=false];
|
||||||
|
681 -> 682;
|
||||||
|
479 -> 484 [label=true];
|
||||||
|
479 -> 679 [label=false];
|
||||||
|
680 -> 681;
|
||||||
|
484 -> 489 [label=true];
|
||||||
|
484 -> 678 [label=false];
|
||||||
|
679 -> 680;
|
||||||
|
489 -> 494 [label=true];
|
||||||
|
489 -> 677 [label=false];
|
||||||
|
678 -> 679;
|
||||||
|
494 -> 499 [label=true];
|
||||||
|
494 -> 676 [label=false];
|
||||||
|
677 -> 678;
|
||||||
|
499 -> 504 [label=true];
|
||||||
|
499 -> 675 [label=false];
|
||||||
|
676 -> 677;
|
||||||
|
504 -> 509 [label=true];
|
||||||
|
504 -> 674 [label=false];
|
||||||
|
675 -> 676;
|
||||||
|
509 -> 514 [label=true];
|
||||||
|
509 -> 673 [label=false];
|
||||||
|
674 -> 675;
|
||||||
|
514 -> 519 [label=true];
|
||||||
|
514 -> 672 [label=false];
|
||||||
|
673 -> 674;
|
||||||
|
519 -> 524 [label=true];
|
||||||
|
519 -> 671 [label=false];
|
||||||
|
672 -> 673;
|
||||||
|
524 -> 529 [label=true];
|
||||||
|
524 -> 670 [label=false];
|
||||||
|
671 -> 672;
|
||||||
|
529 -> 534 [label=true];
|
||||||
|
529 -> 669 [label=false];
|
||||||
|
670 -> 671;
|
||||||
|
534 -> 539 [label=true];
|
||||||
|
534 -> 668 [label=false];
|
||||||
|
669 -> 670;
|
||||||
|
539 -> 544 [label=true];
|
||||||
|
539 -> 667 [label=false];
|
||||||
|
668 -> 669;
|
||||||
|
544 -> 549 [label=true];
|
||||||
|
544 -> 666 [label=false];
|
||||||
|
667 -> 668;
|
||||||
|
549 -> 554 [label=true];
|
||||||
|
549 -> 665 [label=false];
|
||||||
|
666 -> 667;
|
||||||
|
554 -> 559 [label=true];
|
||||||
|
554 -> 664 [label=false];
|
||||||
|
665 -> 666;
|
||||||
|
559 -> 564 [label=true];
|
||||||
|
559 -> 663 [label=false];
|
||||||
|
664 -> 665;
|
||||||
|
564 -> 569 [label=true];
|
||||||
|
564 -> 662 [label=false];
|
||||||
|
663 -> 664;
|
||||||
|
569 -> 574 [label=true];
|
||||||
|
569 -> 661 [label=false];
|
||||||
|
662 -> 663;
|
||||||
|
574 -> 579 [label=true];
|
||||||
|
574 -> 660 [label=false];
|
||||||
|
661 -> 662;
|
||||||
|
579 -> 584 [label=true];
|
||||||
|
579 -> 659 [label=false];
|
||||||
|
660 -> 661;
|
||||||
|
584 -> 589 [label=true];
|
||||||
|
584 -> 658 [label=false];
|
||||||
|
659 -> 660;
|
||||||
|
589 -> 594 [label=true];
|
||||||
|
589 -> 657 [label=false];
|
||||||
|
658 -> 659;
|
||||||
|
594 -> 599 [label=true];
|
||||||
|
594 -> 656 [label=false];
|
||||||
|
657 -> 658;
|
||||||
|
599 -> 604 [label=true];
|
||||||
|
599 -> 655 [label=false];
|
||||||
|
656 -> 657;
|
||||||
|
604 -> 609 [label=true];
|
||||||
|
604 -> 654 [label=false];
|
||||||
|
655 -> 656;
|
||||||
|
609 -> 614 [label=true];
|
||||||
|
609 -> 653 [label=false];
|
||||||
|
654 -> 655;
|
||||||
|
614 -> 619 [label=true];
|
||||||
|
614 -> 652 [label=false];
|
||||||
|
653 -> 654;
|
||||||
|
619 -> 624 [label=true];
|
||||||
|
619 -> 651 [label=false];
|
||||||
|
652 -> 653;
|
||||||
|
624 -> 629 [label=true];
|
||||||
|
624 -> 650 [label=false];
|
||||||
|
651 -> 652;
|
||||||
|
629 -> 634 [label=true];
|
||||||
|
629 -> 649 [label=false];
|
||||||
|
650 -> 651;
|
||||||
|
634 -> 639 [label=true];
|
||||||
|
634 -> 648 [label=false];
|
||||||
|
649 -> 650;
|
||||||
|
639 -> 644 [label=true];
|
||||||
|
639 -> 647 [label=false];
|
||||||
|
648 -> 649;
|
||||||
|
644 -> 647;
|
||||||
|
647 -> 648;
|
||||||
|
}
|
||||||
86
graph/path/testdata/flow/nested_if_n16.dot
vendored
Normal file
86
graph/path/testdata/flow/nested_if_n16.dot
vendored
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
digraph main {
|
||||||
|
// Node definitions.
|
||||||
|
2 [label=entry];
|
||||||
|
9;
|
||||||
|
102;
|
||||||
|
14;
|
||||||
|
101;
|
||||||
|
19;
|
||||||
|
100;
|
||||||
|
24;
|
||||||
|
99;
|
||||||
|
29;
|
||||||
|
98;
|
||||||
|
34;
|
||||||
|
97;
|
||||||
|
39;
|
||||||
|
96;
|
||||||
|
44;
|
||||||
|
95;
|
||||||
|
49;
|
||||||
|
94;
|
||||||
|
54;
|
||||||
|
93;
|
||||||
|
59;
|
||||||
|
92;
|
||||||
|
64;
|
||||||
|
91;
|
||||||
|
69;
|
||||||
|
90;
|
||||||
|
74;
|
||||||
|
89;
|
||||||
|
79;
|
||||||
|
88;
|
||||||
|
84;
|
||||||
|
87;
|
||||||
|
|
||||||
|
// Edge definitions.
|
||||||
|
2 -> 9 [label=true];
|
||||||
|
2 -> 102 [label=false];
|
||||||
|
9 -> 14 [label=true];
|
||||||
|
9 -> 101 [label=false];
|
||||||
|
14 -> 19 [label=true];
|
||||||
|
14 -> 100 [label=false];
|
||||||
|
101 -> 102;
|
||||||
|
19 -> 24 [label=true];
|
||||||
|
19 -> 99 [label=false];
|
||||||
|
100 -> 101;
|
||||||
|
24 -> 29 [label=true];
|
||||||
|
24 -> 98 [label=false];
|
||||||
|
99 -> 100;
|
||||||
|
29 -> 34 [label=true];
|
||||||
|
29 -> 97 [label=false];
|
||||||
|
98 -> 99;
|
||||||
|
34 -> 39 [label=true];
|
||||||
|
34 -> 96 [label=false];
|
||||||
|
97 -> 98;
|
||||||
|
39 -> 44 [label=true];
|
||||||
|
39 -> 95 [label=false];
|
||||||
|
96 -> 97;
|
||||||
|
44 -> 49 [label=true];
|
||||||
|
44 -> 94 [label=false];
|
||||||
|
95 -> 96;
|
||||||
|
49 -> 54 [label=true];
|
||||||
|
49 -> 93 [label=false];
|
||||||
|
94 -> 95;
|
||||||
|
54 -> 59 [label=true];
|
||||||
|
54 -> 92 [label=false];
|
||||||
|
93 -> 94;
|
||||||
|
59 -> 64 [label=true];
|
||||||
|
59 -> 91 [label=false];
|
||||||
|
92 -> 93;
|
||||||
|
64 -> 69 [label=true];
|
||||||
|
64 -> 90 [label=false];
|
||||||
|
91 -> 92;
|
||||||
|
69 -> 74 [label=true];
|
||||||
|
69 -> 89 [label=false];
|
||||||
|
90 -> 91;
|
||||||
|
74 -> 79 [label=true];
|
||||||
|
74 -> 88 [label=false];
|
||||||
|
89 -> 90;
|
||||||
|
79 -> 84 [label=true];
|
||||||
|
79 -> 87 [label=false];
|
||||||
|
88 -> 89;
|
||||||
|
84 -> 87;
|
||||||
|
87 -> 88;
|
||||||
|
}
|
||||||
10246
graph/path/testdata/flow/nested_if_n2048.dot
vendored
Normal file
10246
graph/path/testdata/flow/nested_if_n2048.dot
vendored
Normal file
File diff suppressed because it is too large
Load Diff
1286
graph/path/testdata/flow/nested_if_n256.dot
vendored
Normal file
1286
graph/path/testdata/flow/nested_if_n256.dot
vendored
Normal file
File diff suppressed because it is too large
Load Diff
166
graph/path/testdata/flow/nested_if_n32.dot
vendored
Normal file
166
graph/path/testdata/flow/nested_if_n32.dot
vendored
Normal file
@@ -0,0 +1,166 @@
|
|||||||
|
digraph main {
|
||||||
|
// Node definitions.
|
||||||
|
2 [label=entry];
|
||||||
|
9;
|
||||||
|
198;
|
||||||
|
14;
|
||||||
|
197;
|
||||||
|
19;
|
||||||
|
196;
|
||||||
|
24;
|
||||||
|
195;
|
||||||
|
29;
|
||||||
|
194;
|
||||||
|
34;
|
||||||
|
193;
|
||||||
|
39;
|
||||||
|
192;
|
||||||
|
44;
|
||||||
|
191;
|
||||||
|
49;
|
||||||
|
190;
|
||||||
|
54;
|
||||||
|
189;
|
||||||
|
59;
|
||||||
|
188;
|
||||||
|
64;
|
||||||
|
187;
|
||||||
|
69;
|
||||||
|
186;
|
||||||
|
74;
|
||||||
|
185;
|
||||||
|
79;
|
||||||
|
184;
|
||||||
|
84;
|
||||||
|
183;
|
||||||
|
89;
|
||||||
|
182;
|
||||||
|
94;
|
||||||
|
181;
|
||||||
|
99;
|
||||||
|
180;
|
||||||
|
104;
|
||||||
|
179;
|
||||||
|
109;
|
||||||
|
178;
|
||||||
|
114;
|
||||||
|
177;
|
||||||
|
119;
|
||||||
|
176;
|
||||||
|
124;
|
||||||
|
175;
|
||||||
|
129;
|
||||||
|
174;
|
||||||
|
134;
|
||||||
|
173;
|
||||||
|
139;
|
||||||
|
172;
|
||||||
|
144;
|
||||||
|
171;
|
||||||
|
149;
|
||||||
|
170;
|
||||||
|
154;
|
||||||
|
169;
|
||||||
|
159;
|
||||||
|
168;
|
||||||
|
164;
|
||||||
|
167;
|
||||||
|
|
||||||
|
// Edge definitions.
|
||||||
|
2 -> 9 [label=true];
|
||||||
|
2 -> 198 [label=false];
|
||||||
|
9 -> 14 [label=true];
|
||||||
|
9 -> 197 [label=false];
|
||||||
|
14 -> 19 [label=true];
|
||||||
|
14 -> 196 [label=false];
|
||||||
|
197 -> 198;
|
||||||
|
19 -> 24 [label=true];
|
||||||
|
19 -> 195 [label=false];
|
||||||
|
196 -> 197;
|
||||||
|
24 -> 29 [label=true];
|
||||||
|
24 -> 194 [label=false];
|
||||||
|
195 -> 196;
|
||||||
|
29 -> 34 [label=true];
|
||||||
|
29 -> 193 [label=false];
|
||||||
|
194 -> 195;
|
||||||
|
34 -> 39 [label=true];
|
||||||
|
34 -> 192 [label=false];
|
||||||
|
193 -> 194;
|
||||||
|
39 -> 44 [label=true];
|
||||||
|
39 -> 191 [label=false];
|
||||||
|
192 -> 193;
|
||||||
|
44 -> 49 [label=true];
|
||||||
|
44 -> 190 [label=false];
|
||||||
|
191 -> 192;
|
||||||
|
49 -> 54 [label=true];
|
||||||
|
49 -> 189 [label=false];
|
||||||
|
190 -> 191;
|
||||||
|
54 -> 59 [label=true];
|
||||||
|
54 -> 188 [label=false];
|
||||||
|
189 -> 190;
|
||||||
|
59 -> 64 [label=true];
|
||||||
|
59 -> 187 [label=false];
|
||||||
|
188 -> 189;
|
||||||
|
64 -> 69 [label=true];
|
||||||
|
64 -> 186 [label=false];
|
||||||
|
187 -> 188;
|
||||||
|
69 -> 74 [label=true];
|
||||||
|
69 -> 185 [label=false];
|
||||||
|
186 -> 187;
|
||||||
|
74 -> 79 [label=true];
|
||||||
|
74 -> 184 [label=false];
|
||||||
|
185 -> 186;
|
||||||
|
79 -> 84 [label=true];
|
||||||
|
79 -> 183 [label=false];
|
||||||
|
184 -> 185;
|
||||||
|
84 -> 89 [label=true];
|
||||||
|
84 -> 182 [label=false];
|
||||||
|
183 -> 184;
|
||||||
|
89 -> 94 [label=true];
|
||||||
|
89 -> 181 [label=false];
|
||||||
|
182 -> 183;
|
||||||
|
94 -> 99 [label=true];
|
||||||
|
94 -> 180 [label=false];
|
||||||
|
181 -> 182;
|
||||||
|
99 -> 104 [label=true];
|
||||||
|
99 -> 179 [label=false];
|
||||||
|
180 -> 181;
|
||||||
|
104 -> 109 [label=true];
|
||||||
|
104 -> 178 [label=false];
|
||||||
|
179 -> 180;
|
||||||
|
109 -> 114 [label=true];
|
||||||
|
109 -> 177 [label=false];
|
||||||
|
178 -> 179;
|
||||||
|
114 -> 119 [label=true];
|
||||||
|
114 -> 176 [label=false];
|
||||||
|
177 -> 178;
|
||||||
|
119 -> 124 [label=true];
|
||||||
|
119 -> 175 [label=false];
|
||||||
|
176 -> 177;
|
||||||
|
124 -> 129 [label=true];
|
||||||
|
124 -> 174 [label=false];
|
||||||
|
175 -> 176;
|
||||||
|
129 -> 134 [label=true];
|
||||||
|
129 -> 173 [label=false];
|
||||||
|
174 -> 175;
|
||||||
|
134 -> 139 [label=true];
|
||||||
|
134 -> 172 [label=false];
|
||||||
|
173 -> 174;
|
||||||
|
139 -> 144 [label=true];
|
||||||
|
139 -> 171 [label=false];
|
||||||
|
172 -> 173;
|
||||||
|
144 -> 149 [label=true];
|
||||||
|
144 -> 170 [label=false];
|
||||||
|
171 -> 172;
|
||||||
|
149 -> 154 [label=true];
|
||||||
|
149 -> 169 [label=false];
|
||||||
|
170 -> 171;
|
||||||
|
154 -> 159 [label=true];
|
||||||
|
154 -> 168 [label=false];
|
||||||
|
169 -> 170;
|
||||||
|
159 -> 164 [label=true];
|
||||||
|
159 -> 167 [label=false];
|
||||||
|
168 -> 169;
|
||||||
|
164 -> 167;
|
||||||
|
167 -> 168;
|
||||||
|
}
|
||||||
2566
graph/path/testdata/flow/nested_if_n512.dot
vendored
Normal file
2566
graph/path/testdata/flow/nested_if_n512.dot
vendored
Normal file
File diff suppressed because it is too large
Load Diff
326
graph/path/testdata/flow/nested_if_n64.dot
vendored
Normal file
326
graph/path/testdata/flow/nested_if_n64.dot
vendored
Normal file
@@ -0,0 +1,326 @@
|
|||||||
|
digraph main {
|
||||||
|
// Node definitions.
|
||||||
|
2 [label=entry];
|
||||||
|
9;
|
||||||
|
390;
|
||||||
|
14;
|
||||||
|
389;
|
||||||
|
19;
|
||||||
|
388;
|
||||||
|
24;
|
||||||
|
387;
|
||||||
|
29;
|
||||||
|
386;
|
||||||
|
34;
|
||||||
|
385;
|
||||||
|
39;
|
||||||
|
384;
|
||||||
|
44;
|
||||||
|
383;
|
||||||
|
49;
|
||||||
|
382;
|
||||||
|
54;
|
||||||
|
381;
|
||||||
|
59;
|
||||||
|
380;
|
||||||
|
64;
|
||||||
|
379;
|
||||||
|
69;
|
||||||
|
378;
|
||||||
|
74;
|
||||||
|
377;
|
||||||
|
79;
|
||||||
|
376;
|
||||||
|
84;
|
||||||
|
375;
|
||||||
|
89;
|
||||||
|
374;
|
||||||
|
94;
|
||||||
|
373;
|
||||||
|
99;
|
||||||
|
372;
|
||||||
|
104;
|
||||||
|
371;
|
||||||
|
109;
|
||||||
|
370;
|
||||||
|
114;
|
||||||
|
369;
|
||||||
|
119;
|
||||||
|
368;
|
||||||
|
124;
|
||||||
|
367;
|
||||||
|
129;
|
||||||
|
366;
|
||||||
|
134;
|
||||||
|
365;
|
||||||
|
139;
|
||||||
|
364;
|
||||||
|
144;
|
||||||
|
363;
|
||||||
|
149;
|
||||||
|
362;
|
||||||
|
154;
|
||||||
|
361;
|
||||||
|
159;
|
||||||
|
360;
|
||||||
|
164;
|
||||||
|
359;
|
||||||
|
169;
|
||||||
|
358;
|
||||||
|
174;
|
||||||
|
357;
|
||||||
|
179;
|
||||||
|
356;
|
||||||
|
184;
|
||||||
|
355;
|
||||||
|
189;
|
||||||
|
354;
|
||||||
|
194;
|
||||||
|
353;
|
||||||
|
199;
|
||||||
|
352;
|
||||||
|
204;
|
||||||
|
351;
|
||||||
|
209;
|
||||||
|
350;
|
||||||
|
214;
|
||||||
|
349;
|
||||||
|
219;
|
||||||
|
348;
|
||||||
|
224;
|
||||||
|
347;
|
||||||
|
229;
|
||||||
|
346;
|
||||||
|
234;
|
||||||
|
345;
|
||||||
|
239;
|
||||||
|
344;
|
||||||
|
244;
|
||||||
|
343;
|
||||||
|
249;
|
||||||
|
342;
|
||||||
|
254;
|
||||||
|
341;
|
||||||
|
259;
|
||||||
|
340;
|
||||||
|
264;
|
||||||
|
339;
|
||||||
|
269;
|
||||||
|
338;
|
||||||
|
274;
|
||||||
|
337;
|
||||||
|
279;
|
||||||
|
336;
|
||||||
|
284;
|
||||||
|
335;
|
||||||
|
289;
|
||||||
|
334;
|
||||||
|
294;
|
||||||
|
333;
|
||||||
|
299;
|
||||||
|
332;
|
||||||
|
304;
|
||||||
|
331;
|
||||||
|
309;
|
||||||
|
330;
|
||||||
|
314;
|
||||||
|
329;
|
||||||
|
319;
|
||||||
|
328;
|
||||||
|
324;
|
||||||
|
327;
|
||||||
|
|
||||||
|
// Edge definitions.
|
||||||
|
2 -> 9 [label=true];
|
||||||
|
2 -> 390 [label=false];
|
||||||
|
9 -> 14 [label=true];
|
||||||
|
9 -> 389 [label=false];
|
||||||
|
14 -> 19 [label=true];
|
||||||
|
14 -> 388 [label=false];
|
||||||
|
389 -> 390;
|
||||||
|
19 -> 24 [label=true];
|
||||||
|
19 -> 387 [label=false];
|
||||||
|
388 -> 389;
|
||||||
|
24 -> 29 [label=true];
|
||||||
|
24 -> 386 [label=false];
|
||||||
|
387 -> 388;
|
||||||
|
29 -> 34 [label=true];
|
||||||
|
29 -> 385 [label=false];
|
||||||
|
386 -> 387;
|
||||||
|
34 -> 39 [label=true];
|
||||||
|
34 -> 384 [label=false];
|
||||||
|
385 -> 386;
|
||||||
|
39 -> 44 [label=true];
|
||||||
|
39 -> 383 [label=false];
|
||||||
|
384 -> 385;
|
||||||
|
44 -> 49 [label=true];
|
||||||
|
44 -> 382 [label=false];
|
||||||
|
383 -> 384;
|
||||||
|
49 -> 54 [label=true];
|
||||||
|
49 -> 381 [label=false];
|
||||||
|
382 -> 383;
|
||||||
|
54 -> 59 [label=true];
|
||||||
|
54 -> 380 [label=false];
|
||||||
|
381 -> 382;
|
||||||
|
59 -> 64 [label=true];
|
||||||
|
59 -> 379 [label=false];
|
||||||
|
380 -> 381;
|
||||||
|
64 -> 69 [label=true];
|
||||||
|
64 -> 378 [label=false];
|
||||||
|
379 -> 380;
|
||||||
|
69 -> 74 [label=true];
|
||||||
|
69 -> 377 [label=false];
|
||||||
|
378 -> 379;
|
||||||
|
74 -> 79 [label=true];
|
||||||
|
74 -> 376 [label=false];
|
||||||
|
377 -> 378;
|
||||||
|
79 -> 84 [label=true];
|
||||||
|
79 -> 375 [label=false];
|
||||||
|
376 -> 377;
|
||||||
|
84 -> 89 [label=true];
|
||||||
|
84 -> 374 [label=false];
|
||||||
|
375 -> 376;
|
||||||
|
89 -> 94 [label=true];
|
||||||
|
89 -> 373 [label=false];
|
||||||
|
374 -> 375;
|
||||||
|
94 -> 99 [label=true];
|
||||||
|
94 -> 372 [label=false];
|
||||||
|
373 -> 374;
|
||||||
|
99 -> 104 [label=true];
|
||||||
|
99 -> 371 [label=false];
|
||||||
|
372 -> 373;
|
||||||
|
104 -> 109 [label=true];
|
||||||
|
104 -> 370 [label=false];
|
||||||
|
371 -> 372;
|
||||||
|
109 -> 114 [label=true];
|
||||||
|
109 -> 369 [label=false];
|
||||||
|
370 -> 371;
|
||||||
|
114 -> 119 [label=true];
|
||||||
|
114 -> 368 [label=false];
|
||||||
|
369 -> 370;
|
||||||
|
119 -> 124 [label=true];
|
||||||
|
119 -> 367 [label=false];
|
||||||
|
368 -> 369;
|
||||||
|
124 -> 129 [label=true];
|
||||||
|
124 -> 366 [label=false];
|
||||||
|
367 -> 368;
|
||||||
|
129 -> 134 [label=true];
|
||||||
|
129 -> 365 [label=false];
|
||||||
|
366 -> 367;
|
||||||
|
134 -> 139 [label=true];
|
||||||
|
134 -> 364 [label=false];
|
||||||
|
365 -> 366;
|
||||||
|
139 -> 144 [label=true];
|
||||||
|
139 -> 363 [label=false];
|
||||||
|
364 -> 365;
|
||||||
|
144 -> 149 [label=true];
|
||||||
|
144 -> 362 [label=false];
|
||||||
|
363 -> 364;
|
||||||
|
149 -> 154 [label=true];
|
||||||
|
149 -> 361 [label=false];
|
||||||
|
362 -> 363;
|
||||||
|
154 -> 159 [label=true];
|
||||||
|
154 -> 360 [label=false];
|
||||||
|
361 -> 362;
|
||||||
|
159 -> 164 [label=true];
|
||||||
|
159 -> 359 [label=false];
|
||||||
|
360 -> 361;
|
||||||
|
164 -> 169 [label=true];
|
||||||
|
164 -> 358 [label=false];
|
||||||
|
359 -> 360;
|
||||||
|
169 -> 174 [label=true];
|
||||||
|
169 -> 357 [label=false];
|
||||||
|
358 -> 359;
|
||||||
|
174 -> 179 [label=true];
|
||||||
|
174 -> 356 [label=false];
|
||||||
|
357 -> 358;
|
||||||
|
179 -> 184 [label=true];
|
||||||
|
179 -> 355 [label=false];
|
||||||
|
356 -> 357;
|
||||||
|
184 -> 189 [label=true];
|
||||||
|
184 -> 354 [label=false];
|
||||||
|
355 -> 356;
|
||||||
|
189 -> 194 [label=true];
|
||||||
|
189 -> 353 [label=false];
|
||||||
|
354 -> 355;
|
||||||
|
194 -> 199 [label=true];
|
||||||
|
194 -> 352 [label=false];
|
||||||
|
353 -> 354;
|
||||||
|
199 -> 204 [label=true];
|
||||||
|
199 -> 351 [label=false];
|
||||||
|
352 -> 353;
|
||||||
|
204 -> 209 [label=true];
|
||||||
|
204 -> 350 [label=false];
|
||||||
|
351 -> 352;
|
||||||
|
209 -> 214 [label=true];
|
||||||
|
209 -> 349 [label=false];
|
||||||
|
350 -> 351;
|
||||||
|
214 -> 219 [label=true];
|
||||||
|
214 -> 348 [label=false];
|
||||||
|
349 -> 350;
|
||||||
|
219 -> 224 [label=true];
|
||||||
|
219 -> 347 [label=false];
|
||||||
|
348 -> 349;
|
||||||
|
224 -> 229 [label=true];
|
||||||
|
224 -> 346 [label=false];
|
||||||
|
347 -> 348;
|
||||||
|
229 -> 234 [label=true];
|
||||||
|
229 -> 345 [label=false];
|
||||||
|
346 -> 347;
|
||||||
|
234 -> 239 [label=true];
|
||||||
|
234 -> 344 [label=false];
|
||||||
|
345 -> 346;
|
||||||
|
239 -> 244 [label=true];
|
||||||
|
239 -> 343 [label=false];
|
||||||
|
344 -> 345;
|
||||||
|
244 -> 249 [label=true];
|
||||||
|
244 -> 342 [label=false];
|
||||||
|
343 -> 344;
|
||||||
|
249 -> 254 [label=true];
|
||||||
|
249 -> 341 [label=false];
|
||||||
|
342 -> 343;
|
||||||
|
254 -> 259 [label=true];
|
||||||
|
254 -> 340 [label=false];
|
||||||
|
341 -> 342;
|
||||||
|
259 -> 264 [label=true];
|
||||||
|
259 -> 339 [label=false];
|
||||||
|
340 -> 341;
|
||||||
|
264 -> 269 [label=true];
|
||||||
|
264 -> 338 [label=false];
|
||||||
|
339 -> 340;
|
||||||
|
269 -> 274 [label=true];
|
||||||
|
269 -> 337 [label=false];
|
||||||
|
338 -> 339;
|
||||||
|
274 -> 279 [label=true];
|
||||||
|
274 -> 336 [label=false];
|
||||||
|
337 -> 338;
|
||||||
|
279 -> 284 [label=true];
|
||||||
|
279 -> 335 [label=false];
|
||||||
|
336 -> 337;
|
||||||
|
284 -> 289 [label=true];
|
||||||
|
284 -> 334 [label=false];
|
||||||
|
335 -> 336;
|
||||||
|
289 -> 294 [label=true];
|
||||||
|
289 -> 333 [label=false];
|
||||||
|
334 -> 335;
|
||||||
|
294 -> 299 [label=true];
|
||||||
|
294 -> 332 [label=false];
|
||||||
|
333 -> 334;
|
||||||
|
299 -> 304 [label=true];
|
||||||
|
299 -> 331 [label=false];
|
||||||
|
332 -> 333;
|
||||||
|
304 -> 309 [label=true];
|
||||||
|
304 -> 330 [label=false];
|
||||||
|
331 -> 332;
|
||||||
|
309 -> 314 [label=true];
|
||||||
|
309 -> 329 [label=false];
|
||||||
|
330 -> 331;
|
||||||
|
314 -> 319 [label=true];
|
||||||
|
314 -> 328 [label=false];
|
||||||
|
329 -> 330;
|
||||||
|
319 -> 324 [label=true];
|
||||||
|
319 -> 327 [label=false];
|
||||||
|
328 -> 329;
|
||||||
|
324 -> 327;
|
||||||
|
327 -> 328;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user