@@ -13,116 +13,148 @@ pub fn read_graph_from_file(file: &str) -> Graph {
13
13
serde_json:: from_str ( & contents) . unwrap ( )
14
14
}
15
15
16
+ pub fn get_small_graph ( ) -> Graph {
17
+ let style: NodeStyle = Default :: default ( ) ;
18
+
19
+ Graph :: new (
20
+ "small" . into ( ) ,
21
+ vec ! [
22
+ Node :: from_list(
23
+ vec![ "_1 = const 1_i32" . into( ) , "_2 = const 2_i32" . into( ) ] ,
24
+ "bb0" . into( ) ,
25
+ "bb0" . into( ) ,
26
+ style. clone( ) ,
27
+ ) ,
28
+ Node :: from_list(
29
+ vec![ "_2 = const 2_i32" . into( ) , "_3 = const 3_i32" . into( ) ] ,
30
+ "bb1" . into( ) ,
31
+ "bb1" . into( ) ,
32
+ style. clone( ) ,
33
+ ) ,
34
+ Node :: from_list(
35
+ vec![ "return" . into( ) ] ,
36
+ "bb2" . into( ) ,
37
+ "bb2" . into( ) ,
38
+ style. clone( ) ,
39
+ ) ,
40
+ ] ,
41
+ vec ! [
42
+ Edge :: new( "bb0" . into( ) , "bb1" . into( ) , "return" . into( ) ) ,
43
+ Edge :: new( "bb1" . into( ) , "bb2" . into( ) , "return" . into( ) ) ,
44
+ ] ,
45
+ )
46
+ }
47
+
16
48
pub fn get_graph_1 ( ) -> Graph {
17
49
let style: NodeStyle = Default :: default ( ) ;
18
50
19
51
Graph :: new (
20
52
"Mir_0_3" . into ( ) ,
21
- vec ! [ Node :: new (
53
+ vec ! [ Node :: from_list (
22
54
vec![ "StorageLive(_1)" . into( ) , "_1 = Vec::<i32>::new()" . into( ) ] ,
23
55
"bb0" . into( ) , "bb0" . into( ) , style. clone( )
24
56
) ,
25
- Node :: new (
57
+ Node :: from_list (
26
58
vec![ "resume" . into( ) ] ,
27
59
"bb1" . into( ) , "bb1" . into( ) , style. clone( )
28
60
) ,
29
- Node :: new (
61
+ Node :: from_list (
30
62
vec![ "StorageLive(_2)" . into( ) , "StorageLive(_3)" . into( ) , "(_3.0: i32) = const 1_i32" . into( ) , "(_3.1: i32) = const 10_i32" . into( ) , "_2 = <std::ops::Range<i32> as IntoIterator>::into_iter(move _3)" . into( ) ] ,
31
63
"bb2" . into( ) , "bb2" . into( ) , style. clone( )
32
64
) ,
33
- Node :: new (
65
+ Node :: from_list (
34
66
vec![ "StorageDead(_3)" . into( ) , "StorageLive(_4)" . into( ) , "_4 = move _2" . into( ) , "goto" . into( ) ] ,
35
67
"bb3" . into( ) , "bb3" . into( ) , style. clone( )
36
68
) ,
37
- Node :: new (
69
+ Node :: from_list (
38
70
vec![ "drop(_1)" . into( ) ] ,
39
71
"bb4" . into( ) , "bb4" . into( ) , style. clone( )
40
72
) ,
41
- Node :: new (
73
+ Node :: from_list (
42
74
vec![ "StorageLive(_5)" . into( ) , "StorageLive(_6)" . into( ) , "StorageLive(_7)" . into( ) , "StorageLive(_8)" . into( ) , "_8 = &mut _4 _7 = &mut (*_8)" . into( ) , "_6 = <std::ops::Range<i32> as Iterator>::next(move _7)" . into( ) ] ,
43
75
"bb5" . into( ) , "bb5" . into( ) , style. clone( )
44
76
) ,
45
- Node :: new (
77
+ Node :: from_list (
46
78
vec![ "StorageDead(_7)" . into( ) , "_9 = discriminant(_6)" . into( ) , "switchInt(move _9)" . into( ) ] ,
47
79
"bb6" . into( ) , "bb6" . into( ) , style. clone( )
48
80
) ,
49
- Node :: new (
81
+ Node :: from_list (
50
82
vec![ "StorageDead(_8)" . into( ) , "StorageDead(_6)" . into( ) , "StorageDead(_5)" . into( ) , "StorageDead(_4)" . into( ) , "StorageDead(_2)" . into( ) , "StorageLive(_21)" . into( ) , "StorageLive(_22)" . into( ) , "(_22.0: i32) = const 1_i32" . into( ) , "(_22.1: i32) = const 10_i32" . into( ) , "_21 = <std::ops::Range<i32> as IntoIterator>::into_iter(move _22)" . into( ) ] ,
51
83
"bb7" . into( ) , "bb7" . into( ) , style. clone( )
52
84
) ,
53
- Node :: new (
85
+ Node :: from_list (
54
86
vec![ "unreachable" . into( ) ] ,
55
87
"bb8" . into( ) , "bb8" . into( ) , style. clone( )
56
88
) ,
57
- Node :: new (
89
+ Node :: from_list (
58
90
vec![ "StorageLive(_10)" . into( ) , "_10 = ((_6 as Some).0: i32) StorageLive(_11)" . into( ) , "_11 = _10 _5 = move _11 StorageDead(_11)" . into( ) , "StorageDead(_10)" . into( ) , "StorageDead(_8)" . into( ) , "StorageDead(_6)" . into( ) , "StorageLive(_12)" . into( ) , "_12 = _5 StorageLive(_13)" . into( ) , "StorageLive(_14)" . into( ) , "_14 = _12 _15 = const false" . into( ) , "_16 = Eq(_14, const i32::MIN) _17 = BitAnd(move _15, move _16)" . into( ) , "assert(!move _17, attempt to compute the remainder of `{} % {}` which would overflow, _14, const 2_i32)" . into( ) ] ,
59
91
"bb9" . into( ) , "bb9" . into( ) , style. clone( )
60
92
) ,
61
- Node :: new (
93
+ Node :: from_list (
62
94
vec![ "_13 = Rem(move _14, const 2_i32)" . into( ) , "StorageDead(_14)" . into( ) , "switchInt(move _13)" . into( ) ] ,
63
95
"bb10" . into( ) , "bb10" . into( ) , style. clone( )
64
96
) ,
65
- Node :: new (
97
+ Node :: from_list (
66
98
vec![ "StorageDead(_13)" . into( ) , "goto" . into( ) ] ,
67
99
"bb11" . into( ) , "bb11" . into( ) , style. clone( )
68
100
) ,
69
- Node :: new (
101
+ Node :: from_list (
70
102
vec![ "StorageDead(_13)" . into( ) , "StorageLive(_18)" . into( ) , "StorageLive(_19)" . into( ) , "_19 = &mut _1 StorageLive(_20)" . into( ) , "_20 = _12" . into( ) , "_18 = Vec::<i32>::push(move _19, move _20)" . into( ) ] ,
71
103
"bb12" . into( ) , "bb12" . into( ) , style. clone( )
72
104
) ,
73
- Node :: new (
105
+ Node :: from_list (
74
106
vec![ "StorageDead(_20)" . into( ) , "StorageDead(_19)" . into( ) , "StorageDead(_18)" . into( ) , "goto" . into( ) ] ,
75
107
"bb13" . into( ) , "bb13" . into( ) , style. clone( )
76
108
) ,
77
- Node :: new (
109
+ Node :: from_list (
78
110
vec![ "StorageDead(_12)" . into( ) , "StorageDead(_5)" . into( ) , "goto" . into( ) ] ,
79
111
"bb14" . into( ) , "bb14" . into( ) , style. clone( )
80
112
) ,
81
- Node :: new (
113
+ Node :: from_list (
82
114
vec![ "StorageDead(_22)" . into( ) , "StorageLive(_23)" . into( ) , "_23 = move _21" . into( ) , "goto" . into( ) ] ,
83
115
"bb15" . into( ) , "bb15" . into( ) , style. clone( )
84
116
) ,
85
- Node :: new (
117
+ Node :: from_list (
86
118
vec![ "StorageLive(_24)" . into( ) , "StorageLive(_25)" . into( ) , "StorageLive(_26)" . into( ) , "StorageLive(_27)" . into( ) , "_27 = &mut _23 _26 = &mut (*_27)" . into( ) , "_25 = <std::ops::Range<i32> as Iterator>::next(move _26)" . into( ) ] ,
87
119
"bb16" . into( ) , "bb16" . into( ) , style. clone( )
88
120
) ,
89
- Node :: new (
121
+ Node :: from_list (
90
122
vec![ "StorageDead(_26)" . into( ) , "_28 = discriminant(_25)" . into( ) , "switchInt(move _28)" . into( ) ] ,
91
123
"bb17" . into( ) , "bb17" . into( ) , style. clone( )
92
124
) ,
93
- Node :: new (
125
+ Node :: from_list (
94
126
vec![ "_0 = const () StorageDead(_27)" . into( ) , "StorageDead(_25)" . into( ) , "StorageDead(_24)" . into( ) , "StorageDead(_23)" . into( ) , "StorageDead(_21)" . into( ) , "drop(_1)" . into( ) ] ,
95
127
"bb18" . into( ) , "bb18" . into( ) , style. clone( )
96
128
) ,
97
- Node :: new (
129
+ Node :: from_list (
98
130
vec![ "unreachable" . into( ) ] ,
99
131
"bb19" . into( ) , "bb19" . into( ) , style. clone( )
100
132
) ,
101
- Node :: new (
133
+ Node :: from_list (
102
134
vec![ "StorageLive(_29)" . into( ) , "_29 = ((_25 as Some).0: i32)" . into( ) , "StorageLive(_30)" . into( ) , "_30 = _29 _24 = move _30 StorageDead(_30)" . into( ) , "StorageDead(_29)" . into( ) , "StorageDead(_27)" . into( ) , "StorageDead(_25)" . into( ) , "StorageLive(_31)" . into( ) , "_31 = _24 StorageLive(_32)" . into( ) , "StorageLive(_33)" . into( ) , "_33 = _31 _34 = const false" . into( ) , "_35 = Eq(_33, const i32::MIN) _36 = BitAnd(move _34, move _35)" . into( ) , "assert(!move _36, attempt to compute the remainder of `{} % {}` which would overflow, _33, const 3_i32)" . into( ) ] ,
103
135
"bb20" . into( ) , "bb20" . into( ) , style. clone( )
104
136
) ,
105
- Node :: new (
137
+ Node :: from_list (
106
138
vec![ "_32 = Rem(move _33, const 3_i32)" . into( ) , "StorageDead(_33)" . into( ) , "switchInt(move _32)" . into( ) ] ,
107
139
"bb21" . into( ) , "bb21" . into( ) , style. clone( )
108
140
) ,
109
- Node :: new (
141
+ Node :: from_list (
110
142
vec![ "StorageDead(_32)" . into( ) , "goto" . into( ) ] ,
111
143
"bb22" . into( ) , "bb22" . into( ) , style. clone( )
112
144
) ,
113
- Node :: new (
145
+ Node :: from_list (
114
146
vec![ "StorageDead(_32)" . into( ) , "StorageLive(_37)" . into( ) , "StorageLive(_38)" . into( ) , "_38 = &mut _1 StorageLive(_39)" . into( ) , "_39 = _31" . into( ) , "_37 = Vec::<i32>::push(move _38, move _39)" . into( ) ] ,
115
147
"bb23" . into( ) , "bb23" . into( ) , style. clone( )
116
148
) ,
117
- Node :: new (
149
+ Node :: from_list (
118
150
vec![ "StorageDead(_39)" . into( ) , "StorageDead(_38)" . into( ) , "StorageDead(_37)" . into( ) , "goto" . into( ) ] ,
119
151
"bb24" . into( ) , "bb24" . into( ) , style. clone( )
120
152
) ,
121
- Node :: new (
153
+ Node :: from_list (
122
154
vec![ "StorageDead(_31)" . into( ) , "StorageDead(_24)" . into( ) , "goto" . into( ) ] ,
123
155
"bb25" . into( ) , "bb25" . into( ) , style. clone( )
124
156
) ,
125
- Node :: new (
157
+ Node :: from_list (
126
158
vec![ "StorageDead(_1)" . into( ) , "return" . into( ) ] ,
127
159
"bb26" . into( ) , "bb26" . into( ) , style. clone( )
128
160
) ] ,
@@ -172,67 +204,67 @@ pub fn get_graph_2() -> Graph {
172
204
173
205
Graph :: new (
174
206
"Mir_0_3" . into ( ) ,
175
- vec ! [ Node :: new (
207
+ vec ! [ Node :: from_list (
176
208
vec![ "StorageLive(_1)" . into( ) , "_1 = Vec::<i32>::new()" . into( ) ] ,
177
209
"bb0" . into( ) , "bb0" . into( ) , style. clone( )
178
210
) ,
179
- Node :: new (
211
+ Node :: from_list (
180
212
vec![ "resume" . into( ) ] ,
181
213
"bb1" . into( ) , "bb1" . into( ) , style. clone( )
182
214
) ,
183
- Node :: new (
215
+ Node :: from_list (
184
216
vec![ "StorageLive(_2)" . into( ) , "StorageLive(_3)" . into( ) , "(_3.0: i32)" . into( ) , "= const 1_i32" . into( ) , "(_3.1: i32)" . into( ) , "= const 10_i32" . into( ) , "_2 = <std::ops::Range<i32> as IntoIterator>::into_iter(move _3)" . into( ) ] ,
185
217
"bb2" . into( ) , "bb2" . into( ) , style. clone( )
186
218
) ,
187
- Node :: new (
219
+ Node :: from_list (
188
220
vec![ "StorageDead(_3)" . into( ) , "StorageLive(_4)" . into( ) , "_4 = move _2" . into( ) , "goto" . into( ) ] ,
189
221
"bb3" . into( ) , "bb3" . into( ) , style. clone( )
190
222
) ,
191
- Node :: new (
223
+ Node :: from_list (
192
224
vec![ "drop(_1)" . into( ) ] ,
193
225
"bb4" . into( ) , "bb4" . into( ) , style. clone( )
194
226
) ,
195
- Node :: new (
227
+ Node :: from_list (
196
228
vec![ "StorageLive(_5)" . into( ) , "StorageLive(_6)" . into( ) , "StorageLive(_7)" . into( ) , "StorageLive(_8)" . into( ) , "_8 = &mut _4 _7 = &mut (*_8)" . into( ) , "_6 = <std::ops::Range<i32> as Iterator>::next(move _7)" . into( ) ] ,
197
229
"bb5" . into( ) , "bb5" . into( ) , style. clone( )
198
230
) ,
199
- Node :: new (
231
+ Node :: from_list (
200
232
vec![ "StorageDead(_7)" . into( ) , "_9 = discriminant(_6)" . into( ) , "switchInt(move _9)" . into( ) ] ,
201
233
"bb6" . into( ) , "bb6" . into( ) , style. clone( )
202
234
) ,
203
- Node :: new (
235
+ Node :: from_list (
204
236
vec![ "_0 = const () StorageDead(_8)" . into( ) , "StorageDead(_6)" . into( ) , "StorageDead(_5)" . into( ) , "StorageDead(_4)" . into( ) , "StorageDead(_2)" . into( ) , "drop(_1)" . into( ) ] ,
205
237
"bb7" . into( ) , "bb7" . into( ) , style. clone( )
206
238
) ,
207
- Node :: new (
239
+ Node :: from_list (
208
240
vec![ "unreachable" . into( ) ] ,
209
241
"bb8" . into( ) , "bb8" . into( ) , style. clone( )
210
242
) ,
211
- Node :: new (
243
+ Node :: from_list (
212
244
vec![ "StorageLive(_10)" . into( ) , "_10 = ((_6 as Some).0: i32)" . into( ) , "StorageLive(_11)" . into( ) , "_11 = _10 _5 = move _11 StorageDead(_11)" . into( ) , "StorageDead(_10)" . into( ) , "StorageDead(_8)" . into( ) , "StorageDead(_6)" . into( ) , "StorageLive(_12)" . into( ) , "_12 = _5 StorageLive(_13)" . into( ) , "StorageLive(_14)" . into( ) , "_14 = _12 _15 = const false" . into( ) , "_16 = Eq(_14, const i32::MIN) _17 = BitAnd(move _15, move _16)" . into( ) , "assert(!move _17, attempt to compute the remainder of `{} % {}` which would overflow, _14, const 3_i32)" . into( ) ] ,
213
245
"bb9" . into( ) , "bb9" . into( ) , style. clone( )
214
246
) ,
215
- Node :: new (
247
+ Node :: from_list (
216
248
vec![ "_13 = Rem(move _14, const 3_i32)" . into( ) , "StorageDead(_14)" . into( ) , "switchInt(move _13)" . into( ) ] ,
217
249
"bb10" . into( ) , "bb10" . into( ) , style. clone( )
218
250
) ,
219
- Node :: new (
251
+ Node :: from_list (
220
252
vec![ "StorageDead(_13)" . into( ) , "goto" . into( ) ] ,
221
253
"bb11" . into( ) , "bb11" . into( ) , style. clone( )
222
254
) ,
223
- Node :: new (
255
+ Node :: from_list (
224
256
vec![ "StorageDead(_13)" . into( ) , "StorageLive(_18)" . into( ) , "StorageLive(_19)" . into( ) , "_19 = &mut _1 StorageLive(_20)" . into( ) , "_20 = _12" . into( ) , "_18 = Vec::<i32>::push(move _19, move _20)" . into( ) ] ,
225
257
"bb12" . into( ) , "bb12" . into( ) , style. clone( )
226
258
) ,
227
- Node :: new (
259
+ Node :: from_list (
228
260
vec![ "StorageDead(_20)" . into( ) , "StorageDead(_19)" . into( ) , "StorageDead(_18)" . into( ) , "goto" . into( ) ] ,
229
261
"bb13" . into( ) , "bb13" . into( ) , style. clone( )
230
262
) ,
231
- Node :: new (
263
+ Node :: from_list (
232
264
vec![ "StorageDead(_12)" . into( ) , "StorageDead(_5)" . into( ) , "goto" . into( ) ] ,
233
265
"bb14" . into( ) , "bb14" . into( ) , style. clone( )
234
266
) ,
235
- Node :: new (
267
+ Node :: from_list (
236
268
vec![ "StorageDead(_1)" . into( ) , "return" . into( ) ] ,
237
269
"bb15" . into( ) , "bb15" . into( ) , style. clone( )
238
270
) ] ,
0 commit comments