1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
| ; RUN: opt < %s -gvn | llvm-dis
%"struct.Block::$_16" = type { i32 }
%struct.Exp = type { %struct.Exp_*, i32, i32, i32, %struct.Exp*, %struct.Exp*, %"struct.Exp::$_10", %"struct.Block::$_16", %"struct.Exp::$_12" }
%"struct.Exp::$_10" = type { %struct.Exp* }
%"struct.Exp::$_12" = type { %struct.Exp** }
%struct.Exp_ = type { i32, i32, i32, i32, %struct.Id* }
%struct.Id = type { i8*, i32, i32, i32, %"struct.Id::$_13" }
%"struct.Id::$_13" = type { double }
define i8* @_ZN3Exp8toStringEj(%struct.Exp* %this, i32 %nextpc) {
entry:
switch i32 0, label %bb970 [
i32 1, label %bb
i32 2, label %bb39
i32 3, label %bb195
i32 4, label %bb270
i32 5, label %bb418
i32 6, label %bb633
i32 7, label %bb810
i32 8, label %bb882
i32 9, label %bb925
]
bb: ; preds = %entry
store i8* null, i8** null
br label %return
bb39: ; preds = %entry
br i1 false, label %cond_true, label %cond_false132
cond_true: ; preds = %bb39
br i1 false, label %cond_true73, label %cond_false
cond_true73: ; preds = %cond_true
br i1 false, label %cond_true108, label %cond_next
cond_true108: ; preds = %cond_true73
br label %cond_next
cond_next: ; preds = %cond_true108, %cond_true73
br label %cond_next131
cond_false: ; preds = %cond_true
br label %cond_next131
cond_next131: ; preds = %cond_false, %cond_next
br label %cond_next141
cond_false132: ; preds = %bb39
br label %cond_next141
cond_next141: ; preds = %cond_false132, %cond_next131
br i1 false, label %cond_true169, label %cond_false175
cond_true169: ; preds = %cond_next141
br label %cond_next181
cond_false175: ; preds = %cond_next141
br label %cond_next181
cond_next181: ; preds = %cond_false175, %cond_true169
br i1 false, label %cond_true189, label %cond_next191
cond_true189: ; preds = %cond_next181
br label %cond_next191
cond_next191: ; preds = %cond_true189, %cond_next181
store i8* null, i8** null
br label %return
bb195: ; preds = %entry
br i1 false, label %cond_true248, label %cond_false250
cond_true248: ; preds = %bb195
br label %cond_next252
cond_false250: ; preds = %bb195
br label %cond_next252
cond_next252: ; preds = %cond_false250, %cond_true248
br i1 false, label %cond_true265, label %cond_next267
cond_true265: ; preds = %cond_next252
br label %cond_next267
cond_next267: ; preds = %cond_true265, %cond_next252
store i8* null, i8** null
br label %return
bb270: ; preds = %entry
br i1 false, label %cond_true338, label %cond_false340
cond_true338: ; preds = %bb270
br label %cond_next342
cond_false340: ; preds = %bb270
br label %cond_next342
cond_next342: ; preds = %cond_false340, %cond_true338
br i1 false, label %cond_true362, label %cond_false364
cond_true362: ; preds = %cond_next342
br label %cond_next366
cond_false364: ; preds = %cond_next342
br label %cond_next366
cond_next366: ; preds = %cond_false364, %cond_true362
br i1 false, label %cond_true393, label %cond_next395
cond_true393: ; preds = %cond_next366
br label %cond_next395
cond_next395: ; preds = %cond_true393, %cond_next366
br i1 false, label %cond_true406, label %cond_next408
cond_true406: ; preds = %cond_next395
br label %cond_next408
cond_next408: ; preds = %cond_true406, %cond_next395
br i1 false, label %cond_true413, label %cond_next415
cond_true413: ; preds = %cond_next408
br label %cond_next415
cond_next415: ; preds = %cond_true413, %cond_next408
store i8* null, i8** null
br label %return
bb418: ; preds = %entry
br i1 false, label %cond_true512, label %cond_false514
cond_true512: ; preds = %bb418
br label %cond_next516
cond_false514: ; preds = %bb418
br label %cond_next516
cond_next516: ; preds = %cond_false514, %cond_true512
br i1 false, label %cond_true536, label %cond_false538
cond_true536: ; preds = %cond_next516
br label %cond_next540
cond_false538: ; preds = %cond_next516
br label %cond_next540
cond_next540: ; preds = %cond_false538, %cond_true536
br i1 false, label %cond_true560, label %cond_false562
cond_true560: ; preds = %cond_next540
br label %cond_next564
cond_false562: ; preds = %cond_next540
br label %cond_next564
cond_next564: ; preds = %cond_false562, %cond_true560
br i1 false, label %cond_true597, label %cond_next599
cond_true597: ; preds = %cond_next564
br label %cond_next599
cond_next599: ; preds = %cond_true597, %cond_next564
br i1 false, label %cond_true614, label %cond_next616
cond_true614: ; preds = %cond_next599
br label %cond_next616
cond_next616: ; preds = %cond_true614, %cond_next599
br i1 false, label %cond_true621, label %cond_next623
cond_true621: ; preds = %cond_next616
br label %cond_next623
cond_next623: ; preds = %cond_true621, %cond_next616
br i1 false, label %cond_true628, label %cond_next630
cond_true628: ; preds = %cond_next623
br label %cond_next630
cond_next630: ; preds = %cond_true628, %cond_next623
store i8* null, i8** null
br label %return
bb633: ; preds = %entry
br i1 false, label %cond_true667, label %cond_next669
cond_true667: ; preds = %bb633
br label %cond_next669
cond_next669: ; preds = %cond_true667, %bb633
br i1 false, label %cond_true678, label %cond_next791
cond_true678: ; preds = %cond_next669
br label %bb735
bb679: ; preds = %bb735
br i1 false, label %cond_true729, label %cond_next731
cond_true729: ; preds = %bb679
br label %cond_next731
cond_next731: ; preds = %cond_true729, %bb679
br label %bb735
bb735: ; preds = %cond_next731, %cond_true678
br i1 false, label %bb679, label %bb743
bb743: ; preds = %bb735
br i1 false, label %cond_true788, label %cond_next790
cond_true788: ; preds = %bb743
br label %cond_next790
cond_next790: ; preds = %cond_true788, %bb743
br label %cond_next791
cond_next791: ; preds = %cond_next790, %cond_next669
br i1 false, label %cond_true805, label %cond_next807
cond_true805: ; preds = %cond_next791
br label %cond_next807
cond_next807: ; preds = %cond_true805, %cond_next791
store i8* null, i8** null
br label %return
bb810: ; preds = %entry
br i1 false, label %cond_true870, label %cond_next872
cond_true870: ; preds = %bb810
br label %cond_next872
cond_next872: ; preds = %cond_true870, %bb810
br i1 false, label %cond_true877, label %cond_next879
cond_true877: ; preds = %cond_next872
br label %cond_next879
cond_next879: ; preds = %cond_true877, %cond_next872
store i8* null, i8** null
br label %return
bb882: ; preds = %entry
br i1 false, label %cond_true920, label %cond_next922
cond_true920: ; preds = %bb882
br label %cond_next922
cond_next922: ; preds = %cond_true920, %bb882
store i8* null, i8** null
br label %return
bb925: ; preds = %entry
br i1 false, label %cond_true965, label %cond_next967
cond_true965: ; preds = %bb925
br label %cond_next967
cond_next967: ; preds = %cond_true965, %bb925
store i8* null, i8** null
br label %return
bb970: ; preds = %entry
unreachable
; No predecessors!
store i8* null, i8** null
br label %return
return: ; preds = %0, %cond_next967, %cond_next922, %cond_next879, %cond_next807, %cond_next630, %cond_next415, %cond_next267, %cond_next191, %bb
%retval980 = load i8*, i8** null ; <i8*> [#uses=1]
ret i8* %retval980
}
|