llvm-6502/test/Transforms/PruneEH/2008-09-05-CGUpdate.ll
Dan Gohman ae3a0be92e Split the Add, Sub, and Mul instruction opcodes into separate
integer and floating-point opcodes, introducing
FAdd, FSub, and FMul.

For now, the AsmParser, BitcodeReader, and IRBuilder all preserve
backwards compatability, and the Core LLVM APIs preserve backwards
compatibility for IR producers. Most front-ends won't need to change
immediately.

This implements the first step of the plan outlined here:
http://nondot.org/sabre/LLVMNotes/IntegerOverflow.txt


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72897 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-04 22:49:04 +00:00

1446 lines
81 KiB
LLVM

; RUN: llvm-as < %s | opt -prune-eh -inline -print-callgraph \
; RUN: -disable-output |& \
; RUN: grep {Calls.*ce3806g__fxio__put__put_int64__4.1339} | count 2
%struct.FRAME.ce3806g = type { %struct.string___XUB, %struct.string___XUB, %struct.string___XUB, %struct.string___XUB }
%struct.FRAME.ce3806g__fxio__put__4 = type { i32, i32, i32, %struct.system__file_control_block__pstring*, i32, i32, i8 }
%struct.RETURN = type { i8, i32 }
%struct.ada__streams__root_stream_type = type { %struct.ada__tags__dispatch_table* }
%struct.ada__tags__dispatch_table = type { [1 x i32] }
%struct.ada__tags__select_specific_data = type { i32, %struct.ada__tags__select_specific_data_element }
%struct.ada__tags__select_specific_data_element = type { i32, i8 }
%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*] }
%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 }
%struct.exception = type { i8, i8, i32, i8*, i8*, i32, i8* }
%struct.long_long_float___PAD = type { x86_fp80, [1 x i32] }
%struct.string___XUB = type { i32, i32 }
%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* }
%struct.system__file_control_block__pstring = type { i8*, %struct.string___XUB* }
%struct.system__finalization_implementation__limited_record_controller = type { %struct.system__finalization_root__root_controlled, %struct.system__finalization_root__root_controlled* }
%struct.system__finalization_implementation__record_controller = type { %struct.system__finalization_implementation__limited_record_controller, i32 }
%struct.system__finalization_root__empty_root_controlled = type { %struct.ada__tags__dispatch_table* }
%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* }
%struct.system__secondary_stack__mark_id = type { i32, i32 }
%struct.system__standard_library__exception_data = type { i8, i8, i32, i32, %struct.system__standard_library__exception_data*, i32, void ()* }
@.str = internal constant [12 x i8] c"system.ads\00\00" ; <[12 x i8]*> [#uses=1]
@.str1 = internal constant [14 x i8] c"a-tifiio.adb\00\00" ; <[14 x i8]*> [#uses=1]
@system__soft_links__abort_undefer = external global void ()* ; <void ()**> [#uses=6]
@.str2 = internal constant [47 x i8] c"a-tifiio.adb:327 instantiated at ce3806g.adb:52" ; <[47 x i8]*> [#uses=1]
@C.354.2200 = internal constant %struct.string___XUB { i32 1, i32 47 } ; <%struct.string___XUB*> [#uses=1]
@ada__io_exceptions__data_error = external global %struct.exception ; <%struct.exception*> [#uses=1]
@constraint_error = external global %struct.exception ; <%struct.exception*> [#uses=2]
@__gnat_all_others_value = external constant i32 ; <i32*> [#uses=21]
@.str3 = internal constant [10 x i8] c"0123456789" ; <[10 x i8]*> [#uses=2]
@ada__text_io__current_out = external global %struct.ada__text_io__text_afcb* ; <%struct.ada__text_io__text_afcb**> [#uses=1]
@.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]
@C.131.1559 = internal constant %struct.string___XUB { i32 1, i32 126 } ; <%struct.string___XUB*> [#uses=1]
@.str5 = internal constant [7 x i8] c"CE3806G" ; <[7 x i8]*> [#uses=1]
@C.132.1562 = internal constant %struct.string___XUB { i32 1, i32 7 } ; <%struct.string___XUB*> [#uses=1]
@incompleteF.1176.b = internal global i1 false ; <i1*> [#uses=2]
@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]
@incompleteE.1174 = internal global [23 x i8] c"CE3806G.B_1.INCOMPLETE\00" ; <[23 x i8]*> [#uses=1]
@.str6 = internal constant [0 x i8] zeroinitializer ; <[0 x i8]*> [#uses=1]
@C.136.1568 = internal constant %struct.string___XUB { i32 1, i32 0 } ; <%struct.string___XUB*> [#uses=1]
@C.137.1571 = internal constant %struct.string___XUB { i32 1, i32 0 } ; <%struct.string___XUB*> [#uses=1]
@.str7 = internal constant [50 x i8] c"USE_ERROR RAISED ON TEXT CREATE WITH OUT_FILE MODE" ; <[50 x i8]*> [#uses=1]
@C.139.1577 = internal constant %struct.string___XUB { i32 1, i32 50 } ; <%struct.string___XUB*> [#uses=1]
@.str8 = internal constant [14 x i8] c"ce3806g.adb:65" ; <[14 x i8]*> [#uses=1]
@C.140.1580 = internal constant %struct.string___XUB { i32 1, i32 14 } ; <%struct.string___XUB*> [#uses=1]
@.str9 = internal constant [51 x i8] c"NAME_ERROR RAISED ON TEXT CREATE WITH OUT_FILE MODE" ; <[51 x i8]*> [#uses=1]
@C.143.1585 = internal constant %struct.string___XUB { i32 1, i32 51 } ; <%struct.string___XUB*> [#uses=1]
@.str10 = internal constant [14 x i8] c"ce3806g.adb:69" ; <[14 x i8]*> [#uses=1]
@C.144.1588 = internal constant %struct.string___XUB { i32 1, i32 14 } ; <%struct.string___XUB*> [#uses=1]
@C.146.1592 = internal constant %struct.string___XUB { i32 1, i32 0 } ; <%struct.string___XUB*> [#uses=1]
@C.147.1595 = internal constant %struct.string___XUB { i32 1, i32 0 } ; <%struct.string___XUB*> [#uses=1]
@C.153.1609 = internal constant %struct.string___XUB { i32 1, i32 0 } ; <%struct.string___XUB*> [#uses=1]
@C.154.1612 = internal constant %struct.string___XUB { i32 1, i32 0 } ; <%struct.string___XUB*> [#uses=1]
@.str12 = internal constant [47 x i8] c"USE_ERROR RAISED ON TEXT OPEN WITH IN_FILE MODE" ; <[47 x i8]*> [#uses=1]
@C.156.1618 = internal constant %struct.string___XUB { i32 1, i32 47 } ; <%struct.string___XUB*> [#uses=1]
@.str13 = internal constant [14 x i8] c"ce3806g.adb:88" ; <[14 x i8]*> [#uses=1]
@C.157.1621 = internal constant %struct.string___XUB { i32 1, i32 14 } ; <%struct.string___XUB*> [#uses=1]
@C.159.1627 = internal constant %struct.string___XUB { i32 1, i32 0 } ; <%struct.string___XUB*> [#uses=1]
@C.160.1630 = internal constant %struct.string___XUB { i32 1, i32 0 } ; <%struct.string___XUB*> [#uses=1]
@.str14 = internal constant [33 x i8] c"VALUE INCORRECT - FIXED FROM FILE" ; <[33 x i8]*> [#uses=1]
@C.162.1637 = internal constant %struct.string___XUB { i32 1, i32 33 } ; <%struct.string___XUB*> [#uses=1]
@.str15 = internal constant [36 x i8] c"VALUE INCORRECT - FIXED FROM DEFAULT" ; <[36 x i8]*> [#uses=1]
@C.164.1642 = internal constant %struct.string___XUB { i32 1, i32 36 } ; <%struct.string___XUB*> [#uses=1]
@ada__io_exceptions__use_error = external global %struct.exception ; <%struct.exception*> [#uses=4]
@ada__io_exceptions__name_error = external global %struct.exception ; <%struct.exception*> [#uses=2]
define void @_ada_ce3806g() {
entry:
%0 = alloca %struct.system__file_control_block__pstring, align 8 ; <%struct.system__file_control_block__pstring*> [#uses=3]
%1 = alloca %struct.system__file_control_block__pstring, align 8 ; <%struct.system__file_control_block__pstring*> [#uses=3]
%2 = alloca %struct.system__file_control_block__pstring, align 8 ; <%struct.system__file_control_block__pstring*> [#uses=3]
%3 = alloca %struct.system__file_control_block__pstring, align 8 ; <%struct.system__file_control_block__pstring*> [#uses=3]
%FRAME.356 = alloca %struct.FRAME.ce3806g ; <%struct.FRAME.ce3806g*> [#uses=20]
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 )
%4 = getelementptr %struct.FRAME.ce3806g* %FRAME.356, i32 0, i32 3 ; <%struct.string___XUB*> [#uses=1]
call void @system__secondary_stack__ss_mark( %struct.string___XUB* noalias sret %4 )
%.b = load i1* @incompleteF.1176.b ; <i1> [#uses=1]
br i1 %.b, label %bb11, label %bb
bb: ; preds = %entry
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*) )
to label %invcont unwind label %lpad
invcont: ; preds = %bb
store i1 true, i1* @incompleteF.1176.b
br label %bb11
bb11: ; preds = %entry, %invcont
%5 = getelementptr %struct.FRAME.ce3806g* %FRAME.356, i32 0, i32 2 ; <%struct.string___XUB*> [#uses=1]
invoke void @system__secondary_stack__ss_mark( %struct.string___XUB* noalias sret %5 )
to label %invcont12 unwind label %lpad228
invcont12: ; preds = %bb11
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 )
to label %invcont17 unwind label %lpad232
invcont17: ; preds = %invcont12
%elt18 = getelementptr %struct.system__file_control_block__pstring* %3, i32 0, i32 0 ; <i8**> [#uses=1]
%val19 = load i8** %elt18, align 8 ; <i8*> [#uses=1]
%elt20 = getelementptr %struct.system__file_control_block__pstring* %3, i32 0, i32 1 ; <%struct.string___XUB**> [#uses=1]
%val21 = load %struct.string___XUB** %elt20 ; <%struct.string___XUB*> [#uses=1]
%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 )
to label %invcont26 unwind label %lpad232 ; <%struct.ada__text_io__text_afcb*> [#uses=2]
invcont26: ; preds = %invcont17
%7 = getelementptr %struct.FRAME.ce3806g* %FRAME.356, i32 0, i32 2, i32 0 ; <i32*> [#uses=1]
%8 = load i32* %7, align 8 ; <i32> [#uses=1]
%9 = getelementptr %struct.FRAME.ce3806g* %FRAME.356, i32 0, i32 2, i32 1 ; <i32*> [#uses=1]
%10 = load i32* %9, align 4 ; <i32> [#uses=1]
invoke void @system__secondary_stack__ss_release( i32 %8, i32 %10 )
to label %bb73 unwind label %lpad228
bb32: ; preds = %lpad232
call void @__gnat_begin_handler( i8* %eh_ptr233 ) nounwind
%11 = load void ()** @system__soft_links__abort_undefer, align 4 ; <void ()*> [#uses=1]
invoke void %11( )
to label %invcont33 unwind label %lpad240
invcont33: ; preds = %bb32
invoke void @report__not_applicable( i8* getelementptr ([50 x i8]* @.str7, i32 0, i32 0), %struct.string___XUB* @C.139.1577 )
to label %invcont38 unwind label %lpad240
invcont38: ; preds = %invcont33
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
to label %invcont43 unwind label %lpad240
invcont43: ; preds = %invcont38
unreachable
bb47: ; preds = %ppad291
call void @__gnat_begin_handler( i8* %eh_ptr233 ) nounwind
%12 = load void ()** @system__soft_links__abort_undefer, align 4 ; <void ()*> [#uses=1]
invoke void %12( )
to label %invcont49 unwind label %lpad248
invcont49: ; preds = %bb47
invoke void @report__not_applicable( i8* getelementptr ([51 x i8]* @.str9, i32 0, i32 0), %struct.string___XUB* @C.143.1585 )
to label %invcont54 unwind label %lpad248
invcont54: ; preds = %invcont49
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
to label %invcont59 unwind label %lpad248
invcont59: ; preds = %invcont54
unreachable
bb73: ; preds = %invcont26
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 )
to label %invcont78 unwind label %lpad228
invcont78: ; preds = %bb73
%elt79 = getelementptr %struct.system__file_control_block__pstring* %2, i32 0, i32 0 ; <i8**> [#uses=1]
%val80 = load i8** %elt79, align 8 ; <i8*> [#uses=1]
%elt81 = getelementptr %struct.system__file_control_block__pstring* %2, i32 0, i32 1 ; <%struct.string___XUB**> [#uses=1]
%val82 = load %struct.string___XUB** %elt81 ; <%struct.string___XUB*> [#uses=1]
%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 )
to label %invcont87 unwind label %lpad228 ; <%struct.ada__text_io__text_afcb*> [#uses=2]
invcont87: ; preds = %invcont78
invoke void @ada__text_io__set_output( %struct.ada__text_io__text_afcb* %13 )
to label %invcont88 unwind label %lpad228
invcont88: ; preds = %invcont87
%14 = getelementptr %struct.FRAME.ce3806g* %FRAME.356, i32 0, i32 1 ; <%struct.string___XUB*> [#uses=1]
invoke void @system__secondary_stack__ss_mark( %struct.string___XUB* noalias sret %14 )
to label %invcont89 unwind label %lpad228
invcont89: ; preds = %invcont88
invoke fastcc void @ce3806g__fxio__put.1149( %struct.ada__text_io__text_afcb* %6 )
to label %bb94 unwind label %lpad252
bb94: ; preds = %invcont89
invoke fastcc void @ce3806g__fxio__put__2.1155( )
to label %invcont95 unwind label %lpad252
invcont95: ; preds = %bb94
%15 = invoke %struct.ada__text_io__text_afcb* @ada__text_io__close( %struct.ada__text_io__text_afcb* %6 )
to label %invcont96 unwind label %lpad252 ; <%struct.ada__text_io__text_afcb*> [#uses=1]
invcont96: ; preds = %invcont95
%16 = getelementptr %struct.FRAME.ce3806g* %FRAME.356, i32 0, i32 0 ; <%struct.string___XUB*> [#uses=1]
invoke void @system__secondary_stack__ss_mark( %struct.string___XUB* noalias sret %16 )
to label %invcont97 unwind label %lpad252
invcont97: ; preds = %invcont96
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 )
to label %invcont102 unwind label %lpad256
invcont102: ; preds = %invcont97
%elt103 = getelementptr %struct.system__file_control_block__pstring* %1, i32 0, i32 0 ; <i8**> [#uses=1]
%val104 = load i8** %elt103, align 8 ; <i8*> [#uses=1]
%elt105 = getelementptr %struct.system__file_control_block__pstring* %1, i32 0, i32 1 ; <%struct.string___XUB**> [#uses=1]
%val106 = load %struct.string___XUB** %elt105 ; <%struct.string___XUB*> [#uses=1]
%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 )
to label %invcont111 unwind label %lpad256 ; <%struct.ada__text_io__text_afcb*> [#uses=2]
invcont111: ; preds = %invcont102
%18 = getelementptr %struct.FRAME.ce3806g* %FRAME.356, i32 0, i32 0, i32 0 ; <i32*> [#uses=1]
%19 = load i32* %18, align 8 ; <i32> [#uses=1]
%20 = getelementptr %struct.FRAME.ce3806g* %FRAME.356, i32 0, i32 0, i32 1 ; <i32*> [#uses=1]
%21 = load i32* %20, align 4 ; <i32> [#uses=1]
invoke void @system__secondary_stack__ss_release( i32 %19, i32 %21 )
to label %bb143 unwind label %lpad252
bb117: ; preds = %lpad256
call void @__gnat_begin_handler( i8* %eh_ptr257 ) nounwind
%22 = load void ()** @system__soft_links__abort_undefer, align 4 ; <void ()*> [#uses=1]
invoke void %22( )
to label %invcont119 unwind label %lpad264
invcont119: ; preds = %bb117
invoke void @report__not_applicable( i8* getelementptr ([47 x i8]* @.str12, i32 0, i32 0), %struct.string___XUB* @C.156.1618 )
to label %invcont124 unwind label %lpad264
invcont124: ; preds = %invcont119
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
to label %invcont129 unwind label %lpad264
invcont129: ; preds = %invcont124
unreachable
bb143: ; preds = %invcont111
%23 = invoke %struct.ada__text_io__text_afcb* @ada__text_io__standard_output( )
to label %invcont144 unwind label %lpad252 ; <%struct.ada__text_io__text_afcb*> [#uses=1]
invcont144: ; preds = %bb143
invoke void @ada__text_io__set_output( %struct.ada__text_io__text_afcb* %23 )
to label %invcont145 unwind label %lpad252
invcont145: ; preds = %invcont144
%24 = invoke %struct.ada__text_io__text_afcb* @ada__text_io__close( %struct.ada__text_io__text_afcb* %13 )
to label %invcont146 unwind label %lpad252 ; <%struct.ada__text_io__text_afcb*> [#uses=1]
invcont146: ; preds = %invcont145
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 )
to label %invcont151 unwind label %lpad252
invcont151: ; preds = %invcont146
%elt152 = getelementptr %struct.system__file_control_block__pstring* %0, i32 0, i32 0 ; <i8**> [#uses=1]
%val153 = load i8** %elt152, align 8 ; <i8*> [#uses=1]
%elt154 = getelementptr %struct.system__file_control_block__pstring* %0, i32 0, i32 1 ; <%struct.string___XUB**> [#uses=1]
%val155 = load %struct.string___XUB** %elt154 ; <%struct.string___XUB*> [#uses=1]
%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 )
to label %invcont160 unwind label %lpad252 ; <%struct.ada__text_io__text_afcb*> [#uses=2]
invcont160: ; preds = %invcont151
%26 = invoke fastcc i8 @ce3806g__fxio__get.1137( %struct.ada__text_io__text_afcb* %17 ) signext
to label %invcont161 unwind label %lpad252 ; <i8> [#uses=1]
invcont161: ; preds = %invcont160
%27 = icmp eq i8 %26, -3 ; <i1> [#uses=1]
br i1 %27, label %bb169, label %bb163
bb163: ; preds = %invcont161
invoke void @report__failed( i8* getelementptr ([33 x i8]* @.str14, i32 0, i32 0), %struct.string___XUB* @C.162.1637 )
to label %bb169 unwind label %lpad252
bb169: ; preds = %invcont161, %bb163
%28 = invoke fastcc i8 @ce3806g__fxio__get.1137( %struct.ada__text_io__text_afcb* %25 ) signext
to label %invcont170 unwind label %lpad252 ; <i8> [#uses=1]
invcont170: ; preds = %bb169
%29 = icmp eq i8 %28, -1 ; <i1> [#uses=1]
br i1 %29, label %bb187, label %bb172
bb172: ; preds = %invcont170
invoke void @report__failed( i8* getelementptr ([36 x i8]* @.str15, i32 0, i32 0), %struct.string___XUB* @C.164.1642 )
to label %bb187 unwind label %lpad252
bb187: ; preds = %invcont170, %bb172
%30 = getelementptr %struct.FRAME.ce3806g* %FRAME.356, i32 0, i32 1, i32 0 ; <i32*> [#uses=1]
%31 = load i32* %30, align 8 ; <i32> [#uses=1]
%32 = getelementptr %struct.FRAME.ce3806g* %FRAME.356, i32 0, i32 1, i32 1 ; <i32*> [#uses=1]
%33 = load i32* %32, align 4 ; <i32> [#uses=1]
invoke void @system__secondary_stack__ss_release( i32 %31, i32 %33 )
to label %bb193 unwind label %lpad228
bb193: ; preds = %bb187
%34 = invoke %struct.ada__text_io__text_afcb* @ada__text_io__delete( %struct.ada__text_io__text_afcb* %17 )
to label %invcont194 unwind label %lpad268 ; <%struct.ada__text_io__text_afcb*> [#uses=0]
invcont194: ; preds = %bb193
%35 = invoke %struct.ada__text_io__text_afcb* @ada__text_io__delete( %struct.ada__text_io__text_afcb* %25 )
to label %bb221 unwind label %lpad268 ; <%struct.ada__text_io__text_afcb*> [#uses=0]
bb196: ; preds = %lpad268
call void @__gnat_begin_handler( i8* %eh_ptr269 ) nounwind
%36 = load void ()** @system__soft_links__abort_undefer, align 4 ; <void ()*> [#uses=1]
invoke void %36( )
to label %bb203 unwind label %lpad276
bb203: ; preds = %bb196
invoke void @__gnat_end_handler( i8* %eh_ptr269 )
to label %bb221 unwind label %lpad272
bb205: ; preds = %ppad304
call void @__gnat_begin_handler( i8* %eh_exception.1 ) nounwind
%37 = load void ()** @system__soft_links__abort_undefer, align 4 ; <void ()*> [#uses=1]
invoke void %37( )
to label %bb212 unwind label %lpad284
bb212: ; preds = %bb205
invoke void @__gnat_end_handler( i8* %eh_exception.1 )
to label %bb221 unwind label %lpad280
bb221: ; preds = %invcont194, %bb212, %bb203
%38 = getelementptr %struct.FRAME.ce3806g* %FRAME.356, i32 0, i32 3, i32 0 ; <i32*> [#uses=1]
%39 = load i32* %38, align 8 ; <i32> [#uses=1]
%40 = getelementptr %struct.FRAME.ce3806g* %FRAME.356, i32 0, i32 3, i32 1 ; <i32*> [#uses=1]
%41 = load i32* %40, align 4 ; <i32> [#uses=1]
call void @system__secondary_stack__ss_release( i32 %39, i32 %41 )
call void @report__result( )
ret void
lpad: ; preds = %bb
%eh_ptr = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=2]
%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]
br label %ppad
lpad228: ; preds = %bb187, %ppad294, %invcont88, %invcont87, %invcont78, %bb73, %ppad288, %invcont26, %bb11
%eh_ptr229 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=2]
%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]
br label %ppad304
lpad232: ; preds = %invcont17, %invcont12
%eh_ptr233 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=6]
%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]
%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]
%42 = icmp eq i32 %eh_select235, %eh_typeid ; <i1> [#uses=1]
br i1 %42, label %bb32, label %ppad291
lpad236: ; preds = %lpad240
%eh_ptr237 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=2]
%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]
br label %ppad288
lpad240: ; preds = %invcont38, %invcont33, %bb32
%eh_ptr241 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=2]
%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]
invoke void @__gnat_end_handler( i8* %eh_ptr233 )
to label %ppad288 unwind label %lpad236
lpad244: ; preds = %lpad248
%eh_ptr245 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=2]
%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]
br label %ppad288
lpad248: ; preds = %invcont54, %invcont49, %bb47
%eh_ptr249 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=2]
%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]
invoke void @__gnat_end_handler( i8* %eh_ptr233 )
to label %ppad288 unwind label %lpad244
lpad252: ; preds = %bb94, %invcont89, %invcont160, %bb169, %bb172, %bb163, %invcont151, %invcont146, %invcont145, %invcont144, %bb143, %ppad295, %invcont111, %invcont96, %invcont95
%eh_ptr253 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=2]
%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]
br label %ppad294
lpad256: ; preds = %invcont102, %invcont97
%eh_ptr257 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=4]
%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]
%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]
%43 = icmp eq i32 %eh_select259, %eh_typeid297 ; <i1> [#uses=1]
br i1 %43, label %bb117, label %ppad295
lpad260: ; preds = %lpad264
%eh_ptr261 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=2]
%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]
br label %ppad295
lpad264: ; preds = %invcont124, %invcont119, %bb117
%eh_ptr265 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=2]
%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]
invoke void @__gnat_end_handler( i8* %eh_ptr257 )
to label %ppad295 unwind label %lpad260
lpad268: ; preds = %invcont194, %bb193
%eh_ptr269 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=5]
%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]
%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]
%44 = icmp eq i32 %eh_select271, %eh_typeid301 ; <i1> [#uses=1]
br i1 %44, label %bb196, label %ppad304
lpad272: ; preds = %bb203, %lpad276
%eh_ptr273 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=2]
%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]
br label %ppad304
lpad276: ; preds = %bb196
%eh_ptr277 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=2]
%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]
invoke void @__gnat_end_handler( i8* %eh_ptr269 )
to label %ppad304 unwind label %lpad272
lpad280: ; preds = %bb212, %lpad284
%eh_ptr281 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=2]
%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]
br label %ppad
lpad284: ; preds = %bb205
%eh_ptr285 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=2]
%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]
invoke void @__gnat_end_handler( i8* %eh_exception.1 )
to label %ppad unwind label %lpad280
ppad: ; preds = %lpad284, %ppad304, %lpad280, %lpad
%eh_exception.2 = phi i8* [ %eh_exception.1, %ppad304 ], [ %eh_ptr281, %lpad280 ], [ %eh_ptr, %lpad ], [ %eh_ptr285, %lpad284 ] ; <i8*> [#uses=1]
%45 = getelementptr %struct.FRAME.ce3806g* %FRAME.356, i32 0, i32 3, i32 0 ; <i32*> [#uses=1]
%46 = load i32* %45, align 8 ; <i32> [#uses=1]
%47 = getelementptr %struct.FRAME.ce3806g* %FRAME.356, i32 0, i32 3, i32 1 ; <i32*> [#uses=1]
%48 = load i32* %47, align 4 ; <i32> [#uses=1]
call void @system__secondary_stack__ss_release( i32 %46, i32 %48 )
%49 = call i32 (...)* @_Unwind_Resume( i8* %eh_exception.2 ) ; <i32> [#uses=0]
unreachable
ppad288: ; preds = %lpad248, %lpad240, %ppad291, %lpad244, %lpad236
%eh_exception.0 = phi i8* [ %eh_ptr233, %ppad291 ], [ %eh_ptr245, %lpad244 ], [ %eh_ptr237, %lpad236 ], [ %eh_ptr241, %lpad240 ], [ %eh_ptr249, %lpad248 ] ; <i8*> [#uses=1]
%eh_selector.0 = phi i32 [ %eh_select235, %ppad291 ], [ %eh_select247, %lpad244 ], [ %eh_select239, %lpad236 ], [ %eh_select243, %lpad240 ], [ %eh_select251, %lpad248 ] ; <i32> [#uses=1]
%50 = getelementptr %struct.FRAME.ce3806g* %FRAME.356, i32 0, i32 2, i32 0 ; <i32*> [#uses=1]
%51 = load i32* %50, align 8 ; <i32> [#uses=1]
%52 = getelementptr %struct.FRAME.ce3806g* %FRAME.356, i32 0, i32 2, i32 1 ; <i32*> [#uses=1]
%53 = load i32* %52, align 4 ; <i32> [#uses=1]
invoke void @system__secondary_stack__ss_release( i32 %51, i32 %53 )
to label %ppad304 unwind label %lpad228
ppad291: ; preds = %lpad232
%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]
%54 = icmp eq i32 %eh_select235, %eh_typeid292 ; <i1> [#uses=1]
br i1 %54, label %bb47, label %ppad288
ppad294: ; preds = %ppad295, %lpad252
%eh_exception.4 = phi i8* [ %eh_ptr253, %lpad252 ], [ %eh_exception.3, %ppad295 ] ; <i8*> [#uses=1]
%eh_selector.4 = phi i32 [ %eh_select255, %lpad252 ], [ %eh_selector.3, %ppad295 ] ; <i32> [#uses=1]
%55 = getelementptr %struct.FRAME.ce3806g* %FRAME.356, i32 0, i32 1, i32 0 ; <i32*> [#uses=1]
%56 = load i32* %55, align 8 ; <i32> [#uses=1]
%57 = getelementptr %struct.FRAME.ce3806g* %FRAME.356, i32 0, i32 1, i32 1 ; <i32*> [#uses=1]
%58 = load i32* %57, align 4 ; <i32> [#uses=1]
invoke void @system__secondary_stack__ss_release( i32 %56, i32 %58 )
to label %ppad304 unwind label %lpad228
ppad295: ; preds = %lpad264, %lpad256, %lpad260
%eh_exception.3 = phi i8* [ %eh_ptr257, %lpad256 ], [ %eh_ptr261, %lpad260 ], [ %eh_ptr265, %lpad264 ] ; <i8*> [#uses=1]
%eh_selector.3 = phi i32 [ %eh_select259, %lpad256 ], [ %eh_select263, %lpad260 ], [ %eh_select267, %lpad264 ] ; <i32> [#uses=1]
%59 = getelementptr %struct.FRAME.ce3806g* %FRAME.356, i32 0, i32 0, i32 0 ; <i32*> [#uses=1]
%60 = load i32* %59, align 8 ; <i32> [#uses=1]
%61 = getelementptr %struct.FRAME.ce3806g* %FRAME.356, i32 0, i32 0, i32 1 ; <i32*> [#uses=1]
%62 = load i32* %61, align 4 ; <i32> [#uses=1]
invoke void @system__secondary_stack__ss_release( i32 %60, i32 %62 )
to label %ppad294 unwind label %lpad252
ppad304: ; preds = %lpad276, %ppad294, %ppad288, %lpad268, %lpad272, %lpad228
%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]
%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]
%eh_typeid305 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @incomplete.1177, i32 0, i32 0) ) ; <i32> [#uses=1]
%63 = icmp eq i32 %eh_selector.1, %eh_typeid305 ; <i1> [#uses=1]
br i1 %63, label %bb205, label %ppad
}
define internal fastcc i8 @ce3806g__fxio__get.1137(%struct.ada__text_io__text_afcb* %file) signext {
entry:
%0 = invoke x86_fp80 @ada__text_io__float_aux__get( %struct.ada__text_io__text_afcb* %file, i32 0 )
to label %invcont unwind label %lpad ; <x86_fp80> [#uses=5]
invcont: ; preds = %entry
%1 = fcmp ult x86_fp80 %0, 0xKFFFEFFFFFFFFFFFFFFFF ; <i1> [#uses=1]
%2 = fcmp ugt x86_fp80 %0, 0xK7FFEFFFFFFFFFFFFFFFF ; <i1> [#uses=1]
%or.cond = or i1 %1, %2 ; <i1> [#uses=1]
br i1 %or.cond, label %bb2, label %bb4
bb2: ; preds = %invcont
invoke void @__gnat_rcheck_12( i8* getelementptr ([12 x i8]* @.str, i32 0, i32 0), i32 1 ) noreturn
to label %invcont3 unwind label %lpad
invcont3: ; preds = %bb2
unreachable
bb4: ; preds = %invcont
%3 = fmul x86_fp80 %0, 0xK40008000000000000000 ; <x86_fp80> [#uses=1]
%4 = fcmp ult x86_fp80 %3, 0xKC0068000000000000000 ; <i1> [#uses=1]
br i1 %4, label %bb8, label %bb6
bb6: ; preds = %bb4
%5 = fmul x86_fp80 %0, 0xK40008000000000000000 ; <x86_fp80> [#uses=1]
%6 = fcmp ugt x86_fp80 %5, 0xK4005FE00000000000000 ; <i1> [#uses=1]
br i1 %6, label %bb8, label %bb10
bb8: ; preds = %bb4, %bb6
invoke void @__gnat_rcheck_10( i8* getelementptr ([14 x i8]* @.str1, i32 0, i32 0), i32 324 ) noreturn
to label %invcont9 unwind label %lpad
invcont9: ; preds = %bb8
unreachable
bb10: ; preds = %bb6
%7 = fmul x86_fp80 %0, 0xK40008000000000000000 ; <x86_fp80> [#uses=3]
%8 = fcmp ult x86_fp80 %7, 0xK00000000000000000000 ; <i1> [#uses=1]
br i1 %8, label %bb13, label %bb12
bb12: ; preds = %bb10
%9 = fadd x86_fp80 %7, 0xK3FFDFFFFFFFFFFFFFFFF ; <x86_fp80> [#uses=1]
br label %bb14
bb13: ; preds = %bb10
%10 = fsub x86_fp80 %7, 0xK3FFDFFFFFFFFFFFFFFFF ; <x86_fp80> [#uses=1]
br label %bb14
bb14: ; preds = %bb13, %bb12
%iftmp.339.0.in = phi x86_fp80 [ %10, %bb13 ], [ %9, %bb12 ] ; <x86_fp80> [#uses=1]
%iftmp.339.0 = fptosi x86_fp80 %iftmp.339.0.in to i8 ; <i8> [#uses=3]
%11 = add i8 %iftmp.339.0, 20 ; <i8> [#uses=1]
%12 = icmp ugt i8 %11, 40 ; <i1> [#uses=1]
br i1 %12, label %bb16, label %bb18
bb16: ; preds = %bb14
invoke void @__gnat_rcheck_12( i8* getelementptr ([14 x i8]* @.str1, i32 0, i32 0), i32 324 ) noreturn
to label %invcont17 unwind label %lpad
invcont17: ; preds = %bb16
unreachable
bb18: ; preds = %bb14
%13 = add i8 %iftmp.339.0, 20 ; <i8> [#uses=1]
%14 = icmp ugt i8 %13, 40 ; <i1> [#uses=1]
br i1 %14, label %bb20, label %bb22
bb20: ; preds = %bb18
invoke void @__gnat_rcheck_12( i8* getelementptr ([14 x i8]* @.str1, i32 0, i32 0), i32 324 ) noreturn
to label %invcont21 unwind label %lpad
invcont21: ; preds = %bb20
unreachable
bb22: ; preds = %bb18
ret i8 %iftmp.339.0
bb23: ; preds = %lpad
call void @__gnat_begin_handler( i8* %eh_ptr ) nounwind
%15 = load void ()** @system__soft_links__abort_undefer, align 4 ; <void ()*> [#uses=1]
invoke void %15( )
to label %invcont24 unwind label %lpad33
invcont24: ; preds = %bb23
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
to label %invcont27 unwind label %lpad33
invcont27: ; preds = %invcont24
unreachable
lpad: ; preds = %bb20, %bb16, %bb8, %bb2, %entry
%eh_ptr = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=4]
%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]
%eh_typeid = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; <i32> [#uses=1]
%16 = icmp eq i32 %eh_select32, %eh_typeid ; <i1> [#uses=1]
br i1 %16, label %bb23, label %Unwind
lpad33: ; preds = %invcont24, %bb23
%eh_ptr34 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=2]
%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]
call void @__gnat_end_handler( i8* %eh_ptr )
br label %Unwind
Unwind: ; preds = %lpad, %lpad33
%eh_exception.0 = phi i8* [ %eh_ptr, %lpad ], [ %eh_ptr34, %lpad33 ] ; <i8*> [#uses=1]
%17 = call i32 (...)* @_Unwind_Resume( i8* %eh_exception.0 ) ; <i32> [#uses=0]
unreachable
}
define internal fastcc void @ce3806g__fxio__put.1149(%struct.ada__text_io__text_afcb* %file) {
entry:
%A.301 = alloca %struct.string___XUB ; <%struct.string___XUB*> [#uses=3]
%A.292 = alloca %struct.string___XUB ; <%struct.string___XUB*> [#uses=3]
%0 = call i8* @llvm.stacksave( ) ; <i8*> [#uses=1]
%1 = alloca [12 x i8] ; <[12 x i8]*> [#uses=1]
%.sub = getelementptr [12 x i8]* %1, i32 0, i32 0 ; <i8*> [#uses=2]
%2 = getelementptr %struct.string___XUB* %A.292, i32 0, i32 0 ; <i32*> [#uses=1]
store i32 1, i32* %2, align 8
%3 = getelementptr %struct.string___XUB* %A.292, i32 0, i32 1 ; <i32*> [#uses=1]
store i32 12, i32* %3, align 4
%4 = invoke fastcc i32 @ce3806g__fxio__put__4.1215( i8* %.sub, %struct.string___XUB* %A.292, i8 signext -3 )
to label %invcont unwind label %lpad ; <i32> [#uses=1]
invcont: ; preds = %entry
%5 = getelementptr %struct.string___XUB* %A.301, i32 0, i32 0 ; <i32*> [#uses=1]
store i32 1, i32* %5, align 8
%6 = getelementptr %struct.string___XUB* %A.301, i32 0, i32 1 ; <i32*> [#uses=1]
store i32 %4, i32* %6, align 4
invoke void @ada__text_io__generic_aux__put_item( %struct.ada__text_io__text_afcb* %file, i8* %.sub, %struct.string___XUB* %A.301 )
to label %bb60 unwind label %lpad
bb60: ; preds = %invcont
ret void
lpad: ; preds = %entry, %invcont
%eh_ptr = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=2]
%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]
call void @llvm.stackrestore( i8* %0 )
%7 = call i32 (...)* @_Unwind_Resume( i8* %eh_ptr ) ; <i32> [#uses=0]
unreachable
}
define internal fastcc void @ce3806g__fxio__put__2.1155() {
entry:
%A.266 = alloca %struct.string___XUB ; <%struct.string___XUB*> [#uses=3]
%A.257 = alloca %struct.string___XUB ; <%struct.string___XUB*> [#uses=3]
%0 = call i8* @llvm.stacksave( ) ; <i8*> [#uses=1]
%1 = alloca [12 x i8] ; <[12 x i8]*> [#uses=1]
%.sub = getelementptr [12 x i8]* %1, i32 0, i32 0 ; <i8*> [#uses=2]
%2 = getelementptr %struct.string___XUB* %A.257, i32 0, i32 0 ; <i32*> [#uses=1]
store i32 1, i32* %2, align 8
%3 = getelementptr %struct.string___XUB* %A.257, i32 0, i32 1 ; <i32*> [#uses=1]
store i32 12, i32* %3, align 4
%4 = invoke fastcc i32 @ce3806g__fxio__put__4.1215( i8* %.sub, %struct.string___XUB* %A.257, i8 signext -1 )
to label %invcont unwind label %lpad ; <i32> [#uses=1]
invcont: ; preds = %entry
%5 = getelementptr %struct.string___XUB* %A.266, i32 0, i32 0 ; <i32*> [#uses=1]
store i32 1, i32* %5, align 8
%6 = getelementptr %struct.string___XUB* %A.266, i32 0, i32 1 ; <i32*> [#uses=1]
store i32 %4, i32* %6, align 4
%7 = load %struct.ada__text_io__text_afcb** @ada__text_io__current_out, align 4 ; <%struct.ada__text_io__text_afcb*> [#uses=1]
invoke void @ada__text_io__generic_aux__put_item( %struct.ada__text_io__text_afcb* %7, i8* %.sub, %struct.string___XUB* %A.266 )
to label %bb60 unwind label %lpad
bb60: ; preds = %invcont
ret void
lpad: ; preds = %entry, %invcont
%eh_ptr = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=2]
%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]
call void @llvm.stackrestore( i8* %0 )
%8 = call i32 (...)* @_Unwind_Resume( i8* %eh_ptr ) ; <i32> [#uses=0]
unreachable
}
define internal fastcc i32 @ce3806g__fxio__put__4.1215(i8* %to.0, %struct.string___XUB* %to.1, i8 signext %item) {
entry:
%P0 = load i32 * @__gnat_all_others_value, align 4 ; <i32*> [#uses=1]
%P = alloca i32, i32 %P0 ; <i32*> [#uses=1]
call void @ext( i32* %P )
%to_addr = alloca %struct.system__file_control_block__pstring ; <%struct.system__file_control_block__pstring*> [#uses=4]
%FRAME.358 = alloca %struct.FRAME.ce3806g__fxio__put__4 ; <%struct.FRAME.ce3806g__fxio__put__4*> [#uses=65]
%0 = getelementptr %struct.system__file_control_block__pstring* %to_addr, i32 0, i32 0 ; <i8**> [#uses=1]
store i8* %to.0, i8** %0, align 8
%1 = getelementptr %struct.system__file_control_block__pstring* %to_addr, i32 0, i32 1 ; <%struct.string___XUB**> [#uses=1]
store %struct.string___XUB* %to.1, %struct.string___XUB** %1
%2 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 3 ; <%struct.system__file_control_block__pstring**> [#uses=1]
store %struct.system__file_control_block__pstring* %to_addr, %struct.system__file_control_block__pstring** %2, align 4
%3 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 0 ; <i32*> [#uses=1]
store i32 3, i32* %3, align 8
%4 = getelementptr %struct.system__file_control_block__pstring* %to_addr, i32 0, i32 1 ; <%struct.string___XUB**> [#uses=1]
%5 = load %struct.string___XUB** %4, align 4 ; <%struct.string___XUB*> [#uses=1]
%6 = getelementptr %struct.string___XUB* %5, i32 0, i32 0 ; <i32*> [#uses=1]
%7 = load i32* %6, align 4 ; <i32> [#uses=1]
%8 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 2 ; <i32*> [#uses=1]
store i32 %7, i32* %8, align 8
%9 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 2 ; <i32*> [#uses=1]
%10 = load i32* %9, align 8 ; <i32> [#uses=1]
%11 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 4 ; <i32*> [#uses=1]
store i32 %10, i32* %11, align 8
%item.lobit = lshr i8 %item, 7 ; <i8> [#uses=1]
%12 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 6 ; <i8*> [#uses=1]
store i8 %item.lobit, i8* %12, align 8
%13 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 2 ; <i32*> [#uses=1]
%14 = load i32* %13, align 8 ; <i32> [#uses=1]
%15 = add i32 %14, -1 ; <i32> [#uses=1]
%16 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5 ; <i32*> [#uses=1]
store i32 %15, i32* %16, align 4
%17 = sext i8 %item to i64 ; <i64> [#uses=1]
%18 = call i64 @system__exn_lli__exn_long_long_integer( i64 10, i32 1 ) readnone ; <i64> [#uses=1]
%19 = sub i64 0, %18 ; <i64> [#uses=1]
%20 = call i64 @system__exn_lli__exn_long_long_integer( i64 10, i32 0 ) readnone ; <i64> [#uses=1]
%21 = mul i64 %20, -2 ; <i64> [#uses=1]
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 )
%22 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5 ; <i32*> [#uses=1]
%23 = load i32* %22, align 4 ; <i32> [#uses=1]
%24 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 2 ; <i32*> [#uses=1]
%25 = load i32* %24, align 8 ; <i32> [#uses=1]
%26 = icmp slt i32 %23, %25 ; <i1> [#uses=1]
br i1 %26, label %bb71, label %bb72
bb71: ; preds = %entry
%27 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 1 ; <i32*> [#uses=1]
store i32 0, i32* %27, align 4
br label %bb72
bb72: ; preds = %entry, %bb102, %bb71
%28 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 1 ; <i32*> [#uses=1]
%29 = load i32* %28, align 4 ; <i32> [#uses=1]
%30 = icmp slt i32 %29, -1 ; <i1> [#uses=1]
%31 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5 ; <i32*> [#uses=1]
%32 = load i32* %31, align 4 ; <i32> [#uses=2]
br i1 %30, label %bb103, label %bb74
bb74: ; preds = %bb72
%33 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 2 ; <i32*> [#uses=1]
%34 = load i32* %33, align 8 ; <i32> [#uses=1]
%35 = add i32 %34, -1 ; <i32> [#uses=1]
%36 = icmp eq i32 %32, %35 ; <i1> [#uses=1]
%37 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 1 ; <i32*> [#uses=1]
%38 = load i32* %37, align 4 ; <i32> [#uses=2]
br i1 %36, label %bb76, label %bb98
bb76: ; preds = %bb74
%39 = icmp slt i32 %38, 1 ; <i1> [#uses=1]
br i1 %39, label %bb80, label %bb102
bb80: ; preds = %bb76
%40 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 1 ; <i32*> [#uses=1]
%41 = load i32* %40, align 4 ; <i32> [#uses=2]
%42 = icmp sgt i32 %41, -1 ; <i1> [#uses=1]
%.op = add i32 %41, 2 ; <i32> [#uses=1]
%43 = select i1 %42, i32 %.op, i32 2 ; <i32> [#uses=1]
%44 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 6 ; <i8*> [#uses=1]
%45 = load i8* %44, align 8 ; <i8> [#uses=1]
%46 = zext i8 %45 to i32 ; <i32> [#uses=1]
%47 = add i32 %43, %46 ; <i32> [#uses=2]
%48 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 0 ; <i32*> [#uses=1]
%49 = load i32* %48, align 8 ; <i32> [#uses=1]
%50 = icmp sgt i32 %47, %49 ; <i1> [#uses=1]
br i1 %50, label %bb88, label %bb85
bb85: ; preds = %bb80, %bb87
%j.0 = phi i32 [ %68, %bb87 ], [ %47, %bb80 ] ; <i32> [#uses=2]
%51 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5 ; <i32*> [#uses=1]
%52 = load i32* %51, align 4 ; <i32> [#uses=1]
%53 = add i32 %52, 1 ; <i32> [#uses=1]
%54 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5 ; <i32*> [#uses=1]
store i32 %53, i32* %54, align 4
%55 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 4 ; <i32*> [#uses=1]
%56 = load i32* %55, align 8 ; <i32> [#uses=1]
%57 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 3 ; <%struct.system__file_control_block__pstring**> [#uses=1]
%58 = load %struct.system__file_control_block__pstring** %57, align 4 ; <%struct.system__file_control_block__pstring*> [#uses=1]
%59 = getelementptr %struct.system__file_control_block__pstring* %58, i32 0, i32 0 ; <i8**> [#uses=1]
%60 = load i8** %59, align 4 ; <i8*> [#uses=1]
%61 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5 ; <i32*> [#uses=1]
%62 = load i32* %61, align 4 ; <i32> [#uses=1]
%63 = sub i32 %62, %56 ; <i32> [#uses=1]
%64 = getelementptr i8* %60, i32 %63 ; <i8*> [#uses=1]
store i8 32, i8* %64, align 1
%65 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 0 ; <i32*> [#uses=1]
%66 = load i32* %65, align 8 ; <i32> [#uses=1]
%67 = icmp eq i32 %66, %j.0 ; <i1> [#uses=1]
br i1 %67, label %bb88, label %bb87
bb87: ; preds = %bb85
%68 = add i32 %j.0, 1 ; <i32> [#uses=1]
br label %bb85
bb88: ; preds = %bb80, %bb85
%69 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 6 ; <i8*> [#uses=1]
%70 = load i8* %69, align 8 ; <i8> [#uses=1]
%toBool89 = icmp eq i8 %70, 0 ; <i1> [#uses=1]
br i1 %toBool89, label %bb91, label %bb90
bb90: ; preds = %bb88
%71 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5 ; <i32*> [#uses=1]
%72 = load i32* %71, align 4 ; <i32> [#uses=1]
%73 = add i32 %72, 1 ; <i32> [#uses=1]
%74 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5 ; <i32*> [#uses=1]
store i32 %73, i32* %74, align 4
%75 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 4 ; <i32*> [#uses=1]
%76 = load i32* %75, align 8 ; <i32> [#uses=1]
%77 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 3 ; <%struct.system__file_control_block__pstring**> [#uses=1]
%78 = load %struct.system__file_control_block__pstring** %77, align 4 ; <%struct.system__file_control_block__pstring*> [#uses=1]
%79 = getelementptr %struct.system__file_control_block__pstring* %78, i32 0, i32 0 ; <i8**> [#uses=1]
%80 = load i8** %79, align 4 ; <i8*> [#uses=1]
%81 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5 ; <i32*> [#uses=1]
%82 = load i32* %81, align 4 ; <i32> [#uses=1]
%83 = sub i32 %82, %76 ; <i32> [#uses=1]
%84 = getelementptr i8* %80, i32 %83 ; <i8*> [#uses=1]
store i8 45, i8* %84, align 1
br label %bb91
bb91: ; preds = %bb88, %bb90
%85 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 1 ; <i32*> [#uses=1]
%86 = load i32* %85, align 4 ; <i32> [#uses=1]
%87 = icmp slt i32 %86, 0 ; <i1> [#uses=1]
br i1 %87, label %bb93, label %bb97
bb93: ; preds = %bb91
%88 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5 ; <i32*> [#uses=1]
%89 = load i32* %88, align 4 ; <i32> [#uses=1]
%90 = add i32 %89, 1 ; <i32> [#uses=1]
%91 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5 ; <i32*> [#uses=1]
store i32 %90, i32* %91, align 4
%92 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 4 ; <i32*> [#uses=1]
%93 = load i32* %92, align 8 ; <i32> [#uses=1]
%94 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 3 ; <%struct.system__file_control_block__pstring**> [#uses=1]
%95 = load %struct.system__file_control_block__pstring** %94, align 4 ; <%struct.system__file_control_block__pstring*> [#uses=1]
%96 = getelementptr %struct.system__file_control_block__pstring* %95, i32 0, i32 0 ; <i8**> [#uses=1]
%97 = load i8** %96, align 4 ; <i8*> [#uses=1]
%98 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5 ; <i32*> [#uses=1]
%99 = load i32* %98, align 4 ; <i32> [#uses=1]
%100 = sub i32 %99, %93 ; <i32> [#uses=1]
%101 = getelementptr i8* %97, i32 %100 ; <i8*> [#uses=1]
store i8 48, i8* %101, align 1
%102 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5 ; <i32*> [#uses=1]
%103 = load i32* %102, align 4 ; <i32> [#uses=1]
%104 = add i32 %103, 1 ; <i32> [#uses=1]
%105 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5 ; <i32*> [#uses=1]
store i32 %104, i32* %105, align 4
%106 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 4 ; <i32*> [#uses=1]
%107 = load i32* %106, align 8 ; <i32> [#uses=1]
%108 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 3 ; <%struct.system__file_control_block__pstring**> [#uses=1]
%109 = load %struct.system__file_control_block__pstring** %108, align 4 ; <%struct.system__file_control_block__pstring*> [#uses=1]
%110 = getelementptr %struct.system__file_control_block__pstring* %109, i32 0, i32 0 ; <i8**> [#uses=1]
%111 = load i8** %110, align 4 ; <i8*> [#uses=1]
%112 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5 ; <i32*> [#uses=1]
%113 = load i32* %112, align 4 ; <i32> [#uses=1]
%114 = sub i32 %113, %107 ; <i32> [#uses=1]
%115 = getelementptr i8* %111, i32 %114 ; <i8*> [#uses=1]
store i8 46, i8* %115, align 1
%116 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 1 ; <i32*> [#uses=1]
%117 = load i32* %116, align 4 ; <i32> [#uses=1]
br label %bb94
bb94: ; preds = %bb96, %bb93
%j8.0 = phi i32 [ %117, %bb93 ], [ %133, %bb96 ] ; <i32> [#uses=2]
%118 = icmp sgt i32 %j8.0, -2 ; <i1> [#uses=1]
br i1 %118, label %bb97, label %bb96
bb96: ; preds = %bb94
%119 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5 ; <i32*> [#uses=1]
%120 = load i32* %119, align 4 ; <i32> [#uses=1]
%121 = add i32 %120, 1 ; <i32> [#uses=1]
%122 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5 ; <i32*> [#uses=1]
store i32 %121, i32* %122, align 4
%123 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 4 ; <i32*> [#uses=1]
%124 = load i32* %123, align 8 ; <i32> [#uses=1]
%125 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 3 ; <%struct.system__file_control_block__pstring**> [#uses=1]
%126 = load %struct.system__file_control_block__pstring** %125, align 4 ; <%struct.system__file_control_block__pstring*> [#uses=1]
%127 = getelementptr %struct.system__file_control_block__pstring* %126, i32 0, i32 0 ; <i8**> [#uses=1]
%128 = load i8** %127, align 4 ; <i8*> [#uses=1]
%129 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5 ; <i32*> [#uses=1]
%130 = load i32* %129, align 4 ; <i32> [#uses=1]
%131 = sub i32 %130, %124 ; <i32> [#uses=1]
%132 = getelementptr i8* %128, i32 %131 ; <i8*> [#uses=1]
store i8 48, i8* %132, align 1
%133 = add i32 %j8.0, 1 ; <i32> [#uses=1]
br label %bb94
bb97: ; preds = %bb91, %bb94
%134 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5 ; <i32*> [#uses=1]
%135 = load i32* %134, align 4 ; <i32> [#uses=1]
%136 = add i32 %135, 1 ; <i32> [#uses=1]
%137 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5 ; <i32*> [#uses=1]
store i32 %136, i32* %137, align 4
%138 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 4 ; <i32*> [#uses=1]
%139 = load i32* %138, align 8 ; <i32> [#uses=1]
%140 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 3 ; <%struct.system__file_control_block__pstring**> [#uses=1]
%141 = load %struct.system__file_control_block__pstring** %140, align 4 ; <%struct.system__file_control_block__pstring*> [#uses=1]
%142 = getelementptr %struct.system__file_control_block__pstring* %141, i32 0, i32 0 ; <i8**> [#uses=1]
%143 = load i8** %142, align 4 ; <i8*> [#uses=1]
%144 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5 ; <i32*> [#uses=1]
%145 = load i32* %144, align 4 ; <i32> [#uses=1]
%146 = sub i32 %145, %139 ; <i32> [#uses=1]
%147 = getelementptr i8* %143, i32 %146 ; <i8*> [#uses=1]
store i8 48, i8* %147, align 1
br label %bb102
bb98: ; preds = %bb74
%148 = icmp eq i32 %38, -1 ; <i1> [#uses=1]
br i1 %148, label %bb100, label %bb101
bb100: ; preds = %bb98
%149 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5 ; <i32*> [#uses=1]
%150 = load i32* %149, align 4 ; <i32> [#uses=1]
%151 = add i32 %150, 1 ; <i32> [#uses=1]
%152 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5 ; <i32*> [#uses=1]
store i32 %151, i32* %152, align 4
%153 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 4 ; <i32*> [#uses=1]
%154 = load i32* %153, align 8 ; <i32> [#uses=1]
%155 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 3 ; <%struct.system__file_control_block__pstring**> [#uses=1]
%156 = load %struct.system__file_control_block__pstring** %155, align 4 ; <%struct.system__file_control_block__pstring*> [#uses=1]
%157 = getelementptr %struct.system__file_control_block__pstring* %156, i32 0, i32 0 ; <i8**> [#uses=1]
%158 = load i8** %157, align 4 ; <i8*> [#uses=1]
%159 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5 ; <i32*> [#uses=1]
%160 = load i32* %159, align 4 ; <i32> [#uses=1]
%161 = sub i32 %160, %154 ; <i32> [#uses=1]
%162 = getelementptr i8* %158, i32 %161 ; <i8*> [#uses=1]
store i8 46, i8* %162, align 1
br label %bb101
bb101: ; preds = %bb98, %bb100
%163 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5 ; <i32*> [#uses=1]
%164 = load i32* %163, align 4 ; <i32> [#uses=1]
%165 = add i32 %164, 1 ; <i32> [#uses=1]
%166 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5 ; <i32*> [#uses=1]
store i32 %165, i32* %166, align 4
%167 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 4 ; <i32*> [#uses=1]
%168 = load i32* %167, align 8 ; <i32> [#uses=1]
%169 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 3 ; <%struct.system__file_control_block__pstring**> [#uses=1]
%170 = load %struct.system__file_control_block__pstring** %169, align 4 ; <%struct.system__file_control_block__pstring*> [#uses=1]
%171 = getelementptr %struct.system__file_control_block__pstring* %170, i32 0, i32 0 ; <i8**> [#uses=1]
%172 = load i8** %171, align 4 ; <i8*> [#uses=1]
%173 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 5 ; <i32*> [#uses=1]
%174 = load i32* %173, align 4 ; <i32> [#uses=1]
%175 = sub i32 %174, %168 ; <i32> [#uses=1]
%176 = getelementptr i8* %172, i32 %175 ; <i8*> [#uses=1]
store i8 48, i8* %176, align 1
br label %bb102
bb102: ; preds = %bb76, %bb101, %bb97
%177 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 1 ; <i32*> [#uses=1]
%178 = load i32* %177, align 4 ; <i32> [#uses=1]
%179 = add i32 %178, -1 ; <i32> [#uses=1]
%180 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %FRAME.358, i32 0, i32 1 ; <i32*> [#uses=1]
store i32 %179, i32* %180, align 4
br label %bb72
bb103: ; preds = %bb72
ret i32 %32
}
declare x86_fp80 @ada__text_io__float_aux__get(%struct.ada__text_io__text_afcb*, i32)
declare void @__gnat_rcheck_12(i8*, i32) noreturn
declare void @__gnat_rcheck_10(i8*, i32) noreturn
declare i8* @llvm.eh.exception() nounwind
declare i32 @llvm.eh.selector.i32(i8*, i8*, ...) nounwind
declare i32 @llvm.eh.typeid.for.i32(i8*) nounwind
declare void @__gnat_begin_handler(i8*) nounwind
declare void @__gnat_raise_exception(%struct.system__standard_library__exception_data*, i8*, %struct.string___XUB*) noreturn
declare void @__gnat_end_handler(i8*)
declare i32 @__gnat_eh_personality(...)
declare i32 @_Unwind_Resume(...)
define internal fastcc void @ce3806g__fxio__put__put_int64__4.1339(%struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i64 %x, i32 %scale) {
entry:
%0 = icmp eq i64 %x, 0 ; <i1> [#uses=1]
br i1 %0, label %return, label %bb
bb: ; preds = %entry
%1 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 1 ; <i32*> [#uses=1]
store i32 %scale, i32* %1, align 4
%2 = add i64 %x, 9 ; <i64> [#uses=1]
%3 = icmp ugt i64 %2, 18 ; <i1> [#uses=1]
br i1 %3, label %bb18, label %bb19
bb18: ; preds = %bb
%4 = add i32 %scale, 1 ; <i32> [#uses=1]
%5 = sdiv i64 %x, 10 ; <i64> [#uses=1]
call fastcc void @ce3806g__fxio__put__put_int64__4.1339( %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i64 %5, i32 %4 )
br label %bb19
bb19: ; preds = %bb, %bb18
%6 = srem i64 %x, 10 ; <i64> [#uses=3]
%neg = sub i64 0, %6 ; <i64> [#uses=1]
%abscond = icmp sgt i64 %6, -1 ; <i1> [#uses=1]
%abs = select i1 %abscond, i64 %6, i64 %neg ; <i64> [#uses=3]
%7 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5 ; <i32*> [#uses=1]
%8 = load i32* %7, align 4 ; <i32> [#uses=1]
%9 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 2 ; <i32*> [#uses=1]
%10 = load i32* %9, align 4 ; <i32> [#uses=1]
%11 = add i32 %10, -1 ; <i32> [#uses=1]
%12 = icmp eq i32 %8, %11 ; <i1> [#uses=1]
br i1 %12, label %bb23, label %bb44
bb23: ; preds = %bb19
%13 = icmp ne i64 %abs, 0 ; <i1> [#uses=1]
%14 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 1 ; <i32*> [#uses=1]
%15 = load i32* %14, align 4 ; <i32> [#uses=1]
%16 = icmp slt i32 %15, 1 ; <i1> [#uses=1]
%17 = or i1 %13, %16 ; <i1> [#uses=1]
br i1 %17, label %bb27, label %bb48
bb27: ; preds = %bb23
%18 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 1 ; <i32*> [#uses=1]
%19 = load i32* %18, align 4 ; <i32> [#uses=2]
%20 = icmp sgt i32 %19, -1 ; <i1> [#uses=1]
%.op = add i32 %19, 2 ; <i32> [#uses=1]
%21 = select i1 %20, i32 %.op, i32 2 ; <i32> [#uses=1]
%22 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 6 ; <i8*> [#uses=1]
%23 = load i8* %22, align 1 ; <i8> [#uses=1]
%24 = zext i8 %23 to i32 ; <i32> [#uses=1]
%25 = add i32 %21, %24 ; <i32> [#uses=2]
%26 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 0 ; <i32*> [#uses=1]
%27 = load i32* %26, align 4 ; <i32> [#uses=1]
%28 = icmp sgt i32 %25, %27 ; <i1> [#uses=1]
br i1 %28, label %bb34, label %bb31
bb31: ; preds = %bb27, %bb33
%j.0 = phi i32 [ %46, %bb33 ], [ %25, %bb27 ] ; <i32> [#uses=2]
%29 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5 ; <i32*> [#uses=1]
%30 = load i32* %29, align 4 ; <i32> [#uses=1]
%31 = add i32 %30, 1 ; <i32> [#uses=1]
%32 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5 ; <i32*> [#uses=1]
store i32 %31, i32* %32, align 4
%33 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 4 ; <i32*> [#uses=1]
%34 = load i32* %33, align 4 ; <i32> [#uses=1]
%35 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 3 ; <%struct.system__file_control_block__pstring**> [#uses=1]
%36 = load %struct.system__file_control_block__pstring** %35, align 4 ; <%struct.system__file_control_block__pstring*> [#uses=1]
%37 = getelementptr %struct.system__file_control_block__pstring* %36, i32 0, i32 0 ; <i8**> [#uses=1]
%38 = load i8** %37, align 4 ; <i8*> [#uses=1]
%39 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5 ; <i32*> [#uses=1]
%40 = load i32* %39, align 4 ; <i32> [#uses=1]
%41 = sub i32 %40, %34 ; <i32> [#uses=1]
%42 = getelementptr i8* %38, i32 %41 ; <i8*> [#uses=1]
store i8 32, i8* %42, align 1
%43 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 0 ; <i32*> [#uses=1]
%44 = load i32* %43, align 4 ; <i32> [#uses=1]
%45 = icmp eq i32 %44, %j.0 ; <i1> [#uses=1]
br i1 %45, label %bb34, label %bb33
bb33: ; preds = %bb31
%46 = add i32 %j.0, 1 ; <i32> [#uses=1]
br label %bb31
bb34: ; preds = %bb27, %bb31
%47 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 6 ; <i8*> [#uses=1]
%48 = load i8* %47, align 1 ; <i8> [#uses=1]
%toBool35 = icmp eq i8 %48, 0 ; <i1> [#uses=1]
br i1 %toBool35, label %bb37, label %bb36
bb36: ; preds = %bb34
%49 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5 ; <i32*> [#uses=1]
%50 = load i32* %49, align 4 ; <i32> [#uses=1]
%51 = add i32 %50, 1 ; <i32> [#uses=1]
%52 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5 ; <i32*> [#uses=1]
store i32 %51, i32* %52, align 4
%53 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 4 ; <i32*> [#uses=1]
%54 = load i32* %53, align 4 ; <i32> [#uses=1]
%55 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 3 ; <%struct.system__file_control_block__pstring**> [#uses=1]
%56 = load %struct.system__file_control_block__pstring** %55, align 4 ; <%struct.system__file_control_block__pstring*> [#uses=1]
%57 = getelementptr %struct.system__file_control_block__pstring* %56, i32 0, i32 0 ; <i8**> [#uses=1]
%58 = load i8** %57, align 4 ; <i8*> [#uses=1]
%59 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5 ; <i32*> [#uses=1]
%60 = load i32* %59, align 4 ; <i32> [#uses=1]
%61 = sub i32 %60, %54 ; <i32> [#uses=1]
%62 = getelementptr i8* %58, i32 %61 ; <i8*> [#uses=1]
store i8 45, i8* %62, align 1
br label %bb37
bb37: ; preds = %bb34, %bb36
%63 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 1 ; <i32*> [#uses=1]
%64 = load i32* %63, align 4 ; <i32> [#uses=1]
%65 = icmp slt i32 %64, 0 ; <i1> [#uses=1]
br i1 %65, label %bb39, label %bb43
bb39: ; preds = %bb37
%66 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5 ; <i32*> [#uses=1]
%67 = load i32* %66, align 4 ; <i32> [#uses=1]
%68 = add i32 %67, 1 ; <i32> [#uses=1]
%69 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5 ; <i32*> [#uses=1]
store i32 %68, i32* %69, align 4
%70 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 4 ; <i32*> [#uses=1]
%71 = load i32* %70, align 4 ; <i32> [#uses=1]
%72 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 3 ; <%struct.system__file_control_block__pstring**> [#uses=1]
%73 = load %struct.system__file_control_block__pstring** %72, align 4 ; <%struct.system__file_control_block__pstring*> [#uses=1]
%74 = getelementptr %struct.system__file_control_block__pstring* %73, i32 0, i32 0 ; <i8**> [#uses=1]
%75 = load i8** %74, align 4 ; <i8*> [#uses=1]
%76 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5 ; <i32*> [#uses=1]
%77 = load i32* %76, align 4 ; <i32> [#uses=1]
%78 = sub i32 %77, %71 ; <i32> [#uses=1]
%79 = getelementptr i8* %75, i32 %78 ; <i8*> [#uses=1]
store i8 48, i8* %79, align 1
%80 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5 ; <i32*> [#uses=1]
%81 = load i32* %80, align 4 ; <i32> [#uses=1]
%82 = add i32 %81, 1 ; <i32> [#uses=1]
%83 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5 ; <i32*> [#uses=1]
store i32 %82, i32* %83, align 4
%84 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 4 ; <i32*> [#uses=1]
%85 = load i32* %84, align 4 ; <i32> [#uses=1]
%86 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 3 ; <%struct.system__file_control_block__pstring**> [#uses=1]
%87 = load %struct.system__file_control_block__pstring** %86, align 4 ; <%struct.system__file_control_block__pstring*> [#uses=1]
%88 = getelementptr %struct.system__file_control_block__pstring* %87, i32 0, i32 0 ; <i8**> [#uses=1]
%89 = load i8** %88, align 4 ; <i8*> [#uses=1]
%90 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5 ; <i32*> [#uses=1]
%91 = load i32* %90, align 4 ; <i32> [#uses=1]
%92 = sub i32 %91, %85 ; <i32> [#uses=1]
%93 = getelementptr i8* %89, i32 %92 ; <i8*> [#uses=1]
store i8 46, i8* %93, align 1
%94 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 1 ; <i32*> [#uses=1]
%95 = load i32* %94, align 4 ; <i32> [#uses=1]
br label %bb40
bb40: ; preds = %bb42, %bb39
%j15.0 = phi i32 [ %95, %bb39 ], [ %111, %bb42 ] ; <i32> [#uses=2]
%96 = icmp sgt i32 %j15.0, -2 ; <i1> [#uses=1]
br i1 %96, label %bb43, label %bb42
bb42: ; preds = %bb40
%97 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5 ; <i32*> [#uses=1]
%98 = load i32* %97, align 4 ; <i32> [#uses=1]
%99 = add i32 %98, 1 ; <i32> [#uses=1]
%100 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5 ; <i32*> [#uses=1]
store i32 %99, i32* %100, align 4
%101 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 4 ; <i32*> [#uses=1]
%102 = load i32* %101, align 4 ; <i32> [#uses=1]
%103 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 3 ; <%struct.system__file_control_block__pstring**> [#uses=1]
%104 = load %struct.system__file_control_block__pstring** %103, align 4 ; <%struct.system__file_control_block__pstring*> [#uses=1]
%105 = getelementptr %struct.system__file_control_block__pstring* %104, i32 0, i32 0 ; <i8**> [#uses=1]
%106 = load i8** %105, align 4 ; <i8*> [#uses=1]
%107 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5 ; <i32*> [#uses=1]
%108 = load i32* %107, align 4 ; <i32> [#uses=1]
%109 = sub i32 %108, %102 ; <i32> [#uses=1]
%110 = getelementptr i8* %106, i32 %109 ; <i8*> [#uses=1]
store i8 48, i8* %110, align 1
%111 = add i32 %j15.0, 1 ; <i32> [#uses=1]
br label %bb40
bb43: ; preds = %bb37, %bb40
%112 = trunc i64 %abs to i32 ; <i32> [#uses=1]
%113 = getelementptr [10 x i8]* @.str3, i32 0, i32 %112 ; <i8*> [#uses=1]
%114 = load i8* %113, align 1 ; <i8> [#uses=1]
%115 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5 ; <i32*> [#uses=1]
%116 = load i32* %115, align 4 ; <i32> [#uses=1]
%117 = add i32 %116, 1 ; <i32> [#uses=1]
%118 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5 ; <i32*> [#uses=1]
store i32 %117, i32* %118, align 4
%119 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 4 ; <i32*> [#uses=1]
%120 = load i32* %119, align 4 ; <i32> [#uses=1]
%121 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 3 ; <%struct.system__file_control_block__pstring**> [#uses=1]
%122 = load %struct.system__file_control_block__pstring** %121, align 4 ; <%struct.system__file_control_block__pstring*> [#uses=1]
%123 = getelementptr %struct.system__file_control_block__pstring* %122, i32 0, i32 0 ; <i8**> [#uses=1]
%124 = load i8** %123, align 4 ; <i8*> [#uses=1]
%125 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5 ; <i32*> [#uses=1]
%126 = load i32* %125, align 4 ; <i32> [#uses=1]
%127 = sub i32 %126, %120 ; <i32> [#uses=1]
%128 = getelementptr i8* %124, i32 %127 ; <i8*> [#uses=1]
store i8 %114, i8* %128, align 1
br label %bb48
bb44: ; preds = %bb19
%129 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 1 ; <i32*> [#uses=1]
%130 = load i32* %129, align 4 ; <i32> [#uses=1]
%131 = icmp eq i32 %130, -1 ; <i1> [#uses=1]
br i1 %131, label %bb46, label %bb47
bb46: ; preds = %bb44
%132 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5 ; <i32*> [#uses=1]
%133 = load i32* %132, align 4 ; <i32> [#uses=1]
%134 = add i32 %133, 1 ; <i32> [#uses=1]
%135 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5 ; <i32*> [#uses=1]
store i32 %134, i32* %135, align 4
%136 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 4 ; <i32*> [#uses=1]
%137 = load i32* %136, align 4 ; <i32> [#uses=1]
%138 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 3 ; <%struct.system__file_control_block__pstring**> [#uses=1]
%139 = load %struct.system__file_control_block__pstring** %138, align 4 ; <%struct.system__file_control_block__pstring*> [#uses=1]
%140 = getelementptr %struct.system__file_control_block__pstring* %139, i32 0, i32 0 ; <i8**> [#uses=1]
%141 = load i8** %140, align 4 ; <i8*> [#uses=1]
%142 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5 ; <i32*> [#uses=1]
%143 = load i32* %142, align 4 ; <i32> [#uses=1]
%144 = sub i32 %143, %137 ; <i32> [#uses=1]
%145 = getelementptr i8* %141, i32 %144 ; <i8*> [#uses=1]
store i8 46, i8* %145, align 1
br label %bb47
bb47: ; preds = %bb44, %bb46
%146 = trunc i64 %abs to i32 ; <i32> [#uses=1]
%147 = getelementptr [10 x i8]* @.str3, i32 0, i32 %146 ; <i8*> [#uses=1]
%148 = load i8* %147, align 1 ; <i8> [#uses=1]
%149 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5 ; <i32*> [#uses=1]
%150 = load i32* %149, align 4 ; <i32> [#uses=1]
%151 = add i32 %150, 1 ; <i32> [#uses=1]
%152 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5 ; <i32*> [#uses=1]
store i32 %151, i32* %152, align 4
%153 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 4 ; <i32*> [#uses=1]
%154 = load i32* %153, align 4 ; <i32> [#uses=1]
%155 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 3 ; <%struct.system__file_control_block__pstring**> [#uses=1]
%156 = load %struct.system__file_control_block__pstring** %155, align 4 ; <%struct.system__file_control_block__pstring*> [#uses=1]
%157 = getelementptr %struct.system__file_control_block__pstring* %156, i32 0, i32 0 ; <i8**> [#uses=1]
%158 = load i8** %157, align 4 ; <i8*> [#uses=1]
%159 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 5 ; <i32*> [#uses=1]
%160 = load i32* %159, align 4 ; <i32> [#uses=1]
%161 = sub i32 %160, %154 ; <i32> [#uses=1]
%162 = getelementptr i8* %158, i32 %161 ; <i8*> [#uses=1]
store i8 %148, i8* %162, align 1
br label %bb48
bb48: ; preds = %bb23, %bb47, %bb43
%163 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 1 ; <i32*> [#uses=1]
%164 = load i32* %163, align 4 ; <i32> [#uses=1]
%165 = add i32 %164, -1 ; <i32> [#uses=1]
%166 = getelementptr %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.361, i32 0, i32 1 ; <i32*> [#uses=1]
store i32 %165, i32* %166, align 4
ret void
return: ; preds = %entry
ret void
}
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) {
entry:
%0 = alloca { i64, i64 } ; <{ i64, i64 }*> [#uses=3]
%1 = call i8* @llvm.stacksave( ) ; <i8*> [#uses=1]
%2 = add i32 %a, 17 ; <i32> [#uses=2]
%3 = sdiv i32 %2, 18 ; <i32> [#uses=3]
%4 = add i32 %3, 1 ; <i32> [#uses=7]
%5 = icmp sgt i32 %4, -1 ; <i1> [#uses=1]
%max53 = select i1 %5, i32 %4, i32 0 ; <i32> [#uses=1]
%6 = alloca i64, i32 %max53 ; <i64*> [#uses=21]
%7 = icmp sgt i32 %4, 0 ; <i1> [#uses=1]
br i1 %7, label %bb55, label %bb58
bb55: ; preds = %entry, %bb57
%J60b.0 = phi i32 [ %11, %bb57 ], [ 1, %entry ] ; <i32> [#uses=3]
%8 = add i32 %J60b.0, -1 ; <i32> [#uses=1]
%9 = getelementptr i64* %6, i32 %8 ; <i64*> [#uses=1]
store i64 0, i64* %9, align 8
%10 = icmp eq i32 %4, %J60b.0 ; <i1> [#uses=1]
br i1 %10, label %bb58, label %bb57
bb57: ; preds = %bb55
%11 = add i32 %J60b.0, 1 ; <i32> [#uses=1]
br label %bb55
bb58: ; preds = %entry, %bb55
%12 = icmp sgt i32 %4, 0 ; <i1> [#uses=1]
br i1 %12, label %bb61, label %bb91
bb61: ; preds = %bb58, %bb90
%j2.0 = phi i32 [ %88, %bb90 ], [ 1, %bb58 ] ; <i32> [#uses=11]
%aa.0 = phi i32 [ %86, %bb90 ], [ %a, %bb58 ] ; <i32> [#uses=6]
%yy.0 = phi i64 [ %84, %bb90 ], [ %y, %bb58 ] ; <i64> [#uses=3]
%xx.0 = phi i64 [ %21, %bb90 ], [ %x, %bb58 ] ; <i64> [#uses=2]
%13 = icmp eq i64 %xx.0, 0 ; <i1> [#uses=1]
br i1 %13, label %bb91, label %bb63
bb63: ; preds = %bb61
%14 = icmp eq i32 %aa.0, 0 ; <i1> [#uses=1]
%15 = zext i1 %14 to i8 ; <i8> [#uses=1]
invoke void @system__arith_64__scaled_divide( { i64, i64 }* noalias sret %0, i64 %xx.0, i64 %yy.0, i64 %z, i8 %15 )
to label %invcont unwind label %lpad
invcont: ; preds = %bb63
%16 = getelementptr { i64, i64 }* %0, i32 0, i32 0 ; <i64*> [#uses=1]
%17 = load i64* %16, align 8 ; <i64> [#uses=1]
%18 = add i32 %j2.0, -1 ; <i32> [#uses=1]
%19 = getelementptr i64* %6, i32 %18 ; <i64*> [#uses=1]
store i64 %17, i64* %19, align 8
%20 = getelementptr { i64, i64 }* %0, i32 0, i32 1 ; <i64*> [#uses=1]
%21 = load i64* %20, align 8 ; <i64> [#uses=1]
%22 = add i32 %j2.0, -1 ; <i32> [#uses=1]
%23 = getelementptr i64* %6, i32 %22 ; <i64*> [#uses=1]
%24 = load i64* %23, align 8 ; <i64> [#uses=1]
%25 = icmp eq i64 %24, %yy.0 ; <i1> [#uses=1]
%26 = add i32 %j2.0, -1 ; <i32> [#uses=1]
%27 = getelementptr i64* %6, i32 %26 ; <i64*> [#uses=1]
%28 = load i64* %27, align 8 ; <i64> [#uses=1]
%29 = sub i64 0, %28 ; <i64> [#uses=1]
%30 = icmp eq i64 %yy.0, %29 ; <i1> [#uses=1]
%31 = or i1 %25, %30 ; <i1> [#uses=1]
%32 = icmp sgt i32 %j2.0, 1 ; <i1> [#uses=1]
%or.cond = and i1 %31, %32 ; <i1> [#uses=1]
br i1 %or.cond, label %bb69, label %bb83
bb69: ; preds = %invcont
%33 = add i32 %j2.0, -1 ; <i32> [#uses=1]
%34 = getelementptr i64* %6, i32 %33 ; <i64*> [#uses=1]
%35 = load i64* %34, align 8 ; <i64> [#uses=1]
%36 = icmp slt i64 %35, 0 ; <i1> [#uses=1]
%37 = add i32 %j2.0, -2 ; <i32> [#uses=1]
%38 = getelementptr i64* %6, i32 %37 ; <i64*> [#uses=1]
%39 = load i64* %38, align 8 ; <i64> [#uses=2]
br i1 %36, label %bb71, label %bb72
bb71: ; preds = %bb69
%40 = add i64 %39, 1 ; <i64> [#uses=1]
%41 = add i32 %j2.0, -2 ; <i32> [#uses=1]
%42 = getelementptr i64* %6, i32 %41 ; <i64*> [#uses=1]
store i64 %40, i64* %42, align 8
br label %bb73
bb72: ; preds = %bb69
%43 = add i64 %39, -1 ; <i64> [#uses=1]
%44 = add i32 %j2.0, -2 ; <i32> [#uses=1]
%45 = getelementptr i64* %6, i32 %44 ; <i64*> [#uses=1]
store i64 %43, i64* %45, align 8
br label %bb73
bb73: ; preds = %bb72, %bb71
%46 = add i32 %j2.0, -1 ; <i32> [#uses=1]
%47 = getelementptr i64* %6, i32 %46 ; <i64*> [#uses=1]
store i64 0, i64* %47, align 8
br label %bb74
bb74: ; preds = %bb82, %bb73
%j1.0 = phi i32 [ %4, %bb73 ], [ %81, %bb82 ] ; <i32> [#uses=12]
%48 = icmp slt i32 %j1.0, 2 ; <i1> [#uses=1]
br i1 %48, label %bb83, label %bb76
bb76: ; preds = %bb74
%49 = add i32 %j1.0, -1 ; <i32> [#uses=1]
%50 = getelementptr i64* %6, i32 %49 ; <i64*> [#uses=1]
%51 = load i64* %50, align 8 ; <i64> [#uses=1]
%52 = icmp sgt i64 %51, 999999999999999999 ; <i1> [#uses=1]
br i1 %52, label %bb78, label %bb79
bb78: ; preds = %bb76
%53 = add i32 %j1.0, -2 ; <i32> [#uses=1]
%54 = getelementptr i64* %6, i32 %53 ; <i64*> [#uses=1]
%55 = load i64* %54, align 8 ; <i64> [#uses=1]
%56 = add i64 %55, 1 ; <i64> [#uses=1]
%57 = add i32 %j1.0, -2 ; <i32> [#uses=1]
%58 = getelementptr i64* %6, i32 %57 ; <i64*> [#uses=1]
store i64 %56, i64* %58, align 8
%59 = add i32 %j1.0, -1 ; <i32> [#uses=1]
%60 = getelementptr i64* %6, i32 %59 ; <i64*> [#uses=1]
%61 = load i64* %60, align 8 ; <i64> [#uses=1]
%62 = add i64 %61, -1000000000000000000 ; <i64> [#uses=1]
%63 = add i32 %j1.0, -1 ; <i32> [#uses=1]
%64 = getelementptr i64* %6, i32 %63 ; <i64*> [#uses=1]
store i64 %62, i64* %64, align 8
br label %bb82
bb79: ; preds = %bb76
%65 = add i32 %j1.0, -1 ; <i32> [#uses=1]
%66 = getelementptr i64* %6, i32 %65 ; <i64*> [#uses=1]
%67 = load i64* %66, align 8 ; <i64> [#uses=1]
%68 = icmp slt i64 %67, -999999999999999999 ; <i1> [#uses=1]
br i1 %68, label %bb81, label %bb82
bb81: ; preds = %bb79
%69 = add i32 %j1.0, -2 ; <i32> [#uses=1]
%70 = getelementptr i64* %6, i32 %69 ; <i64*> [#uses=1]
%71 = load i64* %70, align 8 ; <i64> [#uses=1]
%72 = add i64 %71, -1 ; <i64> [#uses=1]
%73 = add i32 %j1.0, -2 ; <i32> [#uses=1]
%74 = getelementptr i64* %6, i32 %73 ; <i64*> [#uses=1]
store i64 %72, i64* %74, align 8
%75 = add i32 %j1.0, -1 ; <i32> [#uses=1]
%76 = getelementptr i64* %6, i32 %75 ; <i64*> [#uses=1]
%77 = load i64* %76, align 8 ; <i64> [#uses=1]
%78 = add i64 %77, 1000000000000000000 ; <i64> [#uses=1]
%79 = add i32 %j1.0, -1 ; <i32> [#uses=1]
%80 = getelementptr i64* %6, i32 %79 ; <i64*> [#uses=1]
store i64 %78, i64* %80, align 8
br label %bb82
bb82: ; preds = %bb79, %bb81, %bb78
%81 = add i32 %j1.0, -1 ; <i32> [#uses=1]
br label %bb74
bb83: ; preds = %invcont, %bb74
%82 = icmp slt i32 %aa.0, 19 ; <i1> [#uses=1]
%min = select i1 %82, i32 %aa.0, i32 18 ; <i32> [#uses=1]
%83 = invoke i64 @system__exn_lli__exn_long_long_integer( i64 10, i32 %min ) readnone
to label %invcont86 unwind label %lpad ; <i64> [#uses=1]
invcont86: ; preds = %bb83
%84 = sub i64 0, %83 ; <i64> [#uses=1]
%85 = icmp slt i32 %aa.0, 19 ; <i1> [#uses=1]
%min87 = select i1 %85, i32 %aa.0, i32 18 ; <i32> [#uses=1]
%86 = sub i32 %aa.0, %min87 ; <i32> [#uses=1]
%87 = icmp eq i32 %4, %j2.0 ; <i1> [#uses=1]
br i1 %87, label %bb91, label %bb90
bb90: ; preds = %invcont86
%88 = add i32 %j2.0, 1 ; <i32> [#uses=1]
br label %bb61
bb91: ; preds = %bb58, %bb61, %invcont86
%89 = icmp slt i32 %2, 18 ; <i1> [#uses=1]
br i1 %89, label %bb98, label %bb94
bb94: ; preds = %bb91, %bb97
%j.0 = phi i32 [ %97, %bb97 ], [ 1, %bb91 ] ; <i32> [#uses=4]
%90 = mul i32 %j.0, 18 ; <i32> [#uses=1]
%91 = add i32 %90, -18 ; <i32> [#uses=1]
%92 = sub i32 %e, %91 ; <i32> [#uses=1]
%93 = add i32 %j.0, -1 ; <i32> [#uses=1]
%94 = getelementptr i64* %6, i32 %93 ; <i64*> [#uses=1]
%95 = load i64* %94, align 8 ; <i64> [#uses=1]
invoke fastcc void @ce3806g__fxio__put__put_int64__4.1339( %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.365, i64 %95, i32 %92 )
to label %invcont95 unwind label %lpad
invcont95: ; preds = %bb94
%96 = icmp eq i32 %3, %j.0 ; <i1> [#uses=1]
br i1 %96, label %bb98, label %bb97
bb97: ; preds = %invcont95
%97 = add i32 %j.0, 1 ; <i32> [#uses=1]
br label %bb94
bb98: ; preds = %bb91, %invcont95
%98 = sub i32 %e, %a ; <i32> [#uses=1]
%99 = getelementptr i64* %6, i32 %3 ; <i64*> [#uses=1]
%100 = load i64* %99, align 8 ; <i64> [#uses=1]
invoke fastcc void @ce3806g__fxio__put__put_int64__4.1339( %struct.FRAME.ce3806g__fxio__put__4* %CHAIN.365, i64 %100, i32 %98 )
to label %bb101 unwind label %lpad
bb101: ; preds = %bb98
ret void
lpad: ; preds = %bb98, %bb94, %bb83, %bb63
%eh_ptr = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=2]
%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]
call void @llvm.stackrestore( i8* %1 )
%101 = call i32 (...)* @_Unwind_Resume( i8* %eh_ptr ) ; <i32> [#uses=0]
unreachable
}
declare i8* @llvm.stacksave() nounwind
declare void @system__arith_64__scaled_divide({ i64, i64 }* noalias sret, i64, i64, i64, i8)
declare i64 @system__exn_lli__exn_long_long_integer(i64, i32) readnone
declare void @llvm.stackrestore(i8*) nounwind
declare i32 @system__img_real__set_image_real(x86_fp80, i8*, %struct.string___XUB*, i32, i32, i32, i32)
declare void @ada__text_io__generic_aux__put_item(%struct.ada__text_io__text_afcb*, i8*, %struct.string___XUB*)
declare void @report__test(i8*, %struct.string___XUB*, i8*, %struct.string___XUB*)
declare void @system__secondary_stack__ss_mark(%struct.string___XUB* noalias sret)
declare void @system__exception_table__register_exception(%struct.system__standard_library__exception_data*)
declare void @report__legal_file_name(%struct.system__file_control_block__pstring* noalias sret, i32, i8*, %struct.string___XUB*)
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*)
declare void @system__secondary_stack__ss_release(i32, i32)
declare void @report__not_applicable(i8*, %struct.string___XUB*)
declare void @ada__text_io__set_output(%struct.ada__text_io__text_afcb*)
declare %struct.ada__text_io__text_afcb* @ada__text_io__close(%struct.ada__text_io__text_afcb*)
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*)
declare %struct.ada__text_io__text_afcb* @ada__text_io__standard_output()
declare void @report__failed(i8*, %struct.string___XUB*)
declare void @ext(i32*)
declare %struct.ada__text_io__text_afcb* @ada__text_io__delete(%struct.ada__text_io__text_afcb*)
declare void @report__result()