ConstantInt has some getters which return ConstantInt's or ConstantVector's of
[oota-llvm.git] / test / Transforms / PruneEH / 2008-09-05-CGUpdate.ll
1 ; RUN: opt < %s -prune-eh -inline -print-callgraph \
2 ; RUN:   -disable-output |& \
3 ; RUN:     grep {calls.*ce3806g__fxio__put__put_int64__4.1339} | count 2
4         %struct.FRAME.ce3806g = type { %struct.string___XUB, %struct.string___XUB, %struct.string___XUB, %struct.string___XUB }
5         %struct.FRAME.ce3806g__fxio__put__4 = type { i32, i32, i32, %struct.system__file_control_block__pstring*, i32, i32, i8 }
6         %struct.RETURN = type { i8, i32 }
7         %struct.ada__streams__root_stream_type = type { %struct.ada__tags__dispatch_table* }
8         %struct.ada__tags__dispatch_table = type { [1 x i32] }
9         %struct.ada__tags__select_specific_data = type { i32, %struct.ada__tags__select_specific_data_element }
10         %struct.ada__tags__select_specific_data_element = type { i32, i8 }
11         %struct.ada__tags__type_specific_data = type { i32, i32, [2147483647 x i8]*, [2147483647 x i8]*, %struct.ada__tags__dispatch_table*, i8, i32, i32, i32, i32, [2 x %struct.ada__tags__dispatch_table*] }
12         %struct.ada__text_io__text_afcb = type { %struct.system__file_control_block__afcb, i32, i32, i32, i32, i32, %struct.ada__text_io__text_afcb*, i8, i8 }
13         %struct.exception = type { i8, i8, i32, i8*, i8*, i32, i8* }
14         %struct.long_long_float___PAD = type { x86_fp80, [1 x i32] }
15         %struct.string___XUB = type { i32, i32 }
16         %struct.system__file_control_block__afcb = type { %struct.ada__streams__root_stream_type, i32, %struct.system__file_control_block__pstring, %struct.system__file_control_block__pstring, i8, i8, i8, i8, i8, i8, i8, %struct.system__file_control_block__afcb*, %struct.system__file_control_block__afcb* }
17         %struct.system__file_control_block__pstring = type { i8*, %struct.string___XUB* }
18         %struct.system__finalization_implementation__limited_record_controller = type { %struct.system__finalization_root__root_controlled, %struct.system__finalization_root__root_controlled* }
19         %struct.system__finalization_implementation__record_controller = type { %struct.system__finalization_implementation__limited_record_controller, i32 }
20         %struct.system__finalization_root__empty_root_controlled = type { %struct.ada__tags__dispatch_table* }
21         %struct.system__finalization_root__root_controlled = type { %struct.ada__streams__root_stream_type, %struct.system__finalization_root__root_controlled*, %struct.system__finalization_root__root_controlled* }
22         %struct.system__secondary_stack__mark_id = type { i32, i32 }
23         %struct.system__standard_library__exception_data = type { i8, i8, i32, i32, %struct.system__standard_library__exception_data*, i32, void ()* }
24 @.str = internal constant [12 x i8] c"system.ads\00\00"         ; <[12 x i8]*> [#uses=1]
25 @.str1 = internal constant [14 x i8] c"a-tifiio.adb\00\00"              ; <[14 x i8]*> [#uses=1]
26 @system__soft_links__abort_undefer = external global void ()*           ; <void ()**> [#uses=6]
27 @.str2 = internal constant [47 x i8] c"a-tifiio.adb:327 instantiated at ce3806g.adb:52"         ; <[47 x i8]*> [#uses=1]
28 @C.354.2200 = internal constant %struct.string___XUB { i32 1, i32 47 }          ; <%struct.string___XUB*> [#uses=1]
29 @ada__io_exceptions__data_error = external global %struct.exception             ; <%struct.exception*> [#uses=1]
30 @constraint_error = external global %struct.exception           ; <%struct.exception*> [#uses=2]
31 @__gnat_all_others_value = external constant i32                ; <i32*> [#uses=21]
32 @.str3 = internal constant [10 x i8] c"0123456789"              ; <[10 x i8]*> [#uses=2]
33 @ada__text_io__current_out = external global %struct.ada__text_io__text_afcb*           ; <%struct.ada__text_io__text_afcb**> [#uses=1]
34 @.str4 = internal constant [126 x i8] c"CHECK THAT FIXED_IO PUT OPERATES ON FILES OF MODE OUT_FILE AND IF NO FILE IS SPECIFIED THE CURRENT DEFAULT OUTPUT FILE IS USED"         ; <[126 x i8]*> [#uses=1]
35 @C.131.1559 = internal constant %struct.string___XUB { i32 1, i32 126 }         ; <%struct.string___XUB*> [#uses=1]
36 @.str5 = internal constant [7 x i8] c"CE3806G"          ; <[7 x i8]*> [#uses=1]
37 @C.132.1562 = internal constant %struct.string___XUB { i32 1, i32 7 }           ; <%struct.string___XUB*> [#uses=1]
38 @incompleteF.1176.b = internal global i1 false          ; <i1*> [#uses=2]
39 @incomplete.1177 = internal global %struct.exception { i8 0, i8 65, i32 23, i8* getelementptr ([23 x i8]* @incompleteE.1174, i32 0, i32 0), i8* null, i32 0, i8* null }         ; <%struct.exception*> [#uses=15]
40 @incompleteE.1174 = internal global [23 x i8] c"CE3806G.B_1.INCOMPLETE\00"              ; <[23 x i8]*> [#uses=1]
41 @.str6 = internal constant [0 x i8] zeroinitializer             ; <[0 x i8]*> [#uses=1]
42 @C.136.1568 = internal constant %struct.string___XUB { i32 1, i32 0 }           ; <%struct.string___XUB*> [#uses=1]
43 @C.137.1571 = internal constant %struct.string___XUB { i32 1, i32 0 }           ; <%struct.string___XUB*> [#uses=1]
44 @.str7 = internal constant [50 x i8] c"USE_ERROR RAISED ON TEXT CREATE WITH OUT_FILE MODE"              ; <[50 x i8]*> [#uses=1]
45 @C.139.1577 = internal constant %struct.string___XUB { i32 1, i32 50 }          ; <%struct.string___XUB*> [#uses=1]
46 @.str8 = internal constant [14 x i8] c"ce3806g.adb:65"          ; <[14 x i8]*> [#uses=1]
47 @C.140.1580 = internal constant %struct.string___XUB { i32 1, i32 14 }          ; <%struct.string___XUB*> [#uses=1]
48 @.str9 = internal constant [51 x i8] c"NAME_ERROR RAISED ON TEXT CREATE WITH OUT_FILE MODE"             ; <[51 x i8]*> [#uses=1]
49 @C.143.1585 = internal constant %struct.string___XUB { i32 1, i32 51 }          ; <%struct.string___XUB*> [#uses=1]
50 @.str10 = internal constant [14 x i8] c"ce3806g.adb:69"         ; <[14 x i8]*> [#uses=1]
51 @C.144.1588 = internal constant %struct.string___XUB { i32 1, i32 14 }          ; <%struct.string___XUB*> [#uses=1]
52 @C.146.1592 = internal constant %struct.string___XUB { i32 1, i32 0 }           ; <%struct.string___XUB*> [#uses=1]
53 @C.147.1595 = internal constant %struct.string___XUB { i32 1, i32 0 }           ; <%struct.string___XUB*> [#uses=1]
54 @C.153.1609 = internal constant %struct.string___XUB { i32 1, i32 0 }           ; <%struct.string___XUB*> [#uses=1]
55 @C.154.1612 = internal constant %struct.string___XUB { i32 1, i32 0 }           ; <%struct.string___XUB*> [#uses=1]
56 @.str12 = internal constant [47 x i8] c"USE_ERROR RAISED ON TEXT OPEN WITH IN_FILE MODE"                ; <[47 x i8]*> [#uses=1]
57 @C.156.1618 = internal constant %struct.string___XUB { i32 1, i32 47 }          ; <%struct.string___XUB*> [#uses=1]
58 @.str13 = internal constant [14 x i8] c"ce3806g.adb:88"         ; <[14 x i8]*> [#uses=1]
59 @C.157.1621 = internal constant %struct.string___XUB { i32 1, i32 14 }          ; <%struct.string___XUB*> [#uses=1]
60 @C.159.1627 = internal constant %struct.string___XUB { i32 1, i32 0 }           ; <%struct.string___XUB*> [#uses=1]
61 @C.160.1630 = internal constant %struct.string___XUB { i32 1, i32 0 }           ; <%struct.string___XUB*> [#uses=1]
62 @.str14 = internal constant [33 x i8] c"VALUE INCORRECT - FIXED FROM FILE"              ; <[33 x i8]*> [#uses=1]
63 @C.162.1637 = internal constant %struct.string___XUB { i32 1, i32 33 }          ; <%struct.string___XUB*> [#uses=1]
64 @.str15 = internal constant [36 x i8] c"VALUE INCORRECT - FIXED FROM DEFAULT"           ; <[36 x i8]*> [#uses=1]
65 @C.164.1642 = internal constant %struct.string___XUB { i32 1, i32 36 }          ; <%struct.string___XUB*> [#uses=1]
66 @ada__io_exceptions__use_error = external global %struct.exception              ; <%struct.exception*> [#uses=4]
67 @ada__io_exceptions__name_error = external global %struct.exception             ; <%struct.exception*> [#uses=2]
68
69 define void @_ada_ce3806g() {
70 entry:
71         %0 = alloca %struct.system__file_control_block__pstring, align 8                ; <%struct.system__file_control_block__pstring*> [#uses=3]
72         %1 = alloca %struct.system__file_control_block__pstring, align 8                ; <%struct.system__file_control_block__pstring*> [#uses=3]
73         %2 = alloca %struct.system__file_control_block__pstring, align 8                ; <%struct.system__file_control_block__pstring*> [#uses=3]
74         %3 = alloca %struct.system__file_control_block__pstring, align 8                ; <%struct.system__file_control_block__pstring*> [#uses=3]
75         %FRAME.356 = alloca %struct.FRAME.ce3806g               ; <%struct.FRAME.ce3806g*> [#uses=20]
76         call void @report__test( i8* getelementptr ([7 x i8]* @.str5, i32 0, i32 0), %struct.string___XUB* @C.132.1562, i8* getelementptr ([126 x i8]* @.str4, i32 0, i32 0), %struct.string___XUB* @C.131.1559 )
77         %4 = getelementptr %struct.FRAME.ce3806g* %FRAME.356, i32 0, i32 3              ; <%struct.string___XUB*> [#uses=1]
78         call void @system__secondary_stack__ss_mark( %struct.string___XUB* noalias sret %4 )
79         %.b = load i1* @incompleteF.1176.b              ; <i1> [#uses=1]
80         br i1 %.b, label %bb11, label %bb
81
82 bb:             ; preds = %entry
83         invoke void @system__exception_table__register_exception( %struct.system__standard_library__exception_data* bitcast (%struct.exception* @incomplete.1177 to %struct.system__standard_library__exception_data*) )
84                         to label %invcont unwind label %lpad
85
86 invcont:                ; preds = %bb
87         store i1 true, i1* @incompleteF.1176.b
88         br label %bb11
89
90 bb11:           ; preds = %entry, %invcont
91         %5 = getelementptr %struct.FRAME.ce3806g* %FRAME.356, i32 0, i32 2              ; <%struct.string___XUB*> [#uses=1]
92         invoke void @system__secondary_stack__ss_mark( %struct.string___XUB* noalias sret %5 )
93                         to label %invcont12 unwind label %lpad228
94
95 invcont12:              ; preds = %bb11
96         invoke void @report__legal_file_name( %struct.system__file_control_block__pstring* noalias sret %3, i32 1, i8* getelementptr ([0 x i8]* @.str6, i32 0, i32 0), %struct.string___XUB* @C.137.1571 )
97                         to label %invcont17 unwind label %lpad232
98
99 invcont17:              ; preds = %invcont12
100         %elt18 = getelementptr %struct.system__file_control_block__pstring* %3, i32 0, i32 0            ; <i8**> [#uses=1]
101         %val19 = load i8** %elt18, align 8              ; <i8*> [#uses=1]
102         %elt20 = getelementptr %struct.system__file_control_block__pstring* %3, i32 0, i32 1            ; <%struct.string___XUB**> [#uses=1]
103         %val21 = load %struct.string___XUB** %elt20             ; <%struct.string___XUB*> [#uses=1]
104         %6 = invoke %struct.ada__text_io__text_afcb* @ada__text_io__create( %struct.ada__text_io__text_afcb* null, i8 2, i8* %val19, %struct.string___XUB* %val21, i8* getelementptr ([0 x i8]* @.str6, i32 0, i32 0), %struct.string___XUB* @C.136.1568 )
105                         to label %invcont26 unwind label %lpad232               ; <%struct.ada__text_io__text_afcb*> [#uses=2]
106
107 invcont26:              ; preds = %invcont17
108         %7 = getelementptr %struct.FRAME.ce3806g* %FRAME.356, i32 0, i32 2, i32 0               ; <i32*> [#uses=1]
109         %8 = load i32* %7, align 8              ; <i32> [#uses=1]
110         %9 = getelementptr %struct.FRAME.ce3806g* %FRAME.356, i32 0, i32 2, i32 1               ; <i32*> [#uses=1]
111         %10 = load i32* %9, align 4             ; <i32> [#uses=1]
112         invoke void @system__secondary_stack__ss_release( i32 %8, i32 %10 )
113                         to label %bb73 unwind label %lpad228
114
115 bb32:           ; preds = %lpad232
116         call void @__gnat_begin_handler( i8* %eh_ptr233 ) nounwind
117         %11 = load void ()** @system__soft_links__abort_undefer, align 4                ; <void ()*> [#uses=1]
118         invoke void %11( )
119                         to label %invcont33 unwind label %lpad240
120
121 invcont33:              ; preds = %bb32
122         invoke void @report__not_applicable( i8* getelementptr ([50 x i8]* @.str7, i32 0, i32 0), %struct.string___XUB* @C.139.1577 )
123                         to label %invcont38 unwind label %lpad240
124
125 invcont38:              ; preds = %invcont33
126         invoke void @__gnat_raise_exception( %struct.system__standard_library__exception_data* bitcast (%struct.exception* @incomplete.1177 to %struct.system__standard_library__exception_data*), i8* getelementptr ([14 x i8]* @.str8, i32 0, i32 0), %struct.string___XUB* @C.140.1580 ) noreturn
127                         to label %invcont43 unwind label %lpad240
128
129 invcont43:              ; preds = %invcont38
130         unreachable
131
132 bb47:           ; preds = %ppad291
133         call void @__gnat_begin_handler( i8* %eh_ptr233 ) nounwind
134         %12 = load void ()** @system__soft_links__abort_undefer, align 4                ; <void ()*> [#uses=1]
135         invoke void %12( )
136                         to label %invcont49 unwind label %lpad248
137
138 invcont49:              ; preds = %bb47
139         invoke void @report__not_applicable( i8* getelementptr ([51 x i8]* @.str9, i32 0, i32 0), %struct.string___XUB* @C.143.1585 )
140                         to label %invcont54 unwind label %lpad248
141
142 invcont54:              ; preds = %invcont49
143         invoke void @__gnat_raise_exception( %struct.system__standard_library__exception_data* bitcast (%struct.exception* @incomplete.1177 to %struct.system__standard_library__exception_data*), i8* getelementptr ([14 x i8]* @.str10, i32 0, i32 0), %struct.string___XUB* @C.144.1588 ) noreturn
144                         to label %invcont59 unwind label %lpad248
145
146 invcont59:              ; preds = %invcont54
147         unreachable
148
149 bb73:           ; preds = %invcont26
150         invoke void @report__legal_file_name( %struct.system__file_control_block__pstring* noalias sret %2, i32 2, i8* getelementptr ([0 x i8]* @.str6, i32 0, i32 0), %struct.string___XUB* @C.147.1595 )
151                         to label %invcont78 unwind label %lpad228
152
153 invcont78:              ; preds = %bb73
154         %elt79 = getelementptr %struct.system__file_control_block__pstring* %2, i32 0, i32 0            ; <i8**> [#uses=1]
155         %val80 = load i8** %elt79, align 8              ; <i8*> [#uses=1]
156         %elt81 = getelementptr %struct.system__file_control_block__pstring* %2, i32 0, i32 1            ; <%struct.string___XUB**> [#uses=1]
157         %val82 = load %struct.string___XUB** %elt81             ; <%struct.string___XUB*> [#uses=1]
158         %13 = invoke %struct.ada__text_io__text_afcb* @ada__text_io__create( %struct.ada__text_io__text_afcb* null, i8 2, i8* %val80, %struct.string___XUB* %val82, i8* getelementptr ([0 x i8]* @.str6, i32 0, i32 0), %struct.string___XUB* @C.146.1592 )
159                         to label %invcont87 unwind label %lpad228               ; <%struct.ada__text_io__text_afcb*> [#uses=2]
160
161 invcont87:              ; preds = %invcont78
162         invoke void @ada__text_io__set_output( %struct.ada__text_io__text_afcb* %13 )
163                         to label %invcont88 unwind label %lpad228
164
165 invcont88:              ; preds = %invcont87
166         %14 = getelementptr %struct.FRAME.ce3806g* %FRAME.356, i32 0, i32 1             ; <%struct.string___XUB*> [#uses=1]
167         invoke void @system__secondary_stack__ss_mark( %struct.string___XUB* noalias sret %14 )
168                         to label %invcont89 unwind label %lpad228
169
170 invcont89:              ; preds = %invcont88
171         invoke fastcc void @ce3806g__fxio__put.1149( %struct.ada__text_io__text_afcb* %6 )
172                         to label %bb94 unwind label %lpad252
173
174 bb94:           ; preds = %invcont89
175         invoke fastcc void @ce3806g__fxio__put__2.1155( )
176                         to label %invcont95 unwind label %lpad252
177
178 invcont95:              ; preds = %bb94
179         %15 = invoke %struct.ada__text_io__text_afcb* @ada__text_io__close( %struct.ada__text_io__text_afcb* %6 )
180                         to label %invcont96 unwind label %lpad252               ; <%struct.ada__text_io__text_afcb*> [#uses=1]
181
182 invcont96:              ; preds = %invcont95
183         %16 = getelementptr %struct.FRAME.ce3806g* %FRAME.356, i32 0, i32 0             ; <%struct.string___XUB*> [#uses=1]
184         invoke void @system__secondary_stack__ss_mark( %struct.string___XUB* noalias sret %16 )
185                         to label %invcont97 unwind label %lpad252
186
187 invcont97:              ; preds = %invcont96
188         invoke void @report__legal_file_name( %struct.system__file_control_block__pstring* noalias sret %1, i32 1, i8* getelementptr ([0 x i8]* @.str6, i32 0, i32 0), %struct.string___XUB* @C.154.1612 )
189                         to label %invcont102 unwind label %lpad256
190
191 invcont102:             ; preds = %invcont97
192         %elt103 = getelementptr %struct.system__file_control_block__pstring* %1, i32 0, i32 0           ; <i8**> [#uses=1]
193         %val104 = load i8** %elt103, align 8            ; <i8*> [#uses=1]
194         %elt105 = getelementptr %struct.system__file_control_block__pstring* %1, i32 0, i32 1           ; <%struct.string___XUB**> [#uses=1]
195         %val106 = load %struct.string___XUB** %elt105           ; <%struct.string___XUB*> [#uses=1]
196         %17 = invoke %struct.ada__text_io__text_afcb* @ada__text_io__open( %struct.ada__text_io__text_afcb* %15, i8 0, i8* %val104, %struct.string___XUB* %val106, i8* getelementptr ([0 x i8]* @.str6, i32 0, i32 0), %struct.string___XUB* @C.153.1609 )
197                         to label %invcont111 unwind label %lpad256              ; <%struct.ada__text_io__text_afcb*> [#uses=2]
198
199 invcont111:             ; preds = %invcont102
200         %18 = getelementptr %struct.FRAME.ce3806g* %FRAME.356, i32 0, i32 0, i32 0              ; <i32*> [#uses=1]
201         %19 = load i32* %18, align 8            ; <i32> [#uses=1]
202         %20 = getelementptr %struct.FRAME.ce3806g* %FRAME.356, i32 0, i32 0, i32 1              ; <i32*> [#uses=1]
203         %21 = load i32* %20, align 4            ; <i32> [#uses=1]
204         invoke void @system__secondary_stack__ss_release( i32 %19, i32 %21 )
205                         to label %bb143 unwind label %lpad252
206
207 bb117:          ; preds = %lpad256
208         call void @__gnat_begin_handler( i8* %eh_ptr257 ) nounwind
209         %22 = load void ()** @system__soft_links__abort_undefer, align 4                ; <void ()*> [#uses=1]
210         invoke void %22( )
211                         to label %invcont119 unwind label %lpad264
212
213 invcont119:             ; preds = %bb117
214         invoke void @report__not_applicable( i8* getelementptr ([47 x i8]* @.str12, i32 0, i32 0), %struct.string___XUB* @C.156.1618 )
215                         to label %invcont124 unwind label %lpad264
216
217 invcont124:             ; preds = %invcont119
218         invoke void @__gnat_raise_exception( %struct.system__standard_library__exception_data* bitcast (%struct.exception* @incomplete.1177 to %struct.system__standard_library__exception_data*), i8* getelementptr ([14 x i8]* @.str13, i32 0, i32 0), %struct.string___XUB* @C.157.1621 ) noreturn
219                         to label %invcont129 unwind label %lpad264
220
221 invcont129:             ; preds = %invcont124
222         unreachable
223
224 bb143:          ; preds = %invcont111
225         %23 = invoke %struct.ada__text_io__text_afcb* @ada__text_io__standard_output( )
226                         to label %invcont144 unwind label %lpad252              ; <%struct.ada__text_io__text_afcb*> [#uses=1]
227
228 invcont144:             ; preds = %bb143
229         invoke void @ada__text_io__set_output( %struct.ada__text_io__text_afcb* %23 )
230                         to label %invcont145 unwind label %lpad252
231
232 invcont145:             ; preds = %invcont144
233         %24 = invoke %struct.ada__text_io__text_afcb* @ada__text_io__close( %struct.ada__text_io__text_afcb* %13 )
234                         to label %invcont146 unwind label %lpad252              ; <%struct.ada__text_io__text_afcb*> [#uses=1]
235
236 invcont146:             ; preds = %invcont145
237         invoke void @report__legal_file_name( %struct.system__file_control_block__pstring* noalias sret %0, i32 2, i8* getelementptr ([0 x i8]* @.str6, i32 0, i32 0), %struct.string___XUB* @C.160.1630 )
238                         to label %invcont151 unwind label %lpad252
239
240 invcont151:             ; preds = %invcont146
241         %elt152 = getelementptr %struct.system__file_control_block__pstring* %0, i32 0, i32 0           ; <i8**> [#uses=1]
242         %val153 = load i8** %elt152, align 8            ; <i8*> [#uses=1]
243         %elt154 = getelementptr %struct.system__file_control_block__pstring* %0, i32 0, i32 1           ; <%struct.string___XUB**> [#uses=1]
244         %val155 = load %struct.string___XUB** %elt154           ; <%struct.string___XUB*> [#uses=1]
245         %25 = invoke %struct.ada__text_io__text_afcb* @ada__text_io__open( %struct.ada__text_io__text_afcb* %24, i8 0, i8* %val153, %struct.string___XUB* %val155, i8* getelementptr ([0 x i8]* @.str6, i32 0, i32 0), %struct.string___XUB* @C.159.1627 )
246                         to label %invcont160 unwind label %lpad252              ; <%struct.ada__text_io__text_afcb*> [#uses=2]
247
248 invcont160:             ; preds = %invcont151
249         %26 = invoke fastcc i8 @ce3806g__fxio__get.1137( %struct.ada__text_io__text_afcb* %17 ) signext
250                         to label %invcont161 unwind label %lpad252              ; <i8> [#uses=1]
251
252 invcont161:             ; preds = %invcont160
253         %27 = icmp eq i8 %26, -3                ; <i1> [#uses=1]
254         br i1 %27, label %bb169, label %bb163
255
256 bb163:          ; preds = %invcont161
257         invoke void @report__failed( i8* getelementptr ([33 x i8]* @.str14, i32 0, i32 0), %struct.string___XUB* @C.162.1637 )
258                         to label %bb169 unwind label %lpad252
259
260 bb169:          ; preds = %invcont161, %bb163
261         %28 = invoke fastcc i8 @ce3806g__fxio__get.1137( %struct.ada__text_io__text_afcb* %25 ) signext
262                         to label %invcont170 unwind label %lpad252              ; <i8> [#uses=1]
263
264 invcont170:             ; preds = %bb169
265         %29 = icmp eq i8 %28, -1                ; <i1> [#uses=1]
266         br i1 %29, label %bb187, label %bb172
267
268 bb172:          ; preds = %invcont170
269         invoke void @report__failed( i8* getelementptr ([36 x i8]* @.str15, i32 0, i32 0), %struct.string___XUB* @C.164.1642 )
270                         to label %bb187 unwind label %lpad252
271
272 bb187:          ; preds = %invcont170, %bb172
273         %30 = getelementptr %struct.FRAME.ce3806g* %FRAME.356, i32 0, i32 1, i32 0              ; <i32*> [#uses=1]
274         %31 = load i32* %30, align 8            ; <i32> [#uses=1]
275         %32 = getelementptr %struct.FRAME.ce3806g* %FRAME.356, i32 0, i32 1, i32 1              ; <i32*> [#uses=1]
276         %33 = load i32* %32, align 4            ; <i32> [#uses=1]
277         invoke void @system__secondary_stack__ss_release( i32 %31, i32 %33 )
278                         to label %bb193 unwind label %lpad228
279
280 bb193:          ; preds = %bb187
281         %34 = invoke %struct.ada__text_io__text_afcb* @ada__text_io__delete( %struct.ada__text_io__text_afcb* %17 )
282                         to label %invcont194 unwind label %lpad268              ; <%struct.ada__text_io__text_afcb*> [#uses=0]
283
284 invcont194:             ; preds = %bb193
285         %35 = invoke %struct.ada__text_io__text_afcb* @ada__text_io__delete( %struct.ada__text_io__text_afcb* %25 )
286                         to label %bb221 unwind label %lpad268           ; <%struct.ada__text_io__text_afcb*> [#uses=0]
287
288 bb196:          ; preds = %lpad268
289         call void @__gnat_begin_handler( i8* %eh_ptr269 ) nounwind
290         %36 = load void ()** @system__soft_links__abort_undefer, align 4                ; <void ()*> [#uses=1]
291         invoke void %36( )
292                         to label %bb203 unwind label %lpad276
293
294 bb203:          ; preds = %bb196
295         invoke void @__gnat_end_handler( i8* %eh_ptr269 )
296                         to label %bb221 unwind label %lpad272
297
298 bb205:          ; preds = %ppad304
299         call void @__gnat_begin_handler( i8* %eh_exception.1 ) nounwind
300         %37 = load void ()** @system__soft_links__abort_undefer, align 4                ; <void ()*> [#uses=1]
301         invoke void %37( )
302                         to label %bb212 unwind label %lpad284
303
304 bb212:          ; preds = %bb205
305         invoke void @__gnat_end_handler( i8* %eh_exception.1 )
306                         to label %bb221 unwind label %lpad280
307
308 bb221:          ; preds = %invcont194, %bb212, %bb203
309         %38 = getelementptr %struct.FRAME.ce3806g* %FRAME.356, i32 0, i32 3, i32 0              ; <i32*> [#uses=1]
310         %39 = load i32* %38, align 8            ; <i32> [#uses=1]
311         %40 = getelementptr %struct.FRAME.ce3806g* %FRAME.356, i32 0, i32 3, i32 1              ; <i32*> [#uses=1]
312         %41 = load i32* %40, align 4            ; <i32> [#uses=1]
313         call void @system__secondary_stack__ss_release( i32 %39, i32 %41 )
314         call void @report__result( )
315         ret void
316
317 lpad:           ; preds = %bb
318         %eh_ptr = call i8* @llvm.eh.exception( )                ; <i8*> [#uses=2]
319         %eh_select227 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_all_others_value )           ; <i32> [#uses=0]
320         br label %ppad
321
322 lpad228:                ; preds = %bb187, %ppad294, %invcont88, %invcont87, %invcont78, %bb73, %ppad288, %invcont26, %bb11
323         %eh_ptr229 = call i8* @llvm.eh.exception( )             ; <i8*> [#uses=2]
324         %eh_select231 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr229, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @incomplete.1177, i32* @__gnat_all_others_value )           ; <i32> [#uses=1]
325         br label %ppad304
326
327 lpad232:                ; preds = %invcont17, %invcont12
328         %eh_ptr233 = call i8* @llvm.eh.exception( )             ; <i8*> [#uses=6]
329         %eh_select235 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr233, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @ada__io_exceptions__use_error, %struct.exception* @ada__io_exceptions__name_error, %struct.exception* @incomplete.1177, i32* @__gnat_all_others_value )            ; <i32> [#uses=3]
330         %eh_typeid = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @ada__io_exceptions__use_error, i32 0, i32 0) )            ; <i32> [#uses=1]
331         %42 = icmp eq i32 %eh_select235, %eh_typeid             ; <i1> [#uses=1]
332         br i1 %42, label %bb32, label %ppad291
333
334 lpad236:                ; preds = %lpad240
335         %eh_ptr237 = call i8* @llvm.eh.exception( )             ; <i8*> [#uses=2]
336         %eh_select239 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr237, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @incomplete.1177, i32* @__gnat_all_others_value )           ; <i32> [#uses=1]
337         br label %ppad288
338
339 lpad240:                ; preds = %invcont38, %invcont33, %bb32
340         %eh_ptr241 = call i8* @llvm.eh.exception( )             ; <i8*> [#uses=2]
341         %eh_select243 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr241, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @incomplete.1177, i32* @__gnat_all_others_value )           ; <i32> [#uses=1]
342         invoke void @__gnat_end_handler( i8* %eh_ptr233 )
343                         to label %ppad288 unwind label %lpad236
344
345 lpad244:                ; preds = %lpad248
346         %eh_ptr245 = call i8* @llvm.eh.exception( )             ; <i8*> [#uses=2]
347         %eh_select247 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr245, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @incomplete.1177, i32* @__gnat_all_others_value )           ; <i32> [#uses=1]
348         br label %ppad288
349
350 lpad248:                ; preds = %invcont54, %invcont49, %bb47
351         %eh_ptr249 = call i8* @llvm.eh.exception( )             ; <i8*> [#uses=2]
352         %eh_select251 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr249, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @incomplete.1177, i32* @__gnat_all_others_value )           ; <i32> [#uses=1]
353         invoke void @__gnat_end_handler( i8* %eh_ptr233 )
354                         to label %ppad288 unwind label %lpad244
355
356 lpad252:                ; preds = %bb94, %invcont89, %invcont160, %bb169, %bb172, %bb163, %invcont151, %invcont146, %invcont145, %invcont144, %bb143, %ppad295, %invcont111, %invcont96, %invcont95
357         %eh_ptr253 = call i8* @llvm.eh.exception( )             ; <i8*> [#uses=2]
358         %eh_select255 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr253, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @incomplete.1177, i32* @__gnat_all_others_value )           ; <i32> [#uses=1]
359         br label %ppad294
360
361 lpad256:                ; preds = %invcont102, %invcont97
362         %eh_ptr257 = call i8* @llvm.eh.exception( )             ; <i8*> [#uses=4]
363         %eh_select259 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr257, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @ada__io_exceptions__use_error, %struct.exception* @incomplete.1177, i32* @__gnat_all_others_value )                ; <i32> [#uses=2]
364         %eh_typeid297 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @ada__io_exceptions__use_error, i32 0, i32 0) )         ; <i32> [#uses=1]
365         %43 = icmp eq i32 %eh_select259, %eh_typeid297          ; <i1> [#uses=1]
366         br i1 %43, label %bb117, label %ppad295
367
368 lpad260:                ; preds = %lpad264
369         %eh_ptr261 = call i8* @llvm.eh.exception( )             ; <i8*> [#uses=2]
370         %eh_select263 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr261, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @incomplete.1177, i32* @__gnat_all_others_value )           ; <i32> [#uses=1]
371         br label %ppad295
372
373 lpad264:                ; preds = %invcont124, %invcont119, %bb117
374         %eh_ptr265 = call i8* @llvm.eh.exception( )             ; <i8*> [#uses=2]
375         %eh_select267 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr265, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @incomplete.1177, i32* @__gnat_all_others_value )           ; <i32> [#uses=1]
376         invoke void @__gnat_end_handler( i8* %eh_ptr257 )
377                         to label %ppad295 unwind label %lpad260
378
379 lpad268:                ; preds = %invcont194, %bb193
380         %eh_ptr269 = call i8* @llvm.eh.exception( )             ; <i8*> [#uses=5]
381         %eh_select271 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr269, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @ada__io_exceptions__use_error, %struct.exception* @incomplete.1177, i32* @__gnat_all_others_value )                ; <i32> [#uses=2]
382         %eh_typeid301 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @ada__io_exceptions__use_error, i32 0, i32 0) )         ; <i32> [#uses=1]
383         %44 = icmp eq i32 %eh_select271, %eh_typeid301          ; <i1> [#uses=1]
384         br i1 %44, label %bb196, label %ppad304
385
386 lpad272:                ; preds = %bb203, %lpad276
387         %eh_ptr273 = call i8* @llvm.eh.exception( )             ; <i8*> [#uses=2]
388         %eh_select275 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr273, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @incomplete.1177, i32* @__gnat_all_others_value )           ; <i32> [#uses=1]
389         br label %ppad304
390
391 lpad276:                ; preds = %bb196
392         %eh_ptr277 = call i8* @llvm.eh.exception( )             ; <i8*> [#uses=2]
393         %eh_select279 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr277, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @incomplete.1177, i32* @__gnat_all_others_value )           ; <i32> [#uses=1]
394         invoke void @__gnat_end_handler( i8* %eh_ptr269 )
395                         to label %ppad304 unwind label %lpad272
396
397 lpad280:                ; preds = %bb212, %lpad284
398         %eh_ptr281 = call i8* @llvm.eh.exception( )             ; <i8*> [#uses=2]
399         %eh_select283 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr281, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_all_others_value )                ; <i32> [#uses=0]
400         br label %ppad
401
402 lpad284:                ; preds = %bb205
403         %eh_ptr285 = call i8* @llvm.eh.exception( )             ; <i8*> [#uses=2]
404         %eh_select287 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr285, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_all_others_value )                ; <i32> [#uses=0]
405         invoke void @__gnat_end_handler( i8* %eh_exception.1 )
406                         to label %ppad unwind label %lpad280
407
408 ppad:           ; preds = %lpad284, %ppad304, %lpad280, %lpad
409         %eh_exception.2 = phi i8* [ %eh_exception.1, %ppad304 ], [ %eh_ptr281, %lpad280 ], [ %eh_ptr, %lpad ], [ %eh_ptr285, %lpad284 ]         ; <i8*> [#uses=1]
410         %45 = getelementptr %struct.FRAME.ce3806g* %FRAME.356, i32 0, i32 3, i32 0              ; <i32*> [#uses=1]
411         %46 = load i32* %45, align 8            ; <i32> [#uses=1]
412         %47 = getelementptr %struct.FRAME.ce3806g* %FRAME.356, i32 0, i32 3, i32 1              ; <i32*> [#uses=1]
413         %48 = load i32* %47, align 4            ; <i32> [#uses=1]
414         call void @system__secondary_stack__ss_release( i32 %46, i32 %48 )
415         %49 = call i32 (...)* @_Unwind_Resume( i8* %eh_exception.2 )            ; <i32> [#uses=0]
416         unreachable
417
418 ppad288:                ; preds = %lpad248, %lpad240, %ppad291, %lpad244, %lpad236
419         %eh_exception.0 = phi i8* [ %eh_ptr233, %ppad291 ], [ %eh_ptr245, %lpad244 ], [ %eh_ptr237, %lpad236 ], [ %eh_ptr241, %lpad240 ], [ %eh_ptr249, %lpad248 ]              ; <i8*> [#uses=1]
420         %eh_selector.0 = phi i32 [ %eh_select235, %ppad291 ], [ %eh_select247, %lpad244 ], [ %eh_select239, %lpad236 ], [ %eh_select243, %lpad240 ], [ %eh_select251, %lpad248 ]                ; <i32> [#uses=1]
421         %50 = getelementptr %struct.FRAME.ce3806g* %FRAME.356, i32 0, i32 2, i32 0              ; <i32*> [#uses=1]
422         %51 = load i32* %50, align 8            ; <i32> [#uses=1]
423         %52 = getelementptr %struct.FRAME.ce3806g* %FRAME.356, i32 0, i32 2, i32 1              ; <i32*> [#uses=1]
424         %53 = load i32* %52, align 4            ; <i32> [#uses=1]
425         invoke void @system__secondary_stack__ss_release( i32 %51, i32 %53 )
426                         to label %ppad304 unwind label %lpad228
427
428 ppad291:                ; preds = %lpad232
429         %eh_typeid292 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @ada__io_exceptions__name_error, i32 0, i32 0) )                ; <i32> [#uses=1]
430         %54 = icmp eq i32 %eh_select235, %eh_typeid292          ; <i1> [#uses=1]
431         br i1 %54, label %bb47, label %ppad288
432
433 ppad294:                ; preds = %ppad295, %lpad252
434         %eh_exception.4 = phi i8* [ %eh_ptr253, %lpad252 ], [ %eh_exception.3, %ppad295 ]               ; <i8*> [#uses=1]
435         %eh_selector.4 = phi i32 [ %eh_select255, %lpad252 ], [ %eh_selector.3, %ppad295 ]              ; <i32> [#uses=1]
436         %55 = getelementptr %struct.FRAME.ce3806g* %FRAME.356, i32 0, i32 1, i32 0              ; <i32*> [#uses=1]
437         %56 = load i32* %55, align 8            ; <i32> [#uses=1]
438         %57 = getelementptr %struct.FRAME.ce3806g* %FRAME.356, i32 0, i32 1, i32 1              ; <i32*> [#uses=1]
439         %58 = load i32* %57, align 4            ; <i32> [#uses=1]
440         invoke void @system__secondary_stack__ss_release( i32 %56, i32 %58 )
441                         to label %ppad304 unwind label %lpad228
442
443 ppad295:                ; preds = %lpad264, %lpad256, %lpad260
444         %eh_exception.3 = phi i8* [ %eh_ptr257, %lpad256 ], [ %eh_ptr261, %lpad260 ], [ %eh_ptr265, %lpad264 ]          ; <i8*> [#uses=1]
445         %eh_selector.3 = phi i32 [ %eh_select259, %lpad256 ], [ %eh_select263, %lpad260 ], [ %eh_select267, %lpad264 ]          ; <i32> [#uses=1]
446         %59 = getelementptr %struct.FRAME.ce3806g* %FRAME.356, i32 0, i32 0, i32 0              ; <i32*> [#uses=1]
447         %60 = load i32* %59, align 8            ; <i32> [#uses=1]
448         %61 = getelementptr %struct.FRAME.ce3806g* %FRAME.356, i32 0, i32 0, i32 1              ; <i32*> [#uses=1]
449         %62 = load i32* %61, align 4            ; <i32> [#uses=1]
450         invoke void @system__secondary_stack__ss_release( i32 %60, i32 %62 )
451                         to label %ppad294 unwind label %lpad252
452
453 ppad304:                ; preds = %lpad276, %ppad294, %ppad288, %lpad268, %lpad272, %lpad228
454         %eh_exception.1 = phi i8* [ %eh_ptr229, %lpad228 ], [ %eh_ptr269, %lpad268 ], [ %eh_ptr273, %lpad272 ], [ %eh_exception.0, %ppad288 ], [ %eh_exception.4, %ppad294 ], [ %eh_ptr277, %lpad276 ]          ; <i8*> [#uses=4]
455         %eh_selector.1 = phi i32 [ %eh_select231, %lpad228 ], [ %eh_select271, %lpad268 ], [ %eh_select275, %lpad272 ], [ %eh_selector.0, %ppad288 ], [ %eh_selector.4, %ppad294 ], [ %eh_select279, %lpad276 ]         ; <i32> [#uses=1]
456         %eh_typeid305 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @incomplete.1177, i32 0, i32 0) )               ; <i32> [#uses=1]
457         %63 = icmp eq i32 %eh_selector.1, %eh_typeid305         ; <i1> [#uses=1]
458         br i1 %63, label %bb205, label %ppad
459 }
460
461 define internal fastcc i8 @ce3806g__fxio__get.1137(%struct.ada__text_io__text_afcb* %file) signext {
462 entry:
463         %0 = invoke x86_fp80 @ada__text_io__float_aux__get( %struct.ada__text_io__text_afcb* %file, i32 0 )
464                         to label %invcont unwind label %lpad            ; <x86_fp80> [#uses=5]
465
466 invcont:                ; preds = %entry
467         %1 = fcmp ult x86_fp80 %0, 0xKFFFEFFFFFFFFFFFFFFFF              ; <i1> [#uses=1]
468         %2 = fcmp ugt x86_fp80 %0, 0xK7FFEFFFFFFFFFFFFFFFF              ; <i1> [#uses=1]
469         %or.cond = or i1 %1, %2         ; <i1> [#uses=1]
470         br i1 %or.cond, label %bb2, label %bb4
471
472 bb2:            ; preds = %invcont
473         invoke void @__gnat_rcheck_12( i8* getelementptr ([12 x i8]* @.str, i32 0, i32 0), i32 1 ) noreturn
474                         to label %invcont3 unwind label %lpad
475
476 invcont3:               ; preds = %bb2
477         unreachable
478
479 bb4:            ; preds = %invcont
480         %3 = fmul x86_fp80 %0, 0xK40008000000000000000          ; <x86_fp80> [#uses=1]
481         %4 = fcmp ult x86_fp80 %3, 0xKC0068000000000000000              ; <i1> [#uses=1]
482         br i1 %4, label %bb8, label %bb6
483
484 bb6:            ; preds = %bb4
485         %5 = fmul x86_fp80 %0, 0xK40008000000000000000          ; <x86_fp80> [#uses=1]
486         %6 = fcmp ugt x86_fp80 %5, 0xK4005FE00000000000000              ; <i1> [#uses=1]
487         br i1 %6, label %bb8, label %bb10
488
489 bb8:            ; preds = %bb4, %bb6
490         invoke void @__gnat_rcheck_10( i8* getelementptr ([14 x i8]* @.str1, i32 0, i32 0), i32 324 ) noreturn
491                         to label %invcont9 unwind label %lpad
492
493 invcont9:               ; preds = %bb8
494         unreachable
495
496 bb10:           ; preds = %bb6
497         %7 = fmul x86_fp80 %0, 0xK40008000000000000000          ; <x86_fp80> [#uses=3]
498         %8 = fcmp ult x86_fp80 %7, 0xK00000000000000000000              ; <i1> [#uses=1]
499         br i1 %8, label %bb13, label %bb12
500
501 bb12:           ; preds = %bb10
502         %9 = fadd x86_fp80 %7, 0xK3FFDFFFFFFFFFFFFFFFF          ; <x86_fp80> [#uses=1]
503         br label %bb14
504
505 bb13:           ; preds = %bb10
506         %10 = fsub x86_fp80 %7, 0xK3FFDFFFFFFFFFFFFFFFF         ; <x86_fp80> [#uses=1]
507         br label %bb14
508
509 bb14:           ; preds = %bb13, %bb12
510         %iftmp.339.0.in = phi x86_fp80 [ %10, %bb13 ], [ %9, %bb12 ]            ; <x86_fp80> [#uses=1]
511         %iftmp.339.0 = fptosi x86_fp80 %iftmp.339.0.in to i8            ; <i8> [#uses=3]
512         %11 = add i8 %iftmp.339.0, 20           ; <i8> [#uses=1]
513         %12 = icmp ugt i8 %11, 40               ; <i1> [#uses=1]
514         br i1 %12, label %bb16, label %bb18
515
516 bb16:           ; preds = %bb14
517         invoke void @__gnat_rcheck_12( i8* getelementptr ([14 x i8]* @.str1, i32 0, i32 0), i32 324 ) noreturn
518                         to label %invcont17 unwind label %lpad
519
520 invcont17:              ; preds = %bb16
521         unreachable
522
523 bb18:           ; preds = %bb14
524         %13 = add i8 %iftmp.339.0, 20           ; <i8> [#uses=1]
525         %14 = icmp ugt i8 %13, 40               ; <i1> [#uses=1]
526         br i1 %14, label %bb20, label %bb22
527
528 bb20:           ; preds = %bb18
529         invoke void @__gnat_rcheck_12( i8* getelementptr ([14 x i8]* @.str1, i32 0, i32 0), i32 324 ) noreturn
530                         to label %invcont21 unwind label %lpad
531
532 invcont21:              ; preds = %bb20
533         unreachable
534
535 bb22:           ; preds = %bb18
536         ret i8 %iftmp.339.0
537
538 bb23:           ; preds = %lpad
539         call void @__gnat_begin_handler( i8* %eh_ptr ) nounwind
540         %15 = load void ()** @system__soft_links__abort_undefer, align 4                ; <void ()*> [#uses=1]
541         invoke void %15( )
542                         to label %invcont24 unwind label %lpad33
543
544 invcont24:              ; preds = %bb23
545         invoke void @__gnat_raise_exception( %struct.system__standard_library__exception_data* bitcast (%struct.exception* @ada__io_exceptions__data_error to %struct.system__standard_library__exception_data*), i8* getelementptr ([47 x i8]* @.str2, i32 0, i32 0), %struct.string___XUB* @C.354.2200 ) noreturn
546                         to label %invcont27 unwind label %lpad33
547
548 invcont27:              ; preds = %invcont24
549         unreachable
550
551 lpad:           ; preds = %bb20, %bb16, %bb8, %bb2, %entry
552         %eh_ptr = call i8* @llvm.eh.exception( )                ; <i8*> [#uses=4]
553         %eh_select32 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_all_others_value )              ; <i32> [#uses=1]
554         %eh_typeid = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) )         ; <i32> [#uses=1]
555         %16 = icmp eq i32 %eh_select32, %eh_typeid              ; <i1> [#uses=1]
556         br i1 %16, label %bb23, label %Unwind
557
558 lpad33:         ; preds = %invcont24, %bb23
559         %eh_ptr34 = call i8* @llvm.eh.exception( )              ; <i8*> [#uses=2]
560         %eh_select36 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr34, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_all_others_value )          ; <i32> [#uses=0]
561         call void @__gnat_end_handler( i8* %eh_ptr )
562         br label %Unwind
563
564 Unwind:         ; preds = %lpad, %lpad33
565         %eh_exception.0 = phi i8* [ %eh_ptr, %lpad ], [ %eh_ptr34, %lpad33 ]            ; <i8*> [#uses=1]
566         %17 = call i32 (...)* @_Unwind_Resume( i8* %eh_exception.0 )            ; <i32> [#uses=0]
567         unreachable
568 }
569
570 define internal fastcc void @ce3806g__fxio__put.1149(%struct.ada__text_io__text_afcb* %file) {
571 entry:
572         %A.301 = alloca %struct.string___XUB            ; <%struct.string___XUB*> [#uses=3]
573         %A.292 = alloca %struct.string___XUB            ; <%struct.string___XUB*> [#uses=3]
574         %0 = call i8* @llvm.stacksave( )                ; <i8*> [#uses=1]
575         %1 = alloca [12 x i8]           ; <[12 x i8]*> [#uses=1]
576         %.sub = getelementptr [12 x i8]* %1, i32 0, i32 0               ; <i8*> [#uses=2]
577         %2 = getelementptr %struct.string___XUB* %A.292, i32 0, i32 0           ; <i32*> [#uses=1]
578         store i32 1, i32* %2, align 8
579         %3 = getelementptr %struct.string___XUB* %A.292, i32 0, i32 1           ; <i32*> [#uses=1]
580         store i32 12, i32* %3, align 4
581         %4 = invoke fastcc i32 @ce3806g__fxio__put__4.1215( i8* %.sub, %struct.string___XUB* %A.292, i8 signext -3 )
582                         to label %invcont unwind label %lpad            ; <i32> [#uses=1]
583
584 invcont:                ; preds = %entry
585         %5 = getelementptr %struct.string___XUB* %A.301, i32 0, i32 0           ; <i32*> [#uses=1]
586         store i32 1, i32* %5, align 8
587         %6 = getelementptr %struct.string___XUB* %A.301, i32 0, i32 1           ; <i32*> [#uses=1]
588         store i32 %4, i32* %6, align 4
589         invoke void @ada__text_io__generic_aux__put_item( %struct.ada__text_io__text_afcb* %file, i8* %.sub, %struct.string___XUB* %A.301 )
590                         to label %bb60 unwind label %lpad
591
592 bb60:           ; preds = %invcont
593         ret void
594
595 lpad:           ; preds = %entry, %invcont
596         %eh_ptr = call i8* @llvm.eh.exception( )                ; <i8*> [#uses=2]
597         %eh_select62 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_all_others_value )            ; <i32> [#uses=0]
598         call void @llvm.stackrestore( i8* %0 )
599         %7 = call i32 (...)* @_Unwind_Resume( i8* %eh_ptr )             ; <i32> [#uses=0]
600         unreachable
601 }
602
603 define internal fastcc void @ce3806g__fxio__put__2.1155() {
604 entry:
605         %A.266 = alloca %struct.string___XUB            ; <%struct.string___XUB*> [#uses=3]
606         %A.257 = alloca %struct.string___XUB            ; <%struct.string___XUB*> [#uses=3]
607         %0 = call i8* @llvm.stacksave( )                ; <i8*> [#uses=1]
608         %1 = alloca [12 x i8]           ; <[12 x i8]*> [#uses=1]
609         %.sub = getelementptr [12 x i8]* %1, i32 0, i32 0               ; <i8*> [#uses=2]
610         %2 = getelementptr %struct.string___XUB* %A.257, i32 0, i32 0           ; <i32*> [#uses=1]
611         store i32 1, i32* %2, align 8
612         %3 = getelementptr %struct.string___XUB* %A.257, i32 0, i32 1           ; <i32*> [#uses=1]
613         store i32 12, i32* %3, align 4
614         %4 = invoke fastcc i32 @ce3806g__fxio__put__4.1215( i8* %.sub, %struct.string___XUB* %A.257, i8 signext -1 )
615                         to label %invcont unwind label %lpad            ; <i32> [#uses=1]
616
617 invcont:                ; preds = %entry
618         %5 = getelementptr %struct.string___XUB* %A.266, i32 0, i32 0           ; <i32*> [#uses=1]
619         store i32 1, i32* %5, align 8
620         %6 = getelementptr %struct.string___XUB* %A.266, i32 0, i32 1           ; <i32*> [#uses=1]
621         store i32 %4, i32* %6, align 4
622         %7 = load %struct.ada__text_io__text_afcb** @ada__text_io__current_out, align 4         ; <%struct.ada__text_io__text_afcb*> [#uses=1]
623         invoke void @ada__text_io__generic_aux__put_item( %struct.ada__text_io__text_afcb* %7, i8* %.sub, %struct.string___XUB* %A.266 )
624                         to label %bb60 unwind label %lpad
625
626 bb60:           ; preds = %invcont
627         ret void
628
629 lpad:           ; preds = %entry, %invcont
630         %eh_ptr = call i8* @llvm.eh.exception( )                ; <i8*> [#uses=2]
631         %eh_select62 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_all_others_value )            ; <i32> [#uses=0]
632         call void @llvm.stackrestore( i8* %0 )
633         %8 = call i32 (...)* @_Unwind_Resume( i8* %eh_ptr )             ; <i32> [#uses=0]
634         unreachable
635 }
636
637 define internal fastcc i32 @ce3806g__fxio__put__4.1215(i8* %to.0, %struct.string___XUB* %to.1, i8 signext %item) {
638 entry:
639         %P0 = load i32 * @__gnat_all_others_value, align 4  ; <i32*> [#uses=1]
640         %P = alloca i32, i32 %P0        ; <i32*> [#uses=1]
641         call void @ext( i32* %P )
642         %to_addr = alloca %struct.system__file_control_block__pstring           ; <%struct.system__file_control_block__pstring*> [#uses=4]
643         %FRAME.358 = alloca %struct.FRAME.ce3806g__fxio__put__4         ; <%struct.FRAME.ce3806g__fxio__put__4*> [#uses=65]
644         %0 = getelementptr %struct.system__file_control_block__pstring* %to_addr, i32 0, i32 0          ; <i8**> [#uses=1]
645         store i8* %to.0, i8** %0, align 8
646         %1 = getelementptr %struct.system__file_control_block__pstring* %to_addr, i32 0, i32 1          ; <%struct.string___XUB**> [#uses=1]
647         store %struct.string___XUB* %to.1, %struct.string___XUB** %1
648         %2 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 3                ; <%struct.system__file_control_block__pstring**> [#uses=1]
649         store %struct.system__file_control_block__pstring* %to_addr, %struct.system__file_control_block__pstring** %2, align 4
650         %3 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 0                ; <i32*> [#uses=1]
651         store i32 3, i32* %3, align 8
652         %4 = getelementptr %struct.system__file_control_block__pstring* %to_addr, i32 0, i32 1          ; <%struct.string___XUB**> [#uses=1]
653         %5 = load %struct.string___XUB** %4, align 4            ; <%struct.string___XUB*> [#uses=1]
654         %6 = getelementptr %struct.string___XUB* %5, i32 0, i32 0               ; <i32*> [#uses=1]
655         %7 = load i32* %6, align 4              ; <i32> [#uses=1]
656         %8 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 2                ; <i32*> [#uses=1]
657         store i32 %7, i32* %8, align 8
658         %9 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 2                ; <i32*> [#uses=1]
659         %10 = load i32* %9, align 8             ; <i32> [#uses=1]
660         %11 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 4               ; <i32*> [#uses=1]
661         store i32 %10, i32* %11, align 8
662         %item.lobit = lshr i8 %item, 7          ; <i8> [#uses=1]
663         %12 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 6               ; <i8*> [#uses=1]
664         store i8 %item.lobit, i8* %12, align 8
665         %13 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 2               ; <i32*> [#uses=1]
666         %14 = load i32* %13, align 8            ; <i32> [#uses=1]
667         %15 = add i32 %14, -1           ; <i32> [#uses=1]
668         %16 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5               ; <i32*> [#uses=1]
669         store i32 %15, i32* %16, align 4
670         %17 = sext i8 %item to i64              ; <i64> [#uses=1]
671         %18 = call i64 @system__exn_lli__exn_long_long_integer( i64 10, i32 1 ) readnone                ; <i64> [#uses=1]
672         %19 = sub i64 0, %18            ; <i64> [#uses=1]
673         %20 = call i64 @system__exn_lli__exn_long_long_integer( i64 10, i32 0 ) readnone                ; <i64> [#uses=1]
674         %21 = mul i64 %20, -2           ; <i64> [#uses=1]
675         call fastcc void @ce3806g__fxio__put__put_scaled__4.1346( %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i64 %17, i64 %19, i64 %21, i32 0, i32 -1 )
676         %22 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5               ; <i32*> [#uses=1]
677         %23 = load i32* %22, align 4            ; <i32> [#uses=1]
678         %24 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 2               ; <i32*> [#uses=1]
679         %25 = load i32* %24, align 8            ; <i32> [#uses=1]
680         %26 = icmp slt i32 %23, %25             ; <i1> [#uses=1]
681         br i1 %26, label %bb71, label %bb72
682
683 bb71:           ; preds = %entry
684         %27 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 1               ; <i32*> [#uses=1]
685         store i32 0, i32* %27, align 4
686         br label %bb72
687
688 bb72:           ; preds = %entry, %bb102, %bb71
689         %28 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 1               ; <i32*> [#uses=1]
690         %29 = load i32* %28, align 4            ; <i32> [#uses=1]
691         %30 = icmp slt i32 %29, -1              ; <i1> [#uses=1]
692         %31 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5               ; <i32*> [#uses=1]
693         %32 = load i32* %31, align 4            ; <i32> [#uses=2]
694         br i1 %30, label %bb103, label %bb74
695
696 bb74:           ; preds = %bb72
697         %33 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 2               ; <i32*> [#uses=1]
698         %34 = load i32* %33, align 8            ; <i32> [#uses=1]
699         %35 = add i32 %34, -1           ; <i32> [#uses=1]
700         %36 = icmp eq i32 %32, %35              ; <i1> [#uses=1]
701         %37 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 1               ; <i32*> [#uses=1]
702         %38 = load i32* %37, align 4            ; <i32> [#uses=2]
703         br i1 %36, label %bb76, label %bb98
704
705 bb76:           ; preds = %bb74
706         %39 = icmp slt i32 %38, 1               ; <i1> [#uses=1]
707         br i1 %39, label %bb80, label %bb102
708
709 bb80:           ; preds = %bb76
710         %40 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 1               ; <i32*> [#uses=1]
711         %41 = load i32* %40, align 4            ; <i32> [#uses=2]
712         %42 = icmp sgt i32 %41, -1              ; <i1> [#uses=1]
713         %.op = add i32 %41, 2           ; <i32> [#uses=1]
714         %43 = select i1 %42, i32 %.op, i32 2            ; <i32> [#uses=1]
715         %44 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 6               ; <i8*> [#uses=1]
716         %45 = load i8* %44, align 8             ; <i8> [#uses=1]
717         %46 = zext i8 %45 to i32                ; <i32> [#uses=1]
718         %47 = add i32 %43, %46          ; <i32> [#uses=2]
719         %48 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 0               ; <i32*> [#uses=1]
720         %49 = load i32* %48, align 8            ; <i32> [#uses=1]
721         %50 = icmp sgt i32 %47, %49             ; <i1> [#uses=1]
722         br i1 %50, label %bb88, label %bb85
723
724 bb85:           ; preds = %bb80, %bb87
725         %j.0 = phi i32 [ %68, %bb87 ], [ %47, %bb80 ]           ; <i32> [#uses=2]
726         %51 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5               ; <i32*> [#uses=1]
727         %52 = load i32* %51, align 4            ; <i32> [#uses=1]
728         %53 = add i32 %52, 1            ; <i32> [#uses=1]
729         %54 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5               ; <i32*> [#uses=1]
730         store i32 %53, i32* %54, align 4
731         %55 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 4               ; <i32*> [#uses=1]
732         %56 = load i32* %55, align 8            ; <i32> [#uses=1]
733         %57 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 3               ; <%struct.system__file_control_block__pstring**> [#uses=1]
734         %58 = load %struct.system__file_control_block__pstring** %57, align 4           ; <%struct.system__file_control_block__pstring*> [#uses=1]
735         %59 = getelementptr %struct.system__file_control_block__pstring* %58, i32 0, i32 0              ; <i8**> [#uses=1]
736         %60 = load i8** %59, align 4            ; <i8*> [#uses=1]
737         %61 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5               ; <i32*> [#uses=1]
738         %62 = load i32* %61, align 4            ; <i32> [#uses=1]
739         %63 = sub i32 %62, %56          ; <i32> [#uses=1]
740         %64 = getelementptr i8* %60, i32 %63            ; <i8*> [#uses=1]
741         store i8 32, i8* %64, align 1
742         %65 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 0               ; <i32*> [#uses=1]
743         %66 = load i32* %65, align 8            ; <i32> [#uses=1]
744         %67 = icmp eq i32 %66, %j.0             ; <i1> [#uses=1]
745         br i1 %67, label %bb88, label %bb87
746
747 bb87:           ; preds = %bb85
748         %68 = add i32 %j.0, 1           ; <i32> [#uses=1]
749         br label %bb85
750
751 bb88:           ; preds = %bb80, %bb85
752         %69 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 6               ; <i8*> [#uses=1]
753         %70 = load i8* %69, align 8             ; <i8> [#uses=1]
754         %toBool89 = icmp eq i8 %70, 0           ; <i1> [#uses=1]
755         br i1 %toBool89, label %bb91, label %bb90
756
757 bb90:           ; preds = %bb88
758         %71 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5               ; <i32*> [#uses=1]
759         %72 = load i32* %71, align 4            ; <i32> [#uses=1]
760         %73 = add i32 %72, 1            ; <i32> [#uses=1]
761         %74 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5               ; <i32*> [#uses=1]
762         store i32 %73, i32* %74, align 4
763         %75 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 4               ; <i32*> [#uses=1]
764         %76 = load i32* %75, align 8            ; <i32> [#uses=1]
765         %77 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 3               ; <%struct.system__file_control_block__pstring**> [#uses=1]
766         %78 = load %struct.system__file_control_block__pstring** %77, align 4           ; <%struct.system__file_control_block__pstring*> [#uses=1]
767         %79 = getelementptr %struct.system__file_control_block__pstring* %78, i32 0, i32 0              ; <i8**> [#uses=1]
768         %80 = load i8** %79, align 4            ; <i8*> [#uses=1]
769         %81 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5               ; <i32*> [#uses=1]
770         %82 = load i32* %81, align 4            ; <i32> [#uses=1]
771         %83 = sub i32 %82, %76          ; <i32> [#uses=1]
772         %84 = getelementptr i8* %80, i32 %83            ; <i8*> [#uses=1]
773         store i8 45, i8* %84, align 1
774         br label %bb91
775
776 bb91:           ; preds = %bb88, %bb90
777         %85 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 1               ; <i32*> [#uses=1]
778         %86 = load i32* %85, align 4            ; <i32> [#uses=1]
779         %87 = icmp slt i32 %86, 0               ; <i1> [#uses=1]
780         br i1 %87, label %bb93, label %bb97
781
782 bb93:           ; preds = %bb91
783         %88 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5               ; <i32*> [#uses=1]
784         %89 = load i32* %88, align 4            ; <i32> [#uses=1]
785         %90 = add i32 %89, 1            ; <i32> [#uses=1]
786         %91 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5               ; <i32*> [#uses=1]
787         store i32 %90, i32* %91, align 4
788         %92 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 4               ; <i32*> [#uses=1]
789         %93 = load i32* %92, align 8            ; <i32> [#uses=1]
790         %94 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 3               ; <%struct.system__file_control_block__pstring**> [#uses=1]
791         %95 = load %struct.system__file_control_block__pstring** %94, align 4           ; <%struct.system__file_control_block__pstring*> [#uses=1]
792         %96 = getelementptr %struct.system__file_control_block__pstring* %95, i32 0, i32 0              ; <i8**> [#uses=1]
793         %97 = load i8** %96, align 4            ; <i8*> [#uses=1]
794         %98 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5               ; <i32*> [#uses=1]
795         %99 = load i32* %98, align 4            ; <i32> [#uses=1]
796         %100 = sub i32 %99, %93         ; <i32> [#uses=1]
797         %101 = getelementptr i8* %97, i32 %100          ; <i8*> [#uses=1]
798         store i8 48, i8* %101, align 1
799         %102 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5              ; <i32*> [#uses=1]
800         %103 = load i32* %102, align 4          ; <i32> [#uses=1]
801         %104 = add i32 %103, 1          ; <i32> [#uses=1]
802         %105 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5              ; <i32*> [#uses=1]
803         store i32 %104, i32* %105, align 4
804         %106 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 4              ; <i32*> [#uses=1]
805         %107 = load i32* %106, align 8          ; <i32> [#uses=1]
806         %108 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 3              ; <%struct.system__file_control_block__pstring**> [#uses=1]
807         %109 = load %struct.system__file_control_block__pstring** %108, align 4         ; <%struct.system__file_control_block__pstring*> [#uses=1]
808         %110 = getelementptr %struct.system__file_control_block__pstring* %109, i32 0, i32 0            ; <i8**> [#uses=1]
809         %111 = load i8** %110, align 4          ; <i8*> [#uses=1]
810         %112 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5              ; <i32*> [#uses=1]
811         %113 = load i32* %112, align 4          ; <i32> [#uses=1]
812         %114 = sub i32 %113, %107               ; <i32> [#uses=1]
813         %115 = getelementptr i8* %111, i32 %114         ; <i8*> [#uses=1]
814         store i8 46, i8* %115, align 1
815         %116 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 1              ; <i32*> [#uses=1]
816         %117 = load i32* %116, align 4          ; <i32> [#uses=1]
817         br label %bb94
818
819 bb94:           ; preds = %bb96, %bb93
820         %j8.0 = phi i32 [ %117, %bb93 ], [ %133, %bb96 ]                ; <i32> [#uses=2]
821         %118 = icmp sgt i32 %j8.0, -2           ; <i1> [#uses=1]
822         br i1 %118, label %bb97, label %bb96
823
824 bb96:           ; preds = %bb94
825         %119 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5              ; <i32*> [#uses=1]
826         %120 = load i32* %119, align 4          ; <i32> [#uses=1]
827         %121 = add i32 %120, 1          ; <i32> [#uses=1]
828         %122 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5              ; <i32*> [#uses=1]
829         store i32 %121, i32* %122, align 4
830         %123 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 4              ; <i32*> [#uses=1]
831         %124 = load i32* %123, align 8          ; <i32> [#uses=1]
832         %125 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 3              ; <%struct.system__file_control_block__pstring**> [#uses=1]
833         %126 = load %struct.system__file_control_block__pstring** %125, align 4         ; <%struct.system__file_control_block__pstring*> [#uses=1]
834         %127 = getelementptr %struct.system__file_control_block__pstring* %126, i32 0, i32 0            ; <i8**> [#uses=1]
835         %128 = load i8** %127, align 4          ; <i8*> [#uses=1]
836         %129 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5              ; <i32*> [#uses=1]
837         %130 = load i32* %129, align 4          ; <i32> [#uses=1]
838         %131 = sub i32 %130, %124               ; <i32> [#uses=1]
839         %132 = getelementptr i8* %128, i32 %131         ; <i8*> [#uses=1]
840         store i8 48, i8* %132, align 1
841         %133 = add i32 %j8.0, 1         ; <i32> [#uses=1]
842         br label %bb94
843
844 bb97:           ; preds = %bb91, %bb94
845         %134 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5              ; <i32*> [#uses=1]
846         %135 = load i32* %134, align 4          ; <i32> [#uses=1]
847         %136 = add i32 %135, 1          ; <i32> [#uses=1]
848         %137 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5              ; <i32*> [#uses=1]
849         store i32 %136, i32* %137, align 4
850         %138 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 4              ; <i32*> [#uses=1]
851         %139 = load i32* %138, align 8          ; <i32> [#uses=1]
852         %140 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 3              ; <%struct.system__file_control_block__pstring**> [#uses=1]
853         %141 = load %struct.system__file_control_block__pstring** %140, align 4         ; <%struct.system__file_control_block__pstring*> [#uses=1]
854         %142 = getelementptr %struct.system__file_control_block__pstring* %141, i32 0, i32 0            ; <i8**> [#uses=1]
855         %143 = load i8** %142, align 4          ; <i8*> [#uses=1]
856         %144 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5              ; <i32*> [#uses=1]
857         %145 = load i32* %144, align 4          ; <i32> [#uses=1]
858         %146 = sub i32 %145, %139               ; <i32> [#uses=1]
859         %147 = getelementptr i8* %143, i32 %146         ; <i8*> [#uses=1]
860         store i8 48, i8* %147, align 1
861         br label %bb102
862
863 bb98:           ; preds = %bb74
864         %148 = icmp eq i32 %38, -1              ; <i1> [#uses=1]
865         br i1 %148, label %bb100, label %bb101
866
867 bb100:          ; preds = %bb98
868         %149 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5              ; <i32*> [#uses=1]
869         %150 = load i32* %149, align 4          ; <i32> [#uses=1]
870         %151 = add i32 %150, 1          ; <i32> [#uses=1]
871         %152 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5              ; <i32*> [#uses=1]
872         store i32 %151, i32* %152, align 4
873         %153 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 4              ; <i32*> [#uses=1]
874         %154 = load i32* %153, align 8          ; <i32> [#uses=1]
875         %155 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 3              ; <%struct.system__file_control_block__pstring**> [#uses=1]
876         %156 = load %struct.system__file_control_block__pstring** %155, align 4         ; <%struct.system__file_control_block__pstring*> [#uses=1]
877         %157 = getelementptr %struct.system__file_control_block__pstring* %156, i32 0, i32 0            ; <i8**> [#uses=1]
878         %158 = load i8** %157, align 4          ; <i8*> [#uses=1]
879         %159 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5              ; <i32*> [#uses=1]
880         %160 = load i32* %159, align 4          ; <i32> [#uses=1]
881         %161 = sub i32 %160, %154               ; <i32> [#uses=1]
882         %162 = getelementptr i8* %158, i32 %161         ; <i8*> [#uses=1]
883         store i8 46, i8* %162, align 1
884         br label %bb101
885
886 bb101:          ; preds = %bb98, %bb100
887         %163 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5              ; <i32*> [#uses=1]
888         %164 = load i32* %163, align 4          ; <i32> [#uses=1]
889         %165 = add i32 %164, 1          ; <i32> [#uses=1]
890         %166 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5              ; <i32*> [#uses=1]
891         store i32 %165, i32* %166, align 4
892         %167 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 4              ; <i32*> [#uses=1]
893         %168 = load i32* %167, align 8          ; <i32> [#uses=1]
894         %169 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 3              ; <%struct.system__file_control_block__pstring**> [#uses=1]
895         %170 = load %struct.system__file_control_block__pstring** %169, align 4         ; <%struct.system__file_control_block__pstring*> [#uses=1]
896         %171 = getelementptr %struct.system__file_control_block__pstring* %170, i32 0, i32 0            ; <i8**> [#uses=1]
897         %172 = load i8** %171, align 4          ; <i8*> [#uses=1]
898         %173 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5              ; <i32*> [#uses=1]
899         %174 = load i32* %173, align 4          ; <i32> [#uses=1]
900         %175 = sub i32 %174, %168               ; <i32> [#uses=1]
901         %176 = getelementptr i8* %172, i32 %175         ; <i8*> [#uses=1]
902         store i8 48, i8* %176, align 1
903         br label %bb102
904
905 bb102:          ; preds = %bb76, %bb101, %bb97
906         %177 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 1              ; <i32*> [#uses=1]
907         %178 = load i32* %177, align 4          ; <i32> [#uses=1]
908         %179 = add i32 %178, -1         ; <i32> [#uses=1]
909         %180 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 1              ; <i32*> [#uses=1]
910         store i32 %179, i32* %180, align 4
911         br label %bb72
912
913 bb103:          ; preds = %bb72
914         ret i32 %32
915 }
916
917 declare x86_fp80 @ada__text_io__float_aux__get(%struct.ada__text_io__text_afcb*, i32)
918
919 declare void @__gnat_rcheck_12(i8*, i32) noreturn
920
921 declare void @__gnat_rcheck_10(i8*, i32) noreturn
922
923 declare i8* @llvm.eh.exception() nounwind
924
925 declare i32 @llvm.eh.selector.i32(i8*, i8*, ...) nounwind
926
927 declare i32 @llvm.eh.typeid.for.i32(i8*) nounwind
928
929 declare void @__gnat_begin_handler(i8*) nounwind
930
931 declare void @__gnat_raise_exception(%struct.system__standard_library__exception_data*, i8*, %struct.string___XUB*) noreturn
932
933 declare void @__gnat_end_handler(i8*)
934
935 declare i32 @__gnat_eh_personality(...)
936
937 declare i32 @_Unwind_Resume(...)
938
939 define internal fastcc void @ce3806g__fxio__put__put_int64__4.1339(%struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i64 %x, i32 %scale) {
940 entry:
941         %0 = icmp eq i64 %x, 0          ; <i1> [#uses=1]
942         br i1 %0, label %return, label %bb
943
944 bb:             ; preds = %entry
945         %1 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 1                ; <i32*> [#uses=1]
946         store i32 %scale, i32* %1, align 4
947         %2 = add i64 %x, 9              ; <i64> [#uses=1]
948         %3 = icmp ugt i64 %2, 18                ; <i1> [#uses=1]
949         br i1 %3, label %bb18, label %bb19
950
951 bb18:           ; preds = %bb
952         %4 = add i32 %scale, 1          ; <i32> [#uses=1]
953         %5 = sdiv i64 %x, 10            ; <i64> [#uses=1]
954         call fastcc void @ce3806g__fxio__put__put_int64__4.1339( %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i64 %5, i32 %4 )
955         br label %bb19
956
957 bb19:           ; preds = %bb, %bb18
958         %6 = srem i64 %x, 10            ; <i64> [#uses=3]
959         %neg = sub i64 0, %6            ; <i64> [#uses=1]
960         %abscond = icmp sgt i64 %6, -1          ; <i1> [#uses=1]
961         %abs = select i1 %abscond, i64 %6, i64 %neg             ; <i64> [#uses=3]
962         %7 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5                ; <i32*> [#uses=1]
963         %8 = load i32* %7, align 4              ; <i32> [#uses=1]
964         %9 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 2                ; <i32*> [#uses=1]
965         %10 = load i32* %9, align 4             ; <i32> [#uses=1]
966         %11 = add i32 %10, -1           ; <i32> [#uses=1]
967         %12 = icmp eq i32 %8, %11               ; <i1> [#uses=1]
968         br i1 %12, label %bb23, label %bb44
969
970 bb23:           ; preds = %bb19
971         %13 = icmp ne i64 %abs, 0               ; <i1> [#uses=1]
972         %14 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 1               ; <i32*> [#uses=1]
973         %15 = load i32* %14, align 4            ; <i32> [#uses=1]
974         %16 = icmp slt i32 %15, 1               ; <i1> [#uses=1]
975         %17 = or i1 %13, %16            ; <i1> [#uses=1]
976         br i1 %17, label %bb27, label %bb48
977
978 bb27:           ; preds = %bb23
979         %18 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 1               ; <i32*> [#uses=1]
980         %19 = load i32* %18, align 4            ; <i32> [#uses=2]
981         %20 = icmp sgt i32 %19, -1              ; <i1> [#uses=1]
982         %.op = add i32 %19, 2           ; <i32> [#uses=1]
983         %21 = select i1 %20, i32 %.op, i32 2            ; <i32> [#uses=1]
984         %22 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 6               ; <i8*> [#uses=1]
985         %23 = load i8* %22, align 1             ; <i8> [#uses=1]
986         %24 = zext i8 %23 to i32                ; <i32> [#uses=1]
987         %25 = add i32 %21, %24          ; <i32> [#uses=2]
988         %26 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 0               ; <i32*> [#uses=1]
989         %27 = load i32* %26, align 4            ; <i32> [#uses=1]
990         %28 = icmp sgt i32 %25, %27             ; <i1> [#uses=1]
991         br i1 %28, label %bb34, label %bb31
992
993 bb31:           ; preds = %bb27, %bb33
994         %j.0 = phi i32 [ %46, %bb33 ], [ %25, %bb27 ]           ; <i32> [#uses=2]
995         %29 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5               ; <i32*> [#uses=1]
996         %30 = load i32* %29, align 4            ; <i32> [#uses=1]
997         %31 = add i32 %30, 1            ; <i32> [#uses=1]
998         %32 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5               ; <i32*> [#uses=1]
999         store i32 %31, i32* %32, align 4
1000         %33 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 4               ; <i32*> [#uses=1]
1001         %34 = load i32* %33, align 4            ; <i32> [#uses=1]
1002         %35 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 3               ; <%struct.system__file_control_block__pstring**> [#uses=1]
1003         %36 = load %struct.system__file_control_block__pstring** %35, align 4           ; <%struct.system__file_control_block__pstring*> [#uses=1]
1004         %37 = getelementptr %struct.system__file_control_block__pstring* %36, i32 0, i32 0              ; <i8**> [#uses=1]
1005         %38 = load i8** %37, align 4            ; <i8*> [#uses=1]
1006         %39 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5               ; <i32*> [#uses=1]
1007         %40 = load i32* %39, align 4            ; <i32> [#uses=1]
1008         %41 = sub i32 %40, %34          ; <i32> [#uses=1]
1009         %42 = getelementptr i8* %38, i32 %41            ; <i8*> [#uses=1]
1010         store i8 32, i8* %42, align 1
1011         %43 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 0               ; <i32*> [#uses=1]
1012         %44 = load i32* %43, align 4            ; <i32> [#uses=1]
1013         %45 = icmp eq i32 %44, %j.0             ; <i1> [#uses=1]
1014         br i1 %45, label %bb34, label %bb33
1015
1016 bb33:           ; preds = %bb31
1017         %46 = add i32 %j.0, 1           ; <i32> [#uses=1]
1018         br label %bb31
1019
1020 bb34:           ; preds = %bb27, %bb31
1021         %47 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 6               ; <i8*> [#uses=1]
1022         %48 = load i8* %47, align 1             ; <i8> [#uses=1]
1023         %toBool35 = icmp eq i8 %48, 0           ; <i1> [#uses=1]
1024         br i1 %toBool35, label %bb37, label %bb36
1025
1026 bb36:           ; preds = %bb34
1027         %49 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5               ; <i32*> [#uses=1]
1028         %50 = load i32* %49, align 4            ; <i32> [#uses=1]
1029         %51 = add i32 %50, 1            ; <i32> [#uses=1]
1030         %52 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5               ; <i32*> [#uses=1]
1031         store i32 %51, i32* %52, align 4
1032         %53 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 4               ; <i32*> [#uses=1]
1033         %54 = load i32* %53, align 4            ; <i32> [#uses=1]
1034         %55 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 3               ; <%struct.system__file_control_block__pstring**> [#uses=1]
1035         %56 = load %struct.system__file_control_block__pstring** %55, align 4           ; <%struct.system__file_control_block__pstring*> [#uses=1]
1036         %57 = getelementptr %struct.system__file_control_block__pstring* %56, i32 0, i32 0              ; <i8**> [#uses=1]
1037         %58 = load i8** %57, align 4            ; <i8*> [#uses=1]
1038         %59 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5               ; <i32*> [#uses=1]
1039         %60 = load i32* %59, align 4            ; <i32> [#uses=1]
1040         %61 = sub i32 %60, %54          ; <i32> [#uses=1]
1041         %62 = getelementptr i8* %58, i32 %61            ; <i8*> [#uses=1]
1042         store i8 45, i8* %62, align 1
1043         br label %bb37
1044
1045 bb37:           ; preds = %bb34, %bb36
1046         %63 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 1               ; <i32*> [#uses=1]
1047         %64 = load i32* %63, align 4            ; <i32> [#uses=1]
1048         %65 = icmp slt i32 %64, 0               ; <i1> [#uses=1]
1049         br i1 %65, label %bb39, label %bb43
1050
1051 bb39:           ; preds = %bb37
1052         %66 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5               ; <i32*> [#uses=1]
1053         %67 = load i32* %66, align 4            ; <i32> [#uses=1]
1054         %68 = add i32 %67, 1            ; <i32> [#uses=1]
1055         %69 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5               ; <i32*> [#uses=1]
1056         store i32 %68, i32* %69, align 4
1057         %70 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 4               ; <i32*> [#uses=1]
1058         %71 = load i32* %70, align 4            ; <i32> [#uses=1]
1059         %72 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 3               ; <%struct.system__file_control_block__pstring**> [#uses=1]
1060         %73 = load %struct.system__file_control_block__pstring** %72, align 4           ; <%struct.system__file_control_block__pstring*> [#uses=1]
1061         %74 = getelementptr %struct.system__file_control_block__pstring* %73, i32 0, i32 0              ; <i8**> [#uses=1]
1062         %75 = load i8** %74, align 4            ; <i8*> [#uses=1]
1063         %76 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5               ; <i32*> [#uses=1]
1064         %77 = load i32* %76, align 4            ; <i32> [#uses=1]
1065         %78 = sub i32 %77, %71          ; <i32> [#uses=1]
1066         %79 = getelementptr i8* %75, i32 %78            ; <i8*> [#uses=1]
1067         store i8 48, i8* %79, align 1
1068         %80 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5               ; <i32*> [#uses=1]
1069         %81 = load i32* %80, align 4            ; <i32> [#uses=1]
1070         %82 = add i32 %81, 1            ; <i32> [#uses=1]
1071         %83 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5               ; <i32*> [#uses=1]
1072         store i32 %82, i32* %83, align 4
1073         %84 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 4               ; <i32*> [#uses=1]
1074         %85 = load i32* %84, align 4            ; <i32> [#uses=1]
1075         %86 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 3               ; <%struct.system__file_control_block__pstring**> [#uses=1]
1076         %87 = load %struct.system__file_control_block__pstring** %86, align 4           ; <%struct.system__file_control_block__pstring*> [#uses=1]
1077         %88 = getelementptr %struct.system__file_control_block__pstring* %87, i32 0, i32 0              ; <i8**> [#uses=1]
1078         %89 = load i8** %88, align 4            ; <i8*> [#uses=1]
1079         %90 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5               ; <i32*> [#uses=1]
1080         %91 = load i32* %90, align 4            ; <i32> [#uses=1]
1081         %92 = sub i32 %91, %85          ; <i32> [#uses=1]
1082         %93 = getelementptr i8* %89, i32 %92            ; <i8*> [#uses=1]
1083         store i8 46, i8* %93, align 1
1084         %94 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 1               ; <i32*> [#uses=1]
1085         %95 = load i32* %94, align 4            ; <i32> [#uses=1]
1086         br label %bb40
1087
1088 bb40:           ; preds = %bb42, %bb39
1089         %j15.0 = phi i32 [ %95, %bb39 ], [ %111, %bb42 ]                ; <i32> [#uses=2]
1090         %96 = icmp sgt i32 %j15.0, -2           ; <i1> [#uses=1]
1091         br i1 %96, label %bb43, label %bb42
1092
1093 bb42:           ; preds = %bb40
1094         %97 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5               ; <i32*> [#uses=1]
1095         %98 = load i32* %97, align 4            ; <i32> [#uses=1]
1096         %99 = add i32 %98, 1            ; <i32> [#uses=1]
1097         %100 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5              ; <i32*> [#uses=1]
1098         store i32 %99, i32* %100, align 4
1099         %101 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 4              ; <i32*> [#uses=1]
1100         %102 = load i32* %101, align 4          ; <i32> [#uses=1]
1101         %103 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 3              ; <%struct.system__file_control_block__pstring**> [#uses=1]
1102         %104 = load %struct.system__file_control_block__pstring** %103, align 4         ; <%struct.system__file_control_block__pstring*> [#uses=1]
1103         %105 = getelementptr %struct.system__file_control_block__pstring* %104, i32 0, i32 0            ; <i8**> [#uses=1]
1104         %106 = load i8** %105, align 4          ; <i8*> [#uses=1]
1105         %107 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5              ; <i32*> [#uses=1]
1106         %108 = load i32* %107, align 4          ; <i32> [#uses=1]
1107         %109 = sub i32 %108, %102               ; <i32> [#uses=1]
1108         %110 = getelementptr i8* %106, i32 %109         ; <i8*> [#uses=1]
1109         store i8 48, i8* %110, align 1
1110         %111 = add i32 %j15.0, 1                ; <i32> [#uses=1]
1111         br label %bb40
1112
1113 bb43:           ; preds = %bb37, %bb40
1114         %112 = trunc i64 %abs to i32            ; <i32> [#uses=1]
1115         %113 = getelementptr [10 x i8]* @.str3, i32 0, i32 %112         ; <i8*> [#uses=1]
1116         %114 = load i8* %113, align 1           ; <i8> [#uses=1]
1117         %115 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5              ; <i32*> [#uses=1]
1118         %116 = load i32* %115, align 4          ; <i32> [#uses=1]
1119         %117 = add i32 %116, 1          ; <i32> [#uses=1]
1120         %118 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5              ; <i32*> [#uses=1]
1121         store i32 %117, i32* %118, align 4
1122         %119 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 4              ; <i32*> [#uses=1]
1123         %120 = load i32* %119, align 4          ; <i32> [#uses=1]
1124         %121 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 3              ; <%struct.system__file_control_block__pstring**> [#uses=1]
1125         %122 = load %struct.system__file_control_block__pstring** %121, align 4         ; <%struct.system__file_control_block__pstring*> [#uses=1]
1126         %123 = getelementptr %struct.system__file_control_block__pstring* %122, i32 0, i32 0            ; <i8**> [#uses=1]
1127         %124 = load i8** %123, align 4          ; <i8*> [#uses=1]
1128         %125 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5              ; <i32*> [#uses=1]
1129         %126 = load i32* %125, align 4          ; <i32> [#uses=1]
1130         %127 = sub i32 %126, %120               ; <i32> [#uses=1]
1131         %128 = getelementptr i8* %124, i32 %127         ; <i8*> [#uses=1]
1132         store i8 %114, i8* %128, align 1
1133         br label %bb48
1134
1135 bb44:           ; preds = %bb19
1136         %129 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 1              ; <i32*> [#uses=1]
1137         %130 = load i32* %129, align 4          ; <i32> [#uses=1]
1138         %131 = icmp eq i32 %130, -1             ; <i1> [#uses=1]
1139         br i1 %131, label %bb46, label %bb47
1140
1141 bb46:           ; preds = %bb44
1142         %132 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5              ; <i32*> [#uses=1]
1143         %133 = load i32* %132, align 4          ; <i32> [#uses=1]
1144         %134 = add i32 %133, 1          ; <i32> [#uses=1]
1145         %135 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5              ; <i32*> [#uses=1]
1146         store i32 %134, i32* %135, align 4
1147         %136 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 4              ; <i32*> [#uses=1]
1148         %137 = load i32* %136, align 4          ; <i32> [#uses=1]
1149         %138 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 3              ; <%struct.system__file_control_block__pstring**> [#uses=1]
1150         %139 = load %struct.system__file_control_block__pstring** %138, align 4         ; <%struct.system__file_control_block__pstring*> [#uses=1]
1151         %140 = getelementptr %struct.system__file_control_block__pstring* %139, i32 0, i32 0            ; <i8**> [#uses=1]
1152         %141 = load i8** %140, align 4          ; <i8*> [#uses=1]
1153         %142 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5              ; <i32*> [#uses=1]
1154         %143 = load i32* %142, align 4          ; <i32> [#uses=1]
1155         %144 = sub i32 %143, %137               ; <i32> [#uses=1]
1156         %145 = getelementptr i8* %141, i32 %144         ; <i8*> [#uses=1]
1157         store i8 46, i8* %145, align 1
1158         br label %bb47
1159
1160 bb47:           ; preds = %bb44, %bb46
1161         %146 = trunc i64 %abs to i32            ; <i32> [#uses=1]
1162         %147 = getelementptr [10 x i8]* @.str3, i32 0, i32 %146         ; <i8*> [#uses=1]
1163         %148 = load i8* %147, align 1           ; <i8> [#uses=1]
1164         %149 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5              ; <i32*> [#uses=1]
1165         %150 = load i32* %149, align 4          ; <i32> [#uses=1]
1166         %151 = add i32 %150, 1          ; <i32> [#uses=1]
1167         %152 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5              ; <i32*> [#uses=1]
1168         store i32 %151, i32* %152, align 4
1169         %153 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 4              ; <i32*> [#uses=1]
1170         %154 = load i32* %153, align 4          ; <i32> [#uses=1]
1171         %155 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 3              ; <%struct.system__file_control_block__pstring**> [#uses=1]
1172         %156 = load %struct.system__file_control_block__pstring** %155, align 4         ; <%struct.system__file_control_block__pstring*> [#uses=1]
1173         %157 = getelementptr %struct.system__file_control_block__pstring* %156, i32 0, i32 0            ; <i8**> [#uses=1]
1174         %158 = load i8** %157, align 4          ; <i8*> [#uses=1]
1175         %159 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5              ; <i32*> [#uses=1]
1176         %160 = load i32* %159, align 4          ; <i32> [#uses=1]
1177         %161 = sub i32 %160, %154               ; <i32> [#uses=1]
1178         %162 = getelementptr i8* %158, i32 %161         ; <i8*> [#uses=1]
1179         store i8 %148, i8* %162, align 1
1180         br label %bb48
1181
1182 bb48:           ; preds = %bb23, %bb47, %bb43
1183         %163 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 1              ; <i32*> [#uses=1]
1184         %164 = load i32* %163, align 4          ; <i32> [#uses=1]
1185         %165 = add i32 %164, -1         ; <i32> [#uses=1]
1186         %166 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 1              ; <i32*> [#uses=1]
1187         store i32 %165, i32* %166, align 4
1188         ret void
1189
1190 return:         ; preds = %entry
1191         ret void
1192 }
1193
1194 define internal fastcc void @ce3806g__fxio__put__put_scaled__4.1346(%struct.FRAME.ce3806g__fxio__put__4* %CHAIN.365, i64 %x, i64 %y, i64 %z, i32 %a, i32 %e) {
1195 entry:
1196         %0 = alloca { i64, i64 }                ; <{ i64, i64 }*> [#uses=3]
1197         %1 = call i8* @llvm.stacksave( )                ; <i8*> [#uses=1]
1198         %2 = add i32 %a, 17             ; <i32> [#uses=2]
1199         %3 = sdiv i32 %2, 18            ; <i32> [#uses=3]
1200         %4 = add i32 %3, 1              ; <i32> [#uses=7]
1201         %5 = icmp sgt i32 %4, -1                ; <i1> [#uses=1]
1202         %max53 = select i1 %5, i32 %4, i32 0            ; <i32> [#uses=1]
1203         %6 = alloca i64, i32 %max53             ; <i64*> [#uses=21]
1204         %7 = icmp sgt i32 %4, 0         ; <i1> [#uses=1]
1205         br i1 %7, label %bb55, label %bb58
1206
1207 bb55:           ; preds = %entry, %bb57
1208         %J60b.0 = phi i32 [ %11, %bb57 ], [ 1, %entry ]         ; <i32> [#uses=3]
1209         %8 = add i32 %J60b.0, -1                ; <i32> [#uses=1]
1210         %9 = getelementptr i64* %6, i32 %8              ; <i64*> [#uses=1]
1211         store i64 0, i64* %9, align 8
1212         %10 = icmp eq i32 %4, %J60b.0           ; <i1> [#uses=1]
1213         br i1 %10, label %bb58, label %bb57
1214
1215 bb57:           ; preds = %bb55
1216         %11 = add i32 %J60b.0, 1                ; <i32> [#uses=1]
1217         br label %bb55
1218
1219 bb58:           ; preds = %entry, %bb55
1220         %12 = icmp sgt i32 %4, 0                ; <i1> [#uses=1]
1221         br i1 %12, label %bb61, label %bb91
1222
1223 bb61:           ; preds = %bb58, %bb90
1224         %j2.0 = phi i32 [ %88, %bb90 ], [ 1, %bb58 ]            ; <i32> [#uses=11]
1225         %aa.0 = phi i32 [ %86, %bb90 ], [ %a, %bb58 ]           ; <i32> [#uses=6]
1226         %yy.0 = phi i64 [ %84, %bb90 ], [ %y, %bb58 ]           ; <i64> [#uses=3]
1227         %xx.0 = phi i64 [ %21, %bb90 ], [ %x, %bb58 ]           ; <i64> [#uses=2]
1228         %13 = icmp eq i64 %xx.0, 0              ; <i1> [#uses=1]
1229         br i1 %13, label %bb91, label %bb63
1230
1231 bb63:           ; preds = %bb61
1232         %14 = icmp eq i32 %aa.0, 0              ; <i1> [#uses=1]
1233         %15 = zext i1 %14 to i8         ; <i8> [#uses=1]
1234         invoke void @system__arith_64__scaled_divide( { i64, i64 }* noalias sret %0, i64 %xx.0, i64 %yy.0, i64 %z, i8 %15 )
1235                         to label %invcont unwind label %lpad
1236
1237 invcont:                ; preds = %bb63
1238         %16 = getelementptr { i64, i64 }* %0, i32 0, i32 0              ; <i64*> [#uses=1]
1239         %17 = load i64* %16, align 8            ; <i64> [#uses=1]
1240         %18 = add i32 %j2.0, -1         ; <i32> [#uses=1]
1241         %19 = getelementptr i64* %6, i32 %18            ; <i64*> [#uses=1]
1242         store i64 %17, i64* %19, align 8
1243         %20 = getelementptr { i64, i64 }* %0, i32 0, i32 1              ; <i64*> [#uses=1]
1244         %21 = load i64* %20, align 8            ; <i64> [#uses=1]
1245         %22 = add i32 %j2.0, -1         ; <i32> [#uses=1]
1246         %23 = getelementptr i64* %6, i32 %22            ; <i64*> [#uses=1]
1247         %24 = load i64* %23, align 8            ; <i64> [#uses=1]
1248         %25 = icmp eq i64 %24, %yy.0            ; <i1> [#uses=1]
1249         %26 = add i32 %j2.0, -1         ; <i32> [#uses=1]
1250         %27 = getelementptr i64* %6, i32 %26            ; <i64*> [#uses=1]
1251         %28 = load i64* %27, align 8            ; <i64> [#uses=1]
1252         %29 = sub i64 0, %28            ; <i64> [#uses=1]
1253         %30 = icmp eq i64 %yy.0, %29            ; <i1> [#uses=1]
1254         %31 = or i1 %25, %30            ; <i1> [#uses=1]
1255         %32 = icmp sgt i32 %j2.0, 1             ; <i1> [#uses=1]
1256         %or.cond = and i1 %31, %32              ; <i1> [#uses=1]
1257         br i1 %or.cond, label %bb69, label %bb83
1258
1259 bb69:           ; preds = %invcont
1260         %33 = add i32 %j2.0, -1         ; <i32> [#uses=1]
1261         %34 = getelementptr i64* %6, i32 %33            ; <i64*> [#uses=1]
1262         %35 = load i64* %34, align 8            ; <i64> [#uses=1]
1263         %36 = icmp slt i64 %35, 0               ; <i1> [#uses=1]
1264         %37 = add i32 %j2.0, -2         ; <i32> [#uses=1]
1265         %38 = getelementptr i64* %6, i32 %37            ; <i64*> [#uses=1]
1266         %39 = load i64* %38, align 8            ; <i64> [#uses=2]
1267         br i1 %36, label %bb71, label %bb72
1268
1269 bb71:           ; preds = %bb69
1270         %40 = add i64 %39, 1            ; <i64> [#uses=1]
1271         %41 = add i32 %j2.0, -2         ; <i32> [#uses=1]
1272         %42 = getelementptr i64* %6, i32 %41            ; <i64*> [#uses=1]
1273         store i64 %40, i64* %42, align 8
1274         br label %bb73
1275
1276 bb72:           ; preds = %bb69
1277         %43 = add i64 %39, -1           ; <i64> [#uses=1]
1278         %44 = add i32 %j2.0, -2         ; <i32> [#uses=1]
1279         %45 = getelementptr i64* %6, i32 %44            ; <i64*> [#uses=1]
1280         store i64 %43, i64* %45, align 8
1281         br label %bb73
1282
1283 bb73:           ; preds = %bb72, %bb71
1284         %46 = add i32 %j2.0, -1         ; <i32> [#uses=1]
1285         %47 = getelementptr i64* %6, i32 %46            ; <i64*> [#uses=1]
1286         store i64 0, i64* %47, align 8
1287         br label %bb74
1288
1289 bb74:           ; preds = %bb82, %bb73
1290         %j1.0 = phi i32 [ %4, %bb73 ], [ %81, %bb82 ]           ; <i32> [#uses=12]
1291         %48 = icmp slt i32 %j1.0, 2             ; <i1> [#uses=1]
1292         br i1 %48, label %bb83, label %bb76
1293
1294 bb76:           ; preds = %bb74
1295         %49 = add i32 %j1.0, -1         ; <i32> [#uses=1]
1296         %50 = getelementptr i64* %6, i32 %49            ; <i64*> [#uses=1]
1297         %51 = load i64* %50, align 8            ; <i64> [#uses=1]
1298         %52 = icmp sgt i64 %51, 999999999999999999              ; <i1> [#uses=1]
1299         br i1 %52, label %bb78, label %bb79
1300
1301 bb78:           ; preds = %bb76
1302         %53 = add i32 %j1.0, -2         ; <i32> [#uses=1]
1303         %54 = getelementptr i64* %6, i32 %53            ; <i64*> [#uses=1]
1304         %55 = load i64* %54, align 8            ; <i64> [#uses=1]
1305         %56 = add i64 %55, 1            ; <i64> [#uses=1]
1306         %57 = add i32 %j1.0, -2         ; <i32> [#uses=1]
1307         %58 = getelementptr i64* %6, i32 %57            ; <i64*> [#uses=1]
1308         store i64 %56, i64* %58, align 8
1309         %59 = add i32 %j1.0, -1         ; <i32> [#uses=1]
1310         %60 = getelementptr i64* %6, i32 %59            ; <i64*> [#uses=1]
1311         %61 = load i64* %60, align 8            ; <i64> [#uses=1]
1312         %62 = add i64 %61, -1000000000000000000         ; <i64> [#uses=1]
1313         %63 = add i32 %j1.0, -1         ; <i32> [#uses=1]
1314         %64 = getelementptr i64* %6, i32 %63            ; <i64*> [#uses=1]
1315         store i64 %62, i64* %64, align 8
1316         br label %bb82
1317
1318 bb79:           ; preds = %bb76
1319         %65 = add i32 %j1.0, -1         ; <i32> [#uses=1]
1320         %66 = getelementptr i64* %6, i32 %65            ; <i64*> [#uses=1]
1321         %67 = load i64* %66, align 8            ; <i64> [#uses=1]
1322         %68 = icmp slt i64 %67, -999999999999999999             ; <i1> [#uses=1]
1323         br i1 %68, label %bb81, label %bb82
1324
1325 bb81:           ; preds = %bb79
1326         %69 = add i32 %j1.0, -2         ; <i32> [#uses=1]
1327         %70 = getelementptr i64* %6, i32 %69            ; <i64*> [#uses=1]
1328         %71 = load i64* %70, align 8            ; <i64> [#uses=1]
1329         %72 = add i64 %71, -1           ; <i64> [#uses=1]
1330         %73 = add i32 %j1.0, -2         ; <i32> [#uses=1]
1331         %74 = getelementptr i64* %6, i32 %73            ; <i64*> [#uses=1]
1332         store i64 %72, i64* %74, align 8
1333         %75 = add i32 %j1.0, -1         ; <i32> [#uses=1]
1334         %76 = getelementptr i64* %6, i32 %75            ; <i64*> [#uses=1]
1335         %77 = load i64* %76, align 8            ; <i64> [#uses=1]
1336         %78 = add i64 %77, 1000000000000000000          ; <i64> [#uses=1]
1337         %79 = add i32 %j1.0, -1         ; <i32> [#uses=1]
1338         %80 = getelementptr i64* %6, i32 %79            ; <i64*> [#uses=1]
1339         store i64 %78, i64* %80, align 8
1340         br label %bb82
1341
1342 bb82:           ; preds = %bb79, %bb81, %bb78
1343         %81 = add i32 %j1.0, -1         ; <i32> [#uses=1]
1344         br label %bb74
1345
1346 bb83:           ; preds = %invcont, %bb74
1347         %82 = icmp slt i32 %aa.0, 19            ; <i1> [#uses=1]
1348         %min = select i1 %82, i32 %aa.0, i32 18         ; <i32> [#uses=1]
1349         %83 = invoke i64 @system__exn_lli__exn_long_long_integer( i64 10, i32 %min ) readnone
1350                         to label %invcont86 unwind label %lpad          ; <i64> [#uses=1]
1351
1352 invcont86:              ; preds = %bb83
1353         %84 = sub i64 0, %83            ; <i64> [#uses=1]
1354         %85 = icmp slt i32 %aa.0, 19            ; <i1> [#uses=1]
1355         %min87 = select i1 %85, i32 %aa.0, i32 18               ; <i32> [#uses=1]
1356         %86 = sub i32 %aa.0, %min87             ; <i32> [#uses=1]
1357         %87 = icmp eq i32 %4, %j2.0             ; <i1> [#uses=1]
1358         br i1 %87, label %bb91, label %bb90
1359
1360 bb90:           ; preds = %invcont86
1361         %88 = add i32 %j2.0, 1          ; <i32> [#uses=1]
1362         br label %bb61
1363
1364 bb91:           ; preds = %bb58, %bb61, %invcont86
1365         %89 = icmp slt i32 %2, 18               ; <i1> [#uses=1]
1366         br i1 %89, label %bb98, label %bb94
1367
1368 bb94:           ; preds = %bb91, %bb97
1369         %j.0 = phi i32 [ %97, %bb97 ], [ 1, %bb91 ]             ; <i32> [#uses=4]
1370         %90 = mul i32 %j.0, 18          ; <i32> [#uses=1]
1371         %91 = add i32 %90, -18          ; <i32> [#uses=1]
1372         %92 = sub i32 %e, %91           ; <i32> [#uses=1]
1373         %93 = add i32 %j.0, -1          ; <i32> [#uses=1]
1374         %94 = getelementptr i64* %6, i32 %93            ; <i64*> [#uses=1]
1375         %95 = load i64* %94, align 8            ; <i64> [#uses=1]
1376         invoke fastcc void @ce3806g__fxio__put__put_int64__4.1339( %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.365, i64 %95, i32 %92 )
1377                         to label %invcont95 unwind label %lpad
1378
1379 invcont95:              ; preds = %bb94
1380         %96 = icmp eq i32 %3, %j.0              ; <i1> [#uses=1]
1381         br i1 %96, label %bb98, label %bb97
1382
1383 bb97:           ; preds = %invcont95
1384         %97 = add i32 %j.0, 1           ; <i32> [#uses=1]
1385         br label %bb94
1386
1387 bb98:           ; preds = %bb91, %invcont95
1388         %98 = sub i32 %e, %a            ; <i32> [#uses=1]
1389         %99 = getelementptr i64* %6, i32 %3             ; <i64*> [#uses=1]
1390         %100 = load i64* %99, align 8           ; <i64> [#uses=1]
1391         invoke fastcc void @ce3806g__fxio__put__put_int64__4.1339( %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.365, i64 %100, i32 %98 )
1392                         to label %bb101 unwind label %lpad
1393
1394 bb101:          ; preds = %bb98
1395         ret void
1396
1397 lpad:           ; preds = %bb98, %bb94, %bb83, %bb63
1398         %eh_ptr = call i8* @llvm.eh.exception( )                ; <i8*> [#uses=2]
1399         %eh_select103 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_all_others_value )           ; <i32> [#uses=0]
1400         call void @llvm.stackrestore( i8* %1 )
1401         %101 = call i32 (...)* @_Unwind_Resume( i8* %eh_ptr )           ; <i32> [#uses=0]
1402         unreachable
1403 }
1404
1405 declare i8* @llvm.stacksave() nounwind
1406
1407 declare void @system__arith_64__scaled_divide({ i64, i64 }* noalias sret, i64, i64, i64, i8)
1408
1409 declare i64 @system__exn_lli__exn_long_long_integer(i64, i32) readnone
1410
1411 declare void @llvm.stackrestore(i8*) nounwind
1412
1413 declare i32 @system__img_real__set_image_real(x86_fp80, i8*, %struct.string___XUB*, i32, i32, i32, i32)
1414
1415 declare void @ada__text_io__generic_aux__put_item(%struct.ada__text_io__text_afcb*, i8*, %struct.string___XUB*)
1416
1417 declare void @report__test(i8*, %struct.string___XUB*, i8*, %struct.string___XUB*)
1418
1419 declare void @system__secondary_stack__ss_mark(%struct.string___XUB* noalias sret)
1420
1421 declare void @system__exception_table__register_exception(%struct.system__standard_library__exception_data*)
1422
1423 declare void @report__legal_file_name(%struct.system__file_control_block__pstring* noalias sret, i32, i8*, %struct.string___XUB*)
1424
1425 declare %struct.ada__text_io__text_afcb* @ada__text_io__create(%struct.ada__text_io__text_afcb*, i8, i8*, %struct.string___XUB*, i8*, %struct.string___XUB*)
1426
1427 declare void @system__secondary_stack__ss_release(i32, i32)
1428
1429 declare void @report__not_applicable(i8*, %struct.string___XUB*)
1430
1431 declare void @ada__text_io__set_output(%struct.ada__text_io__text_afcb*)
1432
1433 declare %struct.ada__text_io__text_afcb* @ada__text_io__close(%struct.ada__text_io__text_afcb*)
1434
1435 declare %struct.ada__text_io__text_afcb* @ada__text_io__open(%struct.ada__text_io__text_afcb*, i8, i8*, %struct.string___XUB*, i8*, %struct.string___XUB*)
1436
1437 declare %struct.ada__text_io__text_afcb* @ada__text_io__standard_output()
1438
1439 declare void @report__failed(i8*, %struct.string___XUB*)
1440
1441 declare void @ext(i32*)
1442
1443 declare %struct.ada__text_io__text_afcb* @ada__text_io__delete(%struct.ada__text_io__text_afcb*)
1444
1445 declare void @report__result()