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
|
; RUN: opt < %s -loop-extract -disable-output
declare i32 @_IO_getc()
declare void @__errno_location()
define void @yylex() {
entry:
switch i32 0, label %label.126 [
i32 0, label %return
i32 61, label %combine
i32 33, label %combine
i32 94, label %combine
i32 37, label %combine
i32 47, label %combine
i32 42, label %combine
i32 62, label %combine
i32 60, label %combine
i32 58, label %combine
i32 124, label %combine
i32 38, label %combine
i32 45, label %combine
i32 43, label %combine
i32 34, label %string_constant
i32 39, label %char_constant
i32 46, label %loopexit.2
i32 57, label %loopexit.2
i32 56, label %loopexit.2
i32 55, label %loopexit.2
i32 54, label %loopexit.2
i32 53, label %loopexit.2
i32 52, label %loopexit.2
i32 51, label %loopexit.2
i32 50, label %loopexit.2
i32 49, label %loopexit.2
i32 48, label %loopexit.2
i32 95, label %letter
i32 122, label %letter
i32 121, label %letter
i32 120, label %letter
i32 119, label %letter
i32 118, label %letter
i32 117, label %letter
i32 116, label %letter
i32 115, label %letter
i32 114, label %letter
i32 113, label %letter
i32 112, label %letter
i32 111, label %letter
i32 110, label %letter
i32 109, label %letter
i32 108, label %letter
i32 107, label %letter
i32 106, label %letter
i32 105, label %letter
i32 104, label %letter
i32 103, label %letter
i32 102, label %letter
i32 101, label %letter
i32 100, label %letter
i32 99, label %letter
i32 98, label %letter
i32 97, label %letter
i32 90, label %letter
i32 89, label %letter
i32 88, label %letter
i32 87, label %letter
i32 86, label %letter
i32 85, label %letter
i32 84, label %letter
i32 83, label %letter
i32 82, label %letter
i32 81, label %letter
i32 80, label %letter
i32 79, label %letter
i32 78, label %letter
i32 77, label %letter
i32 75, label %letter
i32 74, label %letter
i32 73, label %letter
i32 72, label %letter
i32 71, label %letter
i32 70, label %letter
i32 69, label %letter
i32 68, label %letter
i32 67, label %letter
i32 66, label %letter
i32 65, label %letter
i32 64, label %label.13
i32 76, label %label.12
i32 36, label %label.11
i32 -1, label %label.10
]
label.10: ; preds = %entry
ret void
label.11: ; preds = %entry
ret void
label.12: ; preds = %entry
ret void
label.13: ; preds = %entry
ret void
letter: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry
ret void
loopexit.2: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry
switch i32 0, label %shortcirc_next.14 [
i32 48, label %then.20
i32 46, label %endif.38
]
then.20: ; preds = %loopexit.2
switch i32 0, label %else.4 [
i32 120, label %then.21
i32 88, label %then.21
]
then.21: ; preds = %then.20, %then.20
ret void
else.4: ; preds = %then.20
ret void
shortcirc_next.14: ; preds = %loopexit.2
ret void
endif.38: ; preds = %loopexit.2
br i1 false, label %then.40, label %then.39
then.39: ; preds = %endif.38
ret void
then.40: ; preds = %endif.38
invoke void @__errno_location( )
to label %switchexit.2 unwind label %LongJmpBlkPre
loopentry.6: ; preds = %endif.52
switch i32 0, label %switchexit.2 [
i32 73, label %label.82
i32 105, label %label.82
i32 76, label %label.80
i32 108, label %label.80
i32 70, label %label.78
i32 102, label %label.78
]
label.78: ; preds = %loopentry.6, %loopentry.6
ret void
label.80: ; preds = %loopentry.6, %loopentry.6
ret void
label.82: ; preds = %loopentry.6, %loopentry.6
%c.0.15.5 = phi i32 [ %tmp.79417, %loopentry.6 ], [ %tmp.79417, %loopentry.6 ] ; <i32> [#uses=0]
ret void
switchexit.2: ; preds = %loopentry.6, %then.40
br i1 false, label %endif.51, label %loopexit.6
endif.51: ; preds = %switchexit.2
br i1 false, label %endif.52, label %then.52
then.52: ; preds = %endif.51
ret void
endif.52: ; preds = %endif.51
%tmp.79417 = invoke i32 @_IO_getc( )
to label %loopentry.6 unwind label %LongJmpBlkPre ; <i32> [#uses=2]
loopexit.6: ; preds = %switchexit.2
ret void
char_constant: ; preds = %entry
ret void
string_constant: ; preds = %entry
ret void
combine: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry
ret void
label.126: ; preds = %entry
ret void
return: ; preds = %entry
ret void
LongJmpBlkPre: ; preds = %endif.52, %then.40
ret void
}
|