Move the personality function from LandingPadInst to Function
[oota-llvm.git] / test / Transforms / CodeExtractor / 2004-03-18-InvokeHandling.ll
1 ; RUN: opt < %s -loop-extract -disable-output
2
3 declare i32 @_IO_getc()
4
5 declare void @__errno_location()
6
7 define void @yylex() personality i32 (...)* @__gcc_personality_v0 {
8 entry:
9         switch i32 0, label %label.126 [
10                  i32 0, label %return
11                  i32 61, label %combine
12                  i32 33, label %combine
13                  i32 94, label %combine
14                  i32 37, label %combine
15                  i32 47, label %combine
16                  i32 42, label %combine
17                  i32 62, label %combine
18                  i32 60, label %combine
19                  i32 58, label %combine
20                  i32 124, label %combine
21                  i32 38, label %combine
22                  i32 45, label %combine
23                  i32 43, label %combine
24                  i32 34, label %string_constant
25                  i32 39, label %char_constant
26                  i32 46, label %loopexit.2
27                  i32 57, label %loopexit.2
28                  i32 56, label %loopexit.2
29                  i32 55, label %loopexit.2
30                  i32 54, label %loopexit.2
31                  i32 53, label %loopexit.2
32                  i32 52, label %loopexit.2
33                  i32 51, label %loopexit.2
34                  i32 50, label %loopexit.2
35                  i32 49, label %loopexit.2
36                  i32 48, label %loopexit.2
37                  i32 95, label %letter
38                  i32 122, label %letter
39                  i32 121, label %letter
40                  i32 120, label %letter
41                  i32 119, label %letter
42                  i32 118, label %letter
43                  i32 117, label %letter
44                  i32 116, label %letter
45                  i32 115, label %letter
46                  i32 114, label %letter
47                  i32 113, label %letter
48                  i32 112, label %letter
49                  i32 111, label %letter
50                  i32 110, label %letter
51                  i32 109, label %letter
52                  i32 108, label %letter
53                  i32 107, label %letter
54                  i32 106, label %letter
55                  i32 105, label %letter
56                  i32 104, label %letter
57                  i32 103, label %letter
58                  i32 102, label %letter
59                  i32 101, label %letter
60                  i32 100, label %letter
61                  i32 99, label %letter
62                  i32 98, label %letter
63                  i32 97, label %letter
64                  i32 90, label %letter
65                  i32 89, label %letter
66                  i32 88, label %letter
67                  i32 87, label %letter
68                  i32 86, label %letter
69                  i32 85, label %letter
70                  i32 84, label %letter
71                  i32 83, label %letter
72                  i32 82, label %letter
73                  i32 81, label %letter
74                  i32 80, label %letter
75                  i32 79, label %letter
76                  i32 78, label %letter
77                  i32 77, label %letter
78                  i32 75, label %letter
79                  i32 74, label %letter
80                  i32 73, label %letter
81                  i32 72, label %letter
82                  i32 71, label %letter
83                  i32 70, label %letter
84                  i32 69, label %letter
85                  i32 68, label %letter
86                  i32 67, label %letter
87                  i32 66, label %letter
88                  i32 65, label %letter
89                  i32 64, label %label.13
90                  i32 76, label %label.12
91                  i32 36, label %label.11
92                  i32 -1, label %label.10
93         ]
94
95 label.10:               ; preds = %entry
96         ret void
97
98 label.11:               ; preds = %entry
99         ret void
100
101 label.12:               ; preds = %entry
102         ret void
103
104 label.13:               ; preds = %entry
105         ret void
106
107 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
108         ret void
109
110 loopexit.2:             ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry
111         switch i32 0, label %shortcirc_next.14 [
112                  i32 48, label %then.20
113                  i32 46, label %endif.38
114         ]
115
116 then.20:                ; preds = %loopexit.2
117         switch i32 0, label %else.4 [
118                  i32 120, label %then.21
119                  i32 88, label %then.21
120         ]
121
122 then.21:                ; preds = %then.20, %then.20
123         ret void
124
125 else.4:         ; preds = %then.20
126         ret void
127
128 shortcirc_next.14:              ; preds = %loopexit.2
129         ret void
130
131 endif.38:               ; preds = %loopexit.2
132         br i1 false, label %then.40, label %then.39
133
134 then.39:                ; preds = %endif.38
135         ret void
136
137 then.40:                ; preds = %endif.38
138         invoke void @__errno_location( )
139                         to label %switchexit.2 unwind label %LongJmpBlkPre
140
141 loopentry.6:            ; preds = %endif.52
142         switch i32 0, label %switchexit.2 [
143                  i32 73, label %label.82
144                  i32 105, label %label.82
145                  i32 76, label %label.80
146                  i32 108, label %label.80
147                  i32 70, label %label.78
148                  i32 102, label %label.78
149         ]
150
151 label.78:               ; preds = %loopentry.6, %loopentry.6
152         ret void
153
154 label.80:               ; preds = %loopentry.6, %loopentry.6
155         ret void
156
157 label.82:               ; preds = %loopentry.6, %loopentry.6
158         %c.0.15.5 = phi i32 [ %tmp.79417, %loopentry.6 ], [ %tmp.79417, %loopentry.6 ]          ; <i32> [#uses=0]
159         ret void
160
161 switchexit.2:           ; preds = %loopentry.6, %then.40
162         br i1 false, label %endif.51, label %loopexit.6
163
164 endif.51:               ; preds = %switchexit.2
165         br i1 false, label %endif.52, label %then.52
166
167 then.52:                ; preds = %endif.51
168         ret void
169
170 endif.52:               ; preds = %endif.51
171         %tmp.79417 = invoke i32 @_IO_getc( )
172                         to label %loopentry.6 unwind label %LongJmpBlkPre               ; <i32> [#uses=2]
173
174 loopexit.6:             ; preds = %switchexit.2
175         ret void
176
177 char_constant:          ; preds = %entry
178         ret void
179
180 string_constant:                ; preds = %entry
181         ret void
182
183 combine:                ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry
184         ret void
185
186 label.126:              ; preds = %entry
187         ret void
188
189 return:         ; preds = %entry
190         ret void
191
192 LongJmpBlkPre:          ; preds = %endif.52, %then.40
193         %exn = landingpad { i8*, i32 }
194                  catch i8* null
195         ret void
196 }
197
198 declare i32 @__gcc_personality_v0(...)