Last active
October 16, 2021 16:12
-
-
Save Platin21/3f891e0492362e0df15d51282e0b9b9f to your computer and use it in GitHub Desktop.
Failing-IL
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; ModuleID = 'odin_package' | |
source_filename = "odin_package" | |
target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128" | |
target triple = "aarch64-unknown-linux-gnu" | |
%runtime.Type_Info = type { i64, i64, i32, i64, { [0 x i64], [120 x i8], i64 } } | |
%..string = type { i8*, i64 } | |
%runtime.Default_Temp_Allocator = type { { i8*, i64 }, i64, i8*, %runtime.Allocator, { { i8*, i64 }*, i64, i64, %runtime.Allocator } } | |
%runtime.Allocator = type { i8*, i8* } | |
%strconv.Float_Info = type { i64, i64, i64 } | |
%utf8.Accept_Range = type { i8, i8 } | |
%io.Stream_VTable = type { i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8* } | |
%runtime.Source_Code_Location = type { %..string, i32, i32, %..string } | |
%..any = type { i8*, i64 } | |
%runtime.Context = type { %runtime.Allocator, %runtime.Allocator, void ([2 x i64], [2 x i64], %runtime.Source_Code_Location*, i8*)*, %runtime.Logger, %..any, i8*, i64, i8* } | |
%runtime.Logger = type { void (i8*, i64, [2 x i64], i16, %runtime.Source_Code_Location*, i8*)*, i8*, i64, i16 } | |
%mem.Raw_String = type { i8*, i64 } | |
%time.Time = type { i64 } | |
%runtime.Type_Info_Named = type { %..string, %runtime.Type_Info*, %..string, %runtime.Source_Code_Location } | |
%runtime.Type_Info_Enum = type { %runtime.Type_Info*, { %..string*, i64 }, { i64*, i64 } } | |
%runtime.Raw_Slice = type { i8*, i64 } | |
%runtime.Raw_Dynamic_Array = type { i8*, i64, i64, %runtime.Allocator } | |
%runtime.Map_Header = type { %runtime.Raw_Map*, i8 (i8*, i8*)*, i64, i64, i64, i64, i64, i64 } | |
%runtime.Raw_Map = type { { i64*, i64 }, %runtime.Raw_Dynamic_Array } | |
%runtime.Map_Entry_Header = type { i64, i64 } | |
%runtime.Map_Hash = type { i64, i8* } | |
%os.OS_Stat = type { i64, i64, i64, i32, i32, i32, i32, i64, i64, i64, i64, %os.Unix_File_Time, %os.Unix_File_Time, %os.Unix_File_Time, i64, i64, i64 } | |
%os.Unix_File_Time = type { i64, i64 } | |
%strconv_decimal.Decimal = type { [384 x i8], i64, i64, i8, i8 } | |
%strconv.Decimal_Slice = type { { i8*, i64 }, i64, i64, i8 } | |
%strconv.format_digits.Buffer-1 = type { { i8*, i64 }, i64 } | |
%runtime.Map_Find_Result = type { i64, i64, i64 } | |
%runtime.Raw_String = type { i8*, i64 } | |
%io.Stream = type { %io.Stream_VTable*, i8* } | |
%io.Writer = type { %io.Stream } | |
%runtime.Type_Info_Union = type { { %runtime.Type_Info**, i64 }, i64, %runtime.Type_Info*, i8 (i8*, i8*)*, i8, i8, i8 } | |
%runtime.Type_Info_Integer = type { i8, i8 } | |
%runtime.Type_Info_Rune = type {} | |
%runtime.Type_Info_Float = type { i8 } | |
%runtime.Type_Info_Boolean = type {} | |
%runtime.Type_Info_Complex = type {} | |
%..complex64 = type { float, float } | |
%..complex128 = type { double, double } | |
%runtime.Type_Info_Quaternion = type {} | |
%..quaternion128 = type { float, float, float, float } | |
%..quaternion256 = type { double, double, double, double } | |
%fmt.Info = type { i8, i8, i8, i8, i8, i8, i8, i64, i64, i64, i8, i8, i8, %io.Writer, %..any, i64 } | |
%io.Flusher = type { %io.Stream } | |
%__gnu_h2f_ieee.fp32-2 = type { [0 x i32], [4 x i8] } | |
%runtime.Type_Info_String = type { i8 } | |
%runtime.Type_Info_Any = type {} | |
%runtime.Type_Info_Type_Id = type {} | |
%runtime.Type_Info_Pointer = type { %runtime.Type_Info* } | |
%runtime.Type_Info_Multi_Pointer = type { %runtime.Type_Info* } | |
%runtime.Type_Info_Procedure = type { %runtime.Type_Info*, %runtime.Type_Info*, i8, i8 } | |
%runtime.Type_Info_Tuple = type { { %runtime.Type_Info**, i64 }, { %..string*, i64 } } | |
%runtime.Type_Info_Array = type { %runtime.Type_Info*, i64, i64 } | |
%runtime.Type_Info_Enumerated_Array = type { %runtime.Type_Info*, %runtime.Type_Info*, i64, i64, i64, i64 } | |
%runtime.Type_Info_Dynamic_Array = type { %runtime.Type_Info*, i64 } | |
%runtime.Type_Info_Slice = type { %runtime.Type_Info*, i64 } | |
%runtime.Type_Info_Map = type { %runtime.Type_Info*, %runtime.Type_Info*, %runtime.Type_Info*, i8 (i8*, i8*)*, i64 (i8*, i64)* } | |
%runtime.Type_Info_Struct = type { { %runtime.Type_Info**, i64 }, { %..string*, i64 }, { i64*, i64 }, { i8*, i64 }, { %..string*, i64 }, i8, i8, i8, i8 (i8*, i8*)*, i8, %runtime.Type_Info*, i64 } | |
%runtime.Type_Info_Bit_Set = type { %runtime.Type_Info*, %runtime.Type_Info*, i64, i64 } | |
%runtime.Type_Info_Simd_Vector = type { %runtime.Type_Info*, i64, i64 } | |
%runtime.Type_Info_Relative_Pointer = type { %runtime.Type_Info*, %runtime.Type_Info* } | |
%runtime.Type_Info_Relative_Slice = type { %runtime.Type_Info*, %runtime.Type_Info* } | |
%mem.Raw_Dynamic_Array = type { i8*, i64, i64, %runtime.Allocator } | |
%mem.Raw_Slice = type { i8*, i64 } | |
%mem.Raw_Map = type { { i64*, i64 }, %mem.Raw_Dynamic_Array } | |
%io.Byte_Writer = type { %io.Stream } | |
@"__$type_info_data" = internal global [138 x %runtime.Type_Info] zeroinitializer | |
@"__$type_info_types_data" = internal global [103 x %runtime.Type_Info*] zeroinitializer | |
@"__$type_info_names_data" = internal global [103 x %..string] zeroinitializer | |
@"__$type_info_offsets_data" = internal global [103 x i64] zeroinitializer | |
@"__$type_info_usings_data" = internal global [103 x i8] zeroinitializer | |
@"__$type_info_tags_data" = internal global [103 x %..string] zeroinitializer | |
@runtime.global_default_temp_allocator_data = internal thread_local global %runtime.Default_Temp_Allocator zeroinitializer, !dbg !0 | |
@runtime.type_table = internal global { %runtime.Type_Info*, i64 } { %runtime.Type_Info* getelementptr inbounds ([138 x %runtime.Type_Info], [138 x %runtime.Type_Info]* @"__$type_info_data", i64 0, i64 0), i64 138 }, !dbg !67 | |
@runtime.args__ = internal global { i8**, i64 } zeroinitializer, !dbg !271 | |
@os.stdout = internal global i32 1, !dbg !280 | |
@os.stderr = internal global i32 2, !dbg !284 | |
@fmt.__DIGITS_LOWER = internal global %..string { i8* getelementptr inbounds ([18 x i8], [18 x i8]* @"csbs$0", i64 0, i64 0), i64 17 }, !dbg !286 | |
@"csbs$0" = internal global [18 x i8] c"0123456789abcdefx\00" | |
@fmt.__DIGITS_UPPER = internal global %..string { i8* getelementptr inbounds ([18 x i8], [18 x i8]* @"csbs$1", i64 0, i64 0), i64 17 }, !dbg !289 | |
@"csbs$1" = internal global [18 x i8] c"0123456789ABCDEFX\00" | |
@time.days_before = internal global [13 x i32] [i32 0, i32 31, i32 59, i32 90, i32 120, i32 151, i32 181, i32 212, i32 243, i32 273, i32 304, i32 334, i32 365], !dbg !291 | |
@strconv.digits = internal global %..string { i8* getelementptr inbounds ([37 x i8], [37 x i8]* @"csbs$2", i64 0, i64 0), i64 36 }, !dbg !297 | |
@"csbs$2" = internal global [37 x i8] c"0123456789abcdefghijklmnopqrstuvwxyz\00" | |
@strconv._f16_info = internal global %strconv.Float_Info { i64 10, i64 5, i64 -15 }, !dbg !300 | |
@strconv._f32_info = internal global %strconv.Float_Info { i64 23, i64 8, i64 -127 }, !dbg !310 | |
@strconv._f64_info = internal global %strconv.Float_Info { i64 52, i64 11, i64 -1023 }, !dbg !312 | |
@strings.DIGITS_LOWER-1532 = internal global %..string { i8* getelementptr inbounds ([18 x i8], [18 x i8]* @"csbs$0", i64 0, i64 0), i64 17 }, !dbg !314 | |
@utf8.accept_ranges = internal global [5 x %utf8.Accept_Range] [%utf8.Accept_Range { i8 -128, i8 -65 }, %utf8.Accept_Range { i8 -96, i8 -65 }, %utf8.Accept_Range { i8 -128, i8 -97 }, %utf8.Accept_Range { i8 -112, i8 -65 }, %utf8.Accept_Range { i8 -128, i8 -113 }], !dbg !317 | |
@utf8.accept_sizes = internal global [256 x i8] c"\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F0\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\13\03\03\03\03\03\03\03\03\03\03\03\03#\03\034\04\04\04D\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1\F1", !dbg !327 | |
@fmt._user_formatters = internal global { { i64*, i64 }, { i8*, i64, i64, %runtime.Allocator } }* null, !dbg !332 | |
@os._file_stream_vtable-1513 = internal global %io.Stream_VTable* @"ggv$0", !dbg !515 | |
@"csbs$3" = internal global [8 x i8] c"runtime\00" | |
@"csbs$4" = internal global [51 x i8] c"/home/armin/odin-arm64/Odin/core/runtime/core.odin\00" | |
@"csbs$5" = internal global [10 x i8] c"Type_Info\00" | |
@"csbs$6" = internal global [5 x i8] c"size\00" | |
@"csbs$7" = internal global [6 x i8] c"align\00" | |
@"csbs$8" = internal global [6 x i8] c"flags\00" | |
@"csbs$9" = internal global [3 x i8] c"id\00" | |
@"csbs$a" = internal global [8 x i8] c"variant\00" | |
@"csbs$b" = internal global [16 x i8] c"Type_Info_Flags\00" | |
@"csbs$c" = internal global [15 x i8] c"Type_Info_Flag\00" | |
@"$enum_names-16" = internal global [2 x %..string] [%..string { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"csbs$d", i64 0, i64 0), i64 10 }, %..string { i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"csbs$e", i64 0, i64 0), i64 14 }] | |
@"$enum_values-16" = internal global [2 x i64] [i64 0, i64 1] | |
@"csbs$d" = internal global [11 x i8] c"Comparable\00" | |
@"csbs$e" = internal global [15 x i8] c"Simple_Compare\00" | |
@"csbs$f" = internal global [16 x i8] c"Type_Info_Named\00" | |
@"csbs$10" = internal global [5 x i8] c"name\00" | |
@"csbs$11" = internal global [5 x i8] c"base\00" | |
@"csbs$12" = internal global [4 x i8] c"pkg\00" | |
@"csbs$13" = internal global [4 x i8] c"loc\00" | |
@"csbs$14" = internal global [21 x i8] c"Source_Code_Location\00" | |
@"csbs$15" = internal global [10 x i8] c"file_path\00" | |
@"csbs$16" = internal global [5 x i8] c"line\00" | |
@"csbs$17" = internal global [7 x i8] c"column\00" | |
@"csbs$18" = internal global [10 x i8] c"procedure\00" | |
@"csbs$19" = internal global [18 x i8] c"Type_Info_Integer\00" | |
@"csbs$1a" = internal global [7 x i8] c"signed\00" | |
@"csbs$1b" = internal global [11 x i8] c"endianness\00" | |
@"csbs$1c" = internal global [20 x i8] c"Platform_Endianness\00" | |
@"$enum_names-25" = internal global [3 x %..string] [%..string { i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"csbs$1d", i64 0, i64 0), i64 8 }, %..string { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"csbs$1e", i64 0, i64 0), i64 6 }, %..string { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"csbs$1f", i64 0, i64 0), i64 3 }] | |
@"$enum_values-25" = internal global [3 x i64] [i64 0, i64 1, i64 2] | |
@"csbs$1d" = internal global [9 x i8] c"Platform\00" | |
@"csbs$1e" = internal global [7 x i8] c"Little\00" | |
@"csbs$1f" = internal global [4 x i8] c"Big\00" | |
@"csbs$20" = internal global [15 x i8] c"Type_Info_Rune\00" | |
@"csbs$21" = internal global [16 x i8] c"Type_Info_Float\00" | |
@"csbs$22" = internal global [18 x i8] c"Type_Info_Complex\00" | |
@"csbs$23" = internal global [21 x i8] c"Type_Info_Quaternion\00" | |
@"csbs$24" = internal global [17 x i8] c"Type_Info_String\00" | |
@"csbs$25" = internal global [11 x i8] c"is_cstring\00" | |
@"csbs$26" = internal global [18 x i8] c"Type_Info_Boolean\00" | |
@"csbs$27" = internal global [14 x i8] c"Type_Info_Any\00" | |
@"csbs$28" = internal global [18 x i8] c"Type_Info_Type_Id\00" | |
@"csbs$29" = internal global [18 x i8] c"Type_Info_Pointer\00" | |
@"csbs$2a" = internal global [5 x i8] c"elem\00" | |
@"csbs$2b" = internal global [24 x i8] c"Type_Info_Multi_Pointer\00" | |
@"csbs$2c" = internal global [20 x i8] c"Type_Info_Procedure\00" | |
@"csbs$2d" = internal global [7 x i8] c"params\00" | |
@"csbs$2e" = internal global [8 x i8] c"results\00" | |
@"csbs$2f" = internal global [9 x i8] c"variadic\00" | |
@"csbs$30" = internal global [11 x i8] c"convention\00" | |
@"csbs$31" = internal global [19 x i8] c"Calling_Convention\00" | |
@"$enum_names-43" = internal global [8 x %..string] [%..string { i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"csbs$32", i64 0, i64 0), i64 7 }, %..string { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"csbs$33", i64 0, i64 0), i64 4 }, %..string { i8* getelementptr inbounds ([12 x i8], [12 x i8]* @"csbs$34", i64 0, i64 0), i64 11 }, %..string { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"csbs$35", i64 0, i64 0), i64 5 }, %..string { i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"csbs$36", i64 0, i64 0), i64 8 }, %..string { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"csbs$37", i64 0, i64 0), i64 9 }, %..string { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"csbs$38", i64 0, i64 0), i64 4 }, %..string { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"csbs$39", i64 0, i64 0), i64 5 }] | |
@"$enum_values-43" = internal global [8 x i64] [i64 0, i64 1, i64 2, i64 3, i64 4, i64 5, i64 6, i64 7] | |
@"csbs$32" = internal global [8 x i8] c"Invalid\00" | |
@"csbs$33" = internal global [5 x i8] c"Odin\00" | |
@"csbs$34" = internal global [12 x i8] c"Contextless\00" | |
@"csbs$35" = internal global [6 x i8] c"CDecl\00" | |
@"csbs$36" = internal global [9 x i8] c"Std_Call\00" | |
@"csbs$37" = internal global [10 x i8] c"Fast_Call\00" | |
@"csbs$38" = internal global [5 x i8] c"None\00" | |
@"csbs$39" = internal global [6 x i8] c"Naked\00" | |
@"csbs$3a" = internal global [16 x i8] c"Type_Info_Array\00" | |
@"csbs$3b" = internal global [10 x i8] c"elem_size\00" | |
@"csbs$3c" = internal global [6 x i8] c"count\00" | |
@"csbs$3d" = internal global [27 x i8] c"Type_Info_Enumerated_Array\00" | |
@"csbs$3e" = internal global [6 x i8] c"index\00" | |
@"csbs$3f" = internal global [10 x i8] c"min_value\00" | |
@"csbs$40" = internal global [10 x i8] c"max_value\00" | |
@"csbs$41" = internal global [21 x i8] c"Type_Info_Enum_Value\00" | |
@"csbs$42" = internal global [24 x i8] c"Type_Info_Dynamic_Array\00" | |
@"csbs$43" = internal global [16 x i8] c"Type_Info_Slice\00" | |
@"csbs$44" = internal global [16 x i8] c"Type_Info_Tuple\00" | |
@"csbs$45" = internal global [6 x i8] c"types\00" | |
@"csbs$46" = internal global [6 x i8] c"names\00" | |
@"csbs$47" = internal global [17 x i8] c"Type_Info_Struct\00" | |
@"csbs$48" = internal global [8 x i8] c"offsets\00" | |
@"csbs$49" = internal global [7 x i8] c"usings\00" | |
@"csbs$4a" = internal global [5 x i8] c"tags\00" | |
@"csbs$4b" = internal global [10 x i8] c"is_packed\00" | |
@"csbs$4c" = internal global [13 x i8] c"is_raw_union\00" | |
@"csbs$4d" = internal global [13 x i8] c"custom_align\00" | |
@"csbs$4e" = internal global [6 x i8] c"equal\00" | |
@"csbs$4f" = internal global [9 x i8] c"soa_kind\00" | |
@"csbs$50" = internal global [14 x i8] c"soa_base_type\00" | |
@"csbs$51" = internal global [8 x i8] c"soa_len\00" | |
@"csbs$52" = internal global [11 x i8] c"Equal_Proc\00" | |
@"csbs$53" = internal global [2 x i8] c"_\00" | |
@"csbs$54" = internal global [26 x i8] c"Type_Info_Struct_Soa_Kind\00" | |
@"$enum_names-72" = internal global [4 x %..string] [%..string { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"csbs$38", i64 0, i64 0), i64 4 }, %..string { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"csbs$55", i64 0, i64 0), i64 5 }, %..string { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"csbs$56", i64 0, i64 0), i64 5 }, %..string { i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"csbs$57", i64 0, i64 0), i64 7 }] | |
@"$enum_values-72" = internal global [4 x i64] [i64 0, i64 1, i64 2, i64 3] | |
@"csbs$55" = internal global [6 x i8] c"Fixed\00" | |
@"csbs$56" = internal global [6 x i8] c"Slice\00" | |
@"csbs$57" = internal global [8 x i8] c"Dynamic\00" | |
@"csbs$58" = internal global [16 x i8] c"Type_Info_Union\00" | |
@"csbs$59" = internal global [9 x i8] c"variants\00" | |
@"csbs$5a" = internal global [11 x i8] c"tag_offset\00" | |
@"csbs$5b" = internal global [9 x i8] c"tag_type\00" | |
@"csbs$5c" = internal global [7 x i8] c"no_nil\00" | |
@"csbs$5d" = internal global [6 x i8] c"maybe\00" | |
@"csbs$5e" = internal global [15 x i8] c"Type_Info_Enum\00" | |
@"csbs$5f" = internal global [7 x i8] c"values\00" | |
@"csbs$60" = internal global [14 x i8] c"Type_Info_Map\00" | |
@"csbs$61" = internal global [4 x i8] c"key\00" | |
@"csbs$62" = internal global [6 x i8] c"value\00" | |
@"csbs$63" = internal global [17 x i8] c"generated_struct\00" | |
@"csbs$64" = internal global [10 x i8] c"key_equal\00" | |
@"csbs$65" = internal global [11 x i8] c"key_hasher\00" | |
@"csbs$66" = internal global [12 x i8] c"Hasher_Proc\00" | |
@"csbs$67" = internal global [5 x i8] c"data\00" | |
@"csbs$68" = internal global [5 x i8] c"seed\00" | |
@"csbs$69" = internal global [18 x i8] c"Type_Info_Bit_Set\00" | |
@"csbs$6a" = internal global [11 x i8] c"underlying\00" | |
@"csbs$6b" = internal global [6 x i8] c"lower\00" | |
@"csbs$6c" = internal global [6 x i8] c"upper\00" | |
@"csbs$6d" = internal global [22 x i8] c"Type_Info_Simd_Vector\00" | |
@"csbs$6e" = internal global [27 x i8] c"Type_Info_Relative_Pointer\00" | |
@"csbs$6f" = internal global [8 x i8] c"pointer\00" | |
@"csbs$70" = internal global [13 x i8] c"base_integer\00" | |
@"csbs$71" = internal global [25 x i8] c"Type_Info_Relative_Slice\00" | |
@"csbs$72" = internal global [6 x i8] c"slice\00" | |
@"csbs$73" = internal global [5 x i8] c"time\00" | |
@"csbs$74" = internal global [48 x i8] c"/home/armin/odin-arm64/Odin/core/time/time.odin\00" | |
@"csbs$75" = internal global [9 x i8] c"Duration\00" | |
@"csbs$76" = internal global [5 x i8] c"Time\00" | |
@"csbs$77" = internal global [6 x i8] c"_nsec\00" | |
@"ggv$0" = global %io.Stream_VTable { i8* bitcast (i32 ([2 x i64], i8*)* @"_proclit$anon-7" to i8*), i8* bitcast (i32 ([2 x i64], i8*)* @"_proclit$anon-6" to i8*), i8* bitcast ([2 x i64] ([2 x i64], i64, i64, i8*)* @"_proclit$anon-4" to i8*), i8* bitcast (i64 ([2 x i64], i8*)* @"_proclit$anon-5" to i8*), i8* bitcast ([2 x i64] ([2 x i64], [2 x i64], i8*)* @"_proclit$anon-0" to i8*), i8* bitcast ([2 x i64] ([2 x i64], [2 x i64], i64, i8*)* @"_proclit$anon-1" to i8*), i8* null, i8* null, i8* null, i8* bitcast ([2 x i64] ([2 x i64], [2 x i64], i8*)* @"_proclit$anon-2" to i8*), i8* bitcast ([2 x i64] ([2 x i64], [2 x i64], i64, i8*)* @"_proclit$anon-3" to i8*), i8* null, i8* null, i8* null, i8* null, i8* null, i8* null } | |
@"csbs$78" = internal global [43 x i8] c"/home/armin/odin-arm64/Odin/test/test.odin\00" | |
@"csbs$79" = internal global [5 x i8] c"main\00" | |
@"csbs$7a" = internal global [2 x i8] c" \00" | |
@"csbs$7b" = internal global [3 x i8] c": \00" | |
@"csbs$7c" = internal global [56 x i8] c"/home/armin/odin-arm64/Odin/core/unicode/utf8/utf8.odin\00" | |
@"csbs$7d" = internal global [6 x i8] c"panic\00" | |
@"csbs$7e" = internal global [46 x i8] c"/home/armin/odin-arm64/Odin/core/mem/mem.odin\00" | |
@"csbs$7f" = internal global [74 x i8] c"/home/armin/odin-arm64/Odin/core/runtime/default_temporary_allocator.odin\00" | |
@"csbs$80" = internal global [28 x i8] c"default_temp_allocator_init\00" | |
@"csbs$81" = internal global [29 x i8] c"default_temp_allocator_alloc\00" | |
@"csbs$82" = internal global [52 x i8] c"default temp allocator resorted to backup_allocator\00" | |
@"csbs$83" = internal global [28 x i8] c"default_temp_allocator_free\00" | |
@"csbs$84" = internal global [32 x i8] c"default_temp_allocator_free_all\00" | |
@"csbs$85" = internal global [1 x i8] zeroinitializer | |
@"csbs$86" = internal global [69 x i8] c"/home/armin/odin-arm64/Odin/core/runtime/dynamic_array_internal.odin\00" | |
@"csbs$87" = internal global [24 x i8] c"__dynamic_array_reserve\00" | |
@"csbs$88" = internal global [23 x i8] c"__dynamic_array_append\00" | |
@"csbs$89" = internal global [31 x i8] c"__dynamic_array_append_nothing\00" | |
@"csbs$8a" = internal global [26 x i8] c"strconv: invalid bit_size\00" | |
@"csbs$8b" = internal global [60 x i8] c"/home/armin/odin-arm64/Odin/core/strconv/generic_float.odin\00" | |
@"csbs$8c" = internal global [13 x i8] c"generic_ftoa\00" | |
@"csbs$8d" = internal global [4 x i8] c"NaN\00" | |
@"csbs$8e" = internal global [5 x i8] c"-Inf\00" | |
@"csbs$8f" = internal global [5 x i8] c"+Inf\00" | |
@"csbs$90" = internal global [67 x i8] c"/home/armin/odin-arm64/Odin/core/runtime/dynamic_map_internal.odin\00" | |
@"csbs$91" = internal global [50 x i8] c"/home/armin/odin-arm64/Odin/core/os/os_linux.odin\00" | |
@"csbs$92" = internal global [18 x i8] c"__dynamic_map_set\00" | |
@"csbs$93" = internal global [42 x i8] c"is_integer_negative: Unknown integer size\00" | |
@"csbs$94" = internal global [55 x i8] c"/home/armin/odin-arm64/Odin/core/strconv/integers.odin\00" | |
@"csbs$95" = internal global [20 x i8] c"is_integer_negative\00" | |
@"csbs$96" = internal global [44 x i8] c"strconv: illegal base passed to append_bits\00" | |
@"csbs$97" = internal global [12 x i8] c"append_bits\00" | |
@"csbs$98" = internal global [24 x i8] c"is_integer_negative_128\00" | |
@"csbs$99" = internal global [16 x i8] c"append_bits_128\00" | |
@"csbs$9a" = internal global [24 x i8] c"__dynamic_map_get_entry\00" | |
@"csbs$9b" = internal global [25 x i8] c" Invalid slice indices: \00" | |
@"csbs$9c" = internal global [2 x i8] c":\00" | |
@"csbs$9d" = internal global [11 x i8] c"heap_alloc\00" | |
@"csbs$9e" = internal global [55 x i8] c"/home/armin/odin-arm64/Odin/core/runtime/internal.odin\00" | |
@"csbs$9f" = internal global [18 x i8] c"align_forward_int\00" | |
@"csbs$a0" = internal global [22 x i8] c"align_forward_uintptr\00" | |
@"csbs$a1" = internal global [54 x i8] c"/home/armin/odin-arm64/Odin/core/strings/builder.odin\00" | |
@"csbs$a2" = internal global [54 x i8] c"/home/armin/odin-arm64/Odin/core/reflect/reflect.odin\00" | |
@"csbs$a3" = internal global [4 x i8] c"\\a\22\00" | |
@"csbs$a4" = internal global [4 x i8] c"\\b\22\00" | |
@"csbs$a5" = internal global [4 x i8] c"\\e\22\00" | |
@"csbs$a6" = internal global [4 x i8] c"\\f\22\00" | |
@"csbs$a7" = internal global [4 x i8] c"\\n\22\00" | |
@"csbs$a8" = internal global [4 x i8] c"\\r\22\00" | |
@"csbs$a9" = internal global [4 x i8] c"\\t\22\00" | |
@"csbs$aa" = internal global [4 x i8] c"\\v\22\00" | |
@"csbs$ab" = internal global [3 x i8] c"\\x\00" | |
@"csbs$ac" = internal global [3 x i8] c"00\00" | |
@"csbs$ad" = internal global [3 x i8] c"\\a\00" | |
@"csbs$ae" = internal global [3 x i8] c"\\b\00" | |
@"csbs$af" = internal global [3 x i8] c"\\e\00" | |
@"csbs$b0" = internal global [3 x i8] c"\\f\00" | |
@"csbs$b1" = internal global [3 x i8] c"\\n\00" | |
@"csbs$b2" = internal global [3 x i8] c"\\r\00" | |
@"csbs$b3" = internal global [3 x i8] c"\\t\00" | |
@"csbs$b4" = internal global [3 x i8] c"\\v\00" | |
@"csbs$b5" = internal global [46 x i8] c"/home/armin/odin-arm64/Odin/core/fmt/fmt.odin\00" | |
@"csbs$b6" = internal global [3 x i8] c"%!\00" | |
@"csbs$b7" = internal global [6 x i8] c"<nil>\00" | |
@"csbs$b8" = internal global [5 x i8] c"true\00" | |
@"csbs$b9" = internal global [6 x i8] c"false\00" | |
@"csbs$ba" = internal global [54 x i8] c"_fmt_int: buffer overrun. Width and precision too big\00" | |
@"csbs$bb" = internal global [9 x i8] c"_fmt_int\00" | |
@"csbs$bc" = internal global [31 x i8] c"_fmt_int: unknown base, whoops\00" | |
@"csbs$bd" = internal global [13 x i8] c"_fmt_int_128\00" | |
@"csbs$be" = internal global [3 x i8] c"U+\00" | |
@"csbs$bf" = internal global [21 x i8] c"Unhandled float size\00" | |
@"csbs$c0" = internal global [10 x i8] c"fmt_float\00" | |
@"csbs$c1" = internal global [3 x i8] c"0h\00" | |
@"csbs$c2" = internal global [4 x i8] c"nil\00" | |
@"csbs$c3" = internal global [4 x i8] c"int\00" | |
@"csbs$c4" = internal global [5 x i8] c"uint\00" | |
@"csbs$c5" = internal global [8 x i8] c"uintptr\00" | |
@"csbs$c6" = internal global [3 x i8] c"le\00" | |
@"csbs$c7" = internal global [3 x i8] c"be\00" | |
@"csbs$c8" = internal global [5 x i8] c"rune\00" | |
@"csbs$c9" = internal global [8 x i8] c"complex\00" | |
@"csbs$ca" = internal global [11 x i8] c"quaternion\00" | |
@"csbs$cb" = internal global [8 x i8] c"cstring\00" | |
@"csbs$cc" = internal global [7 x i8] c"string\00" | |
@"csbs$cd" = internal global [5 x i8] c"bool\00" | |
@"csbs$ce" = internal global [4 x i8] c"any\00" | |
@"csbs$cf" = internal global [7 x i8] c"typeid\00" | |
@"csbs$d0" = internal global [7 x i8] c"rawptr\00" | |
@"csbs$d1" = internal global [2 x i8] c"^\00" | |
@"csbs$d2" = internal global [4 x i8] c"[^]\00" | |
@"csbs$d3" = internal global [5 x i8] c"proc\00" | |
@"csbs$d4" = internal global [3 x i8] c"()\00" | |
@"csbs$d5" = internal global [52 x i8] c"/home/armin/odin-arm64/Odin/core/reflect/types.odin\00" | |
@"csbs$d6" = internal global [2 x i8] c"(\00" | |
@"csbs$d7" = internal global [3 x i8] c", \00" | |
@"csbs$d8" = internal global [2 x i8] c")\00" | |
@"csbs$d9" = internal global [5 x i8] c" -> \00" | |
@"csbs$da" = internal global [2 x i8] c"[\00" | |
@"csbs$db" = internal global [2 x i8] c"]\00" | |
@"csbs$dc" = internal global [10 x i8] c"[dynamic]\00" | |
@"csbs$dd" = internal global [3 x i8] c"[]\00" | |
@"csbs$de" = internal global [5 x i8] c"map[\00" | |
@"csbs$df" = internal global [6 x i8] c"#soa[\00" | |
@"csbs$e0" = internal global [7 x i8] c"#soa[]\00" | |
@"csbs$e1" = internal global [14 x i8] c"#soa[dynamic]\00" | |
@"csbs$e2" = internal global [8 x i8] c"struct \00" | |
@"csbs$e3" = internal global [9 x i8] c"#packed \00" | |
@"csbs$e4" = internal global [12 x i8] c"#raw_union \00" | |
@"csbs$e5" = internal global [8 x i8] c"#align \00" | |
@"csbs$e6" = internal global [7 x i8] c"union \00" | |
@"csbs$e7" = internal global [6 x i8] c"enum \00" | |
@"csbs$e8" = internal global [3 x i8] c" {\00" | |
@"csbs$e9" = internal global [9 x i8] c"bit_set[\00" | |
@"csbs$ea" = internal global [3 x i8] c"..\00" | |
@"csbs$eb" = internal global [3 x i8] c"; \00" | |
@"csbs$ec" = internal global [7 x i8] c"#simd[\00" | |
@"csbs$ed" = internal global [11 x i8] c"#relative(\00" | |
@"csbs$ee" = internal global [3 x i8] c") \00" | |
@"csbs$ef" = internal global [3 x i8] c"0x\00" | |
@"csbs$f0" = internal global [62 x i8] c"/home/armin/odin-arm64/Odin/core/strconv/decimal/decimal.odin\00" | |
@"csbs$f1" = internal global [19 x i8] c"%!(BAD ENUM VALUE)\00" | |
@"csbs$f2" = internal global [22 x i8] c"unknown bit_size size\00" | |
@"csbs$f3" = internal global [12 x i8] c"fmt_bit_set\00" | |
@"csbs$f4" = internal global [11 x i8] c"shift_left\00" | |
@"csbs$f5" = internal global [3 x i8] c",\0A\00" | |
@"csbs$f6" = internal global [3 x i8] c"0s\00" | |
@"csbs$f7" = internal global [3 x i8] c"\C2\B5\00" | |
@"csbs$f8" = internal global [11 x i8] c" +0000 UTC\00" | |
@"csbs$f9" = internal global [3 x i8] c"{}\00" | |
@"csbs$fa" = internal global [4 x i8] c" = \00" | |
@"csbs$fb" = internal global [6 x i8] c"any{}\00" | |
@"csbs$fc" = internal global [3 x i8] c"[\0A\00" | |
@"csbs$fd" = internal global [2 x i8] c"=\00" | |
@"csbs$fe" = internal global [12 x i8] c"(raw_union)\00" | |
@"csbs$ff" = internal global [23 x i8] c"Invalid union tag type\00" | |
@"csbs$100" = internal global [10 x i8] c"fmt_value\00" | |
@"csbs$101" = internal global [4 x i8] c" @ \00" | |
@"csbs$102" = internal global [5 x i8] c"\\x00\00" | |
@"csbs$103" = internal global [52 x i8] c"/home/armin/odin-arm64/Odin/core/runtime/print.odin\00" | |
@"csbs$104" = internal global [9 x i8] c"#no_nil \00" | |
@"csbs$105" = internal global [2 x i8] c"}\00" | |
@"csbs$106" = internal global [44 x i8] c"/home/armin/odin-arm64/Odin/core/io/io.odin\00" | |
@"csbs$107" = internal global [15 x i8] c"__slice_resize\00" | |
@"csbs$108" = internal global [59 x i8] c"/home/armin/odin-arm64/Odin/core/runtime/core_builtin.odin\00" | |
@"csbs$109" = internal global [22 x i8] c"reserve_dynamic_array\00" | |
@"csbs$10a" = internal global [18 x i8] c"runtime assertion\00" | |
@"csbs$10b" = internal global [8 x i8] c" Index \00" | |
@"csbs$10c" = internal global [27 x i8] c" is out of bounds range 0:\00" | |
@"csbs$10d" = internal global [30 x i8] c" Invalid type assertion from \00" | |
@"csbs$10e" = internal global [5 x i8] c" to \00" | |
@"csbs$10f" = internal global [59 x i8] c"/home/armin/odin-arm64/Odin/core/runtime/error_checks.odin\00" | |
@"csbs$110" = internal global [16 x i8] c", actual type: \00" | |
@"csbs$111" = internal global [33 x i8] c" Invalid slice length for make: \00" | |
@"csbs$112" = internal global [45 x i8] c" Invalid dynamic array parameters for make: \00" | |
; Function Attrs: nounwind | |
define dso_local i128 @runtime.udivmod128(i128 %0, i128 %1, i128* %2) #0 !dbg !544 { | |
decls: | |
call void @llvm.dbg.declare(metadata i128* %3, metadata !552, metadata !DIExpression()), !dbg !581 | |
%3 = alloca i128, align 16 | |
call void @llvm.dbg.declare(metadata i128* %4, metadata !553, metadata !DIExpression()), !dbg !582 | |
%4 = alloca i128, align 16 | |
call void @llvm.dbg.declare(metadata [2 x i64]* %5, metadata !555, metadata !DIExpression()), !dbg !583 | |
%5 = alloca [2 x i64], align 8, !dbg !583 | |
call void @llvm.dbg.declare(metadata [2 x i64]* %6, metadata !560, metadata !DIExpression()), !dbg !584 | |
%6 = alloca [2 x i64], align 8, !dbg !584 | |
call void @llvm.dbg.declare(metadata [2 x i64]* %7, metadata !561, metadata !DIExpression()), !dbg !585 | |
%7 = alloca [2 x i64], align 8, !dbg !585 | |
call void @llvm.dbg.declare(metadata [2 x i64]* %8, metadata !562, metadata !DIExpression()), !dbg !586 | |
%8 = alloca [2 x i64], align 8, !dbg !585 | |
call void @llvm.dbg.declare(metadata i128* %9, metadata !574, metadata !DIExpression()), !dbg !587 | |
%9 = alloca i128, align 16, !dbg !587 | |
store i128 %0, i128* %3, align 16 | |
store i128 %1, i128* %4, align 16 | |
call void @llvm.dbg.value(metadata i128* %2, metadata !554, metadata !DIExpression()), !dbg !588 | |
%10 = bitcast [2 x i64]* %5 to i8*, !dbg !583 | |
call void @llvm.memset.p0i8.i64(i8* %10, i8 0, i64 16, i1 false), !dbg !583 | |
%11 = bitcast i128* %3 to [2 x i64]*, !dbg !583 | |
%12 = bitcast [2 x i64]* %11 to i8*, !dbg !583 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %10, i8* align 8 %12, i64 16, i1 false), !dbg !583 | |
%13 = bitcast [2 x i64]* %6 to i8*, !dbg !584 | |
call void @llvm.memset.p0i8.i64(i8* %13, i8 0, i64 16, i1 false), !dbg !584 | |
%14 = bitcast i128* %4 to [2 x i64]*, !dbg !584 | |
%15 = bitcast [2 x i64]* %14 to i8*, !dbg !584 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %13, i8* align 8 %15, i64 16, i1 false), !dbg !584 | |
%16 = bitcast [2 x i64]* %7 to i8*, !dbg !585 | |
call void @llvm.memset.p0i8.i64(i8* %16, i8 0, i64 16, i1 false), !dbg !585 | |
%17 = bitcast [2 x i64]* %8 to i8*, !dbg !585 | |
call void @llvm.memset.p0i8.i64(i8* %17, i8 0, i64 16, i1 false), !dbg !585 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %16, i8 undef, i64 16, i1 false), !dbg !585 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %17, i8 undef, i64 16, i1 false), !dbg !585 | |
call void @llvm.dbg.value(metadata i32 0, metadata !563, metadata !DIExpression()), !dbg !589 | |
%18 = getelementptr [2 x i64], [2 x i64]* %5, i64 0, i64 1, !dbg !590 | |
%19 = load i64, i64* %18, align 8, !dbg !590 | |
%20 = icmp eq i64 %19, 0, !dbg !590 | |
br i1 %20, label %if.then, label %if.done6, !dbg !590 | |
if.then: ; preds = %decls | |
%21 = getelementptr [2 x i64], [2 x i64]* %6, i64 0, i64 1, !dbg !591 | |
%22 = load i64, i64* %21, align 8, !dbg !591 | |
%23 = icmp eq i64 %22, 0, !dbg !591 | |
%24 = icmp ne i128* %2, null, !dbg !592 | |
br i1 %23, label %if.then1, label %if.done3, !dbg !591 | |
if.then1: ; preds = %if.then | |
br i1 %24, label %if.then2, label %if.done, !dbg !593 | |
if.then2: ; preds = %if.then1 | |
call void @llvm.dbg.value(metadata i64 0, metadata !566, metadata !DIExpression()), !dbg !594 | |
%25 = getelementptr [2 x i64], [2 x i64]* %5, i64 0, i64 0, !dbg !595 | |
%26 = load i64, i64* %25, align 8, !dbg !595 | |
%27 = getelementptr [2 x i64], [2 x i64]* %6, i64 0, i64 0, !dbg !595 | |
%28 = load i64, i64* %27, align 8, !dbg !595 | |
%29 = urem i64 %26, %28, !dbg !595 | |
call void @llvm.dbg.value(metadata i64 %29, metadata !566, metadata !DIExpression()), !dbg !594 | |
%30 = zext i64 %29 to i128, !dbg !596 | |
store i128 %30, i128* %2, align 16, !dbg !596 | |
br label %if.done, !dbg !593 | |
if.done: ; preds = %if.then2, %if.then1 | |
%31 = getelementptr [2 x i64], [2 x i64]* %5, i64 0, i64 0, !dbg !597 | |
%32 = load i64, i64* %31, align 8, !dbg !597 | |
%33 = getelementptr [2 x i64], [2 x i64]* %6, i64 0, i64 0, !dbg !597 | |
%34 = load i64, i64* %33, align 8, !dbg !597 | |
%35 = udiv i64 %32, %34, !dbg !597 | |
%36 = zext i64 %35 to i128, !dbg !597 | |
ret i128 %36, !dbg !597 | |
if.done3: ; preds = %if.then | |
br i1 %24, label %if.then4, label %if.done5, !dbg !598 | |
if.then4: ; preds = %if.done3 | |
%37 = getelementptr [2 x i64], [2 x i64]* %5, i64 0, i64 0, !dbg !599 | |
%38 = load i64, i64* %37, align 8, !dbg !599 | |
%39 = zext i64 %38 to i128, !dbg !599 | |
store i128 %39, i128* %2, align 16, !dbg !599 | |
br label %if.done5, !dbg !598 | |
if.done5: ; preds = %for.done, %if.then43, %if.then34, %if.then35, %if.then20, %if.then21, %if.then4, %if.done3 | |
%merge = phi i128 [ 0, %if.then34 ], [ 0, %if.then35 ], [ 0, %if.then20 ], [ 0, %if.then21 ], [ 0, %if.then4 ], [ 0, %if.done3 ], [ %285, %if.then43 ], [ %285, %for.done ] | |
ret i128 %merge, !dbg !602 | |
if.done6: ; preds = %decls | |
%40 = getelementptr [2 x i64], [2 x i64]* %6, i64 0, i64 0, !dbg !603 | |
%41 = load i64, i64* %40, align 8, !dbg !603 | |
%42 = icmp eq i64 %41, 0, !dbg !603 | |
%43 = getelementptr [2 x i64], [2 x i64]* %6, i64 0, i64 1, !dbg !604 | |
%44 = load i64, i64* %43, align 8, !dbg !604 | |
%45 = icmp eq i64 %44, 0, !dbg !604 | |
br i1 %42, label %if.then7, label %if.else, !dbg !603 | |
if.then7: ; preds = %if.done6 | |
br i1 %45, label %if.then8, label %if.done11, !dbg !606 | |
if.then8: ; preds = %if.then7 | |
%46 = icmp ne i128* %2, null, !dbg !608 | |
br i1 %46, label %if.then9, label %if.done10, !dbg !608 | |
if.then9: ; preds = %if.then8 | |
%47 = urem i64 %19, %41, !dbg !611 | |
%48 = zext i64 %47 to i128, !dbg !611 | |
store i128 %48, i128* %2, align 16, !dbg !611 | |
br label %if.done10, !dbg !608 | |
if.done10: ; preds = %if.then9, %if.then8 | |
%49 = load i64, i64* %18, align 8, !dbg !614 | |
%50 = load i64, i64* %40, align 8, !dbg !614 | |
%51 = udiv i64 %49, %50, !dbg !614 | |
%52 = zext i64 %51 to i128, !dbg !614 | |
ret i128 %52, !dbg !614 | |
if.done11: ; preds = %if.then7 | |
%53 = getelementptr [2 x i64], [2 x i64]* %5, i64 0, i64 0, !dbg !615 | |
%54 = load i64, i64* %53, align 8, !dbg !615 | |
%55 = icmp eq i64 %54, 0, !dbg !615 | |
br i1 %55, label %if.then12, label %if.done15, !dbg !615 | |
if.then12: ; preds = %if.done11 | |
%56 = icmp ne i128* %2, null, !dbg !616 | |
br i1 %56, label %if.then13, label %if.done14, !dbg !616 | |
if.then13: ; preds = %if.then12 | |
%57 = getelementptr [2 x i64], [2 x i64]* %8, i64 0, i64 1, !dbg !619 | |
%58 = urem i64 %19, %44, !dbg !619 | |
store i64 %58, i64* %57, align 8, !dbg !619 | |
%59 = getelementptr [2 x i64], [2 x i64]* %8, i64 0, i64 0, !dbg !622 | |
store i64 0, i64* %59, align 8, !dbg !622 | |
%60 = bitcast [2 x i64]* %8 to i128*, !dbg !623 | |
%61 = load i128, i128* %60, align 16, !dbg !623 | |
store i128 %61, i128* %2, align 16, !dbg !623 | |
br label %if.done14, !dbg !616 | |
if.done14: ; preds = %if.then13, %if.then12 | |
%62 = load i64, i64* %18, align 8, !dbg !624 | |
%63 = load i64, i64* %43, align 8, !dbg !624 | |
%64 = udiv i64 %62, %63, !dbg !624 | |
%65 = zext i64 %64 to i128, !dbg !624 | |
ret i128 %65, !dbg !624 | |
if.done15: ; preds = %if.done11 | |
%66 = sub i64 %44, 1, !dbg !625 | |
%67 = and i64 %44, %66, !dbg !625 | |
%68 = icmp eq i64 %67, 0, !dbg !625 | |
br i1 %68, label %if.then16, label %if.done19, !dbg !625 | |
if.then16: ; preds = %if.done15 | |
%69 = icmp ne i128* %2, null, !dbg !626 | |
br i1 %69, label %if.then17, label %if.done18, !dbg !626 | |
if.then17: ; preds = %if.then16 | |
%70 = getelementptr [2 x i64], [2 x i64]* %8, i64 0, i64 0, !dbg !629 | |
store i64 %54, i64* %70, align 8, !dbg !629 | |
%71 = getelementptr [2 x i64], [2 x i64]* %8, i64 0, i64 1, !dbg !632 | |
%72 = load i64, i64* %18, align 8, !dbg !632 | |
%73 = load i64, i64* %43, align 8, !dbg !632 | |
%74 = sub i64 %73, 1, !dbg !632 | |
%75 = and i64 %72, %74, !dbg !632 | |
store i64 %75, i64* %71, align 8, !dbg !632 | |
%76 = bitcast [2 x i64]* %8 to i128*, !dbg !633 | |
%77 = load i128, i128* %76, align 16, !dbg !633 | |
store i128 %77, i128* %2, align 16, !dbg !633 | |
br label %if.done18, !dbg !626 | |
if.done18: ; preds = %if.then17, %if.then16 | |
%78 = load i64, i64* %18, align 8, !dbg !634 | |
%79 = load i64, i64* %43, align 8, !dbg !634 | |
%80 = call i64 @llvm.cttz.i64(i64 %79, i1 false), !dbg !634 | |
%81 = icmp ult i64 %80, 64, !dbg !634 | |
%82 = lshr i64 %78, %80, !dbg !634 | |
%83 = select i1 %81, i64 %82, i64 0, !dbg !634 | |
%84 = zext i64 %83 to i128, !dbg !634 | |
ret i128 %84, !dbg !634 | |
if.done19: ; preds = %if.done15 | |
%85 = call i64 @llvm.ctlz.i64(i64 %44, i1 false), !dbg !635 | |
%86 = trunc i64 %85 to i32, !dbg !635 | |
%87 = call i64 @llvm.ctlz.i64(i64 %19, i1 false), !dbg !635 | |
%88 = trunc i64 %87 to i32, !dbg !635 | |
%89 = sub i32 %86, %88, !dbg !635 | |
call void @llvm.dbg.value(metadata i32 %89, metadata !563, metadata !DIExpression()), !dbg !589 | |
%90 = icmp ugt i32 %89, 62, !dbg !636 | |
br i1 %90, label %if.then20, label %if.done23, !dbg !636 | |
if.then20: ; preds = %if.done19 | |
%91 = icmp ne i128* %2, null, !dbg !637 | |
br i1 %91, label %if.then21, label %if.done5, !dbg !637 | |
if.then21: ; preds = %if.then20 | |
%92 = load i128, i128* %3, align 16, !dbg !640 | |
store i128 %92, i128* %2, align 16, !dbg !640 | |
br label %if.done5, !dbg !637 | |
if.done23: ; preds = %if.done19 | |
%93 = add i32 %89, 1, !dbg !643 | |
call void @llvm.dbg.value(metadata i32 %93, metadata !563, metadata !DIExpression()), !dbg !589 | |
%94 = getelementptr [2 x i64], [2 x i64]* %7, i64 0, i64 0, !dbg !644 | |
store i64 0, i64* %94, align 8, !dbg !644 | |
%95 = getelementptr [2 x i64], [2 x i64]* %7, i64 0, i64 1, !dbg !645 | |
%96 = load i64, i64* %53, align 8, !dbg !645 | |
%97 = sub i32 64, %93, !dbg !645 | |
%98 = zext i32 %97 to i64, !dbg !645 | |
%99 = icmp ult i64 %98, 64, !dbg !645 | |
%100 = shl i64 %96, %98, !dbg !645 | |
%101 = select i1 %99, i64 %100, i64 0, !dbg !645 | |
store i64 %101, i64* %95, align 8, !dbg !645 | |
%102 = getelementptr [2 x i64], [2 x i64]* %8, i64 0, i64 1, !dbg !646 | |
%103 = load i64, i64* %18, align 8, !dbg !646 | |
%104 = zext i32 %93 to i64, !dbg !646 | |
%105 = icmp ult i64 %104, 64, !dbg !646 | |
%106 = lshr i64 %103, %104, !dbg !646 | |
%107 = select i1 %105, i64 %106, i64 0, !dbg !646 | |
store i64 %107, i64* %102, align 8, !dbg !646 | |
%108 = getelementptr [2 x i64], [2 x i64]* %8, i64 0, i64 0, !dbg !647 | |
%109 = load i64, i64* %18, align 8, !dbg !647 | |
%110 = shl i64 %109, %98, !dbg !647 | |
%111 = select i1 %99, i64 %110, i64 0, !dbg !647 | |
%112 = load i64, i64* %53, align 8, !dbg !647 | |
%113 = lshr i64 %112, %104, !dbg !647 | |
%114 = select i1 %105, i64 %113, i64 0, !dbg !647 | |
%115 = or i64 %111, %114, !dbg !647 | |
store i64 %115, i64* %108, align 8, !dbg !647 | |
br label %if.done42, !dbg !603 | |
if.else: ; preds = %if.done6 | |
br i1 %45, label %if.then24, label %if.else33, !dbg !648 | |
if.then24: ; preds = %if.else | |
%116 = sub i64 %41, 1, !dbg !650 | |
%117 = and i64 %41, %116, !dbg !650 | |
%118 = icmp eq i64 %117, 0, !dbg !650 | |
br i1 %118, label %if.then25, label %if.done30, !dbg !650 | |
if.then25: ; preds = %if.then24 | |
%119 = icmp ne i128* %2, null, !dbg !653 | |
br i1 %119, label %if.then26, label %if.done27, !dbg !653 | |
if.then26: ; preds = %if.then25 | |
%120 = getelementptr [2 x i64], [2 x i64]* %5, i64 0, i64 0, !dbg !656 | |
%121 = load i64, i64* %120, align 8, !dbg !656 | |
%122 = and i64 %121, %116, !dbg !656 | |
%123 = zext i64 %122 to i128, !dbg !656 | |
store i128 %123, i128* %2, align 16, !dbg !656 | |
br label %if.done27, !dbg !653 | |
if.done27: ; preds = %if.then26, %if.then25 | |
%124 = load i64, i64* %40, align 8, !dbg !659 | |
%125 = icmp eq i64 %124, 1, !dbg !659 | |
br i1 %125, label %if.then28, label %if.done29, !dbg !659 | |
if.then28: ; preds = %if.done27 | |
%126 = load i128, i128* %3, align 16, !dbg !660 | |
ret i128 %126, !dbg !660 | |
if.done29: ; preds = %if.done27 | |
%127 = call i64 @llvm.cttz.i64(i64 %124, i1 false), !dbg !663 | |
%128 = trunc i64 %127 to i32, !dbg !663 | |
call void @llvm.dbg.value(metadata i32 %128, metadata !563, metadata !DIExpression()), !dbg !589 | |
%129 = getelementptr [2 x i64], [2 x i64]* %7, i64 0, i64 1, !dbg !664 | |
%130 = load i64, i64* %18, align 8, !dbg !664 | |
%131 = zext i32 %128 to i64, !dbg !664 | |
%132 = icmp ult i64 %131, 64, !dbg !664 | |
%133 = lshr i64 %130, %131, !dbg !664 | |
%134 = select i1 %132, i64 %133, i64 0, !dbg !664 | |
store i64 %134, i64* %129, align 8, !dbg !664 | |
%135 = getelementptr [2 x i64], [2 x i64]* %7, i64 0, i64 0, !dbg !665 | |
%136 = load i64, i64* %18, align 8, !dbg !665 | |
%137 = sub i32 64, %128, !dbg !665 | |
%138 = zext i32 %137 to i64, !dbg !665 | |
%139 = icmp ult i64 %138, 64, !dbg !665 | |
%140 = shl i64 %136, %138, !dbg !665 | |
%141 = select i1 %139, i64 %140, i64 0, !dbg !665 | |
%142 = getelementptr [2 x i64], [2 x i64]* %5, i64 0, i64 0, !dbg !665 | |
%143 = load i64, i64* %142, align 8, !dbg !665 | |
%144 = lshr i64 %143, %131, !dbg !665 | |
%145 = select i1 %132, i64 %144, i64 0, !dbg !665 | |
%146 = or i64 %141, %145, !dbg !665 | |
store i64 %146, i64* %135, align 8, !dbg !665 | |
%147 = bitcast [2 x i64]* %7 to i128*, !dbg !666 | |
%148 = load i128, i128* %147, align 16, !dbg !666 | |
ret i128 %148, !dbg !666 | |
if.done30: ; preds = %if.then24 | |
%149 = call i64 @llvm.ctlz.i64(i64 %41, i1 false), !dbg !667 | |
%150 = trunc i64 %149 to i32, !dbg !667 | |
%151 = add i32 65, %150, !dbg !667 | |
%152 = call i64 @llvm.ctlz.i64(i64 %19, i1 false), !dbg !667 | |
%153 = trunc i64 %152 to i32, !dbg !667 | |
%154 = sub i32 %151, %153, !dbg !667 | |
call void @llvm.dbg.value(metadata i32 %154, metadata !563, metadata !DIExpression()), !dbg !589 | |
%155 = icmp eq i32 %154, 64, !dbg !668 | |
br i1 %155, label %switch.case.body, label %switch.case.next, !dbg !668 | |
switch.case.next: ; preds = %if.done30 | |
%156 = icmp ult i32 %154, 64, !dbg !668 | |
%157 = getelementptr [2 x i64], [2 x i64]* %7, i64 0, i64 0, !dbg !669 | |
br i1 %156, label %switch.case.body32, label %switch.default.body, !dbg !668 | |
switch.case.body: ; preds = %if.done30 | |
%158 = getelementptr [2 x i64], [2 x i64]* %7, i64 0, i64 0, !dbg !671 | |
store i64 0, i64* %158, align 8, !dbg !671 | |
%159 = getelementptr [2 x i64], [2 x i64]* %7, i64 0, i64 1, !dbg !672 | |
%160 = getelementptr [2 x i64], [2 x i64]* %5, i64 0, i64 0, !dbg !672 | |
%161 = load i64, i64* %160, align 8, !dbg !672 | |
store i64 %161, i64* %159, align 8, !dbg !672 | |
%162 = getelementptr [2 x i64], [2 x i64]* %8, i64 0, i64 1, !dbg !673 | |
store i64 0, i64* %162, align 8, !dbg !673 | |
%163 = getelementptr [2 x i64], [2 x i64]* %8, i64 0, i64 0, !dbg !674 | |
%164 = load i64, i64* %18, align 8, !dbg !674 | |
store i64 %164, i64* %163, align 8, !dbg !674 | |
br label %if.done42, !dbg !668 | |
switch.case.body32: ; preds = %switch.case.next | |
store i64 0, i64* %157, align 8, !dbg !675 | |
%165 = getelementptr [2 x i64], [2 x i64]* %7, i64 0, i64 1, !dbg !676 | |
%166 = getelementptr [2 x i64], [2 x i64]* %5, i64 0, i64 0, !dbg !676 | |
%167 = load i64, i64* %166, align 8, !dbg !676 | |
%168 = sub i32 64, %154, !dbg !676 | |
%169 = zext i32 %168 to i64, !dbg !676 | |
%170 = icmp ult i64 %169, 64, !dbg !676 | |
%171 = shl i64 %167, %169, !dbg !676 | |
%172 = select i1 %170, i64 %171, i64 0, !dbg !676 | |
store i64 %172, i64* %165, align 8, !dbg !676 | |
%173 = getelementptr [2 x i64], [2 x i64]* %8, i64 0, i64 1, !dbg !677 | |
%174 = load i64, i64* %18, align 8, !dbg !677 | |
%175 = zext i32 %154 to i64, !dbg !677 | |
%176 = icmp ult i64 %175, 64, !dbg !677 | |
%177 = lshr i64 %174, %175, !dbg !677 | |
%178 = select i1 %176, i64 %177, i64 0, !dbg !677 | |
store i64 %178, i64* %173, align 8, !dbg !677 | |
%179 = getelementptr [2 x i64], [2 x i64]* %8, i64 0, i64 0, !dbg !678 | |
%180 = load i64, i64* %18, align 8, !dbg !678 | |
%181 = shl i64 %180, %169, !dbg !678 | |
%182 = select i1 %170, i64 %181, i64 0, !dbg !678 | |
%183 = load i64, i64* %166, align 8, !dbg !678 | |
%184 = lshr i64 %183, %175, !dbg !678 | |
%185 = select i1 %176, i64 %184, i64 0, !dbg !678 | |
%186 = or i64 %182, %185, !dbg !678 | |
store i64 %186, i64* %179, align 8, !dbg !678 | |
br label %if.done42, !dbg !668 | |
switch.default.body: ; preds = %switch.case.next | |
%187 = getelementptr [2 x i64], [2 x i64]* %5, i64 0, i64 0, !dbg !679 | |
%188 = load i64, i64* %187, align 8, !dbg !679 | |
%189 = sub i32 128, %154, !dbg !679 | |
%190 = zext i32 %189 to i64, !dbg !679 | |
%191 = icmp ult i64 %190, 64, !dbg !679 | |
%192 = shl i64 %188, %190, !dbg !679 | |
%193 = select i1 %191, i64 %192, i64 0, !dbg !679 | |
store i64 %193, i64* %157, align 8, !dbg !679 | |
%194 = getelementptr [2 x i64], [2 x i64]* %7, i64 0, i64 1, !dbg !680 | |
%195 = load i64, i64* %18, align 8, !dbg !680 | |
%196 = shl i64 %195, %190, !dbg !680 | |
%197 = select i1 %191, i64 %196, i64 0, !dbg !680 | |
%198 = load i64, i64* %187, align 8, !dbg !680 | |
%199 = sub i32 %154, 64, !dbg !680 | |
%200 = zext i32 %199 to i64, !dbg !680 | |
%201 = icmp ult i64 %200, 64, !dbg !680 | |
%202 = lshr i64 %198, %200, !dbg !680 | |
%203 = select i1 %201, i64 %202, i64 0, !dbg !680 | |
%204 = or i64 %197, %203, !dbg !680 | |
store i64 %204, i64* %194, align 8, !dbg !680 | |
%205 = getelementptr [2 x i64], [2 x i64]* %8, i64 0, i64 1, !dbg !681 | |
store i64 0, i64* %205, align 8, !dbg !681 | |
%206 = getelementptr [2 x i64], [2 x i64]* %8, i64 0, i64 0, !dbg !682 | |
%207 = load i64, i64* %18, align 8, !dbg !682 | |
%208 = lshr i64 %207, %200, !dbg !682 | |
%209 = select i1 %201, i64 %208, i64 0, !dbg !682 | |
store i64 %209, i64* %206, align 8, !dbg !682 | |
br label %if.done42, !dbg !668 | |
if.else33: ; preds = %if.else | |
%210 = call i64 @llvm.ctlz.i64(i64 %44, i1 false), !dbg !683 | |
%211 = trunc i64 %210 to i32, !dbg !683 | |
%212 = call i64 @llvm.ctlz.i64(i64 %19, i1 false), !dbg !683 | |
%213 = trunc i64 %212 to i32, !dbg !683 | |
%214 = sub i32 %211, %213, !dbg !683 | |
call void @llvm.dbg.value(metadata i32 %214, metadata !563, metadata !DIExpression()), !dbg !589 | |
%215 = icmp ugt i32 %214, 63, !dbg !685 | |
br i1 %215, label %if.then34, label %if.done37, !dbg !685 | |
if.then34: ; preds = %if.else33 | |
%216 = icmp ne i128* %2, null, !dbg !686 | |
br i1 %216, label %if.then35, label %if.done5, !dbg !686 | |
if.then35: ; preds = %if.then34 | |
%217 = load i128, i128* %3, align 16, !dbg !689 | |
store i128 %217, i128* %2, align 16, !dbg !689 | |
br label %if.done5, !dbg !686 | |
if.done37: ; preds = %if.else33 | |
%218 = add i32 %214, 1, !dbg !692 | |
call void @llvm.dbg.value(metadata i32 %218, metadata !563, metadata !DIExpression()), !dbg !589 | |
%219 = getelementptr [2 x i64], [2 x i64]* %7, i64 0, i64 0, !dbg !693 | |
store i64 0, i64* %219, align 8, !dbg !693 | |
%220 = icmp eq i32 %218, 64, !dbg !694 | |
br i1 %220, label %if.then38, label %if.else39, !dbg !694 | |
if.then38: ; preds = %if.done37 | |
%221 = getelementptr [2 x i64], [2 x i64]* %5, i64 0, i64 0, !dbg !695 | |
%222 = load i64, i64* %221, align 8, !dbg !695 | |
%223 = load i64, i64* %18, align 8, !dbg !698 | |
br label %if.done40, !dbg !694 | |
if.else39: ; preds = %if.done37 | |
%224 = load i64, i64* %18, align 8, !dbg !699 | |
%225 = zext i32 %218 to i64, !dbg !699 | |
%226 = icmp ult i64 %225, 64, !dbg !699 | |
%227 = lshr i64 %224, %225, !dbg !699 | |
%228 = select i1 %226, i64 %227, i64 0, !dbg !699 | |
%229 = sub i32 64, %218, !dbg !701 | |
%230 = zext i32 %229 to i64, !dbg !701 | |
%231 = icmp ult i64 %230, 64, !dbg !701 | |
%232 = shl i64 %224, %230, !dbg !701 | |
%233 = select i1 %231, i64 %232, i64 0, !dbg !701 | |
%234 = getelementptr [2 x i64], [2 x i64]* %5, i64 0, i64 0, !dbg !701 | |
%235 = load i64, i64* %234, align 8, !dbg !701 | |
%236 = lshr i64 %235, %225, !dbg !701 | |
%237 = select i1 %226, i64 %236, i64 0, !dbg !701 | |
%238 = or i64 %233, %237, !dbg !701 | |
%239 = shl i64 %235, %230, !dbg !702 | |
%240 = select i1 %231, i64 %239, i64 0, !dbg !702 | |
br label %if.done40, !dbg !694 | |
if.done40: ; preds = %if.else39, %if.then38 | |
%.sink47 = phi i64 [ %222, %if.then38 ], [ %240, %if.else39 ], !dbg !703 | |
%.sink46 = phi i64 [ 0, %if.then38 ], [ %228, %if.else39 ], !dbg !703 | |
%.sink = phi i64 [ %223, %if.then38 ], [ %238, %if.else39 ], !dbg !703 | |
%241 = getelementptr [2 x i64], [2 x i64]* %7, i64 0, i64 1, !dbg !695 | |
store i64 %.sink47, i64* %241, align 8, !dbg !695 | |
%242 = getelementptr [2 x i64], [2 x i64]* %8, i64 0, i64 1, !dbg !704 | |
store i64 %.sink46, i64* %242, align 8, !dbg !704 | |
%243 = getelementptr [2 x i64], [2 x i64]* %8, i64 0, i64 0, !dbg !698 | |
store i64 %.sink, i64* %243, align 8, !dbg !698 | |
br label %if.done42, !dbg !648 | |
if.done42: ; preds = %if.done40, %switch.default.body, %switch.case.body32, %switch.case.body, %if.done23 | |
%.1 = phi i32 [ %93, %if.done23 ], [ %218, %if.done40 ], [ %154, %switch.default.body ], [ %154, %switch.case.body32 ], [ %154, %switch.case.body ], !dbg !604 | |
call void @llvm.dbg.value(metadata i32 %.1, metadata !563, metadata !DIExpression()), !dbg !589 | |
call void @llvm.dbg.value(metadata i32 0, metadata !573, metadata !DIExpression()), !dbg !589 | |
call void @llvm.dbg.value(metadata i32 0, metadata !573, metadata !DIExpression()), !dbg !589 | |
store i128 undef, i128* %9, align 16, !dbg !587 | |
br label %for.loop, !dbg !705 | |
for.loop: ; preds = %for.body, %if.done42 | |
%.045 = phi i32 [ 0, %if.done42 ], [ %275, %for.body ], !dbg !589 | |
%.2 = phi i32 [ %.1, %if.done42 ], [ %280, %for.body ], !dbg !589 | |
call void @llvm.dbg.value(metadata i32 %.2, metadata !563, metadata !DIExpression()), !dbg !589 | |
call void @llvm.dbg.value(metadata i32 %.045, metadata !573, metadata !DIExpression()), !dbg !589 | |
%244 = icmp ugt i32 %.2, 0, !dbg !705 | |
br i1 %244, label %for.body, label %for.done, !dbg !705 | |
for.body: ; preds = %for.loop | |
%245 = getelementptr [2 x i64], [2 x i64]* %8, i64 0, i64 1, !dbg !706 | |
%246 = load i64, i64* %245, align 8, !dbg !706 | |
%247 = shl i64 %246, 1, !dbg !706 | |
%248 = getelementptr [2 x i64], [2 x i64]* %8, i64 0, i64 0, !dbg !706 | |
%249 = load i64, i64* %248, align 8, !dbg !706 | |
%250 = lshr i64 %249, 63, !dbg !706 | |
%251 = or i64 %247, %250, !dbg !706 | |
store i64 %251, i64* %245, align 8, !dbg !706 | |
%252 = load i64, i64* %248, align 8, !dbg !707 | |
%253 = shl i64 %252, 1, !dbg !707 | |
%254 = getelementptr [2 x i64], [2 x i64]* %7, i64 0, i64 1, !dbg !707 | |
%255 = load i64, i64* %254, align 8, !dbg !707 | |
%256 = lshr i64 %255, 63, !dbg !707 | |
%257 = or i64 %253, %256, !dbg !707 | |
store i64 %257, i64* %248, align 8, !dbg !707 | |
%258 = load i64, i64* %254, align 8, !dbg !708 | |
%259 = shl i64 %258, 1, !dbg !708 | |
%260 = getelementptr [2 x i64], [2 x i64]* %7, i64 0, i64 0, !dbg !708 | |
%261 = load i64, i64* %260, align 8, !dbg !708 | |
%262 = lshr i64 %261, 63, !dbg !708 | |
%263 = or i64 %259, %262, !dbg !708 | |
store i64 %263, i64* %254, align 8, !dbg !708 | |
%264 = load i64, i64* %260, align 8, !dbg !709 | |
%265 = shl i64 %264, 1, !dbg !709 | |
%266 = zext i32 %.045 to i64, !dbg !709 | |
%267 = or i64 %265, %266, !dbg !709 | |
store i64 %267, i64* %260, align 8, !dbg !709 | |
%268 = bitcast [2 x i64]* %8 to i128*, !dbg !710 | |
%269 = load i128, i128* %268, align 16, !dbg !710 | |
store i128 %269, i128* %9, align 16, !dbg !710 | |
call void @llvm.dbg.value(metadata i128 0, metadata !575, metadata !DIExpression()), !dbg !711 | |
%270 = load i128, i128* %4, align 16, !dbg !712 | |
%271 = sub i128 %270, %269, !dbg !712 | |
%272 = sub i128 %271, 1, !dbg !712 | |
%273 = ashr i128 %272, 127, !dbg !712 | |
call void @llvm.dbg.value(metadata i128 %273, metadata !575, metadata !DIExpression()), !dbg !711 | |
%274 = and i128 %273, 1, !dbg !713 | |
%275 = trunc i128 %274 to i32, !dbg !713 | |
call void @llvm.dbg.value(metadata i32 %275, metadata !573, metadata !DIExpression()), !dbg !589 | |
%276 = and i128 %270, %273, !dbg !714 | |
%277 = sub i128 %269, %276, !dbg !714 | |
store i128 %277, i128* %9, align 16, !dbg !714 | |
%278 = bitcast i128* %9 to [2 x i64]*, !dbg !715 | |
%279 = bitcast [2 x i64]* %278 to i8*, !dbg !715 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %17, i8* align 8 %279, i64 16, i1 false), !dbg !715 | |
%280 = sub i32 %.2, 1, !dbg !716 | |
call void @llvm.dbg.value(metadata i32 %280, metadata !563, metadata !DIExpression()), !dbg !589 | |
br label %for.loop, !dbg !705 | |
for.done: ; preds = %for.loop | |
call void @llvm.dbg.value(metadata i128 0, metadata !580, metadata !DIExpression()), !dbg !589 | |
%281 = bitcast [2 x i64]* %7 to i128*, !dbg !717 | |
%282 = load i128, i128* %281, align 16, !dbg !717 | |
%283 = shl i128 %282, 1, !dbg !717 | |
%284 = zext i32 %.045 to i128, !dbg !717 | |
%285 = or i128 %283, %284, !dbg !717 | |
call void @llvm.dbg.value(metadata i128 %285, metadata !580, metadata !DIExpression()), !dbg !589 | |
%286 = icmp ne i128* %2, null, !dbg !718 | |
br i1 %286, label %if.then43, label %if.done5, !dbg !718 | |
if.then43: ; preds = %for.done | |
%287 = load i128, i128* %9, align 16, !dbg !719 | |
store i128 %287, i128* %2, align 16, !dbg !719 | |
br label %if.done5, !dbg !718 | |
} | |
define internal void @test.main(i8* noalias nocapture nonnull %__.context_ptr) !dbg !722 { | |
decls: | |
call void @llvm.dbg.declare(metadata { i64*, i64, i64, %runtime.Allocator }* %0, metadata !763, metadata !DIExpression()), !dbg !769 | |
%0 = alloca { i64*, i64, i64, %runtime.Allocator }, align 8, !dbg !769 | |
%1 = alloca { i64*, i64, i64, %runtime.Allocator }, align 8, !dbg !769 | |
%2 = alloca %runtime.Source_Code_Location, align 8, !dbg !769 | |
%3 = alloca [3 x i64], align 8, !dbg !769 | |
%4 = alloca %runtime.Source_Code_Location, align 8, !dbg !769 | |
call void @llvm.dbg.declare(metadata i64* %5, metadata !767, metadata !DIExpression()), !dbg !770 | |
%5 = alloca i64, align 8, !dbg !771 | |
%6 = alloca %..any, align 8, !dbg !772 | |
%7 = alloca { %..any*, i64 }, align 8, !dbg !772 | |
%8 = alloca [1 x %..any], align 8, !dbg !772 | |
%9 = alloca [2 x i64], align 8, !dbg !772 | |
%10 = alloca %runtime.Source_Code_Location, align 8, !dbg !774 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !726, metadata !DIExpression()), !dbg !775 | |
%11 = bitcast { i64*, i64, i64, %runtime.Allocator }* %0 to i8*, !dbg !769 | |
call void @llvm.memset.p0i8.i64(i8* %11, i8 0, i64 40, i1 false), !dbg !769 | |
%12 = bitcast { i64*, i64, i64, %runtime.Allocator }* %1 to i8*, !dbg !769 | |
call void @llvm.memset.p0i8.i64(i8* %12, i8 0, i64 40, i1 false), !dbg !769 | |
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([43 x i8], [43 x i8]* @"csbs$78", i64 0, i64 0), i64 42 }, i32 5, i32 24, %..string { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"csbs$79", i64 0, i64 0), i64 4 } }, %runtime.Source_Code_Location* %2, align 8, !dbg !769 | |
%13 = call i8 @runtime.__dynamic_array_reserve(i8* %12, i64 8, i64 8, i64 6, %runtime.Source_Code_Location* %2, i8* %__.context_ptr), !dbg !769 | |
%14 = bitcast [3 x i64]* %3 to i8*, !dbg !769 | |
call void @llvm.memset.p0i8.i64(i8* %14, i8 0, i64 24, i1 false), !dbg !769 | |
%15 = getelementptr [3 x i64], [3 x i64]* %3, i64 0, i64 0, !dbg !769 | |
store i64 1, i64* %15, align 8, !dbg !769 | |
%16 = getelementptr [3 x i64], [3 x i64]* %3, i64 0, i64 1, !dbg !769 | |
store i64 2, i64* %16, align 8, !dbg !769 | |
%17 = getelementptr [3 x i64], [3 x i64]* %3, i64 0, i64 2, !dbg !769 | |
store i64 3, i64* %17, align 8, !dbg !769 | |
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([43 x i8], [43 x i8]* @"csbs$78", i64 0, i64 0), i64 42 }, i32 5, i32 24, %..string { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"csbs$79", i64 0, i64 0), i64 4 } }, %runtime.Source_Code_Location* %4, align 8, !dbg !769 | |
%18 = call i64 @runtime.__dynamic_array_append(i8* %12, i64 8, i64 8, i8* %14, i64 3, %runtime.Source_Code_Location* %4, i8* %__.context_ptr), !dbg !769 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %11, i8* align 8 %12, i64 40, i1 false), !dbg !769 | |
call void @llvm.dbg.value(metadata i64 0, metadata !767, metadata !DIExpression()), !dbg !776 | |
%19 = getelementptr inbounds { i64*, i64, i64, %runtime.Allocator }, { i64*, i64, i64, %runtime.Allocator }* %0, i32 0, i32 1, !dbg !771 | |
br label %for.index.loop, !dbg !771 | |
for.index.loop: ; preds = %for.index.body, %decls | |
%.0 = phi i64 [ -1, %decls ], [ %20, %for.index.body ], !dbg !771 | |
%20 = add i64 %.0, 1, !dbg !771 | |
%21 = load i64, i64* %19, align 8, !dbg !771 | |
%22 = icmp slt i64 %20, %21, !dbg !771 | |
br i1 %22, label %for.index.body, label %defer, !dbg !771 | |
for.index.body: ; preds = %for.index.loop | |
%23 = getelementptr inbounds { i64*, i64, i64, %runtime.Allocator }, { i64*, i64, i64, %runtime.Allocator }* %0, i32 0, i32 0, !dbg !771 | |
%24 = load i64*, i64** %23, align 8, !dbg !771 | |
%25 = getelementptr i64, i64* %24, i64 %20, !dbg !771 | |
%26 = load i64, i64* %25, align 8, !dbg !771 | |
store i64 %26, i64* %5, align 8, !dbg !771 | |
%27 = bitcast %..any* %6 to i8*, !dbg !772 | |
call void @llvm.memset.p0i8.i64(i8* %27, i8 0, i64 16, i1 false), !dbg !772 | |
%28 = bitcast i64* %5 to i8*, !dbg !772 | |
%29 = getelementptr inbounds %..any, %..any* %6, i32 0, i32 0, !dbg !772 | |
%30 = getelementptr inbounds %..any, %..any* %6, i32 0, i32 1, !dbg !772 | |
store i8* %28, i8** %29, align 8, !dbg !772 | |
store i64 4683743612465315841, i64* %30, align 8, !dbg !772 | |
%31 = bitcast { %..any*, i64 }* %7 to i8*, !dbg !772 | |
call void @llvm.memset.p0i8.i64(i8* %31, i8 0, i64 16, i1 false), !dbg !772 | |
%32 = getelementptr [1 x %..any], [1 x %..any]* %8, i64 0, i64 0, !dbg !772 | |
%33 = bitcast %..any* %32 to i8*, !dbg !772 | |
%34 = getelementptr i8, i8* %33, i64 16, !dbg !772 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %34, i8 0, i64 0, i1 false), !dbg !772 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %33, i8* align 8 %27, i64 16, i1 false), !dbg !772 | |
%35 = getelementptr inbounds { %..any*, i64 }, { %..any*, i64 }* %7, i32 0, i32 0, !dbg !772 | |
store %..any* %32, %..any** %35, align 8, !dbg !772 | |
%36 = getelementptr inbounds { %..any*, i64 }, { %..any*, i64 }* %7, i32 0, i32 1, !dbg !772 | |
store i64 1, i64* %36, align 8, !dbg !772 | |
%37 = bitcast { %..any*, i64 }* %7 to [2 x i64]*, !dbg !772 | |
%38 = load [2 x i64], [2 x i64]* %37, align 8, !dbg !772 | |
%39 = bitcast [2 x i64]* %9 to %..string*, !dbg !772 | |
store %..string { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"csbs$7a", i64 0, i64 0), i64 1 }, %..string* %39, align 8, !dbg !772 | |
%40 = load [2 x i64], [2 x i64]* %9, align 8, !dbg !772 | |
%41 = call i64 @fmt.println([2 x i64] %38, [2 x i64] %40, i8* %__.context_ptr), !dbg !772 | |
br label %for.index.loop, !dbg !771 | |
defer: ; preds = %for.index.loop | |
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([43 x i8], [43 x i8]* @"csbs$78", i64 0, i64 0), i64 42 }, i32 6, i32 15, %..string { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"csbs$79", i64 0, i64 0), i64 4 } }, %runtime.Source_Code_Location* %10, align 8, !dbg !774 | |
%42 = call i8 @runtime.delete_dynamic_array-6324({ i64*, i64, i64, %runtime.Allocator }* %0, %runtime.Source_Code_Location* %10, i8* %__.context_ptr), !dbg !774 | |
ret void, !dbg !775 | |
} | |
define internal void @os.heap_allocator_proc({ { i8*, i64 }, i8 }* noalias sret align 8 %agg.result, i8* %0, i8 %1, i64 %2, i64 %3, i8* %4, i64 %5, %runtime.Source_Code_Location* %6, i8* noalias nocapture nonnull %__.context_ptr) !dbg !777 { | |
decls: | |
%7 = alloca { { i8*, i64 }, i8 }, align 8, !dbg !799 | |
%8 = alloca { { i8*, i64 }, i8 }, align 8, !dbg !800 | |
%9 = alloca { { i8*, i64 }, i8 }, align 8, !dbg !803 | |
call void @llvm.dbg.value(metadata i8* %0, metadata !780, metadata !DIExpression()), !dbg !804 | |
call void @llvm.dbg.value(metadata i8 %1, metadata !781, metadata !DIExpression()), !dbg !804 | |
call void @llvm.dbg.value(metadata i64 %2, metadata !782, metadata !DIExpression()), !dbg !804 | |
call void @llvm.dbg.value(metadata i64 %3, metadata !783, metadata !DIExpression()), !dbg !804 | |
call void @llvm.dbg.value(metadata i8* %4, metadata !784, metadata !DIExpression()), !dbg !804 | |
call void @llvm.dbg.value(metadata i64 %5, metadata !785, metadata !DIExpression()), !dbg !804 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !786, metadata !DIExpression()), !dbg !805 | |
switch i8 %1, label %switch.done [ | |
i8 0, label %switch.case.body | |
i8 1, label %switch.case.body1 | |
i8 2, label %switch.case.body2 | |
i8 3, label %switch.case.body3 | |
i8 4, label %switch.case.body4 | |
i8 5, label %switch.case.body7 | |
], !dbg !806 | |
switch.case.body: ; preds = %decls | |
%10 = bitcast { { i8*, i64 }, i8 }* %7 to i8*, !dbg !799 | |
call void @llvm.memset.p0i8.i64(i8* %10, i8 0, i64 24, i1 false), !dbg !799 | |
call void @os.heap_allocator_proc.aligned_alloc-0({ { i8*, i64 }, i8 }* sret %7, i64 %2, i64 %3, i8* null, i8* %__.context_ptr), !dbg !799 | |
%11 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %7, i32 0, i32 0, !dbg !799 | |
%12 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %7, i32 0, i32 1, !dbg !799 | |
%13 = load i8, i8* %12, align 1, !dbg !799 | |
%14 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 0, !dbg !799 | |
%15 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 1, !dbg !799 | |
%16 = bitcast { i8*, i64 }* %14 to i8*, !dbg !799 | |
%17 = bitcast { i8*, i64 }* %11 to i8*, !dbg !799 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %16, i8* align 8 %17, i64 16, i1 false), !dbg !799 | |
store i8 %13, i8* %15, align 1, !dbg !799 | |
ret void, !dbg !799 | |
switch.case.body1: ; preds = %decls | |
call void @os.heap_allocator_proc.aligned_free-1(i8* %4, i8* %__.context_ptr), !dbg !807 | |
br label %switch.done, !dbg !806 | |
switch.case.body2: ; preds = %decls | |
%18 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 0, !dbg !808 | |
%19 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 1, !dbg !808 | |
%20 = bitcast { i8*, i64 }* %18 to i8*, !dbg !808 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %20, i8 0, i64 16, i1 false), !dbg !808 | |
store i8 4, i8* %19, align 1, !dbg !808 | |
ret void, !dbg !808 | |
switch.case.body3: ; preds = %decls | |
%21 = icmp eq i8* %4, null, !dbg !809 | |
br i1 %21, label %if.then, label %if.done, !dbg !809 | |
if.then: ; preds = %switch.case.body3 | |
%22 = bitcast { { i8*, i64 }, i8 }* %8 to i8*, !dbg !800 | |
call void @llvm.memset.p0i8.i64(i8* %22, i8 0, i64 24, i1 false), !dbg !800 | |
call void @os.heap_allocator_proc.aligned_alloc-0({ { i8*, i64 }, i8 }* sret %8, i64 %2, i64 %3, i8* null, i8* %__.context_ptr), !dbg !800 | |
%23 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %8, i32 0, i32 0, !dbg !800 | |
%24 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %8, i32 0, i32 1, !dbg !800 | |
%25 = load i8, i8* %24, align 1, !dbg !800 | |
%26 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 0, !dbg !800 | |
%27 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 1, !dbg !800 | |
%28 = bitcast { i8*, i64 }* %26 to i8*, !dbg !800 | |
%29 = bitcast { i8*, i64 }* %23 to i8*, !dbg !800 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %28, i8* align 8 %29, i64 16, i1 false), !dbg !800 | |
store i8 %25, i8* %27, align 1, !dbg !800 | |
ret void, !dbg !800 | |
if.done: ; preds = %switch.case.body3 | |
%30 = bitcast { { i8*, i64 }, i8 }* %9 to i8*, !dbg !803 | |
call void @llvm.memset.p0i8.i64(i8* %30, i8 0, i64 24, i1 false), !dbg !803 | |
call void @os.heap_allocator_proc.aligned_resize-2({ { i8*, i64 }, i8 }* %9, i8* %4, i64 %5, i64 %2, i64 %3, i8* %__.context_ptr), !dbg !803 | |
%31 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %9, i32 0, i32 0, !dbg !803 | |
%32 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %9, i32 0, i32 1, !dbg !803 | |
%33 = load i8, i8* %32, align 1, !dbg !803 | |
%34 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 0, !dbg !803 | |
%35 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 1, !dbg !803 | |
%36 = bitcast { i8*, i64 }* %34 to i8*, !dbg !803 | |
%37 = bitcast { i8*, i64 }* %31 to i8*, !dbg !803 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %36, i8* align 8 %37, i64 16, i1 false), !dbg !803 | |
store i8 %33, i8* %35, align 1, !dbg !803 | |
ret void, !dbg !803 | |
switch.case.body4: ; preds = %decls | |
call void @llvm.dbg.value(metadata i8* null, metadata !787, metadata !DIExpression()), !dbg !810 | |
call void @llvm.dbg.value(metadata i8* %4, metadata !787, metadata !DIExpression()), !dbg !810 | |
%38 = icmp ne i8* %4, null, !dbg !811 | |
br i1 %38, label %if.then5, label %if.done6, !dbg !811 | |
if.then5: ; preds = %switch.case.body4 | |
store i8 27, i8* %4, align 1, !dbg !812 | |
br label %if.done6, !dbg !811 | |
if.done6: ; preds = %if.then5, %switch.case.body4 | |
%39 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 0, !dbg !815 | |
%40 = bitcast { i8*, i64 }* %39 to i8*, !dbg !815 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %40, i8 0, i64 17, i1 false), !dbg !815 | |
ret void, !dbg !815 | |
switch.case.body7: ; preds = %decls | |
%41 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 0, !dbg !816 | |
%42 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 1, !dbg !816 | |
%43 = bitcast { i8*, i64 }* %41 to i8*, !dbg !816 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %43, i8 0, i64 16, i1 false), !dbg !816 | |
store i8 4, i8* %42, align 1, !dbg !816 | |
ret void, !dbg !816 | |
switch.done: ; preds = %switch.case.body1, %decls | |
%44 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 0, !dbg !817 | |
%45 = bitcast { i8*, i64 }* %44 to i8*, !dbg !817 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %45, i8 0, i64 17, i1 false), !dbg !817 | |
ret void, !dbg !817 | |
} | |
; Function Attrs: nounwind | |
define internal [2 x i64] @os.heap_allocator(i8* noalias nocapture nonnull %__.context_ptr) #0 !dbg !818 { | |
decls: | |
%0 = alloca [2 x i64], align 8, !dbg !823 | |
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !822, metadata !DIExpression()), !dbg !825 | |
%1 = bitcast [2 x i64]* %0 to %runtime.Allocator*, !dbg !823 | |
store %runtime.Allocator { i8* bitcast (void ({ { i8*, i64 }, i8 }*, i8*, i8, i64, i64, i8*, i64, %runtime.Source_Code_Location*, i8*)* @os.heap_allocator_proc to i8*), i8* null }, %runtime.Allocator* %1, align 8, !dbg !823 | |
%2 = load [2 x i64], [2 x i64]* %0, align 8, !dbg !823 | |
ret [2 x i64] %2, !dbg !823 | |
} | |
; Function Attrs: nounwind | |
define internal [2 x i64] @strings.string_from_ptr(i8* %0, i64 %1, i8* noalias nocapture nonnull %__.context_ptr) #0 !dbg !826 { | |
decls: | |
%2 = alloca %mem.Raw_String, align 8, !dbg !834 | |
call void @llvm.dbg.value(metadata i8* %0, metadata !831, metadata !DIExpression()), !dbg !836 | |
call void @llvm.dbg.value(metadata i64 %1, metadata !832, metadata !DIExpression()), !dbg !836 | |
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !833, metadata !DIExpression()), !dbg !837 | |
%3 = bitcast %mem.Raw_String* %2 to i8*, !dbg !834 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %3, i8 0, i64 16, i1 false), !dbg !834 | |
%4 = getelementptr inbounds %mem.Raw_String, %mem.Raw_String* %2, i32 0, i32 0, !dbg !834 | |
store i8* %0, i8** %4, align 8, !dbg !834 | |
%5 = getelementptr inbounds %mem.Raw_String, %mem.Raw_String* %2, i32 0, i32 1, !dbg !834 | |
store i64 %1, i64* %5, align 8, !dbg !834 | |
%6 = bitcast %mem.Raw_String* %2 to %..string*, !dbg !834 | |
%7 = bitcast %..string* %6 to [2 x i64]*, !dbg !834 | |
%8 = load [2 x i64], [2 x i64]* %7, align 8, !dbg !834 | |
ret [2 x i64] %8, !dbg !834 | |
} | |
define internal void @time.date({ i64, i64, i64 }* noalias sret %agg.result, i64 %0, i8* noalias nocapture nonnull %__.context_ptr) !dbg !838 { | |
decls: | |
%1 = alloca %time.Time, align 8 | |
call void @llvm.dbg.declare(metadata %time.Time* %2, metadata !850, metadata !DIExpression()), !dbg !852 | |
%2 = alloca %time.Time, align 8 | |
%3 = alloca { i64, i64, i64, i64 }, align 8, !dbg !853 | |
%4 = bitcast %time.Time* %1 to i64* | |
store i64 %0, i64* %4, align 8 | |
%5 = bitcast %time.Time* %2 to i8* | |
%6 = bitcast %time.Time* %1 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %5, i8* align 8 %6, i64 8, i1 false) | |
%7 = getelementptr inbounds { i64, i64, i64 }, { i64, i64, i64 }* %agg.result, i32 0, i32 0 | |
%8 = getelementptr inbounds { i64, i64, i64 }, { i64, i64, i64 }* %agg.result, i32 0, i32 1 | |
%9 = getelementptr inbounds { i64, i64, i64 }, { i64, i64, i64 }* %agg.result, i32 0, i32 2 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !851, metadata !DIExpression()), !dbg !855 | |
%10 = bitcast %time.Time* %2 to i64*, !dbg !853 | |
%11 = load i64, i64* %10, align 8, !dbg !853 | |
%12 = call i64 @time._time_abs(i64 %11, i8* %__.context_ptr), !dbg !853 | |
%13 = bitcast { i64, i64, i64, i64 }* %3 to i8*, !dbg !853 | |
call void @llvm.memset.p0i8.i64(i8* %13, i8 0, i64 32, i1 false), !dbg !853 | |
call void @time._abs_date({ i64, i64, i64, i64 }* %3, i64 %12, i1 true, i8* %__.context_ptr), !dbg !853 | |
%14 = getelementptr inbounds { i64, i64, i64, i64 }, { i64, i64, i64, i64 }* %3, i32 0, i32 0, !dbg !853 | |
%15 = load i64, i64* %14, align 8, !dbg !853 | |
%16 = getelementptr inbounds { i64, i64, i64, i64 }, { i64, i64, i64, i64 }* %3, i32 0, i32 1, !dbg !853 | |
%17 = load i64, i64* %16, align 8, !dbg !853 | |
%18 = getelementptr inbounds { i64, i64, i64, i64 }, { i64, i64, i64, i64 }* %3, i32 0, i32 2, !dbg !853 | |
%19 = load i64, i64* %18, align 8, !dbg !853 | |
store i64 %15, i64* %7, align 8, !dbg !853 | |
store i64 %17, i64* %8, align 8, !dbg !853 | |
store i64 %19, i64* %9, align 8, !dbg !853 | |
%20 = load i64, i64* %7, align 8, !dbg !856 | |
%21 = load i64, i64* %8, align 8, !dbg !856 | |
store i64 %19, i64* %9, align 8, !dbg !856 | |
store i64 %20, i64* %7, align 8, !dbg !856 | |
store i64 %21, i64* %8, align 8, !dbg !856 | |
store i64 %19, i64* %9, align 8, !dbg !856 | |
ret void, !dbg !856 | |
} | |
; Function Attrs: nounwind | |
define internal void @time.clock({ i64, i64, i64 }* noalias sret %agg.result, i64 %0, i8* noalias nocapture nonnull %__.context_ptr) #0 !dbg !857 { | |
decls: | |
%1 = alloca %time.Time, align 8 | |
call void @llvm.dbg.declare(metadata %time.Time* %2, metadata !866, metadata !DIExpression()), !dbg !868 | |
%2 = alloca %time.Time, align 8 | |
%3 = bitcast %time.Time* %1 to i64* | |
store i64 %0, i64* %3, align 8 | |
%4 = bitcast %time.Time* %2 to i8* | |
%5 = bitcast %time.Time* %1 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %4, i8* align 8 %5, i64 8, i1 false) | |
%6 = getelementptr inbounds { i64, i64, i64 }, { i64, i64, i64 }* %agg.result, i32 0, i32 0 | |
%7 = getelementptr inbounds { i64, i64, i64 }, { i64, i64, i64 }* %agg.result, i32 0, i32 1 | |
%8 = getelementptr inbounds { i64, i64, i64 }, { i64, i64, i64 }* %agg.result, i32 0, i32 2 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !867, metadata !DIExpression()), !dbg !869 | |
%9 = bitcast %time.Time* %2 to i64*, !dbg !870 | |
%10 = load i64, i64* %9, align 8, !dbg !870 | |
%11 = call i64 @time._time_abs(i64 %10, i8* %__.context_ptr), !dbg !870 | |
%12 = urem i64 %11, 86400, !dbg !870 | |
store i64 %12, i64* %8, align 8, !dbg !870 | |
%13 = sdiv i64 %12, 3600, !dbg !872 | |
store i64 %13, i64* %6, align 8, !dbg !872 | |
%14 = mul i64 %13, 3600, !dbg !873 | |
%15 = load i64, i64* %8, align 8, !dbg !873 | |
%16 = sub i64 %15, %14, !dbg !873 | |
store i64 %16, i64* %8, align 8, !dbg !873 | |
%17 = sdiv i64 %16, 60, !dbg !874 | |
store i64 %17, i64* %7, align 8, !dbg !874 | |
%18 = mul i64 %17, 60, !dbg !875 | |
%19 = load i64, i64* %8, align 8, !dbg !875 | |
%20 = sub i64 %19, %18, !dbg !875 | |
store i64 %20, i64* %8, align 8, !dbg !875 | |
%21 = load i64, i64* %6, align 8, !dbg !876 | |
%22 = load i64, i64* %7, align 8, !dbg !876 | |
store i64 %20, i64* %8, align 8, !dbg !876 | |
store i64 %21, i64* %6, align 8, !dbg !876 | |
store i64 %22, i64* %7, align 8, !dbg !876 | |
store i64 %20, i64* %8, align 8, !dbg !876 | |
ret void, !dbg !876 | |
} | |
; Function Attrs: nounwind | |
define internal i8 @time._is_leap_year(i64 %0, i8* noalias nocapture nonnull %__.context_ptr) #0 !dbg !877 { | |
decls: | |
call void @llvm.dbg.value(metadata i64 %0, metadata !881, metadata !DIExpression()), !dbg !883 | |
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !882, metadata !DIExpression()), !dbg !884 | |
%1 = srem i64 %0, 4, !dbg !885 | |
%2 = icmp eq i64 %1, 0, !dbg !885 | |
br i1 %2, label %logical.cmp.rhs, label %logical.cmp.done2, !dbg !885 | |
logical.cmp.rhs: ; preds = %decls | |
%3 = srem i64 %0, 100, !dbg !885 | |
%4 = icmp ne i64 %3, 0, !dbg !885 | |
br i1 %4, label %logical.cmp.done2, label %logical.cmp.rhs1, !dbg !885 | |
logical.cmp.rhs1: ; preds = %logical.cmp.rhs | |
%5 = srem i64 %0, 400, !dbg !885 | |
%6 = icmp eq i64 %5, 0, !dbg !885 | |
%7 = zext i1 %6 to i8, !dbg !885 | |
br label %logical.cmp.done2, !dbg !885 | |
logical.cmp.done2: ; preds = %logical.cmp.rhs, %logical.cmp.rhs1, %decls | |
%8 = phi i8 [ 0, %decls ], [ 1, %logical.cmp.rhs ], [ %7, %logical.cmp.rhs1 ], !dbg !885 | |
ret i8 %8, !dbg !885 | |
} | |
; Function Attrs: nounwind | |
define internal i64 @time._time_abs(i64 %0, i8* noalias nocapture nonnull %__.context_ptr) #0 !dbg !887 { | |
decls: | |
%1 = alloca %time.Time, align 8 | |
call void @llvm.dbg.declare(metadata %time.Time* %2, metadata !891, metadata !DIExpression()), !dbg !893 | |
%2 = alloca %time.Time, align 8 | |
%3 = bitcast %time.Time* %1 to i64* | |
store i64 %0, i64* %3, align 8 | |
%4 = bitcast %time.Time* %2 to i8* | |
%5 = bitcast %time.Time* %1 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %4, i8* align 8 %5, i64 8, i1 false) | |
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !892, metadata !DIExpression()), !dbg !894 | |
%6 = getelementptr inbounds %time.Time, %time.Time* %2, i32 0, i32 0, !dbg !895 | |
%7 = load i64, i64* %6, align 8, !dbg !895 | |
%8 = sdiv i64 %7, 1000000000, !dbg !895 | |
%9 = add i64 %8, 9223372028715321600, !dbg !895 | |
ret i64 %9, !dbg !895 | |
} | |
define internal void @time._abs_date({ i64, i64, i64, i64 }* noalias sret %agg.result, i64 %0, i1 zeroext %1, i8* noalias nocapture nonnull %__.context_ptr) !dbg !897 { | |
decls: | |
%2 = alloca [2 x i64], align 8, !dbg !913 | |
%3 = alloca [2 x i64], align 8, !dbg !914 | |
call void @llvm.dbg.value(metadata i64 %0, metadata !904, metadata !DIExpression()), !dbg !917 | |
call void @llvm.dbg.value(metadata i8 undef, metadata !905, metadata !DIExpression()), !dbg !917 | |
%4 = getelementptr inbounds { i64, i64, i64, i64 }, { i64, i64, i64, i64 }* %agg.result, i32 0, i32 0 | |
%5 = getelementptr inbounds { i64, i64, i64, i64 }, { i64, i64, i64, i64 }* %agg.result, i32 0, i32 1 | |
%6 = getelementptr inbounds { i64, i64, i64, i64 }, { i64, i64, i64, i64 }* %agg.result, i32 0, i32 2 | |
%7 = getelementptr inbounds { i64, i64, i64, i64 }, { i64, i64, i64, i64 }* %agg.result, i32 0, i32 3 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !906, metadata !DIExpression()), !dbg !918 | |
call void @llvm.dbg.value(metadata i64 0, metadata !907, metadata !DIExpression()), !dbg !919 | |
%8 = udiv i64 %0, 86400, !dbg !920 | |
call void @llvm.dbg.value(metadata i64 %8, metadata !907, metadata !DIExpression()), !dbg !919 | |
call void @llvm.dbg.value(metadata i64 0, metadata !909, metadata !DIExpression()), !dbg !919 | |
%9 = udiv i64 %8, 146097, !dbg !921 | |
call void @llvm.dbg.value(metadata i64 %9, metadata !909, metadata !DIExpression()), !dbg !919 | |
call void @llvm.dbg.value(metadata i64 0, metadata !910, metadata !DIExpression()), !dbg !919 | |
%10 = mul i64 400, %9, !dbg !922 | |
call void @llvm.dbg.value(metadata i64 %10, metadata !910, metadata !DIExpression()), !dbg !919 | |
%11 = mul i64 146097, %9, !dbg !923 | |
%12 = sub i64 %8, %11, !dbg !923 | |
call void @llvm.dbg.value(metadata i64 %12, metadata !907, metadata !DIExpression()), !dbg !919 | |
%13 = udiv i64 %12, 36524, !dbg !924 | |
call void @llvm.dbg.value(metadata i64 %13, metadata !909, metadata !DIExpression()), !dbg !919 | |
%14 = lshr i64 %13, 2, !dbg !925 | |
%15 = sub i64 %13, %14, !dbg !925 | |
call void @llvm.dbg.value(metadata i64 %15, metadata !909, metadata !DIExpression()), !dbg !919 | |
%16 = mul i64 100, %15, !dbg !926 | |
%17 = add i64 %10, %16, !dbg !926 | |
call void @llvm.dbg.value(metadata i64 %17, metadata !910, metadata !DIExpression()), !dbg !919 | |
%18 = mul i64 36524, %15, !dbg !927 | |
%19 = sub i64 %12, %18, !dbg !927 | |
call void @llvm.dbg.value(metadata i64 %19, metadata !907, metadata !DIExpression()), !dbg !919 | |
%20 = udiv i64 %19, 1461, !dbg !928 | |
call void @llvm.dbg.value(metadata i64 %20, metadata !909, metadata !DIExpression()), !dbg !919 | |
%21 = mul i64 4, %20, !dbg !929 | |
%22 = add i64 %17, %21, !dbg !929 | |
call void @llvm.dbg.value(metadata i64 %22, metadata !910, metadata !DIExpression()), !dbg !919 | |
%23 = mul i64 1461, %20, !dbg !930 | |
%24 = sub i64 %19, %23, !dbg !930 | |
call void @llvm.dbg.value(metadata i64 %24, metadata !907, metadata !DIExpression()), !dbg !919 | |
%25 = udiv i64 %24, 365, !dbg !931 | |
call void @llvm.dbg.value(metadata i64 %25, metadata !909, metadata !DIExpression()), !dbg !919 | |
%26 = lshr i64 %25, 2, !dbg !932 | |
%27 = sub i64 %25, %26, !dbg !932 | |
call void @llvm.dbg.value(metadata i64 %27, metadata !909, metadata !DIExpression()), !dbg !919 | |
%28 = add i64 %22, %27, !dbg !933 | |
call void @llvm.dbg.value(metadata i64 %28, metadata !910, metadata !DIExpression()), !dbg !919 | |
%29 = mul i64 365, %27, !dbg !934 | |
%30 = sub i64 %24, %29, !dbg !934 | |
call void @llvm.dbg.value(metadata i64 %30, metadata !907, metadata !DIExpression()), !dbg !919 | |
%31 = add i64 %28, -292277022399, !dbg !935 | |
store i64 %31, i64* %4, align 8, !dbg !935 | |
store i64 %30, i64* %7, align 8, !dbg !936 | |
br i1 %1, label %if.done, label %if.then, !dbg !937 | |
if.then: ; preds = %decls | |
%32 = load i64, i64* %4, align 8, !dbg !938 | |
%33 = load i64, i64* %5, align 8, !dbg !938 | |
%34 = load i64, i64* %6, align 8, !dbg !938 | |
store i64 %30, i64* %7, align 8, !dbg !938 | |
store i64 %32, i64* %4, align 8, !dbg !938 | |
store i64 %33, i64* %5, align 8, !dbg !938 | |
store i64 %34, i64* %6, align 8, !dbg !938 | |
store i64 %30, i64* %7, align 8, !dbg !938 | |
ret void, !dbg !938 | |
if.done: ; preds = %decls | |
store i64 %30, i64* %6, align 8, !dbg !941 | |
%35 = load i64, i64* %4, align 8, !dbg !942 | |
%36 = call i8 @time._is_leap_year(i64 %35, i8* %__.context_ptr), !dbg !942 | |
%37 = trunc i8 %36 to i1, !dbg !942 | |
br i1 %37, label %if.then1, label %if.done4, !dbg !942 | |
if.then1: ; preds = %if.done | |
%38 = load i64, i64* %6, align 8, !dbg !943 | |
%39 = icmp sgt i64 %38, 59, !dbg !943 | |
br i1 %39, label %switch.case.body, label %switch.case.next, !dbg !943 | |
switch.case.next: ; preds = %if.then1 | |
%40 = icmp eq i64 %38, 59, !dbg !943 | |
br i1 %40, label %switch.case.body3, label %if.done4, !dbg !943 | |
switch.case.body: ; preds = %if.then1 | |
%41 = sub i64 %38, 1, !dbg !946 | |
store i64 %41, i64* %6, align 8, !dbg !946 | |
br label %if.done4, !dbg !943 | |
switch.case.body3: ; preds = %switch.case.next | |
store i64 2, i64* %5, align 8, !dbg !948 | |
store i64 29, i64* %6, align 8, !dbg !949 | |
%42 = load i64, i64* %4, align 8, !dbg !950 | |
%43 = load i64, i64* %5, align 8, !dbg !950 | |
%44 = load i64, i64* %7, align 8, !dbg !950 | |
store i64 29, i64* %6, align 8, !dbg !950 | |
store i64 %44, i64* %7, align 8, !dbg !950 | |
store i64 %42, i64* %4, align 8, !dbg !950 | |
store i64 %43, i64* %5, align 8, !dbg !950 | |
store i64 29, i64* %6, align 8, !dbg !950 | |
store i64 %44, i64* %7, align 8, !dbg !950 | |
ret void, !dbg !950 | |
if.done4: ; preds = %switch.case.body, %switch.case.next, %if.done | |
%45 = load i64, i64* %6, align 8, !dbg !951 | |
%46 = sdiv i64 %45, 31, !dbg !951 | |
store i64 %46, i64* %5, align 8, !dbg !951 | |
call void @llvm.dbg.value(metadata i64 0, metadata !911, metadata !DIExpression()), !dbg !919 | |
%47 = add i64 %46, 1, !dbg !913 | |
%48 = getelementptr [13 x i32], [13 x i32]* @time.days_before, i64 0, i64 %47, !dbg !913 | |
%49 = bitcast [2 x i64]* %2 to %..string*, !dbg !913 | |
store %..string { i8* getelementptr inbounds ([48 x i8], [48 x i8]* @"csbs$74", i64 0, i64 0), i64 47 }, %..string* %49, align 8, !dbg !913 | |
%50 = load [2 x i64], [2 x i64]* %2, align 8, !dbg !913 | |
call void @runtime.bounds_check_error([2 x i64] %50, i32 244, i32 25, i64 %47, i64 13), !dbg !913 | |
%51 = load i32, i32* %48, align 4, !dbg !913 | |
%52 = sext i32 %51 to i64, !dbg !913 | |
call void @llvm.dbg.value(metadata i64 %52, metadata !911, metadata !DIExpression()), !dbg !919 | |
call void @llvm.dbg.value(metadata i64 0, metadata !912, metadata !DIExpression()), !dbg !919 | |
%53 = load i64, i64* %6, align 8, !dbg !952 | |
%54 = icmp sge i64 %53, %52, !dbg !952 | |
%55 = load i64, i64* %5, align 8, !dbg !953 | |
br i1 %54, label %if.then5, label %if.else, !dbg !952 | |
if.then5: ; preds = %if.done4 | |
%56 = add i64 %55, 1, !dbg !954 | |
store i64 %56, i64* %5, align 8, !dbg !954 | |
call void @llvm.dbg.value(metadata i64 %52, metadata !912, metadata !DIExpression()), !dbg !919 | |
br label %if.done6, !dbg !952 | |
if.else: ; preds = %if.done4 | |
%57 = getelementptr [13 x i32], [13 x i32]* @time.days_before, i64 0, i64 %55, !dbg !914 | |
%58 = bitcast [2 x i64]* %3 to %..string*, !dbg !914 | |
store %..string { i8* getelementptr inbounds ([48 x i8], [48 x i8]* @"csbs$74", i64 0, i64 0), i64 47 }, %..string* %58, align 8, !dbg !914 | |
%59 = load [2 x i64], [2 x i64]* %3, align 8, !dbg !914 | |
call void @runtime.bounds_check_error([2 x i64] %59, i32 250, i32 27, i64 %55, i64 13), !dbg !914 | |
%60 = load i32, i32* %57, align 4, !dbg !914 | |
%61 = sext i32 %60 to i64, !dbg !914 | |
call void @llvm.dbg.value(metadata i64 %61, metadata !912, metadata !DIExpression()), !dbg !919 | |
br label %if.done6, !dbg !952 | |
if.done6: ; preds = %if.else, %if.then5 | |
%.0 = phi i64 [ %52, %if.then5 ], [ %61, %if.else ], !dbg !953 | |
call void @llvm.dbg.value(metadata i64 %.0, metadata !912, metadata !DIExpression()), !dbg !919 | |
%62 = load i64, i64* %5, align 8, !dbg !956 | |
%63 = add i64 %62, 1, !dbg !956 | |
store i64 %63, i64* %5, align 8, !dbg !956 | |
%64 = load i64, i64* %6, align 8, !dbg !957 | |
%65 = sub i64 %64, %.0, !dbg !957 | |
%66 = add i64 %65, 1, !dbg !957 | |
store i64 %66, i64* %6, align 8, !dbg !957 | |
%67 = load i64, i64* %4, align 8, !dbg !958 | |
%68 = load i64, i64* %5, align 8, !dbg !958 | |
%69 = load i64, i64* %7, align 8, !dbg !958 | |
store i64 %66, i64* %6, align 8, !dbg !958 | |
store i64 %69, i64* %7, align 8, !dbg !958 | |
store i64 %67, i64* %4, align 8, !dbg !958 | |
store i64 %68, i64* %5, align 8, !dbg !958 | |
store i64 %66, i64* %6, align 8, !dbg !958 | |
store i64 %69, i64* %7, align 8, !dbg !958 | |
ret void, !dbg !958 | |
} | |
; Function Attrs: nounwind | |
define dso_local %runtime.Type_Info* @runtime.type_info_base(%runtime.Type_Info* %0) #0 !dbg !959 { | |
decls: | |
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Named* %1, metadata !966, metadata !DIExpression()), !dbg !970 | |
%1 = alloca %runtime.Type_Info_Named, align 8, !dbg !971 | |
call void @llvm.dbg.value(metadata %runtime.Type_Info* %0, metadata !963, metadata !DIExpression()), !dbg !972 | |
%2 = icmp eq %runtime.Type_Info* %0, null, !dbg !973 | |
br i1 %2, label %if.then, label %for.body, !dbg !973 | |
if.then: ; preds = %for.body, %decls | |
%merge = phi %runtime.Type_Info* [ null, %decls ], [ %.0, %for.body ] | |
ret %runtime.Type_Info* %merge, !dbg !974 | |
for.body: ; preds = %decls, %typeswitch.body | |
%.0 = phi %runtime.Type_Info* [ %9, %typeswitch.body ], [ %0, %decls ], !dbg !977 | |
call void @llvm.dbg.value(metadata %runtime.Type_Info* %.0, metadata !964, metadata !DIExpression()), !dbg !977 | |
%3 = getelementptr inbounds %runtime.Type_Info, %runtime.Type_Info* %.0, i32 0, i32 4, !dbg !971 | |
%4 = bitcast { [0 x i64], [120 x i8], i64 }* %3 to i8*, !dbg !971 | |
%5 = getelementptr inbounds { [0 x i64], [120 x i8], i64 }, { [0 x i64], [120 x i8], i64 }* %3, i32 0, i32 2, !dbg !971 | |
%6 = load i64, i64* %5, align 8, !dbg !971 | |
%cond = icmp eq i64 %6, 1, !dbg !971 | |
br i1 %cond, label %typeswitch.body, label %if.then, !dbg !971 | |
typeswitch.body: ; preds = %for.body | |
%7 = bitcast %runtime.Type_Info_Named* %1 to i8*, !dbg !971 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %7, i8* align 8 %4, i64 80, i1 false), !dbg !971 | |
%8 = getelementptr inbounds %runtime.Type_Info_Named, %runtime.Type_Info_Named* %1, i32 0, i32 1, !dbg !978 | |
%9 = load %runtime.Type_Info*, %runtime.Type_Info** %8, align 8, !dbg !978 | |
call void @llvm.dbg.value(metadata %runtime.Type_Info* %9, metadata !964, metadata !DIExpression()), !dbg !977 | |
br label %for.body, !dbg !979 | |
} | |
; Function Attrs: nounwind | |
define dso_local %runtime.Type_Info* @runtime.type_info_core(%runtime.Type_Info* %0) #0 !dbg !980 { | |
decls: | |
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Named* %1, metadata !985, metadata !DIExpression()), !dbg !990 | |
%1 = alloca %runtime.Type_Info_Named, align 8, !dbg !991 | |
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Enum* %2, metadata !988, metadata !DIExpression()), !dbg !990 | |
%2 = alloca %runtime.Type_Info_Enum, align 8, !dbg !991 | |
call void @llvm.dbg.value(metadata %runtime.Type_Info* %0, metadata !982, metadata !DIExpression()), !dbg !992 | |
%3 = icmp eq %runtime.Type_Info* %0, null, !dbg !993 | |
br i1 %3, label %if.then, label %for.body, !dbg !993 | |
if.then: ; preds = %for.body, %decls | |
%merge = phi %runtime.Type_Info* [ null, %decls ], [ %.0, %for.body ] | |
ret %runtime.Type_Info* %merge, !dbg !994 | |
for.body: ; preds = %decls, %typeswitch.done | |
%.0 = phi %runtime.Type_Info* [ %.1, %typeswitch.done ], [ %0, %decls ], !dbg !997 | |
call void @llvm.dbg.value(metadata %runtime.Type_Info* %.0, metadata !983, metadata !DIExpression()), !dbg !997 | |
%4 = getelementptr inbounds %runtime.Type_Info, %runtime.Type_Info* %.0, i32 0, i32 4, !dbg !991 | |
%5 = bitcast { [0 x i64], [120 x i8], i64 }* %4 to i8*, !dbg !991 | |
%6 = getelementptr inbounds { [0 x i64], [120 x i8], i64 }, { [0 x i64], [120 x i8], i64 }* %4, i32 0, i32 2, !dbg !991 | |
%7 = load i64, i64* %6, align 8, !dbg !991 | |
switch i64 %7, label %if.then [ | |
i64 1, label %typeswitch.body | |
i64 21, label %typeswitch.body1 | |
], !dbg !991 | |
typeswitch.body: ; preds = %for.body | |
%8 = bitcast %runtime.Type_Info_Named* %1 to i8*, !dbg !991 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %8, i8* align 8 %5, i64 80, i1 false), !dbg !991 | |
%9 = getelementptr inbounds %runtime.Type_Info_Named, %runtime.Type_Info_Named* %1, i32 0, i32 1, !dbg !998 | |
%10 = load %runtime.Type_Info*, %runtime.Type_Info** %9, align 8, !dbg !998 | |
call void @llvm.dbg.value(metadata %runtime.Type_Info* %10, metadata !983, metadata !DIExpression()), !dbg !997 | |
br label %typeswitch.done, !dbg !991 | |
typeswitch.body1: ; preds = %for.body | |
%11 = bitcast %runtime.Type_Info_Enum* %2 to i8*, !dbg !991 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %11, i8* align 8 %5, i64 40, i1 false), !dbg !991 | |
%12 = getelementptr inbounds %runtime.Type_Info_Enum, %runtime.Type_Info_Enum* %2, i32 0, i32 0, !dbg !999 | |
%13 = load %runtime.Type_Info*, %runtime.Type_Info** %12, align 8, !dbg !999 | |
call void @llvm.dbg.value(metadata %runtime.Type_Info* %13, metadata !983, metadata !DIExpression()), !dbg !997 | |
br label %typeswitch.done, !dbg !991 | |
typeswitch.done: ; preds = %typeswitch.body1, %typeswitch.body | |
%.1 = phi %runtime.Type_Info* [ %13, %typeswitch.body1 ], [ %10, %typeswitch.body ], !dbg !1000 | |
call void @llvm.dbg.value(metadata %runtime.Type_Info* %.1, metadata !983, metadata !DIExpression()), !dbg !997 | |
br label %for.body, !dbg !1001 | |
} | |
; Function Attrs: nounwind | |
define dso_local %runtime.Type_Info* @runtime.__type_info_of(i64 %0) #0 !dbg !1002 { | |
decls: | |
call void @llvm.dbg.value(metadata i64 %0, metadata !1006, metadata !DIExpression()), !dbg !1010 | |
call void @llvm.dbg.value(metadata i64 %0, metadata !1007, metadata !DIExpression()), !dbg !1011 | |
call void @llvm.dbg.value(metadata i64 0, metadata !1009, metadata !DIExpression()), !dbg !1011 | |
%1 = and i64 %0, 72057594037927935, !dbg !1012 | |
call void @llvm.dbg.value(metadata i64 %1, metadata !1009, metadata !DIExpression()), !dbg !1011 | |
%2 = load i64, i64* getelementptr inbounds ({ %runtime.Type_Info*, i64 }, { %runtime.Type_Info*, i64 }* @runtime.type_table, i64 0, i32 1), align 8, !dbg !1013 | |
%3 = icmp sge i64 %1, %2, !dbg !1013 | |
%.0 = select i1 %3, i64 0, i64 %1, !dbg !1013 | |
call void @llvm.dbg.value(metadata i64 %.0, metadata !1009, metadata !DIExpression()), !dbg !1011 | |
%4 = load %runtime.Type_Info*, %runtime.Type_Info** getelementptr inbounds ({ %runtime.Type_Info*, i64 }, { %runtime.Type_Info*, i64 }* @runtime.type_table, i64 0, i32 0), align 8, !dbg !1014 | |
%5 = getelementptr %runtime.Type_Info, %runtime.Type_Info* %4, i64 %.0, !dbg !1014 | |
ret %runtime.Type_Info* %5, !dbg !1014 | |
} | |
; Function Attrs: nounwind | |
define dso_local i64 @runtime.typeid_base(i64 %0) #0 !dbg !1015 { | |
decls: | |
call void @llvm.dbg.value(metadata i64 %0, metadata !1019, metadata !DIExpression()), !dbg !1022 | |
call void @llvm.dbg.value(metadata %runtime.Type_Info* null, metadata !1020, metadata !DIExpression()), !dbg !1023 | |
%1 = call %runtime.Type_Info* @runtime.__type_info_of(i64 %0), !dbg !1024 | |
call void @llvm.dbg.value(metadata %runtime.Type_Info* %1, metadata !1020, metadata !DIExpression()), !dbg !1023 | |
%2 = call %runtime.Type_Info* @runtime.type_info_base(%runtime.Type_Info* %1), !dbg !1025 | |
call void @llvm.dbg.value(metadata %runtime.Type_Info* %2, metadata !1020, metadata !DIExpression()), !dbg !1023 | |
%3 = getelementptr inbounds %runtime.Type_Info, %runtime.Type_Info* %2, i32 0, i32 3, !dbg !1026 | |
%4 = load i64, i64* %3, align 8, !dbg !1026 | |
ret i64 %4, !dbg !1026 | |
} | |
; Function Attrs: nounwind | |
define dso_local void @runtime.default_logger_proc(i8* %0, i64 %1, [2 x i64] %2, i16 %3, %runtime.Source_Code_Location* %4, i8* noalias nocapture nonnull %__.context_ptr) #0 !dbg !1027 { | |
decls: | |
%5 = alloca %..string, align 8 | |
call void @llvm.dbg.declare(metadata %..string* %6, metadata !1031, metadata !DIExpression()), !dbg !1034 | |
%6 = alloca %..string, align 8 | |
call void @llvm.dbg.value(metadata i8* %0, metadata !1029, metadata !DIExpression()), !dbg !1035 | |
call void @llvm.dbg.value(metadata i64 %1, metadata !1030, metadata !DIExpression()), !dbg !1035 | |
%7 = bitcast %..string* %5 to [2 x i64]* | |
store [2 x i64] %2, [2 x i64]* %7, align 8 | |
%8 = bitcast %..string* %6 to i8* | |
%9 = bitcast %..string* %5 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %8, i8* align 8 %9, i64 16, i1 false) | |
call void @llvm.dbg.value(metadata i16 %3, metadata !1032, metadata !DIExpression()), !dbg !1035 | |
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !1033, metadata !DIExpression()), !dbg !1036 | |
ret void, !dbg !1036 | |
} | |
; Function Attrs: nounwind | |
define dso_local void @runtime.default_context(%runtime.Context* noalias sret %agg.result) #0 !dbg !1037 { | |
decls: | |
call void @llvm.dbg.declare(metadata %runtime.Context* %0, metadata !1041, metadata !DIExpression()), !dbg !1043 | |
%0 = alloca %runtime.Context, align 8, !dbg !1043 | |
%1 = bitcast %runtime.Context* %0 to i8*, !dbg !1043 | |
call void @llvm.memset.p0i8.i64(i8* %1, i8 0, i64 112, i1 false), !dbg !1043 | |
call void @runtime.__init_context-547(%runtime.Context* %0), !dbg !1044 | |
%2 = bitcast %runtime.Context* %agg.result to i8*, !dbg !1045 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %2, i8* align 8 %1, i64 112, i1 false), !dbg !1045 | |
ret void, !dbg !1045 | |
} | |
; Function Attrs: nounwind | |
define dso_local void @runtime.__init_context-547(%runtime.Context* %0) #0 !dbg !1046 { | |
decls: | |
call void @llvm.dbg.value(metadata %runtime.Context* %0, metadata !1051, metadata !DIExpression()), !dbg !1052 | |
%1 = icmp eq %runtime.Context* %0, null, !dbg !1053 | |
br i1 %1, label %if.then, label %if.done, !dbg !1053 | |
if.then: ; preds = %decls | |
ret void, !dbg !1055 | |
if.done: ; preds = %decls | |
%2 = getelementptr inbounds %runtime.Context, %runtime.Context* %0, i32 0, i32 0, !dbg !1058 | |
%3 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %2, i32 0, i32 0, !dbg !1058 | |
store i8* bitcast (void ({ { i8*, i64 }, i8 }*, i8*, i8, i64, i64, i8*, i64, %runtime.Source_Code_Location*, i8*)* @os.heap_allocator_proc to i8*), i8** %3, align 8, !dbg !1058 | |
%4 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %2, i32 0, i32 1, !dbg !1059 | |
store i8* null, i8** %4, align 8, !dbg !1059 | |
%5 = getelementptr inbounds %runtime.Context, %runtime.Context* %0, i32 0, i32 1, !dbg !1060 | |
%6 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %5, i32 0, i32 0, !dbg !1060 | |
store i8* bitcast (void ({ { i8*, i64 }, i8 }*, i8*, i8, i64, i64, i8*, i64, %runtime.Source_Code_Location*, i8*)* @runtime.default_temp_allocator_proc to i8*), i8** %6, align 8, !dbg !1060 | |
%7 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %5, i32 0, i32 1, !dbg !1061 | |
store i8* bitcast (%runtime.Default_Temp_Allocator* @runtime.global_default_temp_allocator_data to i8*), i8** %7, align 8, !dbg !1061 | |
%8 = getelementptr inbounds %runtime.Context, %runtime.Context* %0, i32 0, i32 2, !dbg !1062 | |
store void ([2 x i64], [2 x i64], %runtime.Source_Code_Location*, i8*)* @runtime.default_assertion_failure_proc, void ([2 x i64], [2 x i64], %runtime.Source_Code_Location*, i8*)** %8, align 8, !dbg !1062 | |
%9 = getelementptr inbounds %runtime.Context, %runtime.Context* %0, i32 0, i32 3, !dbg !1063 | |
%10 = getelementptr inbounds %runtime.Logger, %runtime.Logger* %9, i32 0, i32 0, !dbg !1063 | |
store void (i8*, i64, [2 x i64], i16, %runtime.Source_Code_Location*, i8*)* @runtime.default_logger_proc, void (i8*, i64, [2 x i64], i16, %runtime.Source_Code_Location*, i8*)** %10, align 8, !dbg !1063 | |
%11 = getelementptr inbounds %runtime.Logger, %runtime.Logger* %9, i32 0, i32 1, !dbg !1064 | |
store i8* null, i8** %11, align 8, !dbg !1064 | |
ret void, !dbg !1065 | |
} | |
; Function Attrs: noreturn | |
define dso_local void @runtime.default_assertion_failure_proc([2 x i64] %0, [2 x i64] %1, %runtime.Source_Code_Location* %2, i8* noalias nocapture nonnull %__.context_ptr) #1 !dbg !1066 { | |
decls: | |
%3 = alloca %..string, align 8 | |
call void @llvm.dbg.declare(metadata %..string* %4, metadata !1068, metadata !DIExpression()), !dbg !1071 | |
%4 = alloca %..string, align 8 | |
%5 = alloca %..string, align 8 | |
call void @llvm.dbg.declare(metadata %..string* %6, metadata !1069, metadata !DIExpression()), !dbg !1072 | |
%6 = alloca %..string, align 8 | |
%7 = alloca [2 x i64], align 8, !dbg !1073 | |
%8 = alloca { i64, i64 }, align 8, !dbg !1073 | |
%9 = alloca { i64, i64 }, align 8, !dbg !1075 | |
%10 = alloca [2 x i64], align 8, !dbg !1076 | |
%11 = alloca { i64, i64 }, align 8, !dbg !1076 | |
%12 = alloca { i64, i64 }, align 8, !dbg !1079 | |
%13 = alloca { i64, i64 }, align 8, !dbg !1080 | |
%14 = bitcast %..string* %3 to [2 x i64]* | |
store [2 x i64] %0, [2 x i64]* %14, align 8 | |
%15 = bitcast %..string* %4 to i8* | |
%16 = bitcast %..string* %3 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %15, i8* align 8 %16, i64 16, i1 false) | |
%17 = bitcast %..string* %5 to [2 x i64]* | |
store [2 x i64] %1, [2 x i64]* %17, align 8 | |
%18 = bitcast %..string* %6 to i8* | |
%19 = bitcast %..string* %5 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %18, i8* align 8 %19, i64 16, i1 false) | |
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !1070, metadata !DIExpression()), !dbg !1081 | |
call void @runtime.print_caller_location(%runtime.Source_Code_Location* %2), !dbg !1082 | |
%20 = bitcast [2 x i64]* %7 to %..string*, !dbg !1073 | |
store %..string { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"csbs$7a", i64 0, i64 0), i64 1 }, %..string* %20, align 8, !dbg !1073 | |
%21 = load [2 x i64], [2 x i64]* %7, align 8, !dbg !1073 | |
%22 = call [2 x i64] @runtime.print_string([2 x i64] %21), !dbg !1073 | |
%23 = bitcast { i64, i64 }* %8 to [2 x i64]*, !dbg !1073 | |
store [2 x i64] %22, [2 x i64]* %23, align 8, !dbg !1073 | |
%24 = bitcast %..string* %4 to [2 x i64]*, !dbg !1075 | |
%25 = load [2 x i64], [2 x i64]* %24, align 8, !dbg !1075 | |
%26 = call [2 x i64] @runtime.print_string([2 x i64] %25), !dbg !1075 | |
%27 = bitcast { i64, i64 }* %9 to [2 x i64]*, !dbg !1075 | |
store [2 x i64] %26, [2 x i64]* %27, align 8, !dbg !1075 | |
%28 = getelementptr inbounds %..string, %..string* %6, i32 0, i32 1, !dbg !1083 | |
%29 = load i64, i64* %28, align 8, !dbg !1083 | |
%30 = icmp sgt i64 %29, 0, !dbg !1083 | |
br i1 %30, label %if.then, label %if.done, !dbg !1083 | |
if.then: ; preds = %decls | |
%31 = bitcast [2 x i64]* %10 to %..string*, !dbg !1076 | |
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$7b", i64 0, i64 0), i64 2 }, %..string* %31, align 8, !dbg !1076 | |
%32 = load [2 x i64], [2 x i64]* %10, align 8, !dbg !1076 | |
%33 = call [2 x i64] @runtime.print_string([2 x i64] %32), !dbg !1076 | |
%34 = bitcast { i64, i64 }* %11 to [2 x i64]*, !dbg !1076 | |
store [2 x i64] %33, [2 x i64]* %34, align 8, !dbg !1076 | |
%35 = bitcast %..string* %6 to [2 x i64]*, !dbg !1079 | |
%36 = load [2 x i64], [2 x i64]* %35, align 8, !dbg !1079 | |
%37 = call [2 x i64] @runtime.print_string([2 x i64] %36), !dbg !1079 | |
%38 = bitcast { i64, i64 }* %12 to [2 x i64]*, !dbg !1079 | |
store [2 x i64] %37, [2 x i64]* %38, align 8, !dbg !1079 | |
br label %if.done, !dbg !1083 | |
if.done: ; preds = %if.then, %decls | |
%39 = call [2 x i64] @runtime.print_byte(i8 10), !dbg !1080 | |
%40 = bitcast { i64, i64 }* %13 to [2 x i64]*, !dbg !1080 | |
store [2 x i64] %39, [2 x i64]* %40, align 8, !dbg !1080 | |
call void @llvm.trap(), !dbg !1084 | |
unreachable, !dbg !1081 | |
} | |
; Function Attrs: nounwind | |
define internal [2 x i64] @utf8.encode_rune(i32 %0, i8* noalias nocapture nonnull %__.context_ptr) #0 !dbg !1085 { | |
decls: | |
call void @llvm.dbg.declare(metadata [4 x i8]* %1, metadata !1100, metadata !DIExpression()), !dbg !1102 | |
%1 = alloca [4 x i8], align 1, !dbg !1102 | |
%2 = alloca { [4 x i8], i64 }, align 8, !dbg !1103 | |
%3 = alloca { [4 x i8], i64 }, align 8, !dbg !1106 | |
%4 = alloca { [4 x i8], i64 }, align 8, !dbg !1109 | |
%5 = alloca { [4 x i8], i64 }, align 8, !dbg !1112 | |
call void @llvm.dbg.value(metadata i32 %0, metadata !1096, metadata !DIExpression()), !dbg !1113 | |
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !1097, metadata !DIExpression()), !dbg !1114 | |
call void @llvm.dbg.value(metadata i32 %0, metadata !1098, metadata !DIExpression()), !dbg !1115 | |
%6 = bitcast [4 x i8]* %1 to i8*, !dbg !1102 | |
call void @llvm.memset.p0i8.i64(i8* %6, i8 0, i64 4, i1 false), !dbg !1102 | |
call void @llvm.dbg.value(metadata i32 %0, metadata !1101, metadata !DIExpression()), !dbg !1115 | |
%7 = icmp ule i32 %0, 127, !dbg !1116 | |
br i1 %7, label %if.then, label %if.done, !dbg !1116 | |
if.then: ; preds = %decls | |
%8 = getelementptr [4 x i8], [4 x i8]* %1, i64 0, i64 0, !dbg !1117 | |
%9 = trunc i32 %0 to i8, !dbg !1117 | |
store i8 %9, i8* %8, align 1, !dbg !1117 | |
%10 = getelementptr inbounds { [4 x i8], i64 }, { [4 x i8], i64 }* %2, i32 0, i32 0, !dbg !1103 | |
%11 = getelementptr inbounds { [4 x i8], i64 }, { [4 x i8], i64 }* %2, i32 0, i32 1, !dbg !1103 | |
%12 = bitcast [4 x i8]* %10 to i8*, !dbg !1103 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %12, i8* align 1 %6, i64 4, i1 false), !dbg !1103 | |
store i64 1, i64* %11, align 8, !dbg !1103 | |
%13 = bitcast { [4 x i8], i64 }* %2 to [2 x i64]*, !dbg !1103 | |
%14 = load [2 x i64], [2 x i64]* %13, align 8, !dbg !1103 | |
ret [2 x i64] %14, !dbg !1103 | |
if.done: ; preds = %decls | |
%15 = icmp ule i32 %0, 2047, !dbg !1118 | |
br i1 %15, label %if.then1, label %if.done2, !dbg !1118 | |
if.then1: ; preds = %if.done | |
%16 = getelementptr [4 x i8], [4 x i8]* %1, i64 0, i64 0, !dbg !1119 | |
%17 = ashr i32 %0, 6, !dbg !1119 | |
%18 = trunc i32 %17 to i8, !dbg !1119 | |
%19 = or i8 -64, %18, !dbg !1119 | |
store i8 %19, i8* %16, align 1, !dbg !1119 | |
%20 = getelementptr [4 x i8], [4 x i8]* %1, i64 0, i64 1, !dbg !1120 | |
%21 = trunc i32 %0 to i8, !dbg !1120 | |
%22 = and i8 %21, 63, !dbg !1120 | |
%23 = or i8 -128, %22, !dbg !1120 | |
store i8 %23, i8* %20, align 1, !dbg !1120 | |
%24 = getelementptr inbounds { [4 x i8], i64 }, { [4 x i8], i64 }* %3, i32 0, i32 0, !dbg !1106 | |
%25 = getelementptr inbounds { [4 x i8], i64 }, { [4 x i8], i64 }* %3, i32 0, i32 1, !dbg !1106 | |
%26 = bitcast [4 x i8]* %24 to i8*, !dbg !1106 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %26, i8* align 1 %6, i64 4, i1 false), !dbg !1106 | |
store i64 2, i64* %25, align 8, !dbg !1106 | |
%27 = bitcast { [4 x i8], i64 }* %3 to [2 x i64]*, !dbg !1106 | |
%28 = load [2 x i64], [2 x i64]* %27, align 8, !dbg !1106 | |
ret [2 x i64] %28, !dbg !1106 | |
if.done2: ; preds = %if.done | |
%29 = icmp ugt i32 %0, 1114111, !dbg !1121 | |
br i1 %29, label %if.then3, label %cmp.or, !dbg !1121 | |
cmp.or: ; preds = %if.done2 | |
%30 = icmp ule i32 55296, %0, !dbg !1121 | |
br i1 %30, label %cmp.and, label %if.done4, !dbg !1121 | |
cmp.and: ; preds = %cmp.or | |
%31 = icmp ule i32 %0, 57343, !dbg !1121 | |
br i1 %31, label %if.then3, label %if.done4, !dbg !1121 | |
if.then3: ; preds = %cmp.and, %if.done2 | |
call void @llvm.dbg.value(metadata i32 65533, metadata !1098, metadata !DIExpression()), !dbg !1115 | |
br label %if.done4, !dbg !1121 | |
if.done4: ; preds = %if.then3, %cmp.and, %cmp.or | |
%.0 = phi i32 [ 65533, %if.then3 ], [ %0, %cmp.and ], [ %0, %cmp.or ], !dbg !1115 | |
call void @llvm.dbg.value(metadata i32 %.0, metadata !1098, metadata !DIExpression()), !dbg !1115 | |
%32 = icmp ule i32 %0, 65535, !dbg !1122 | |
%33 = getelementptr [4 x i8], [4 x i8]* %1, i64 0, i64 0, !dbg !1115 | |
br i1 %32, label %if.then5, label %if.done6, !dbg !1122 | |
if.then5: ; preds = %if.done4 | |
%34 = ashr i32 %.0, 12, !dbg !1123 | |
%35 = trunc i32 %34 to i8, !dbg !1123 | |
%36 = or i8 -32, %35, !dbg !1123 | |
store i8 %36, i8* %33, align 1, !dbg !1123 | |
%37 = getelementptr [4 x i8], [4 x i8]* %1, i64 0, i64 1, !dbg !1124 | |
%38 = ashr i32 %.0, 6, !dbg !1124 | |
%39 = trunc i32 %38 to i8, !dbg !1124 | |
%40 = and i8 %39, 63, !dbg !1124 | |
%41 = or i8 -128, %40, !dbg !1124 | |
store i8 %41, i8* %37, align 1, !dbg !1124 | |
%42 = getelementptr [4 x i8], [4 x i8]* %1, i64 0, i64 2, !dbg !1125 | |
%43 = trunc i32 %.0 to i8, !dbg !1125 | |
%44 = and i8 %43, 63, !dbg !1125 | |
%45 = or i8 -128, %44, !dbg !1125 | |
store i8 %45, i8* %42, align 1, !dbg !1125 | |
%46 = getelementptr inbounds { [4 x i8], i64 }, { [4 x i8], i64 }* %4, i32 0, i32 0, !dbg !1109 | |
%47 = getelementptr inbounds { [4 x i8], i64 }, { [4 x i8], i64 }* %4, i32 0, i32 1, !dbg !1109 | |
%48 = bitcast [4 x i8]* %46 to i8*, !dbg !1109 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %48, i8* align 1 %6, i64 4, i1 false), !dbg !1109 | |
store i64 3, i64* %47, align 8, !dbg !1109 | |
%49 = bitcast { [4 x i8], i64 }* %4 to [2 x i64]*, !dbg !1109 | |
%50 = load [2 x i64], [2 x i64]* %49, align 8, !dbg !1109 | |
ret [2 x i64] %50, !dbg !1109 | |
if.done6: ; preds = %if.done4 | |
%51 = ashr i32 %.0, 18, !dbg !1126 | |
%52 = trunc i32 %51 to i8, !dbg !1126 | |
%53 = or i8 -16, %52, !dbg !1126 | |
store i8 %53, i8* %33, align 1, !dbg !1126 | |
%54 = getelementptr [4 x i8], [4 x i8]* %1, i64 0, i64 1, !dbg !1127 | |
%55 = ashr i32 %.0, 12, !dbg !1127 | |
%56 = trunc i32 %55 to i8, !dbg !1127 | |
%57 = and i8 %56, 63, !dbg !1127 | |
%58 = or i8 -128, %57, !dbg !1127 | |
store i8 %58, i8* %54, align 1, !dbg !1127 | |
%59 = getelementptr [4 x i8], [4 x i8]* %1, i64 0, i64 2, !dbg !1128 | |
%60 = ashr i32 %.0, 6, !dbg !1128 | |
%61 = trunc i32 %60 to i8, !dbg !1128 | |
%62 = and i8 %61, 63, !dbg !1128 | |
%63 = or i8 -128, %62, !dbg !1128 | |
store i8 %63, i8* %59, align 1, !dbg !1128 | |
%64 = getelementptr [4 x i8], [4 x i8]* %1, i64 0, i64 3, !dbg !1129 | |
%65 = trunc i32 %.0 to i8, !dbg !1129 | |
%66 = and i8 %65, 63, !dbg !1129 | |
%67 = or i8 -128, %66, !dbg !1129 | |
store i8 %67, i8* %64, align 1, !dbg !1129 | |
%68 = getelementptr inbounds { [4 x i8], i64 }, { [4 x i8], i64 }* %5, i32 0, i32 0, !dbg !1112 | |
%69 = getelementptr inbounds { [4 x i8], i64 }, { [4 x i8], i64 }* %5, i32 0, i32 1, !dbg !1112 | |
%70 = bitcast [4 x i8]* %68 to i8*, !dbg !1112 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %70, i8* align 1 %6, i64 4, i1 false), !dbg !1112 | |
store i64 4, i64* %69, align 8, !dbg !1112 | |
%71 = bitcast { [4 x i8], i64 }* %5 to [2 x i64]*, !dbg !1112 | |
%72 = load [2 x i64], [2 x i64]* %71, align 8, !dbg !1112 | |
ret [2 x i64] %72, !dbg !1112 | |
} | |
define dso_local void @runtime.assert(i1 zeroext %0, [2 x i64] %1, %runtime.Source_Code_Location* %2, i8* noalias nocapture nonnull %__.context_ptr) !dbg !1130 { | |
decls: | |
%3 = alloca %..string, align 8 | |
call void @llvm.dbg.declare(metadata %..string* %4, metadata !1135, metadata !DIExpression()), !dbg !1137 | |
%4 = alloca %..string, align 8 | |
call void @llvm.dbg.value(metadata i8 undef, metadata !1134, metadata !DIExpression()), !dbg !1138 | |
%5 = bitcast %..string* %3 to [2 x i64]* | |
store [2 x i64] %1, [2 x i64]* %5, align 8 | |
%6 = bitcast %..string* %4 to i8* | |
%7 = bitcast %..string* %3 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %6, i8* align 8 %7, i64 16, i1 false) | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1136, metadata !DIExpression()), !dbg !1139 | |
br i1 %0, label %if.done, label %if.then, !dbg !1140 | |
if.then: ; preds = %decls | |
%8 = bitcast %..string* %4 to [2 x i64]*, !dbg !1142 | |
%9 = load [2 x i64], [2 x i64]* %8, align 8, !dbg !1142 | |
call void @"runtime.assert$anon-8"([2 x i64] %9, %runtime.Source_Code_Location* %2, i8* %__.context_ptr), !dbg !1142 | |
unreachable | |
if.done: ; preds = %decls | |
ret void, !dbg !1139 | |
} | |
; Function Attrs: noreturn | |
define dso_local void @runtime.panic([2 x i64] %0, %runtime.Source_Code_Location* %1, i8* noalias nocapture nonnull %__.context_ptr) #1 !dbg !1145 { | |
decls: | |
%2 = alloca %..string, align 8 | |
call void @llvm.dbg.declare(metadata %..string* %3, metadata !1149, metadata !DIExpression()), !dbg !1153 | |
%3 = alloca %..string, align 8 | |
%4 = alloca [2 x i64], align 8, !dbg !1154 | |
%5 = bitcast %..string* %2 to [2 x i64]* | |
store [2 x i64] %0, [2 x i64]* %5, align 8 | |
%6 = bitcast %..string* %3 to i8* | |
%7 = bitcast %..string* %2 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %6, i8* align 8 %7, i64 16, i1 false) | |
call void @llvm.dbg.declare(metadata %runtime.Context* %8, metadata !1150, metadata !DIExpression()), !dbg !1155 | |
%8 = bitcast i8* %__.context_ptr to %runtime.Context* | |
call void @llvm.dbg.value(metadata void ([2 x i64], [2 x i64], %runtime.Source_Code_Location*, i8*)* null, metadata !1151, metadata !DIExpression()), !dbg !1156 | |
%9 = getelementptr inbounds %runtime.Context, %runtime.Context* %8, i32 0, i32 2, !dbg !1157 | |
%10 = load void ([2 x i64], [2 x i64], %runtime.Source_Code_Location*, i8*)*, void ([2 x i64], [2 x i64], %runtime.Source_Code_Location*, i8*)** %9, align 8, !dbg !1157 | |
call void @llvm.dbg.value(metadata void ([2 x i64], [2 x i64], %runtime.Source_Code_Location*, i8*)* %10, metadata !1151, metadata !DIExpression()), !dbg !1156 | |
%11 = icmp eq void ([2 x i64], [2 x i64], %runtime.Source_Code_Location*, i8*)* %10, null, !dbg !1158 | |
%.0 = select i1 %11, void ([2 x i64], [2 x i64], %runtime.Source_Code_Location*, i8*)* @runtime.default_assertion_failure_proc, void ([2 x i64], [2 x i64], %runtime.Source_Code_Location*, i8*)* %10, !dbg !1158 | |
call void @llvm.dbg.value(metadata void ([2 x i64], [2 x i64], %runtime.Source_Code_Location*, i8*)* %.0, metadata !1151, metadata !DIExpression()), !dbg !1156 | |
%12 = bitcast [2 x i64]* %4 to %..string*, !dbg !1154 | |
store %..string { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"csbs$7d", i64 0, i64 0), i64 5 }, %..string* %12, align 8, !dbg !1154 | |
%13 = load [2 x i64], [2 x i64]* %4, align 8, !dbg !1154 | |
%14 = bitcast %..string* %3 to [2 x i64]*, !dbg !1154 | |
%15 = load [2 x i64], [2 x i64]* %14, align 8, !dbg !1154 | |
call void %.0([2 x i64] %13, [2 x i64] %15, %runtime.Source_Code_Location* %1, i8* %__.context_ptr), !dbg !1154 | |
unreachable, !dbg !1154 | |
} | |
; Function Attrs: alwaysinline nounwind | |
define dso_local [2 x i64] @runtime.byte_slice-1037(i8* %0, i64 %1) #2 !dbg !1159 { | |
decls: | |
%2 = alloca %runtime.Raw_Slice, align 8, !dbg !1165 | |
call void @llvm.dbg.value(metadata i8* %0, metadata !1163, metadata !DIExpression()), !dbg !1167 | |
call void @llvm.dbg.value(metadata i64 %1, metadata !1164, metadata !DIExpression()), !dbg !1167 | |
%3 = bitcast %runtime.Raw_Slice* %2 to i8*, !dbg !1165 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %3, i8 0, i64 16, i1 false), !dbg !1165 | |
%4 = getelementptr inbounds %runtime.Raw_Slice, %runtime.Raw_Slice* %2, i32 0, i32 0, !dbg !1165 | |
store i8* %0, i8** %4, align 8, !dbg !1165 | |
%5 = icmp sgt i64 %1, 0, !dbg !1165 | |
%6 = select i1 %5, i64 %1, i64 0, !dbg !1165 | |
%7 = getelementptr inbounds %runtime.Raw_Slice, %runtime.Raw_Slice* %2, i32 0, i32 1, !dbg !1165 | |
store i64 %6, i64* %7, align 8, !dbg !1165 | |
%8 = bitcast %runtime.Raw_Slice* %2 to { i8*, i64 }*, !dbg !1165 | |
%9 = bitcast { i8*, i64 }* %8 to [2 x i64]*, !dbg !1165 | |
%10 = load [2 x i64], [2 x i64]* %9, align 8, !dbg !1165 | |
ret [2 x i64] %10, !dbg !1165 | |
} | |
define dso_local void @runtime.default_temp_allocator_init(%runtime.Default_Temp_Allocator* %0, i64 %1, [2 x i64] %2, i8* noalias nocapture nonnull %__.context_ptr) !dbg !1168 { | |
decls: | |
%3 = alloca %runtime.Allocator, align 8 | |
call void @llvm.dbg.declare(metadata %runtime.Allocator* %4, metadata !1175, metadata !DIExpression()), !dbg !1177 | |
%4 = alloca %runtime.Allocator, align 8 | |
%5 = alloca %runtime.Source_Code_Location, align 8, !dbg !1178 | |
%6 = alloca { { i8*, i64 }, i8 }, align 8, !dbg !1178 | |
call void @llvm.dbg.value(metadata %runtime.Default_Temp_Allocator* %0, metadata !1173, metadata !DIExpression()), !dbg !1180 | |
call void @llvm.dbg.value(metadata i64 %1, metadata !1174, metadata !DIExpression()), !dbg !1180 | |
%7 = bitcast %runtime.Allocator* %3 to [2 x i64]* | |
store [2 x i64] %2, [2 x i64]* %7, align 8 | |
%8 = bitcast %runtime.Allocator* %4 to i8* | |
%9 = bitcast %runtime.Allocator* %3 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %8, i8* align 8 %9, i64 16, i1 false) | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1176, metadata !DIExpression()), !dbg !1181 | |
%10 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %0, i32 0, i32 0, !dbg !1178 | |
%11 = bitcast %runtime.Allocator* %4 to [2 x i64]*, !dbg !1178 | |
%12 = load [2 x i64], [2 x i64]* %11, align 8, !dbg !1178 | |
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([74 x i8], [74 x i8]* @"csbs$7f", i64 0, i64 0), i64 73 }, i32 21, i32 11, %..string { i8* getelementptr inbounds ([28 x i8], [28 x i8]* @"csbs$80", i64 0, i64 0), i64 27 } }, %runtime.Source_Code_Location* %5, align 8, !dbg !1178 | |
%13 = bitcast { { i8*, i64 }, i8 }* %6 to i8*, !dbg !1178 | |
call void @llvm.memset.p0i8.i64(i8* %13, i8 0, i64 24, i1 false), !dbg !1178 | |
call void @runtime.make_aligned-9698({ { i8*, i64 }, i8 }* %6, i64 %1, i64 16, [2 x i64] %12, %runtime.Source_Code_Location* %5, i8* %__.context_ptr), !dbg !1178 | |
%14 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %6, i32 0, i32 0, !dbg !1178 | |
%15 = bitcast { i8*, i64 }* %10 to i8*, !dbg !1178 | |
%16 = bitcast { i8*, i64 }* %14 to i8*, !dbg !1178 | |
call void @llvm.memmove.p0i8.p0i8.i64(i8* align 8 %15, i8* align 8 %16, i64 16, i1 false), !dbg !1178 | |
%17 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %0, i32 0, i32 1, !dbg !1182 | |
store i64 0, i64* %17, align 8, !dbg !1182 | |
%18 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %0, i32 0, i32 2, !dbg !1183 | |
store i8* null, i8** %18, align 8, !dbg !1183 | |
%19 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %0, i32 0, i32 3, !dbg !1184 | |
%20 = bitcast %runtime.Allocator* %19 to i8*, !dbg !1184 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %20, i8* align 8 %8, i64 16, i1 false), !dbg !1184 | |
%21 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %0, i32 0, i32 4, !dbg !1185 | |
%22 = getelementptr inbounds { { i8*, i64 }*, i64, i64, %runtime.Allocator }, { { i8*, i64 }*, i64, i64, %runtime.Allocator }* %21, i32 0, i32 3, !dbg !1185 | |
%23 = bitcast %runtime.Allocator* %22 to i8*, !dbg !1185 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %23, i8* align 8 %8, i64 16, i1 false), !dbg !1185 | |
ret void, !dbg !1181 | |
} | |
define dso_local void @runtime.default_temp_allocator_alloc-1071({ { i8*, i64 }, i8 }* noalias sret %agg.result, %runtime.Default_Temp_Allocator* %0, i64 %1, i64 %2, %runtime.Source_Code_Location* %3, i8* noalias nocapture nonnull %__.context_ptr) !dbg !1186 { | |
decls: | |
%4 = alloca %runtime.Allocator, align 8 | |
%5 = alloca %runtime.Allocator, align 8 | |
%6 = alloca { { i8*, i64 }, i8 }, align 8, !dbg !1208 | |
%7 = alloca %runtime.Raw_Slice, align 8, !dbg !1220 | |
%8 = alloca %..string, align 8 | |
%9 = alloca %..string, align 8 | |
%10 = alloca %runtime.Source_Code_Location, align 8, !dbg !1222 | |
%11 = alloca %runtime.Raw_Slice, align 8, !dbg !1234 | |
%12 = alloca %..string, align 8 | |
%13 = alloca %..string, align 8 | |
%14 = alloca %runtime.Source_Code_Location, align 8, !dbg !1236 | |
%15 = alloca %..string, align 8 | |
%16 = alloca %..string, align 8 | |
%17 = alloca [2 x i64], align 8, !dbg !1238 | |
%18 = alloca %runtime.Source_Code_Location, align 8, !dbg !1238 | |
%19 = alloca { i8*, i64 }, align 8, !dbg !1250 | |
%20 = alloca { i8*, i64 }, align 8, !dbg !1251 | |
call void @llvm.dbg.declare(metadata %runtime.Allocator* %21, metadata !1203, metadata !DIExpression()), !dbg !1252 | |
%21 = alloca %runtime.Allocator, align 8, !dbg !1252 | |
call void @llvm.dbg.declare(metadata { i8*, i64 }* %22, metadata !1204, metadata !DIExpression()), !dbg !1253 | |
%22 = alloca { i8*, i64 }, align 8, !dbg !1253 | |
%23 = alloca { { i8*, i64 }, i8 }, align 8, !dbg !1253 | |
%24 = alloca %runtime.Source_Code_Location, align 8, !dbg !1254 | |
%25 = alloca { { { i8*, i64 }*, i64, i64, %runtime.Allocator }, i8 }, align 8, !dbg !1254 | |
%26 = alloca %runtime.Source_Code_Location, align 8, !dbg !1257 | |
call void @llvm.dbg.declare(metadata %runtime.Logger* %27, metadata !1206, metadata !DIExpression()), !dbg !1258 | |
%27 = alloca %runtime.Logger, align 8, !dbg !1258 | |
%28 = alloca [2 x i64], align 8, !dbg !1259 | |
call void @llvm.dbg.value(metadata %runtime.Default_Temp_Allocator* %0, metadata !1190, metadata !DIExpression()), !dbg !1263 | |
call void @llvm.dbg.value(metadata i64 %1, metadata !1191, metadata !DIExpression()), !dbg !1263 | |
call void @llvm.dbg.value(metadata i64 %2, metadata !1192, metadata !DIExpression()), !dbg !1263 | |
call void @llvm.dbg.declare(metadata %runtime.Context* %29, metadata !1193, metadata !DIExpression()), !dbg !1264 | |
%29 = bitcast i8* %__.context_ptr to %runtime.Context* | |
call void @llvm.dbg.value(metadata i64 %1, metadata !1194, metadata !DIExpression()), !dbg !1265 | |
%30 = bitcast [2 x i64]* %17 to i8*, !dbg !1266 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %30), !dbg !1266 | |
%31 = bitcast %runtime.Source_Code_Location* %18 to i8*, !dbg !1266 | |
call void @llvm.lifetime.start.p0i8(i64 40, i8* %31), !dbg !1266 | |
call void @llvm.dbg.value(metadata i64 %1, metadata !1244, metadata !DIExpression()), !dbg !1266 | |
call void @llvm.dbg.value(metadata i64 %2, metadata !1245, metadata !DIExpression()), !dbg !1266 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1246, metadata !DIExpression()), !dbg !1267 | |
call void @llvm.dbg.value(metadata i64 %2, metadata !1268, metadata !DIExpression()), !dbg !1272 | |
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !1271, metadata !DIExpression()), !dbg !1274 | |
%32 = icmp sle i64 %2, 0, !dbg !1275 | |
br i1 %32, label %if.then.i.i, label %if.done.i.i, !dbg !1275 | |
if.then.i.i: ; preds = %decls | |
br label %runtime.is_power_of_two_int.exit.i, !dbg !1277 | |
if.done.i.i: ; preds = %decls | |
%33 = sub i64 %2, 1, !dbg !1280 | |
%34 = and i64 %2, %33, !dbg !1280 | |
%35 = icmp eq i64 %34, 0, !dbg !1280 | |
%36 = zext i1 %35 to i8, !dbg !1280 | |
br label %runtime.is_power_of_two_int.exit.i, !dbg !1280 | |
runtime.is_power_of_two_int.exit.i: ; preds = %if.done.i.i, %if.then.i.i | |
%37 = phi i8 [ 0, %if.then.i.i ], [ %36, %if.done.i.i ] | |
%38 = icmp ne i8 %37, 0, !dbg !1238 | |
%39 = bitcast [2 x i64]* %17 to %..string*, !dbg !1238 | |
%40 = bitcast %..string* %39 to i8*, !dbg !1238 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %40, i8 0, i64 16, i1 false), !dbg !1238, !noalias !1281 | |
%41 = load [2 x i64], [2 x i64]* %17, align 8, !dbg !1238, !noalias !1281 | |
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$9e", i64 0, i64 0), i64 54 }, i32 65, i32 2, %..string { i8* getelementptr inbounds ([18 x i8], [18 x i8]* @"csbs$9f", i64 0, i64 0), i64 17 } }, %runtime.Source_Code_Location* %18, align 8, !dbg !1238, !noalias !1281 | |
%42 = bitcast %..string* %15 to i8*, !dbg !1284 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %42), !dbg !1284, !noalias !1281 | |
%43 = bitcast %..string* %16 to i8*, !dbg !1284 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %43), !dbg !1284, !noalias !1281 | |
call void @llvm.dbg.declare(metadata !112, metadata !1135, metadata !DIExpression()), !dbg !1284 | |
call void @llvm.dbg.value(metadata i8 undef, metadata !1134, metadata !DIExpression()), !dbg !1286 | |
%44 = bitcast %..string* %15 to [2 x i64]* | |
store [2 x i64] %41, [2 x i64]* %44, align 8, !noalias !1287 | |
%45 = bitcast %..string* %16 to i8* | |
%46 = bitcast %..string* %15 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %45, i8* align 8 %46, i64 16, i1 false), !noalias !1287 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1136, metadata !DIExpression()), !dbg !1290 | |
br i1 %38, label %runtime.align_forward_int.exit, label %if.then.i1.i, !dbg !1291 | |
if.then.i1.i: ; preds = %runtime.is_power_of_two_int.exit.i | |
%47 = bitcast %..string* %16 to [2 x i64]*, !dbg !1292 | |
%48 = load [2 x i64], [2 x i64]* %47, align 8, !dbg !1292, !noalias !1287 | |
call void @"runtime.assert$anon-8"([2 x i64] %48, %runtime.Source_Code_Location* %18, i8* %__.context_ptr), !dbg !1292 | |
unreachable | |
runtime.align_forward_int.exit: ; preds = %runtime.is_power_of_two_int.exit.i | |
%49 = bitcast %..string* %15 to i8*, !dbg !1290 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %49), !dbg !1290, !noalias !1281 | |
%50 = bitcast %..string* %16 to i8*, !dbg !1290 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %50), !dbg !1290, !noalias !1281 | |
call void @llvm.dbg.value(metadata i64 %1, metadata !1247, metadata !DIExpression()), !dbg !1293 | |
call void @llvm.dbg.value(metadata i64 0, metadata !1248, metadata !DIExpression()), !dbg !1293 | |
%51 = sub i64 %2, 1, !dbg !1294 | |
%52 = and i64 %1, %51, !dbg !1294 | |
call void @llvm.dbg.value(metadata i64 %52, metadata !1248, metadata !DIExpression()), !dbg !1293 | |
%53 = icmp ne i64 %52, 0, !dbg !1295 | |
%54 = sub i64 %2, %52, !dbg !1295 | |
%55 = add i64 %1, %54, !dbg !1295 | |
%.0.i = select i1 %53, i64 %55, i64 %1, !dbg !1295 | |
call void @llvm.dbg.value(metadata i64 %.0.i, metadata !1247, metadata !DIExpression()), !dbg !1293 | |
%56 = bitcast [2 x i64]* %17 to i8*, !dbg !1296 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %56), !dbg !1296 | |
%57 = bitcast %runtime.Source_Code_Location* %18 to i8*, !dbg !1296 | |
call void @llvm.lifetime.end.p0i8(i64 40, i8* %57), !dbg !1296 | |
call void @llvm.dbg.value(metadata i64 %.0.i, metadata !1194, metadata !DIExpression()), !dbg !1265 | |
%58 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %0, i32 0, i32 1, !dbg !1297 | |
%59 = load i64, i64* %58, align 8, !dbg !1297 | |
%60 = add i64 %59, %.0.i, !dbg !1297 | |
%61 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %0, i32 0, i32 0, !dbg !1297 | |
%62 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %61, i32 0, i32 1, !dbg !1297 | |
%63 = load i64, i64* %62, align 8, !dbg !1297 | |
%64 = icmp sle i64 %60, %63, !dbg !1297 | |
br i1 %64, label %switch.case.body, label %switch.case.next, !dbg !1297 | |
switch.case.next: ; preds = %runtime.align_forward_int.exit | |
%65 = icmp sle i64 %.0.i, %63, !dbg !1297 | |
br i1 %65, label %switch.case.body2, label %switch.done, !dbg !1297 | |
switch.case.body: ; preds = %runtime.align_forward_int.exit | |
call void @llvm.dbg.value(metadata i64 0, metadata !1196, metadata !DIExpression()), !dbg !1298 | |
%66 = bitcast { i8*, i64 }* %61 to [2 x i64]*, !dbg !1299 | |
%67 = load [2 x i64], [2 x i64]* %66, align 8, !dbg !1299 | |
%68 = call i8* @runtime.raw_slice_data-9714([2 x i64] %67), !dbg !1299 | |
%69 = ptrtoint i8* %68 to i64, !dbg !1299 | |
call void @llvm.dbg.value(metadata i64 %69, metadata !1196, metadata !DIExpression()), !dbg !1298 | |
call void @llvm.dbg.value(metadata i64 0, metadata !1198, metadata !DIExpression()), !dbg !1298 | |
%70 = load i64, i64* %58, align 8, !dbg !1300 | |
%71 = add i64 %69, %70, !dbg !1300 | |
call void @llvm.dbg.value(metadata i64 %71, metadata !1198, metadata !DIExpression()), !dbg !1298 | |
%72 = bitcast [2 x i64]* %17 to i8*, !dbg !1301 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %72), !dbg !1301 | |
%73 = bitcast %runtime.Source_Code_Location* %14 to i8*, !dbg !1301 | |
call void @llvm.lifetime.start.p0i8(i64 40, i8* %73), !dbg !1301 | |
call void @llvm.dbg.value(metadata i64 %71, metadata !1228, metadata !DIExpression()), !dbg !1301 | |
call void @llvm.dbg.value(metadata i64 %2, metadata !1229, metadata !DIExpression()), !dbg !1301 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1230, metadata !DIExpression()), !dbg !1302 | |
call void @llvm.dbg.value(metadata i64 %2, metadata !1303, metadata !DIExpression()), !dbg !1309 | |
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !1308, metadata !DIExpression()), !dbg !1311 | |
%74 = icmp ule i64 %2, 0, !dbg !1312 | |
br i1 %74, label %if.then.i.i11, label %if.done.i.i12, !dbg !1312 | |
if.then.i.i11: ; preds = %switch.case.body | |
br label %runtime.is_power_of_two_uintptr.exit.i, !dbg !1314 | |
if.done.i.i12: ; preds = %switch.case.body | |
%75 = sub i64 %2, 1, !dbg !1317 | |
%76 = and i64 %2, %75, !dbg !1317 | |
%77 = icmp eq i64 %76, 0, !dbg !1317 | |
%78 = zext i1 %77 to i8, !dbg !1317 | |
br label %runtime.is_power_of_two_uintptr.exit.i, !dbg !1317 | |
runtime.is_power_of_two_uintptr.exit.i: ; preds = %if.done.i.i12, %if.then.i.i11 | |
%79 = phi i8 [ 0, %if.then.i.i11 ], [ %78, %if.done.i.i12 ] | |
%80 = icmp ne i8 %79, 0, !dbg !1236 | |
%81 = bitcast [2 x i64]* %17 to %..string*, !dbg !1236 | |
%82 = bitcast %..string* %81 to i8*, !dbg !1236 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %82, i8 0, i64 16, i1 false), !dbg !1236, !noalias !1318 | |
%83 = load [2 x i64], [2 x i64]* %17, align 8, !dbg !1236, !noalias !1318 | |
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$9e", i64 0, i64 0), i64 54 }, i32 83, i32 2, %..string { i8* getelementptr inbounds ([22 x i8], [22 x i8]* @"csbs$a0", i64 0, i64 0), i64 21 } }, %runtime.Source_Code_Location* %14, align 8, !dbg !1236, !noalias !1318 | |
%84 = bitcast %..string* %12 to i8*, !dbg !1321 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %84), !dbg !1321, !noalias !1318 | |
%85 = bitcast %..string* %13 to i8*, !dbg !1321 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %85), !dbg !1321, !noalias !1318 | |
call void @llvm.dbg.declare(metadata !112, metadata !1135, metadata !DIExpression()), !dbg !1321 | |
call void @llvm.dbg.value(metadata i8 undef, metadata !1134, metadata !DIExpression()), !dbg !1323 | |
%86 = bitcast %..string* %12 to [2 x i64]* | |
store [2 x i64] %83, [2 x i64]* %86, align 8, !noalias !1324 | |
%87 = bitcast %..string* %13 to i8* | |
%88 = bitcast %..string* %12 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %87, i8* align 8 %88, i64 16, i1 false), !noalias !1324 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1136, metadata !DIExpression()), !dbg !1327 | |
br i1 %80, label %runtime.align_forward_uintptr.exit, label %if.then.i1.i13, !dbg !1328 | |
if.then.i1.i13: ; preds = %runtime.is_power_of_two_uintptr.exit.i | |
%89 = bitcast %..string* %13 to [2 x i64]*, !dbg !1329 | |
%90 = load [2 x i64], [2 x i64]* %89, align 8, !dbg !1329, !noalias !1324 | |
call void @"runtime.assert$anon-8"([2 x i64] %90, %runtime.Source_Code_Location* %14, i8* %__.context_ptr), !dbg !1329 | |
unreachable | |
runtime.align_forward_uintptr.exit: ; preds = %runtime.is_power_of_two_uintptr.exit.i | |
%91 = bitcast %..string* %12 to i8*, !dbg !1327 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %91), !dbg !1327, !noalias !1318 | |
%92 = bitcast %..string* %13 to i8*, !dbg !1327 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %92), !dbg !1327, !noalias !1318 | |
call void @llvm.dbg.value(metadata i64 %71, metadata !1231, metadata !DIExpression()), !dbg !1330 | |
call void @llvm.dbg.value(metadata i64 0, metadata !1232, metadata !DIExpression()), !dbg !1330 | |
%93 = sub i64 %2, 1, !dbg !1331 | |
%94 = and i64 %71, %93, !dbg !1331 | |
call void @llvm.dbg.value(metadata i64 %94, metadata !1232, metadata !DIExpression()), !dbg !1330 | |
%95 = icmp ne i64 %94, 0, !dbg !1332 | |
%96 = sub i64 %2, %94, !dbg !1332 | |
%97 = add i64 %71, %96, !dbg !1332 | |
%.0.i14 = select i1 %95, i64 %97, i64 %71, !dbg !1332 | |
call void @llvm.dbg.value(metadata i64 %.0.i14, metadata !1231, metadata !DIExpression()), !dbg !1330 | |
%98 = bitcast [2 x i64]* %17 to i8*, !dbg !1333 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %98), !dbg !1333 | |
%99 = bitcast %runtime.Source_Code_Location* %14 to i8*, !dbg !1333 | |
call void @llvm.lifetime.end.p0i8(i64 40, i8* %99), !dbg !1333 | |
call void @llvm.dbg.value(metadata i64 %.0.i14, metadata !1198, metadata !DIExpression()), !dbg !1298 | |
%100 = inttoptr i64 %.0.i14 to i8*, !dbg !1334 | |
%101 = call i8* @runtime.mem_zero(i8* %100, i64 %.0.i), !dbg !1334 | |
%102 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %0, i32 0, i32 2, !dbg !1335 | |
store i8* %100, i8** %102, align 8, !dbg !1335 | |
call void @llvm.dbg.value(metadata i64 0, metadata !1199, metadata !DIExpression()), !dbg !1298 | |
%103 = sub i64 %.0.i14, %69, !dbg !1336 | |
call void @llvm.dbg.value(metadata i64 %103, metadata !1199, metadata !DIExpression()), !dbg !1298 | |
%104 = add i64 %103, %.0.i, !dbg !1337 | |
store i64 %104, i64* %58, align 8, !dbg !1337 | |
%105 = bitcast %runtime.Raw_Slice* %11 to i8*, !dbg !1338 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %105), !dbg !1338 | |
call void @llvm.dbg.value(metadata i8* %100, metadata !1163, metadata !DIExpression()), !dbg !1338 | |
call void @llvm.dbg.value(metadata i64 %.0.i, metadata !1164, metadata !DIExpression()), !dbg !1338 | |
%106 = bitcast %runtime.Raw_Slice* %11 to i8*, !dbg !1234 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %106, i8 0, i64 16, i1 false), !dbg !1234 | |
%107 = getelementptr inbounds %runtime.Raw_Slice, %runtime.Raw_Slice* %11, i32 0, i32 0, !dbg !1234 | |
store i8* %100, i8** %107, align 8, !dbg !1234 | |
%108 = icmp sgt i64 %.0.i, 0, !dbg !1234 | |
%109 = select i1 %108, i64 %.0.i, i64 0, !dbg !1234 | |
%110 = getelementptr inbounds %runtime.Raw_Slice, %runtime.Raw_Slice* %11, i32 0, i32 1, !dbg !1234 | |
store i64 %109, i64* %110, align 8, !dbg !1234 | |
%111 = bitcast %runtime.Raw_Slice* %11 to { i8*, i64 }*, !dbg !1234 | |
%112 = bitcast { i8*, i64 }* %111 to [2 x i64]*, !dbg !1234 | |
%113 = load [2 x i64], [2 x i64]* %112, align 8, !dbg !1234 | |
%114 = bitcast %runtime.Raw_Slice* %11 to i8*, !dbg !1234 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %114), !dbg !1234 | |
%115 = bitcast { i8*, i64 }* %19 to [2 x i64]*, !dbg !1250 | |
store [2 x i64] %113, [2 x i64]* %115, align 8, !dbg !1250 | |
%116 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 0, !dbg !1250 | |
%117 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 1, !dbg !1250 | |
%118 = bitcast { i8*, i64 }* %116 to i8*, !dbg !1250 | |
%119 = bitcast { i8*, i64 }* %19 to i8*, !dbg !1250 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %118, i8* align 8 %119, i64 16, i1 false), !dbg !1250 | |
store i8 0, i8* %117, align 1, !dbg !1250 | |
ret void, !dbg !1250 | |
switch.case.body2: ; preds = %switch.case.next | |
call void @llvm.dbg.value(metadata i64 0, metadata !1200, metadata !DIExpression()), !dbg !1298 | |
%120 = bitcast { i8*, i64 }* %61 to [2 x i64]*, !dbg !1339 | |
%121 = load [2 x i64], [2 x i64]* %120, align 8, !dbg !1339 | |
%122 = call i8* @runtime.raw_slice_data-9714([2 x i64] %121), !dbg !1339 | |
%123 = ptrtoint i8* %122 to i64, !dbg !1339 | |
call void @llvm.dbg.value(metadata i64 %123, metadata !1200, metadata !DIExpression()), !dbg !1298 | |
call void @llvm.dbg.value(metadata i64 0, metadata !1201, metadata !DIExpression()), !dbg !1298 | |
%124 = bitcast [2 x i64]* %17 to i8*, !dbg !1340 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %124), !dbg !1340 | |
%125 = bitcast %runtime.Source_Code_Location* %10 to i8*, !dbg !1340 | |
call void @llvm.lifetime.start.p0i8(i64 40, i8* %125), !dbg !1340 | |
call void @llvm.dbg.value(metadata i64 %123, metadata !1228, metadata !DIExpression()), !dbg !1340 | |
call void @llvm.dbg.value(metadata i64 %2, metadata !1229, metadata !DIExpression()), !dbg !1340 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1230, metadata !DIExpression()), !dbg !1341 | |
call void @llvm.dbg.value(metadata i64 %2, metadata !1303, metadata !DIExpression()), !dbg !1342 | |
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !1308, metadata !DIExpression()), !dbg !1344 | |
%126 = icmp ule i64 %2, 0, !dbg !1345 | |
br i1 %126, label %if.then.i.i15, label %if.done.i.i16, !dbg !1345 | |
if.then.i.i15: ; preds = %switch.case.body2 | |
br label %runtime.is_power_of_two_uintptr.exit.i17, !dbg !1346 | |
if.done.i.i16: ; preds = %switch.case.body2 | |
%127 = sub i64 %2, 1, !dbg !1347 | |
%128 = and i64 %2, %127, !dbg !1347 | |
%129 = icmp eq i64 %128, 0, !dbg !1347 | |
%130 = zext i1 %129 to i8, !dbg !1347 | |
br label %runtime.is_power_of_two_uintptr.exit.i17, !dbg !1347 | |
runtime.is_power_of_two_uintptr.exit.i17: ; preds = %if.done.i.i16, %if.then.i.i15 | |
%131 = phi i8 [ 0, %if.then.i.i15 ], [ %130, %if.done.i.i16 ] | |
%132 = icmp ne i8 %131, 0, !dbg !1222 | |
%133 = bitcast [2 x i64]* %17 to %..string*, !dbg !1222 | |
%134 = bitcast %..string* %133 to i8*, !dbg !1222 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %134, i8 0, i64 16, i1 false), !dbg !1222, !noalias !1348 | |
%135 = load [2 x i64], [2 x i64]* %17, align 8, !dbg !1222, !noalias !1348 | |
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$9e", i64 0, i64 0), i64 54 }, i32 83, i32 2, %..string { i8* getelementptr inbounds ([22 x i8], [22 x i8]* @"csbs$a0", i64 0, i64 0), i64 21 } }, %runtime.Source_Code_Location* %10, align 8, !dbg !1222, !noalias !1348 | |
%136 = bitcast %..string* %8 to i8*, !dbg !1351 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %136), !dbg !1351, !noalias !1348 | |
%137 = bitcast %..string* %9 to i8*, !dbg !1351 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %137), !dbg !1351, !noalias !1348 | |
call void @llvm.dbg.declare(metadata !112, metadata !1135, metadata !DIExpression()), !dbg !1351 | |
call void @llvm.dbg.value(metadata i8 undef, metadata !1134, metadata !DIExpression()), !dbg !1353 | |
%138 = bitcast %..string* %8 to [2 x i64]* | |
store [2 x i64] %135, [2 x i64]* %138, align 8, !noalias !1354 | |
%139 = bitcast %..string* %9 to i8* | |
%140 = bitcast %..string* %8 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %139, i8* align 8 %140, i64 16, i1 false), !noalias !1354 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1136, metadata !DIExpression()), !dbg !1357 | |
br i1 %132, label %runtime.align_forward_uintptr.exit20, label %if.then.i1.i18, !dbg !1358 | |
if.then.i1.i18: ; preds = %runtime.is_power_of_two_uintptr.exit.i17 | |
%141 = bitcast %..string* %9 to [2 x i64]*, !dbg !1359 | |
%142 = load [2 x i64], [2 x i64]* %141, align 8, !dbg !1359, !noalias !1354 | |
call void @"runtime.assert$anon-8"([2 x i64] %142, %runtime.Source_Code_Location* %10, i8* %__.context_ptr), !dbg !1359 | |
unreachable | |
runtime.align_forward_uintptr.exit20: ; preds = %runtime.is_power_of_two_uintptr.exit.i17 | |
%143 = bitcast %..string* %8 to i8*, !dbg !1357 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %143), !dbg !1357, !noalias !1348 | |
%144 = bitcast %..string* %9 to i8*, !dbg !1357 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %144), !dbg !1357, !noalias !1348 | |
call void @llvm.dbg.value(metadata i64 %123, metadata !1231, metadata !DIExpression()), !dbg !1360 | |
call void @llvm.dbg.value(metadata i64 0, metadata !1232, metadata !DIExpression()), !dbg !1360 | |
%145 = sub i64 %2, 1, !dbg !1361 | |
%146 = and i64 %123, %145, !dbg !1361 | |
call void @llvm.dbg.value(metadata i64 %146, metadata !1232, metadata !DIExpression()), !dbg !1360 | |
%147 = icmp ne i64 %146, 0, !dbg !1362 | |
%148 = sub i64 %2, %146, !dbg !1362 | |
%149 = add i64 %123, %148, !dbg !1362 | |
%.0.i19 = select i1 %147, i64 %149, i64 %123, !dbg !1362 | |
call void @llvm.dbg.value(metadata i64 %.0.i19, metadata !1231, metadata !DIExpression()), !dbg !1360 | |
%150 = bitcast [2 x i64]* %17 to i8*, !dbg !1363 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %150), !dbg !1363 | |
%151 = bitcast %runtime.Source_Code_Location* %10 to i8*, !dbg !1363 | |
call void @llvm.lifetime.end.p0i8(i64 40, i8* %151), !dbg !1363 | |
call void @llvm.dbg.value(metadata i64 %.0.i19, metadata !1201, metadata !DIExpression()), !dbg !1298 | |
%152 = inttoptr i64 %.0.i19 to i8*, !dbg !1364 | |
%153 = call i8* @runtime.mem_zero(i8* %152, i64 %.0.i), !dbg !1364 | |
%154 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %0, i32 0, i32 2, !dbg !1365 | |
store i8* %152, i8** %154, align 8, !dbg !1365 | |
call void @llvm.dbg.value(metadata i64 0, metadata !1202, metadata !DIExpression()), !dbg !1298 | |
%155 = sub i64 %.0.i19, %123, !dbg !1366 | |
call void @llvm.dbg.value(metadata i64 %155, metadata !1202, metadata !DIExpression()), !dbg !1298 | |
%156 = add i64 %155, %.0.i, !dbg !1367 | |
store i64 %156, i64* %58, align 8, !dbg !1367 | |
%157 = bitcast %runtime.Raw_Slice* %7 to i8*, !dbg !1368 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %157), !dbg !1368 | |
call void @llvm.dbg.value(metadata i8* %152, metadata !1163, metadata !DIExpression()), !dbg !1368 | |
call void @llvm.dbg.value(metadata i64 %.0.i, metadata !1164, metadata !DIExpression()), !dbg !1368 | |
%158 = bitcast %runtime.Raw_Slice* %7 to i8*, !dbg !1220 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %158, i8 0, i64 16, i1 false), !dbg !1220 | |
%159 = getelementptr inbounds %runtime.Raw_Slice, %runtime.Raw_Slice* %7, i32 0, i32 0, !dbg !1220 | |
store i8* %152, i8** %159, align 8, !dbg !1220 | |
%160 = icmp sgt i64 %.0.i, 0, !dbg !1220 | |
%161 = select i1 %160, i64 %.0.i, i64 0, !dbg !1220 | |
%162 = getelementptr inbounds %runtime.Raw_Slice, %runtime.Raw_Slice* %7, i32 0, i32 1, !dbg !1220 | |
store i64 %161, i64* %162, align 8, !dbg !1220 | |
%163 = bitcast %runtime.Raw_Slice* %7 to { i8*, i64 }*, !dbg !1220 | |
%164 = bitcast { i8*, i64 }* %163 to [2 x i64]*, !dbg !1220 | |
%165 = load [2 x i64], [2 x i64]* %164, align 8, !dbg !1220 | |
%166 = bitcast %runtime.Raw_Slice* %7 to i8*, !dbg !1220 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %166), !dbg !1220 | |
%167 = bitcast { i8*, i64 }* %20 to [2 x i64]*, !dbg !1251 | |
store [2 x i64] %165, [2 x i64]* %167, align 8, !dbg !1251 | |
%168 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 0, !dbg !1251 | |
%169 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 1, !dbg !1251 | |
%170 = bitcast { i8*, i64 }* %168 to i8*, !dbg !1251 | |
%171 = bitcast { i8*, i64 }* %20 to i8*, !dbg !1251 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %170, i8* align 8 %171, i64 16, i1 false), !dbg !1251 | |
store i8 0, i8* %169, align 1, !dbg !1251 | |
ret void, !dbg !1251 | |
switch.done: ; preds = %switch.case.next | |
%172 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %0, i32 0, i32 3, !dbg !1252 | |
%173 = bitcast %runtime.Allocator* %21 to i8*, !dbg !1252 | |
%174 = bitcast %runtime.Allocator* %172 to i8*, !dbg !1252 | |
%175 = getelementptr i8, i8* %173, i64 16, !dbg !1252 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %175, i8 0, i64 0, i1 false), !dbg !1252 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %173, i8* align 8 %174, i64 16, i1 false), !dbg !1252 | |
%176 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %21, i32 0, i32 0, !dbg !1369 | |
%177 = load i8*, i8** %176, align 8, !dbg !1369 | |
%178 = icmp eq i8* %177, null, !dbg !1369 | |
br i1 %178, label %if.then, label %if.done, !dbg !1369 | |
if.then: ; preds = %switch.done | |
%179 = getelementptr inbounds %runtime.Context, %runtime.Context* %29, i32 0, i32 0, !dbg !1370 | |
%180 = bitcast %runtime.Allocator* %179 to i8*, !dbg !1370 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %173, i8* align 8 %180, i64 16, i1 false), !dbg !1370 | |
call void @llvm.memmove.p0i8.p0i8.i64(i8* align 8 %174, i8* align 8 %180, i64 16, i1 false), !dbg !1373 | |
br label %if.done, !dbg !1369 | |
if.done: ; preds = %if.then, %switch.done | |
%181 = bitcast { i8*, i64 }* %22 to i8*, !dbg !1253 | |
call void @llvm.memset.p0i8.i64(i8* %181, i8 0, i64 16, i1 false), !dbg !1253 | |
call void @llvm.dbg.value(metadata i8 0, metadata !1205, metadata !DIExpression()), !dbg !1265 | |
%182 = bitcast %runtime.Allocator* %21 to [2 x i64]*, !dbg !1253 | |
%183 = load [2 x i64], [2 x i64]* %182, align 8, !dbg !1253 | |
%184 = bitcast { { i8*, i64 }, i8 }* %23 to i8*, !dbg !1253 | |
call void @llvm.memset.p0i8.i64(i8* %184, i8 0, i64 24, i1 false), !dbg !1253 | |
%185 = bitcast %runtime.Allocator* %4 to i8*, !dbg !1374 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %185), !dbg !1374 | |
%186 = bitcast %runtime.Allocator* %5 to i8*, !dbg !1374 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %186), !dbg !1374 | |
%187 = bitcast { { i8*, i64 }, i8 }* %6 to i8*, !dbg !1374 | |
call void @llvm.lifetime.start.p0i8(i64 24, i8* %187), !dbg !1374 | |
call void @llvm.dbg.declare(metadata !112, metadata !1217, metadata !DIExpression()), !dbg !1374 | |
call void @llvm.dbg.value(metadata i64 %.0.i, metadata !1215, metadata !DIExpression()), !dbg !1375 | |
call void @llvm.dbg.value(metadata i64 %2, metadata !1216, metadata !DIExpression()), !dbg !1375 | |
%188 = bitcast %runtime.Allocator* %4 to [2 x i64]* | |
store [2 x i64] %183, [2 x i64]* %188, align 8, !noalias !1376 | |
%189 = bitcast %runtime.Allocator* %5 to i8* | |
%190 = bitcast %runtime.Allocator* %4 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %189, i8* align 8 %190, i64 16, i1 false), !noalias !1376 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1218, metadata !DIExpression()), !dbg !1380 | |
%191 = icmp eq i64 %.0.i, 0, !dbg !1381 | |
br i1 %191, label %if.then.i, label %if.done.i, !dbg !1381 | |
if.then.i: ; preds = %if.done | |
%192 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %23, i32 0, i32 0, !dbg !1382 | |
%193 = bitcast { i8*, i64 }* %192 to i8*, !dbg !1382 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %193, i8 0, i64 17, i1 false), !dbg !1382, !alias.scope !1385, !noalias !1386 | |
%194 = bitcast %runtime.Allocator* %4 to i8*, !dbg !1382 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %194), !dbg !1382 | |
%195 = bitcast %runtime.Allocator* %5 to i8*, !dbg !1382 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %195), !dbg !1382 | |
%196 = bitcast { { i8*, i64 }, i8 }* %6 to i8*, !dbg !1382 | |
call void @llvm.lifetime.end.p0i8(i64 24, i8* %196), !dbg !1382 | |
br label %runtime.mem_alloc_bytes.exit, !dbg !1382 | |
if.done.i: ; preds = %if.done | |
%197 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %5, i32 0, i32 0, !dbg !1387 | |
%198 = load i8*, i8** %197, align 8, !dbg !1387, !noalias !1376 | |
%199 = icmp eq i8* %198, null, !dbg !1387 | |
br i1 %199, label %if.then1.i, label %if.done2.i, !dbg !1387 | |
if.then1.i: ; preds = %if.done.i | |
%200 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %23, i32 0, i32 0, !dbg !1388 | |
%201 = bitcast { i8*, i64 }* %200 to i8*, !dbg !1388 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %201, i8 0, i64 17, i1 false), !dbg !1388, !alias.scope !1385, !noalias !1386 | |
%202 = bitcast %runtime.Allocator* %4 to i8*, !dbg !1388 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %202), !dbg !1388 | |
%203 = bitcast %runtime.Allocator* %5 to i8*, !dbg !1388 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %203), !dbg !1388 | |
%204 = bitcast { { i8*, i64 }, i8 }* %6 to i8*, !dbg !1388 | |
call void @llvm.lifetime.end.p0i8(i64 24, i8* %204), !dbg !1388 | |
br label %runtime.mem_alloc_bytes.exit, !dbg !1388 | |
if.done2.i: ; preds = %if.done.i | |
%205 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %5, i32 0, i32 1, !dbg !1208 | |
%206 = load i8*, i8** %205, align 8, !dbg !1208, !noalias !1376 | |
%207 = bitcast { { i8*, i64 }, i8 }* %6 to i8*, !dbg !1208 | |
call void @llvm.memset.p0i8.i64(i8* %207, i8 0, i64 24, i1 false), !dbg !1208, !noalias !1376 | |
%208 = bitcast i8* %198 to void ({ { i8*, i64 }, i8 }*, i8*, i8, i64, i64, i8*, i64, %runtime.Source_Code_Location*, i8*)*, !dbg !1208 | |
call void %208({ { i8*, i64 }, i8 }* %6, i8* %206, i8 0, i64 %.0.i, i64 %2, i8* null, i64 0, %runtime.Source_Code_Location* %3, i8* %__.context_ptr) #4, !dbg !1208, !noalias !1385 | |
%209 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %6, i32 0, i32 0, !dbg !1208 | |
%210 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %6, i32 0, i32 1, !dbg !1208 | |
%211 = load i8, i8* %210, align 1, !dbg !1208, !noalias !1376 | |
%212 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %23, i32 0, i32 0, !dbg !1208 | |
%213 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %23, i32 0, i32 1, !dbg !1208 | |
%214 = bitcast { i8*, i64 }* %212 to i8*, !dbg !1208 | |
%215 = bitcast { i8*, i64 }* %209 to i8*, !dbg !1208 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %214, i8* align 8 %215, i64 16, i1 false), !dbg !1208, !noalias !1386 | |
store i8 %211, i8* %213, align 1, !dbg !1208, !alias.scope !1385, !noalias !1386 | |
%216 = bitcast %runtime.Allocator* %4 to i8*, !dbg !1208 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %216), !dbg !1208 | |
%217 = bitcast %runtime.Allocator* %5 to i8*, !dbg !1208 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %217), !dbg !1208 | |
%218 = bitcast { { i8*, i64 }, i8 }* %6 to i8*, !dbg !1208 | |
call void @llvm.lifetime.end.p0i8(i64 24, i8* %218), !dbg !1208 | |
br label %runtime.mem_alloc_bytes.exit, !dbg !1208 | |
runtime.mem_alloc_bytes.exit: ; preds = %if.done2.i, %if.then1.i, %if.then.i | |
%219 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %23, i32 0, i32 0, !dbg !1253 | |
%220 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %23, i32 0, i32 1, !dbg !1253 | |
%221 = load i8, i8* %220, align 1, !dbg !1253 | |
%222 = bitcast { i8*, i64 }* %219 to i8*, !dbg !1253 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %181, i8* align 8 %222, i64 16, i1 false), !dbg !1253 | |
call void @llvm.dbg.value(metadata i8 %221, metadata !1205, metadata !DIExpression()), !dbg !1265 | |
%223 = icmp ne i8 %221, 0, !dbg !1391 | |
br i1 %223, label %if.then3, label %if.done4, !dbg !1391 | |
if.then3: ; preds = %runtime.mem_alloc_bytes.exit | |
%224 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 0, !dbg !1392 | |
%225 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 1, !dbg !1392 | |
%226 = bitcast { i8*, i64 }* %224 to i8*, !dbg !1392 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %226, i8* align 8 %181, i64 16, i1 false), !dbg !1392 | |
store i8 %221, i8* %225, align 1, !dbg !1392 | |
ret void, !dbg !1392 | |
if.done4: ; preds = %runtime.mem_alloc_bytes.exit | |
%227 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %0, i32 0, i32 4, !dbg !1395 | |
%228 = getelementptr inbounds { { i8*, i64 }*, i64, i64, %runtime.Allocator }, { { i8*, i64 }*, i64, i64, %runtime.Allocator }* %227, i32 0, i32 0, !dbg !1395 | |
%229 = load { i8*, i64 }*, { i8*, i64 }** %228, align 8, !dbg !1395 | |
%230 = icmp eq { i8*, i64 }* %229, null, !dbg !1395 | |
br i1 %230, label %if.then5, label %if.done6, !dbg !1395 | |
if.then5: ; preds = %if.done4 | |
%231 = load [2 x i64], [2 x i64]* %182, align 8, !dbg !1254 | |
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([74 x i8], [74 x i8]* @"csbs$7f", i64 0, i64 0), i64 73 }, i32 78, i32 26, %..string { i8* getelementptr inbounds ([29 x i8], [29 x i8]* @"csbs$81", i64 0, i64 0), i64 28 } }, %runtime.Source_Code_Location* %24, align 8, !dbg !1254 | |
%232 = bitcast { { { i8*, i64 }*, i64, i64, %runtime.Allocator }, i8 }* %25 to i8*, !dbg !1254 | |
call void @llvm.memset.p0i8.i64(i8* %232, i8 0, i64 48, i1 false), !dbg !1254 | |
call void @runtime.make_dynamic_array-9855({ { { i8*, i64 }*, i64, i64, %runtime.Allocator }, i8 }* %25, [2 x i64] %231, %runtime.Source_Code_Location* %24, i8* %__.context_ptr), !dbg !1254 | |
%233 = getelementptr inbounds { { { i8*, i64 }*, i64, i64, %runtime.Allocator }, i8 }, { { { i8*, i64 }*, i64, i64, %runtime.Allocator }, i8 }* %25, i32 0, i32 0, !dbg !1254 | |
%234 = bitcast { { i8*, i64 }*, i64, i64, %runtime.Allocator }* %227 to i8*, !dbg !1254 | |
%235 = bitcast { { i8*, i64 }*, i64, i64, %runtime.Allocator }* %233 to i8*, !dbg !1254 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %234, i8* align 8 %235, i64 40, i1 false), !dbg !1254 | |
br label %if.done6, !dbg !1395 | |
if.done6: ; preds = %if.then5, %if.done4 | |
%236 = bitcast { i8*, i64 }* %22 to [2 x i64]*, !dbg !1257 | |
%237 = load [2 x i64], [2 x i64]* %236, align 8, !dbg !1257 | |
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([74 x i8], [74 x i8]* @"csbs$7f", i64 0, i64 0), i64 73 }, i32 80, i32 2, %..string { i8* getelementptr inbounds ([29 x i8], [29 x i8]* @"csbs$81", i64 0, i64 0), i64 28 } }, %runtime.Source_Code_Location* %26, align 8, !dbg !1257 | |
call void @runtime.append_elem-8457({ { i8*, i64 }*, i64, i64, %runtime.Allocator }* %227, [2 x i64] %237, %runtime.Source_Code_Location* %26, i8* %__.context_ptr), !dbg !1257 | |
%238 = getelementptr inbounds %runtime.Context, %runtime.Context* %29, i32 0, i32 3, !dbg !1258 | |
%239 = bitcast %runtime.Logger* %27 to i8*, !dbg !1258 | |
%240 = bitcast %runtime.Logger* %238 to i8*, !dbg !1258 | |
%241 = getelementptr i8, i8* %239, i64 32, !dbg !1258 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %241, i8 0, i64 0, i1 false), !dbg !1258 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %239, i8* align 8 %240, i64 32, i1 false), !dbg !1258 | |
%242 = getelementptr inbounds %runtime.Logger, %runtime.Logger* %27, i32 0, i32 2, !dbg !1396 | |
%243 = load i64, i64* %242, align 8, !dbg !1396 | |
%244 = icmp sle i64 %243, 20, !dbg !1396 | |
br i1 %244, label %if.then7, label %if.done10, !dbg !1396 | |
if.then7: ; preds = %if.done6 | |
%245 = getelementptr inbounds %runtime.Logger, %runtime.Logger* %27, i32 0, i32 0, !dbg !1397 | |
%246 = load void (i8*, i64, [2 x i64], i16, %runtime.Source_Code_Location*, i8*)*, void (i8*, i64, [2 x i64], i16, %runtime.Source_Code_Location*, i8*)** %245, align 8, !dbg !1397 | |
%247 = icmp ne void (i8*, i64, [2 x i64], i16, %runtime.Source_Code_Location*, i8*)* %246, null, !dbg !1397 | |
br i1 %247, label %if.then8, label %if.done10, !dbg !1397 | |
if.then8: ; preds = %if.then7 | |
%248 = getelementptr inbounds %runtime.Logger, %runtime.Logger* %27, i32 0, i32 1, !dbg !1259 | |
%249 = load i8*, i8** %248, align 8, !dbg !1259 | |
%250 = getelementptr inbounds %runtime.Logger, %runtime.Logger* %27, i32 0, i32 3, !dbg !1259 | |
%251 = load i16, i16* %250, align 2, !dbg !1259 | |
%252 = bitcast [2 x i64]* %28 to %..string*, !dbg !1259 | |
store %..string { i8* getelementptr inbounds ([52 x i8], [52 x i8]* @"csbs$82", i64 0, i64 0), i64 51 }, %..string* %252, align 8, !dbg !1259 | |
%253 = load [2 x i64], [2 x i64]* %28, align 8, !dbg !1259 | |
call void %246(i8* %249, i64 20, [2 x i64] %253, i16 %251, %runtime.Source_Code_Location* %3, i8* %__.context_ptr), !dbg !1259 | |
br label %if.done10, !dbg !1397 | |
if.done10: ; preds = %if.then7, %if.then8, %if.done6 | |
%254 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 0, !dbg !1398 | |
%255 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 1, !dbg !1398 | |
%256 = bitcast { i8*, i64 }* %254 to i8*, !dbg !1398 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %256, i8* align 8 %181, i64 16, i1 false), !dbg !1398 | |
store i8 0, i8* %255, align 1, !dbg !1398 | |
ret void, !dbg !1398 | |
} | |
define dso_local i8 @runtime.default_temp_allocator_free-1077(%runtime.Default_Temp_Allocator* %0, i8* %1, %runtime.Source_Code_Location* %2, i8* noalias nocapture nonnull %__.context_ptr) !dbg !1399 { | |
decls: | |
%3 = alloca %runtime.Allocator, align 8 | |
%4 = alloca %runtime.Allocator, align 8 | |
%5 = alloca { { i8*, i64 }, i8 }, align 8, !dbg !1417 | |
call void @llvm.dbg.declare(metadata { i8*, i64 }* %6, metadata !1410, metadata !DIExpression()), !dbg !1430 | |
%6 = alloca { i8*, i64 }, align 8, !dbg !1431 | |
call void @llvm.dbg.declare(metadata { i8*, i64 }* %7, metadata !1410, metadata !DIExpression()), !dbg !1430 | |
%7 = alloca { i8*, i64 }, align 8, !dbg !1431 | |
%8 = alloca %runtime.Source_Code_Location, align 8, !dbg !1432 | |
%9 = alloca %runtime.Source_Code_Location, align 8, !dbg !1433 | |
call void @llvm.dbg.value(metadata %runtime.Default_Temp_Allocator* %0, metadata !1403, metadata !DIExpression()), !dbg !1434 | |
call void @llvm.dbg.value(metadata i8* %1, metadata !1404, metadata !DIExpression()), !dbg !1434 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1405, metadata !DIExpression()), !dbg !1435 | |
%10 = icmp eq i8* %1, null, !dbg !1436 | |
br i1 %10, label %if.then, label %if.done, !dbg !1436 | |
if.then: ; preds = %if.done4, %for.index.loop, %cmp.and, %decls | |
%merge = phi i8 [ 0, %cmp.and ], [ 0, %decls ], [ 2, %for.index.loop ], [ 2, %if.done4 ] | |
ret i8 %merge, !dbg !1437 | |
if.done: ; preds = %decls | |
call void @llvm.dbg.value(metadata i64 0, metadata !1406, metadata !DIExpression()), !dbg !1440 | |
%11 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %0, i32 0, i32 0, !dbg !1441 | |
%12 = bitcast { i8*, i64 }* %11 to [2 x i64]*, !dbg !1441 | |
%13 = load [2 x i64], [2 x i64]* %12, align 8, !dbg !1441 | |
%14 = call i8* @runtime.raw_slice_data-9714([2 x i64] %13), !dbg !1441 | |
%15 = ptrtoint i8* %14 to i64, !dbg !1441 | |
call void @llvm.dbg.value(metadata i64 %15, metadata !1406, metadata !DIExpression()), !dbg !1440 | |
call void @llvm.dbg.value(metadata i64 0, metadata !1408, metadata !DIExpression()), !dbg !1440 | |
%16 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %11, i32 0, i32 1, !dbg !1442 | |
%17 = load i64, i64* %16, align 8, !dbg !1442 | |
%18 = add i64 %15, %17, !dbg !1442 | |
call void @llvm.dbg.value(metadata i64 %18, metadata !1408, metadata !DIExpression()), !dbg !1440 | |
call void @llvm.dbg.value(metadata i64 0, metadata !1409, metadata !DIExpression()), !dbg !1440 | |
%19 = ptrtoint i8* %1 to i64, !dbg !1443 | |
call void @llvm.dbg.value(metadata i64 %19, metadata !1409, metadata !DIExpression()), !dbg !1440 | |
%20 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %0, i32 0, i32 2, !dbg !1444 | |
%21 = load i8*, i8** %20, align 8, !dbg !1444 | |
%22 = icmp eq i8* %21, %1, !dbg !1444 | |
br i1 %22, label %if.then1, label %if.done2, !dbg !1444 | |
if.then1: ; preds = %if.done | |
%23 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %0, i32 0, i32 1, !dbg !1445 | |
%24 = ptrtoint i8* %21 to i64, !dbg !1445 | |
%25 = sub i64 %24, %15, !dbg !1445 | |
store i64 %25, i64* %23, align 8, !dbg !1445 | |
store i8* null, i8** %20, align 8, !dbg !1448 | |
ret i8 0, !dbg !1449 | |
if.done2: ; preds = %if.done | |
%26 = icmp ule i64 %15, %19, !dbg !1450 | |
br i1 %26, label %cmp.and, label %if.done4, !dbg !1450 | |
cmp.and: ; preds = %if.done2 | |
%27 = icmp ult i64 %19, %18, !dbg !1450 | |
br i1 %27, label %if.then, label %if.done4, !dbg !1450 | |
if.done4: ; preds = %cmp.and, %if.done2 | |
%28 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %0, i32 0, i32 4, !dbg !1451 | |
%29 = getelementptr inbounds { { i8*, i64 }*, i64, i64, %runtime.Allocator }, { { i8*, i64 }*, i64, i64, %runtime.Allocator }* %28, i32 0, i32 1, !dbg !1451 | |
%30 = load i64, i64* %29, align 8, !dbg !1451 | |
%31 = icmp ne i64 %30, 0, !dbg !1451 | |
br i1 %31, label %if.then5, label %if.then, !dbg !1451 | |
if.then5: ; preds = %if.done4 | |
%32 = bitcast { i8*, i64 }* %6 to i8*, !dbg !1431 | |
call void @llvm.memset.p0i8.i64(i8* %32, i8 0, i64 16, i1 false), !dbg !1431 | |
call void @llvm.dbg.value(metadata i64 0, metadata !1414, metadata !DIExpression()), !dbg !1452 | |
br label %for.index.loop, !dbg !1431 | |
for.index.loop: ; preds = %for.index.body, %if.then5 | |
%.0 = phi i64 [ -1, %if.then5 ], [ %33, %for.index.body ], !dbg !1431 | |
%33 = add i64 %.0, 1, !dbg !1431 | |
%34 = load i64, i64* %29, align 8, !dbg !1431 | |
%35 = icmp slt i64 %33, %34, !dbg !1431 | |
br i1 %35, label %for.index.body, label %if.then, !dbg !1431 | |
for.index.body: ; preds = %for.index.loop | |
%36 = getelementptr inbounds { { i8*, i64 }*, i64, i64, %runtime.Allocator }, { { i8*, i64 }*, i64, i64, %runtime.Allocator }* %28, i32 0, i32 0, !dbg !1431 | |
%37 = load { i8*, i64 }*, { i8*, i64 }** %36, align 8, !dbg !1431 | |
%38 = getelementptr { i8*, i64 }, { i8*, i64 }* %37, i64 %33, !dbg !1431 | |
%39 = bitcast { i8*, i64 }* %7 to i8*, !dbg !1431 | |
%40 = bitcast { i8*, i64 }* %38 to i8*, !dbg !1431 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %39, i8* align 8 %40, i64 16, i1 false), !dbg !1431 | |
call void @llvm.dbg.value(metadata i64 %33, metadata !1414, metadata !DIExpression()), !dbg !1452 | |
call void @llvm.dbg.value(metadata i8* null, metadata !1415, metadata !DIExpression()), !dbg !1453 | |
%41 = bitcast { i8*, i64 }* %7 to [2 x i64]*, !dbg !1454 | |
%42 = load [2 x i64], [2 x i64]* %41, align 8, !dbg !1454 | |
%43 = call i8* @runtime.raw_slice_data-9714([2 x i64] %42), !dbg !1454 | |
call void @llvm.dbg.value(metadata i8* %43, metadata !1415, metadata !DIExpression()), !dbg !1453 | |
%44 = icmp eq i8* %43, %1, !dbg !1455 | |
br i1 %44, label %if.then6, label %for.index.loop, !dbg !1455 | |
if.then6: ; preds = %for.index.body | |
%45 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %0, i32 0, i32 3, !dbg !1432 | |
%46 = bitcast %runtime.Allocator* %45 to [2 x i64]*, !dbg !1432 | |
%47 = load [2 x i64], [2 x i64]* %46, align 8, !dbg !1432 | |
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([74 x i8], [74 x i8]* @"csbs$7f", i64 0, i64 0), i64 73 }, i32 117, i32 5, %..string { i8* getelementptr inbounds ([28 x i8], [28 x i8]* @"csbs$83", i64 0, i64 0), i64 27 } }, %runtime.Source_Code_Location* %8, align 8, !dbg !1432 | |
%48 = bitcast %runtime.Allocator* %3 to i8*, !dbg !1456 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %48), !dbg !1456 | |
%49 = bitcast %runtime.Allocator* %4 to i8*, !dbg !1456 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %49), !dbg !1456 | |
%50 = bitcast { { i8*, i64 }, i8 }* %5 to i8*, !dbg !1456 | |
call void @llvm.lifetime.start.p0i8(i64 24, i8* %50), !dbg !1456 | |
call void @llvm.dbg.declare(metadata !112, metadata !1424, metadata !DIExpression()), !dbg !1456 | |
call void @llvm.dbg.value(metadata i8* %43, metadata !1423, metadata !DIExpression()), !dbg !1457 | |
%51 = bitcast %runtime.Allocator* %3 to [2 x i64]* | |
store [2 x i64] %47, [2 x i64]* %51, align 8, !noalias !1458 | |
%52 = bitcast %runtime.Allocator* %4 to i8* | |
%53 = bitcast %runtime.Allocator* %3 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %52, i8* align 8 %53, i64 16, i1 false), !noalias !1458 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1425, metadata !DIExpression()), !dbg !1461 | |
%54 = icmp eq i8* %43, null, !dbg !1462 | |
br i1 %54, label %if.then.i, label %if.done.i, !dbg !1462 | |
if.then.i: ; preds = %if.done.i, %if.then6 | |
%55 = bitcast %runtime.Allocator* %3 to i8*, !dbg !1463 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %55), !dbg !1463 | |
%56 = bitcast %runtime.Allocator* %4 to i8*, !dbg !1463 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %56), !dbg !1463 | |
%57 = bitcast { { i8*, i64 }, i8 }* %5 to i8*, !dbg !1463 | |
call void @llvm.lifetime.end.p0i8(i64 24, i8* %57), !dbg !1463 | |
br label %runtime.mem_free.exit, !dbg !1463 | |
if.done.i: ; preds = %if.then6 | |
%58 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %4, i32 0, i32 0, !dbg !1466 | |
%59 = load i8*, i8** %58, align 8, !dbg !1466, !noalias !1458 | |
%60 = icmp eq i8* %59, null, !dbg !1466 | |
br i1 %60, label %if.then.i, label %if.done2.i, !dbg !1466 | |
if.done2.i: ; preds = %if.done.i | |
call void @llvm.dbg.value(metadata i8 0, metadata !1426, metadata !DIExpression()), !dbg !1467 | |
%61 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %4, i32 0, i32 1, !dbg !1417 | |
%62 = load i8*, i8** %61, align 8, !dbg !1417, !noalias !1458 | |
%63 = bitcast { { i8*, i64 }, i8 }* %5 to i8*, !dbg !1417 | |
call void @llvm.memset.p0i8.i64(i8* %63, i8 0, i64 24, i1 false), !dbg !1417, !noalias !1458 | |
%64 = bitcast i8* %59 to void ({ { i8*, i64 }, i8 }*, i8*, i8, i64, i64, i8*, i64, %runtime.Source_Code_Location*, i8*)*, !dbg !1417 | |
call void %64({ { i8*, i64 }, i8 }* %5, i8* %62, i8 1, i64 0, i64 0, i8* %43, i64 0, %runtime.Source_Code_Location* %8, i8* %__.context_ptr) #4, !dbg !1417 | |
%65 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %5, i32 0, i32 1, !dbg !1417 | |
%66 = load i8, i8* %65, align 1, !dbg !1417, !noalias !1458 | |
call void @llvm.dbg.value(metadata i8 %66, metadata !1426, metadata !DIExpression()), !dbg !1467 | |
%67 = bitcast %runtime.Allocator* %3 to i8*, !dbg !1468 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %67), !dbg !1468 | |
%68 = bitcast %runtime.Allocator* %4 to i8*, !dbg !1468 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %68), !dbg !1468 | |
%69 = bitcast { { i8*, i64 }, i8 }* %5 to i8*, !dbg !1468 | |
call void @llvm.lifetime.end.p0i8(i64 24, i8* %69), !dbg !1468 | |
br label %runtime.mem_free.exit, !dbg !1468 | |
runtime.mem_free.exit: ; preds = %if.done2.i, %if.then.i | |
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([74 x i8], [74 x i8]* @"csbs$7f", i64 0, i64 0), i64 73 }, i32 118, i32 5, %..string { i8* getelementptr inbounds ([28 x i8], [28 x i8]* @"csbs$83", i64 0, i64 0), i64 27 } }, %runtime.Source_Code_Location* %9, align 8, !dbg !1433 | |
call void @runtime.ordered_remove-8534({ { i8*, i64 }*, i64, i64, %runtime.Allocator }* %28, i64 %33, %runtime.Source_Code_Location* %9, i8* %__.context_ptr), !dbg !1433 | |
ret i8 0, !dbg !1469 | |
} | |
define dso_local void @runtime.default_temp_allocator_free_all-1091(%runtime.Default_Temp_Allocator* %0, %runtime.Source_Code_Location* %1, i8* noalias nocapture nonnull %__.context_ptr) !dbg !1470 { | |
decls: | |
%2 = alloca %runtime.Allocator, align 8 | |
%3 = alloca %runtime.Allocator, align 8 | |
%4 = alloca { { i8*, i64 }, i8 }, align 8, !dbg !1479 | |
call void @llvm.dbg.declare(metadata { i8*, i64 }* %5, metadata !1476, metadata !DIExpression()), !dbg !1482 | |
%5 = alloca { i8*, i64 }, align 8, !dbg !1483 | |
call void @llvm.dbg.declare(metadata { i8*, i64 }* %6, metadata !1476, metadata !DIExpression()), !dbg !1482 | |
%6 = alloca { i8*, i64 }, align 8, !dbg !1483 | |
%7 = alloca %runtime.Source_Code_Location, align 8, !dbg !1484 | |
call void @llvm.dbg.value(metadata %runtime.Default_Temp_Allocator* %0, metadata !1474, metadata !DIExpression()), !dbg !1485 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1475, metadata !DIExpression()), !dbg !1486 | |
%8 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %0, i32 0, i32 1, !dbg !1487 | |
store i64 0, i64* %8, align 8, !dbg !1487 | |
%9 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %0, i32 0, i32 2, !dbg !1488 | |
store i8* null, i8** %9, align 8, !dbg !1488 | |
%10 = bitcast { i8*, i64 }* %5 to i8*, !dbg !1483 | |
call void @llvm.memset.p0i8.i64(i8* %10, i8 0, i64 16, i1 false), !dbg !1483 | |
%11 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %0, i32 0, i32 4, !dbg !1483 | |
%12 = getelementptr inbounds { { i8*, i64 }*, i64, i64, %runtime.Allocator }, { { i8*, i64 }*, i64, i64, %runtime.Allocator }* %11, i32 0, i32 1, !dbg !1483 | |
br label %for.index.loop, !dbg !1483 | |
for.index.loop: ; preds = %runtime.mem_free.exit, %decls | |
%.0 = phi i64 [ -1, %decls ], [ %13, %runtime.mem_free.exit ], !dbg !1483 | |
%13 = add i64 %.0, 1, !dbg !1483 | |
%14 = load i64, i64* %12, align 8, !dbg !1483 | |
%15 = icmp slt i64 %13, %14, !dbg !1483 | |
br i1 %15, label %for.index.body, label %for.index.done, !dbg !1483 | |
for.index.body: ; preds = %for.index.loop | |
%16 = getelementptr inbounds { { i8*, i64 }*, i64, i64, %runtime.Allocator }, { { i8*, i64 }*, i64, i64, %runtime.Allocator }* %11, i32 0, i32 0, !dbg !1483 | |
%17 = load { i8*, i64 }*, { i8*, i64 }** %16, align 8, !dbg !1483 | |
%18 = getelementptr { i8*, i64 }, { i8*, i64 }* %17, i64 %13, !dbg !1483 | |
%19 = bitcast { i8*, i64 }* %6 to i8*, !dbg !1483 | |
%20 = bitcast { i8*, i64 }* %18 to i8*, !dbg !1483 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %19, i8* align 8 %20, i64 16, i1 false), !dbg !1483 | |
%21 = bitcast { i8*, i64 }* %6 to [2 x i64]*, !dbg !1484 | |
%22 = load [2 x i64], [2 x i64]* %21, align 8, !dbg !1484 | |
%23 = call i8* @runtime.raw_slice_data-9714([2 x i64] %22), !dbg !1484 | |
%24 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %0, i32 0, i32 3, !dbg !1484 | |
%25 = bitcast %runtime.Allocator* %24 to [2 x i64]*, !dbg !1484 | |
%26 = load [2 x i64], [2 x i64]* %25, align 8, !dbg !1484 | |
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([74 x i8], [74 x i8]* @"csbs$7f", i64 0, i64 0), i64 73 }, i32 132, i32 3, %..string { i8* getelementptr inbounds ([32 x i8], [32 x i8]* @"csbs$84", i64 0, i64 0), i64 31 } }, %runtime.Source_Code_Location* %7, align 8, !dbg !1484 | |
%27 = bitcast %runtime.Allocator* %2 to i8*, !dbg !1489 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %27), !dbg !1489 | |
%28 = bitcast %runtime.Allocator* %3 to i8*, !dbg !1489 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %28), !dbg !1489 | |
%29 = bitcast { { i8*, i64 }, i8 }* %4 to i8*, !dbg !1489 | |
call void @llvm.lifetime.start.p0i8(i64 24, i8* %29), !dbg !1489 | |
call void @llvm.dbg.declare(metadata !112, metadata !1424, metadata !DIExpression()), !dbg !1489 | |
call void @llvm.dbg.value(metadata i8* %23, metadata !1423, metadata !DIExpression()), !dbg !1490 | |
%30 = bitcast %runtime.Allocator* %2 to [2 x i64]* | |
store [2 x i64] %26, [2 x i64]* %30, align 8, !noalias !1491 | |
%31 = bitcast %runtime.Allocator* %3 to i8* | |
%32 = bitcast %runtime.Allocator* %2 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %31, i8* align 8 %32, i64 16, i1 false), !noalias !1491 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1425, metadata !DIExpression()), !dbg !1494 | |
%33 = icmp eq i8* %23, null, !dbg !1495 | |
br i1 %33, label %if.then.i, label %if.done.i, !dbg !1495 | |
if.then.i: ; preds = %if.done.i, %for.index.body | |
%34 = bitcast %runtime.Allocator* %2 to i8*, !dbg !1496 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %34), !dbg !1496 | |
%35 = bitcast %runtime.Allocator* %3 to i8*, !dbg !1496 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %35), !dbg !1496 | |
%36 = bitcast { { i8*, i64 }, i8 }* %4 to i8*, !dbg !1496 | |
call void @llvm.lifetime.end.p0i8(i64 24, i8* %36), !dbg !1496 | |
br label %runtime.mem_free.exit, !dbg !1496 | |
if.done.i: ; preds = %for.index.body | |
%37 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %3, i32 0, i32 0, !dbg !1497 | |
%38 = load i8*, i8** %37, align 8, !dbg !1497, !noalias !1491 | |
%39 = icmp eq i8* %38, null, !dbg !1497 | |
br i1 %39, label %if.then.i, label %if.done2.i, !dbg !1497 | |
if.done2.i: ; preds = %if.done.i | |
call void @llvm.dbg.value(metadata i8 0, metadata !1426, metadata !DIExpression()), !dbg !1498 | |
%40 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %3, i32 0, i32 1, !dbg !1479 | |
%41 = load i8*, i8** %40, align 8, !dbg !1479, !noalias !1491 | |
%42 = bitcast { { i8*, i64 }, i8 }* %4 to i8*, !dbg !1479 | |
call void @llvm.memset.p0i8.i64(i8* %42, i8 0, i64 24, i1 false), !dbg !1479, !noalias !1491 | |
%43 = bitcast i8* %38 to void ({ { i8*, i64 }, i8 }*, i8*, i8, i64, i64, i8*, i64, %runtime.Source_Code_Location*, i8*)*, !dbg !1479 | |
call void %43({ { i8*, i64 }, i8 }* %4, i8* %41, i8 1, i64 0, i64 0, i8* %23, i64 0, %runtime.Source_Code_Location* %7, i8* %__.context_ptr) #4, !dbg !1479 | |
%44 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %4, i32 0, i32 1, !dbg !1479 | |
%45 = load i8, i8* %44, align 1, !dbg !1479, !noalias !1491 | |
call void @llvm.dbg.value(metadata i8 %45, metadata !1426, metadata !DIExpression()), !dbg !1498 | |
%46 = bitcast %runtime.Allocator* %2 to i8*, !dbg !1499 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %46), !dbg !1499 | |
%47 = bitcast %runtime.Allocator* %3 to i8*, !dbg !1499 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %47), !dbg !1499 | |
%48 = bitcast { { i8*, i64 }, i8 }* %4 to i8*, !dbg !1499 | |
call void @llvm.lifetime.end.p0i8(i64 24, i8* %48), !dbg !1499 | |
br label %runtime.mem_free.exit, !dbg !1499 | |
runtime.mem_free.exit: ; preds = %if.done2.i, %if.then.i | |
br label %for.index.loop, !dbg !1483 | |
for.index.done: ; preds = %for.index.loop | |
call void @runtime.clear_dynamic_array-8542({ { i8*, i64 }*, i64, i64, %runtime.Allocator }* %11), !dbg !1500 | |
ret void, !dbg !1486 | |
} | |
define dso_local void @runtime.default_temp_allocator_resize-1096({ { i8*, i64 }, i8 }* noalias sret %agg.result, %runtime.Default_Temp_Allocator* %0, i8* %1, i64 %2, i64 %3, i64 %4, %runtime.Source_Code_Location* %5, i8* noalias nocapture nonnull %__.context_ptr) !dbg !1501 { | |
decls: | |
%6 = alloca %runtime.Raw_Slice, align 8, !dbg !1517 | |
%7 = alloca %runtime.Raw_Slice, align 8, !dbg !1521 | |
%8 = alloca { i8*, i64 }, align 8, !dbg !1527 | |
call void @llvm.dbg.declare(metadata { i8*, i64 }* %9, metadata !1515, metadata !DIExpression()), !dbg !1528 | |
%9 = alloca { i8*, i64 }, align 8, !dbg !1528 | |
%10 = alloca { { i8*, i64 }, i8 }, align 8, !dbg !1528 | |
%11 = alloca { i8*, i64 }, align 8, !dbg !1529 | |
call void @llvm.dbg.value(metadata %runtime.Default_Temp_Allocator* %0, metadata !1505, metadata !DIExpression()), !dbg !1530 | |
call void @llvm.dbg.value(metadata i8* %1, metadata !1506, metadata !DIExpression()), !dbg !1530 | |
call void @llvm.dbg.value(metadata i64 %2, metadata !1507, metadata !DIExpression()), !dbg !1530 | |
call void @llvm.dbg.value(metadata i64 %3, metadata !1508, metadata !DIExpression()), !dbg !1530 | |
call void @llvm.dbg.value(metadata i64 %4, metadata !1509, metadata !DIExpression()), !dbg !1530 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1510, metadata !DIExpression()), !dbg !1531 | |
call void @llvm.dbg.value(metadata i64 0, metadata !1511, metadata !DIExpression()), !dbg !1532 | |
%12 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %0, i32 0, i32 0, !dbg !1533 | |
%13 = bitcast { i8*, i64 }* %12 to [2 x i64]*, !dbg !1533 | |
%14 = load [2 x i64], [2 x i64]* %13, align 8, !dbg !1533 | |
%15 = call i8* @runtime.raw_slice_data-9714([2 x i64] %14), !dbg !1533 | |
%16 = ptrtoint i8* %15 to i64, !dbg !1533 | |
call void @llvm.dbg.value(metadata i64 %16, metadata !1511, metadata !DIExpression()), !dbg !1532 | |
call void @llvm.dbg.value(metadata i64 0, metadata !1513, metadata !DIExpression()), !dbg !1532 | |
%17 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %12, i32 0, i32 1, !dbg !1534 | |
%18 = load i64, i64* %17, align 8, !dbg !1534 | |
%19 = add i64 %16, %18, !dbg !1534 | |
call void @llvm.dbg.value(metadata i64 %19, metadata !1513, metadata !DIExpression()), !dbg !1532 | |
call void @llvm.dbg.value(metadata i64 0, metadata !1514, metadata !DIExpression()), !dbg !1532 | |
%20 = ptrtoint i8* %1 to i64, !dbg !1535 | |
call void @llvm.dbg.value(metadata i64 %20, metadata !1514, metadata !DIExpression()), !dbg !1532 | |
%21 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %0, i32 0, i32 2, !dbg !1536 | |
%22 = load i8*, i8** %21, align 8, !dbg !1536 | |
%23 = icmp eq i8* %1, %22, !dbg !1536 | |
br i1 %23, label %cmp.and, label %if.done2, !dbg !1536 | |
cmp.and: ; preds = %decls | |
%24 = and i64 %20, %4, !dbg !1536 | |
%25 = sub i64 %24, 1, !dbg !1536 | |
%26 = icmp eq i64 %25, 0, !dbg !1536 | |
br i1 %26, label %if.then, label %if.done2, !dbg !1536 | |
if.then: ; preds = %cmp.and | |
%27 = add i64 %20, %3, !dbg !1537 | |
%28 = icmp ult i64 %27, %19, !dbg !1537 | |
br i1 %28, label %if.then1, label %if.done2, !dbg !1537 | |
if.then1: ; preds = %if.then | |
%29 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %0, i32 0, i32 1, !dbg !1538 | |
%30 = sub i64 %20, %16, !dbg !1538 | |
%31 = add i64 %30, %3, !dbg !1538 | |
store i64 %31, i64* %29, align 8, !dbg !1538 | |
%32 = bitcast %runtime.Raw_Slice* %7 to i8*, !dbg !1539 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %32), !dbg !1539 | |
call void @llvm.dbg.value(metadata i8* %1, metadata !1163, metadata !DIExpression()), !dbg !1539 | |
call void @llvm.dbg.value(metadata i64 %3, metadata !1164, metadata !DIExpression()), !dbg !1539 | |
%33 = bitcast %runtime.Raw_Slice* %7 to i8*, !dbg !1521 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %33, i8 0, i64 16, i1 false), !dbg !1521 | |
%34 = getelementptr inbounds %runtime.Raw_Slice, %runtime.Raw_Slice* %7, i32 0, i32 0, !dbg !1521 | |
store i8* %1, i8** %34, align 8, !dbg !1521 | |
%35 = icmp sgt i64 %3, 0, !dbg !1521 | |
%36 = select i1 %35, i64 %3, i64 0, !dbg !1521 | |
%37 = getelementptr inbounds %runtime.Raw_Slice, %runtime.Raw_Slice* %7, i32 0, i32 1, !dbg !1521 | |
store i64 %36, i64* %37, align 8, !dbg !1521 | |
%38 = bitcast %runtime.Raw_Slice* %7 to { i8*, i64 }*, !dbg !1521 | |
%39 = bitcast { i8*, i64 }* %38 to [2 x i64]*, !dbg !1521 | |
%40 = load [2 x i64], [2 x i64]* %39, align 8, !dbg !1521 | |
%41 = bitcast %runtime.Raw_Slice* %7 to i8*, !dbg !1521 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %41), !dbg !1521 | |
%42 = bitcast { i8*, i64 }* %8 to [2 x i64]*, !dbg !1527 | |
store [2 x i64] %40, [2 x i64]* %42, align 8, !dbg !1527 | |
%43 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 0, !dbg !1527 | |
%44 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 1, !dbg !1527 | |
%45 = bitcast { i8*, i64 }* %43 to i8*, !dbg !1527 | |
%46 = bitcast { i8*, i64 }* %8 to i8*, !dbg !1527 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %45, i8* align 8 %46, i64 16, i1 false), !dbg !1527 | |
store i8 0, i8* %44, align 1, !dbg !1527 | |
ret void, !dbg !1527 | |
if.done2: ; preds = %if.then, %cmp.and, %decls | |
%47 = bitcast { i8*, i64 }* %9 to i8*, !dbg !1528 | |
call void @llvm.memset.p0i8.i64(i8* %47, i8 0, i64 16, i1 false), !dbg !1528 | |
call void @llvm.dbg.value(metadata i8 0, metadata !1516, metadata !DIExpression()), !dbg !1532 | |
%48 = bitcast { { i8*, i64 }, i8 }* %10 to i8*, !dbg !1528 | |
call void @llvm.memset.p0i8.i64(i8* %48, i8 0, i64 24, i1 false), !dbg !1528 | |
call void @runtime.default_temp_allocator_alloc-1071({ { i8*, i64 }, i8 }* %10, %runtime.Default_Temp_Allocator* %0, i64 %3, i64 %4, %runtime.Source_Code_Location* %5, i8* %__.context_ptr), !dbg !1528 | |
%49 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %10, i32 0, i32 0, !dbg !1528 | |
%50 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %10, i32 0, i32 1, !dbg !1528 | |
%51 = load i8, i8* %50, align 1, !dbg !1528 | |
%52 = bitcast { i8*, i64 }* %49 to i8*, !dbg !1528 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %47, i8* align 8 %52, i64 16, i1 false), !dbg !1528 | |
call void @llvm.dbg.value(metadata i8 %51, metadata !1516, metadata !DIExpression()), !dbg !1532 | |
%53 = icmp eq i8 %51, 0, !dbg !1540 | |
br i1 %53, label %if.then3, label %if.done4, !dbg !1540 | |
if.then3: ; preds = %if.done2 | |
%54 = bitcast %runtime.Raw_Slice* %6 to i8*, !dbg !1541 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %54), !dbg !1541 | |
call void @llvm.dbg.value(metadata i8* %1, metadata !1163, metadata !DIExpression()), !dbg !1541 | |
call void @llvm.dbg.value(metadata i64 %2, metadata !1164, metadata !DIExpression()), !dbg !1541 | |
%55 = bitcast %runtime.Raw_Slice* %6 to i8*, !dbg !1517 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %55, i8 0, i64 16, i1 false), !dbg !1517 | |
%56 = getelementptr inbounds %runtime.Raw_Slice, %runtime.Raw_Slice* %6, i32 0, i32 0, !dbg !1517 | |
store i8* %1, i8** %56, align 8, !dbg !1517 | |
%57 = icmp sgt i64 %2, 0, !dbg !1517 | |
%58 = select i1 %57, i64 %2, i64 0, !dbg !1517 | |
%59 = getelementptr inbounds %runtime.Raw_Slice, %runtime.Raw_Slice* %6, i32 0, i32 1, !dbg !1517 | |
store i64 %58, i64* %59, align 8, !dbg !1517 | |
%60 = bitcast %runtime.Raw_Slice* %6 to { i8*, i64 }*, !dbg !1517 | |
%61 = bitcast { i8*, i64 }* %60 to [2 x i64]*, !dbg !1517 | |
%62 = load [2 x i64], [2 x i64]* %61, align 8, !dbg !1517 | |
%63 = bitcast %runtime.Raw_Slice* %6 to i8*, !dbg !1517 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %63), !dbg !1517 | |
%64 = bitcast { i8*, i64 }* %11 to [2 x i64]*, !dbg !1529 | |
store [2 x i64] %62, [2 x i64]* %64, align 8, !dbg !1529 | |
%65 = bitcast { i8*, i64 }* %9 to [2 x i64]*, !dbg !1529 | |
%66 = load [2 x i64], [2 x i64]* %65, align 8, !dbg !1529 | |
%67 = call i64 @runtime.copy_slice-6928([2 x i64] %66, [2 x i64] %62), !dbg !1529 | |
%68 = call i8 @runtime.default_temp_allocator_free-1077(%runtime.Default_Temp_Allocator* %0, i8* %1, %runtime.Source_Code_Location* %5, i8* %__.context_ptr), !dbg !1542 | |
call void @llvm.dbg.value(metadata i8 %68, metadata !1516, metadata !DIExpression()), !dbg !1532 | |
br label %if.done4, !dbg !1540 | |
if.done4: ; preds = %if.then3, %if.done2 | |
%.0 = phi i8 [ %68, %if.then3 ], [ %51, %if.done2 ], !dbg !1532 | |
call void @llvm.dbg.value(metadata i8 %.0, metadata !1516, metadata !DIExpression()), !dbg !1532 | |
%69 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 0, !dbg !1543 | |
%70 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 1, !dbg !1543 | |
%71 = bitcast { i8*, i64 }* %69 to i8*, !dbg !1543 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %71, i8* align 8 %47, i64 16, i1 false), !dbg !1543 | |
store i8 %.0, i8* %70, align 1, !dbg !1543 | |
ret void, !dbg !1543 | |
} | |
define dso_local void @runtime.default_temp_allocator_proc({ { i8*, i64 }, i8 }* noalias sret %agg.result, i8* %0, i8 %1, i64 %2, i64 %3, i8* %4, i64 %5, %runtime.Source_Code_Location* %6, i8* noalias nocapture nonnull %__.context_ptr) !dbg !1544 { | |
decls: | |
%7 = alloca %runtime.Allocator, align 8, !dbg !1563 | |
%8 = alloca { { i8*, i64 }, i8 }, align 8, !dbg !1566 | |
%9 = alloca { { i8*, i64 }, i8 }, align 8, !dbg !1567 | |
call void @llvm.dbg.value(metadata i8* %0, metadata !1552, metadata !DIExpression()), !dbg !1568 | |
call void @llvm.dbg.value(metadata i8 %1, metadata !1553, metadata !DIExpression()), !dbg !1568 | |
call void @llvm.dbg.value(metadata i64 %2, metadata !1554, metadata !DIExpression()), !dbg !1568 | |
call void @llvm.dbg.value(metadata i64 %3, metadata !1555, metadata !DIExpression()), !dbg !1568 | |
call void @llvm.dbg.value(metadata i8* %4, metadata !1556, metadata !DIExpression()), !dbg !1568 | |
call void @llvm.dbg.value(metadata i64 %5, metadata !1557, metadata !DIExpression()), !dbg !1568 | |
%10 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 0 | |
%11 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 1 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1558, metadata !DIExpression()), !dbg !1569 | |
call void @llvm.dbg.value(metadata %runtime.Default_Temp_Allocator* null, metadata !1559, metadata !DIExpression()), !dbg !1570 | |
%12 = bitcast i8* %0 to %runtime.Default_Temp_Allocator*, !dbg !1571 | |
call void @llvm.dbg.value(metadata %runtime.Default_Temp_Allocator* %12, metadata !1559, metadata !DIExpression()), !dbg !1570 | |
%13 = getelementptr inbounds %runtime.Default_Temp_Allocator, %runtime.Default_Temp_Allocator* %12, i32 0, i32 0, !dbg !1572 | |
%14 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %13, i32 0, i32 0, !dbg !1572 | |
%15 = load i8*, i8** %14, align 8, !dbg !1572 | |
%16 = icmp eq i8* %15, null, !dbg !1572 | |
br i1 %16, label %if.then, label %if.done, !dbg !1572 | |
if.then: ; preds = %decls | |
%17 = call [2 x i64] @runtime.default_allocator(i8* %__.context_ptr), !dbg !1563 | |
%18 = bitcast %runtime.Allocator* %7 to [2 x i64]*, !dbg !1563 | |
store [2 x i64] %17, [2 x i64]* %18, align 8, !dbg !1563 | |
call void @runtime.default_temp_allocator_init(%runtime.Default_Temp_Allocator* %12, i64 4194304, [2 x i64] %17, i8* %__.context_ptr), !dbg !1563 | |
br label %if.done, !dbg !1572 | |
if.done: ; preds = %if.then, %decls | |
switch i8 %1, label %switch.done [ | |
i8 0, label %switch.case.body | |
i8 1, label %switch.case.body1 | |
i8 2, label %switch.case.body2 | |
i8 3, label %switch.case.body3 | |
i8 4, label %switch.case.body4 | |
], !dbg !1573 | |
switch.case.body: ; preds = %if.done | |
%19 = bitcast { { i8*, i64 }, i8 }* %8 to i8*, !dbg !1566 | |
call void @llvm.memset.p0i8.i64(i8* %19, i8 0, i64 24, i1 false), !dbg !1566 | |
call void @runtime.default_temp_allocator_alloc-1071({ { i8*, i64 }, i8 }* %8, %runtime.Default_Temp_Allocator* %12, i64 %2, i64 %3, %runtime.Source_Code_Location* %6, i8* %__.context_ptr), !dbg !1566 | |
%20 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %8, i32 0, i32 0, !dbg !1566 | |
%21 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %8, i32 0, i32 1, !dbg !1566 | |
%22 = load i8, i8* %21, align 1, !dbg !1566 | |
%23 = bitcast { i8*, i64 }* %10 to i8*, !dbg !1566 | |
%24 = bitcast { i8*, i64 }* %20 to i8*, !dbg !1566 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %23, i8* align 8 %24, i64 16, i1 false), !dbg !1566 | |
store i8 %22, i8* %11, align 1, !dbg !1566 | |
br label %switch.done, !dbg !1573 | |
switch.case.body1: ; preds = %if.done | |
%25 = call i8 @runtime.default_temp_allocator_free-1077(%runtime.Default_Temp_Allocator* %12, i8* %4, %runtime.Source_Code_Location* %6, i8* %__.context_ptr), !dbg !1574 | |
store i8 %25, i8* %11, align 1, !dbg !1574 | |
br label %switch.done, !dbg !1573 | |
switch.case.body2: ; preds = %if.done | |
call void @runtime.default_temp_allocator_free_all-1091(%runtime.Default_Temp_Allocator* %12, %runtime.Source_Code_Location* %6, i8* %__.context_ptr), !dbg !1575 | |
br label %switch.done, !dbg !1573 | |
switch.case.body3: ; preds = %if.done | |
%26 = bitcast { { i8*, i64 }, i8 }* %9 to i8*, !dbg !1567 | |
call void @llvm.memset.p0i8.i64(i8* %26, i8 0, i64 24, i1 false), !dbg !1567 | |
call void @runtime.default_temp_allocator_resize-1096({ { i8*, i64 }, i8 }* %9, %runtime.Default_Temp_Allocator* %12, i8* %4, i64 %5, i64 %2, i64 %3, %runtime.Source_Code_Location* %6, i8* %__.context_ptr), !dbg !1567 | |
%27 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %9, i32 0, i32 0, !dbg !1567 | |
%28 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %9, i32 0, i32 1, !dbg !1567 | |
%29 = load i8, i8* %28, align 1, !dbg !1567 | |
%30 = bitcast { i8*, i64 }* %10 to i8*, !dbg !1567 | |
%31 = bitcast { i8*, i64 }* %27 to i8*, !dbg !1567 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %30, i8* align 8 %31, i64 16, i1 false), !dbg !1567 | |
store i8 %29, i8* %11, align 1, !dbg !1567 | |
br label %switch.done, !dbg !1573 | |
switch.case.body4: ; preds = %if.done | |
call void @llvm.dbg.value(metadata i8* null, metadata !1561, metadata !DIExpression()), !dbg !1576 | |
call void @llvm.dbg.value(metadata i8* %4, metadata !1561, metadata !DIExpression()), !dbg !1576 | |
%32 = icmp ne i8* %4, null, !dbg !1577 | |
br i1 %32, label %if.then5, label %switch.done, !dbg !1577 | |
if.then5: ; preds = %switch.case.body4 | |
store i8 31, i8* %4, align 1, !dbg !1578 | |
br label %switch.done, !dbg !1577 | |
switch.done: ; preds = %switch.case.body4, %if.then5, %switch.case.body3, %switch.case.body2, %switch.case.body1, %switch.case.body, %if.done | |
ret void, !dbg !1581 | |
} | |
define dso_local i8 @runtime.__dynamic_array_reserve(i8* %0, i64 %1, i64 %2, i64 %3, %runtime.Source_Code_Location* %4, i8* noalias nocapture nonnull %__.context_ptr) !dbg !1582 { | |
decls: | |
%5 = alloca [2 x i64], align 8, !dbg !1606 | |
%6 = alloca %runtime.Source_Code_Location, align 8, !dbg !1606 | |
call void @llvm.dbg.declare(metadata %runtime.Allocator* %7, metadata !1603, metadata !DIExpression()), !dbg !1607 | |
%7 = alloca %runtime.Allocator, align 8, !dbg !1607 | |
call void @llvm.dbg.declare(metadata { i8*, i64 }* %8, metadata !1604, metadata !DIExpression()), !dbg !1608 | |
%8 = alloca { i8*, i64 }, align 8, !dbg !1608 | |
%9 = alloca { { i8*, i64 }, i8 }, align 8, !dbg !1608 | |
call void @llvm.dbg.value(metadata i8* %0, metadata !1587, metadata !DIExpression()), !dbg !1609 | |
call void @llvm.dbg.value(metadata i64 %1, metadata !1588, metadata !DIExpression()), !dbg !1609 | |
call void @llvm.dbg.value(metadata i64 %2, metadata !1589, metadata !DIExpression()), !dbg !1609 | |
call void @llvm.dbg.value(metadata i64 %3, metadata !1590, metadata !DIExpression()), !dbg !1609 | |
call void @llvm.dbg.declare(metadata %runtime.Context* %10, metadata !1591, metadata !DIExpression()), !dbg !1610 | |
%10 = bitcast i8* %__.context_ptr to %runtime.Context* | |
call void @llvm.dbg.value(metadata %runtime.Raw_Dynamic_Array* null, metadata !1592, metadata !DIExpression()), !dbg !1611 | |
%11 = bitcast i8* %0 to %runtime.Raw_Dynamic_Array*, !dbg !1612 | |
call void @llvm.dbg.value(metadata %runtime.Raw_Dynamic_Array* %11, metadata !1592, metadata !DIExpression()), !dbg !1611 | |
%12 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %11, i32 0, i32 3, !dbg !1613 | |
%13 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %12, i32 0, i32 0, !dbg !1613 | |
%14 = load i8*, i8** %13, align 8, !dbg !1613 | |
%15 = icmp eq i8* %14, null, !dbg !1613 | |
br i1 %15, label %if.then, label %if.done, !dbg !1613 | |
if.then: ; preds = %decls | |
%16 = getelementptr inbounds %runtime.Context, %runtime.Context* %10, i32 0, i32 0, !dbg !1614 | |
%17 = bitcast %runtime.Allocator* %12 to i8*, !dbg !1614 | |
%18 = bitcast %runtime.Allocator* %16 to i8*, !dbg !1614 | |
call void @llvm.memmove.p0i8.p0i8.i64(i8* align 8 %17, i8* align 8 %18, i64 16, i1 false), !dbg !1614 | |
br label %if.done, !dbg !1613 | |
if.done: ; preds = %if.then, %decls | |
%19 = load i8*, i8** %13, align 8, !dbg !1606 | |
%20 = icmp ne i8* %19, null, !dbg !1606 | |
%21 = bitcast [2 x i64]* %5 to %..string*, !dbg !1606 | |
%22 = bitcast %..string* %21 to i8*, !dbg !1606 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %22, i8 0, i64 16, i1 false), !dbg !1606 | |
%23 = load [2 x i64], [2 x i64]* %5, align 8, !dbg !1606 | |
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([69 x i8], [69 x i8]* @"csbs$86", i64 0, i64 0), i64 68 }, i32 22, i32 2, %..string { i8* getelementptr inbounds ([24 x i8], [24 x i8]* @"csbs$87", i64 0, i64 0), i64 23 } }, %runtime.Source_Code_Location* %6, align 8, !dbg !1606 | |
call void @runtime.assert(i1 %20, [2 x i64] %23, %runtime.Source_Code_Location* %6, i8* %__.context_ptr), !dbg !1606 | |
%24 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %11, i32 0, i32 2, !dbg !1617 | |
%25 = load i64, i64* %24, align 8, !dbg !1617 | |
%26 = icmp sle i64 %3, %25, !dbg !1617 | |
br i1 %26, label %if.then1, label %if.done2, !dbg !1617 | |
if.then1: ; preds = %cmp.or, %if.done2, %if.done | |
%merge = phi i8 [ 1, %if.done ], [ 0, %if.done2 ], [ 0, %cmp.or ] | |
ret i8 %merge, !dbg !1618 | |
if.done2: ; preds = %if.done | |
call void @llvm.dbg.value(metadata i64 0, metadata !1601, metadata !DIExpression()), !dbg !1611 | |
%27 = mul i64 %25, %1, !dbg !1621 | |
call void @llvm.dbg.value(metadata i64 %27, metadata !1601, metadata !DIExpression()), !dbg !1611 | |
call void @llvm.dbg.value(metadata i64 0, metadata !1602, metadata !DIExpression()), !dbg !1611 | |
%28 = mul i64 %3, %1, !dbg !1622 | |
call void @llvm.dbg.value(metadata i64 %28, metadata !1602, metadata !DIExpression()), !dbg !1611 | |
%29 = bitcast %runtime.Allocator* %7 to i8*, !dbg !1607 | |
%30 = bitcast %runtime.Allocator* %12 to i8*, !dbg !1607 | |
%31 = getelementptr i8, i8* %29, i64 16, !dbg !1607 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %31, i8 0, i64 0, i1 false), !dbg !1607 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %29, i8* align 8 %30, i64 16, i1 false), !dbg !1607 | |
%32 = bitcast { i8*, i64 }* %8 to i8*, !dbg !1608 | |
call void @llvm.memset.p0i8.i64(i8* %32, i8 0, i64 16, i1 false), !dbg !1608 | |
call void @llvm.dbg.value(metadata i8 0, metadata !1605, metadata !DIExpression()), !dbg !1611 | |
%33 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %7, i32 0, i32 0, !dbg !1608 | |
%34 = load i8*, i8** %33, align 8, !dbg !1608 | |
%35 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %7, i32 0, i32 1, !dbg !1608 | |
%36 = load i8*, i8** %35, align 8, !dbg !1608 | |
%37 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %11, i32 0, i32 0, !dbg !1608 | |
%38 = load i8*, i8** %37, align 8, !dbg !1608 | |
%39 = bitcast { { i8*, i64 }, i8 }* %9 to i8*, !dbg !1608 | |
call void @llvm.memset.p0i8.i64(i8* %39, i8 0, i64 24, i1 false), !dbg !1608 | |
%40 = bitcast i8* %34 to void ({ { i8*, i64 }, i8 }*, i8*, i8, i64, i64, i8*, i64, %runtime.Source_Code_Location*, i8*)*, !dbg !1608 | |
call void %40({ { i8*, i64 }, i8 }* %9, i8* %36, i8 3, i64 %28, i64 %2, i8* %38, i64 %27, %runtime.Source_Code_Location* %4, i8* %__.context_ptr), !dbg !1608 | |
%41 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %9, i32 0, i32 0, !dbg !1608 | |
%42 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %9, i32 0, i32 1, !dbg !1608 | |
%43 = load i8, i8* %42, align 1, !dbg !1608 | |
%44 = bitcast { i8*, i64 }* %41 to i8*, !dbg !1608 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %32, i8* align 8 %44, i64 16, i1 false), !dbg !1608 | |
call void @llvm.dbg.value(metadata i8 %43, metadata !1605, metadata !DIExpression()), !dbg !1611 | |
%45 = icmp ne i8 %43, 0, !dbg !1623 | |
br i1 %45, label %if.then1, label %if.done4, !dbg !1623 | |
if.done4: ; preds = %if.done2 | |
%46 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %8, i32 0, i32 0, !dbg !1624 | |
%47 = load i8*, i8** %46, align 8, !dbg !1624 | |
%48 = icmp ne i8* %47, null, !dbg !1624 | |
br i1 %48, label %if.then5, label %cmp.or, !dbg !1624 | |
cmp.or: ; preds = %if.done4 | |
%49 = icmp eq i64 %1, 0, !dbg !1624 | |
br i1 %49, label %if.then5, label %if.then1, !dbg !1624 | |
if.then5: ; preds = %cmp.or, %if.done4 | |
%50 = bitcast { i8*, i64 }* %8 to [2 x i64]*, !dbg !1625 | |
%51 = load [2 x i64], [2 x i64]* %50, align 8, !dbg !1625 | |
%52 = call i8* @runtime.raw_slice_data-9714([2 x i64] %51), !dbg !1625 | |
store i8* %52, i8** %37, align 8, !dbg !1625 | |
%53 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %8, i32 0, i32 1, !dbg !1628 | |
%54 = load i64, i64* %53, align 8, !dbg !1628 | |
%55 = sdiv i64 %54, %1, !dbg !1628 | |
%56 = icmp slt i64 %3, %55, !dbg !1628 | |
%57 = select i1 %56, i64 %3, i64 %55, !dbg !1628 | |
store i64 %57, i64* %24, align 8, !dbg !1628 | |
ret i8 1, !dbg !1629 | |
} | |
define dso_local i64 @runtime.__dynamic_array_append(i8* %0, i64 %1, i64 %2, i8* %3, i64 %4, %runtime.Source_Code_Location* %5, i8* noalias nocapture nonnull %__.context_ptr) !dbg !1630 { | |
decls: | |
%6 = alloca [2 x i64], align 8, !dbg !1647 | |
%7 = alloca %runtime.Source_Code_Location, align 8, !dbg !1647 | |
call void @llvm.dbg.value(metadata i8* %0, metadata !1634, metadata !DIExpression()), !dbg !1648 | |
call void @llvm.dbg.value(metadata i64 %1, metadata !1635, metadata !DIExpression()), !dbg !1648 | |
call void @llvm.dbg.value(metadata i64 %2, metadata !1636, metadata !DIExpression()), !dbg !1648 | |
call void @llvm.dbg.value(metadata i8* %3, metadata !1637, metadata !DIExpression()), !dbg !1648 | |
call void @llvm.dbg.value(metadata i64 %4, metadata !1638, metadata !DIExpression()), !dbg !1648 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1639, metadata !DIExpression()), !dbg !1649 | |
call void @llvm.dbg.value(metadata %runtime.Raw_Dynamic_Array* null, metadata !1640, metadata !DIExpression()), !dbg !1650 | |
%8 = bitcast i8* %0 to %runtime.Raw_Dynamic_Array*, !dbg !1651 | |
call void @llvm.dbg.value(metadata %runtime.Raw_Dynamic_Array* %8, metadata !1640, metadata !DIExpression()), !dbg !1650 | |
%9 = icmp eq i8* %3, null, !dbg !1652 | |
br i1 %9, label %if.then, label %if.done, !dbg !1652 | |
if.then: ; preds = %if.done, %decls | |
ret i64 0, !dbg !1653 | |
if.done: ; preds = %decls | |
%10 = icmp sle i64 %4, 0, !dbg !1656 | |
br i1 %10, label %if.then, label %if.done2, !dbg !1656 | |
if.done2: ; preds = %if.done | |
call void @llvm.dbg.value(metadata i8 0, metadata !1642, metadata !DIExpression()), !dbg !1650 | |
call void @llvm.dbg.value(metadata i8 1, metadata !1642, metadata !DIExpression()), !dbg !1650 | |
%11 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %8, i32 0, i32 2, !dbg !1657 | |
%12 = load i64, i64* %11, align 8, !dbg !1657 | |
%13 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %8, i32 0, i32 1, !dbg !1657 | |
%14 = load i64, i64* %13, align 8, !dbg !1657 | |
%15 = add i64 %14, %4, !dbg !1657 | |
%16 = icmp sle i64 %12, %15, !dbg !1657 | |
br i1 %16, label %if.then3, label %if.done4, !dbg !1657 | |
if.then3: ; preds = %if.done2 | |
call void @llvm.dbg.value(metadata i64 0, metadata !1643, metadata !DIExpression()), !dbg !1658 | |
%17 = mul i64 2, %12, !dbg !1659 | |
%18 = icmp sgt i64 8, %4, !dbg !1659 | |
%19 = select i1 %18, i64 8, i64 %4, !dbg !1659 | |
%20 = add i64 %17, %19, !dbg !1659 | |
call void @llvm.dbg.value(metadata i64 %20, metadata !1643, metadata !DIExpression()), !dbg !1658 | |
%21 = call i8 @runtime.__dynamic_array_reserve(i8* %0, i64 %1, i64 %2, i64 %20, %runtime.Source_Code_Location* %5, i8* %__.context_ptr), !dbg !1660 | |
call void @llvm.dbg.value(metadata i8 %21, metadata !1642, metadata !DIExpression()), !dbg !1650 | |
br label %if.done4, !dbg !1657 | |
if.done4: ; preds = %if.then3, %if.done2 | |
%.0 = phi i8 [ %21, %if.then3 ], [ 1, %if.done2 ], !dbg !1650 | |
call void @llvm.dbg.value(metadata i8 %.0, metadata !1642, metadata !DIExpression()), !dbg !1650 | |
%22 = trunc i8 %.0 to i1, !dbg !1661 | |
br i1 %22, label %if.done6, label %if.then5, !dbg !1661 | |
if.then5: ; preds = %if.done4 | |
%23 = load i64, i64* %13, align 8, !dbg !1662 | |
ret i64 %23, !dbg !1662 | |
if.done6: ; preds = %if.done4 | |
%24 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %8, i32 0, i32 0, !dbg !1647 | |
%25 = load i8*, i8** %24, align 8, !dbg !1647 | |
%26 = icmp ne i8* %25, null, !dbg !1647 | |
%27 = bitcast [2 x i64]* %6 to %..string*, !dbg !1647 | |
%28 = bitcast %..string* %27 to i8*, !dbg !1647 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %28, i8 0, i64 16, i1 false), !dbg !1647 | |
%29 = load [2 x i64], [2 x i64]* %6, align 8, !dbg !1647 | |
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([69 x i8], [69 x i8]* @"csbs$86", i64 0, i64 0), i64 68 }, i32 77, i32 2, %..string { i8* getelementptr inbounds ([23 x i8], [23 x i8]* @"csbs$88", i64 0, i64 0), i64 22 } }, %runtime.Source_Code_Location* %7, align 8, !dbg !1647 | |
call void @runtime.assert(i1 %26, [2 x i64] %29, %runtime.Source_Code_Location* %7, i8* %__.context_ptr), !dbg !1647 | |
call void @llvm.dbg.value(metadata i64 0, metadata !1646, metadata !DIExpression()), !dbg !1650 | |
%30 = load i8*, i8** %24, align 8, !dbg !1665 | |
%31 = ptrtoint i8* %30 to i64, !dbg !1665 | |
%32 = load i64, i64* %13, align 8, !dbg !1665 | |
%33 = mul i64 %1, %32, !dbg !1665 | |
%34 = add i64 %31, %33, !dbg !1665 | |
call void @llvm.dbg.value(metadata i64 %34, metadata !1646, metadata !DIExpression()), !dbg !1650 | |
%35 = inttoptr i64 %34 to i8*, !dbg !1666 | |
%36 = mul i64 %1, %4, !dbg !1666 | |
%37 = call i8* @runtime.mem_copy(i8* %35, i8* %3, i64 %36), !dbg !1666 | |
%38 = load i64, i64* %13, align 8, !dbg !1667 | |
%39 = add i64 %38, %4, !dbg !1667 | |
store i64 %39, i64* %13, align 8, !dbg !1667 | |
ret i64 %39, !dbg !1668 | |
} | |
define dso_local i64 @runtime.__dynamic_array_append_nothing(i8* %0, i64 %1, i64 %2, %runtime.Source_Code_Location* %3, i8* noalias nocapture nonnull %__.context_ptr) !dbg !1669 { | |
decls: | |
%4 = alloca [2 x i64], align 8, !dbg !1684 | |
%5 = alloca %runtime.Source_Code_Location, align 8, !dbg !1684 | |
call void @llvm.dbg.value(metadata i8* %0, metadata !1673, metadata !DIExpression()), !dbg !1685 | |
call void @llvm.dbg.value(metadata i64 %1, metadata !1674, metadata !DIExpression()), !dbg !1685 | |
call void @llvm.dbg.value(metadata i64 %2, metadata !1675, metadata !DIExpression()), !dbg !1685 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1676, metadata !DIExpression()), !dbg !1686 | |
call void @llvm.dbg.value(metadata %runtime.Raw_Dynamic_Array* null, metadata !1677, metadata !DIExpression()), !dbg !1687 | |
%6 = bitcast i8* %0 to %runtime.Raw_Dynamic_Array*, !dbg !1688 | |
call void @llvm.dbg.value(metadata %runtime.Raw_Dynamic_Array* %6, metadata !1677, metadata !DIExpression()), !dbg !1687 | |
call void @llvm.dbg.value(metadata i8 1, metadata !1679, metadata !DIExpression()), !dbg !1687 | |
%7 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %6, i32 0, i32 2, !dbg !1689 | |
%8 = load i64, i64* %7, align 8, !dbg !1689 | |
%9 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %6, i32 0, i32 1, !dbg !1689 | |
%10 = load i64, i64* %9, align 8, !dbg !1689 | |
%11 = add i64 %10, 1, !dbg !1689 | |
%12 = icmp sle i64 %8, %11, !dbg !1689 | |
br i1 %12, label %if.then, label %if.done, !dbg !1689 | |
if.then: ; preds = %decls | |
call void @llvm.dbg.value(metadata i64 0, metadata !1680, metadata !DIExpression()), !dbg !1690 | |
%13 = mul i64 2, %8, !dbg !1691 | |
%14 = add i64 %13, 8, !dbg !1691 | |
call void @llvm.dbg.value(metadata i64 %14, metadata !1680, metadata !DIExpression()), !dbg !1690 | |
%15 = call i8 @runtime.__dynamic_array_reserve(i8* %0, i64 %1, i64 %2, i64 %14, %runtime.Source_Code_Location* %3, i8* %__.context_ptr), !dbg !1692 | |
call void @llvm.dbg.value(metadata i8 %15, metadata !1679, metadata !DIExpression()), !dbg !1687 | |
br label %if.done, !dbg !1689 | |
if.done: ; preds = %if.then, %decls | |
%.0 = phi i8 [ %15, %if.then ], [ 1, %decls ], !dbg !1687 | |
call void @llvm.dbg.value(metadata i8 %.0, metadata !1679, metadata !DIExpression()), !dbg !1687 | |
%16 = trunc i8 %.0 to i1, !dbg !1693 | |
br i1 %16, label %if.done2, label %if.then1, !dbg !1693 | |
if.then1: ; preds = %if.done | |
%17 = load i64, i64* %9, align 8, !dbg !1694 | |
ret i64 %17, !dbg !1694 | |
if.done2: ; preds = %if.done | |
%18 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %6, i32 0, i32 0, !dbg !1684 | |
%19 = load i8*, i8** %18, align 8, !dbg !1684 | |
%20 = icmp ne i8* %19, null, !dbg !1684 | |
%21 = bitcast [2 x i64]* %4 to %..string*, !dbg !1684 | |
%22 = bitcast %..string* %21 to i8*, !dbg !1684 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %22, i8 0, i64 16, i1 false), !dbg !1684 | |
%23 = load [2 x i64], [2 x i64]* %4, align 8, !dbg !1684 | |
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([69 x i8], [69 x i8]* @"csbs$86", i64 0, i64 0), i64 68 }, i32 98, i32 2, %..string { i8* getelementptr inbounds ([31 x i8], [31 x i8]* @"csbs$89", i64 0, i64 0), i64 30 } }, %runtime.Source_Code_Location* %5, align 8, !dbg !1684 | |
call void @runtime.assert(i1 %20, [2 x i64] %23, %runtime.Source_Code_Location* %5, i8* %__.context_ptr), !dbg !1684 | |
call void @llvm.dbg.value(metadata i64 0, metadata !1683, metadata !DIExpression()), !dbg !1687 | |
%24 = load i8*, i8** %18, align 8, !dbg !1697 | |
%25 = ptrtoint i8* %24 to i64, !dbg !1697 | |
%26 = load i64, i64* %9, align 8, !dbg !1697 | |
%27 = mul i64 %1, %26, !dbg !1697 | |
%28 = add i64 %25, %27, !dbg !1697 | |
call void @llvm.dbg.value(metadata i64 %28, metadata !1683, metadata !DIExpression()), !dbg !1687 | |
%29 = inttoptr i64 %28 to i8*, !dbg !1698 | |
%30 = call i8* @runtime.mem_zero(i8* %29, i64 %1), !dbg !1698 | |
%31 = load i64, i64* %9, align 8, !dbg !1699 | |
%32 = add i64 %31, 1, !dbg !1699 | |
store i64 %32, i64* %9, align 8, !dbg !1699 | |
ret i64 %32, !dbg !1700 | |
} | |
declare i64* @__errno_location() | |
; Function Attrs: nounwind | |
define dso_local [2 x i64] @runtime.__get_map_hash_from_entry(%runtime.Map_Header* %0, %runtime.Map_Entry_Header* %1) #0 !dbg !1701 { | |
decls: | |
call void @llvm.dbg.declare(metadata %runtime.Map_Hash* %2, metadata !1730, metadata !DIExpression()), !dbg !1731 | |
%2 = alloca %runtime.Map_Hash, align 8 | |
call void @llvm.dbg.value(metadata %runtime.Map_Entry_Header* %1, metadata !1729, metadata !DIExpression()), !dbg !1732 | |
%3 = bitcast %runtime.Map_Hash* %2 to i8* | |
call void @llvm.memset.p0i8.i64(i8* %3, i8 0, i64 16, i1 false) | |
%4 = getelementptr inbounds %runtime.Map_Hash, %runtime.Map_Hash* %2, i32 0, i32 0, !dbg !1733 | |
%5 = getelementptr inbounds %runtime.Map_Entry_Header, %runtime.Map_Entry_Header* %1, i32 0, i32 0, !dbg !1733 | |
%6 = load i64, i64* %5, align 8, !dbg !1733 | |
store i64 %6, i64* %4, align 8, !dbg !1733 | |
%7 = getelementptr inbounds %runtime.Map_Hash, %runtime.Map_Hash* %2, i32 0, i32 1, !dbg !1735 | |
%8 = ptrtoint %runtime.Map_Entry_Header* %1 to i64, !dbg !1735 | |
%9 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 4, !dbg !1735 | |
%10 = load i64, i64* %9, align 8, !dbg !1735 | |
%11 = add i64 %8, %10, !dbg !1735 | |
%12 = inttoptr i64 %11 to i8*, !dbg !1735 | |
store i8* %12, i8** %7, align 8, !dbg !1735 | |
call void @llvm.memmove.p0i8.p0i8.i64(i8* align 8 %3, i8* align 8 %3, i64 16, i1 false), !dbg !1736 | |
%13 = bitcast %runtime.Map_Hash* %2 to [2 x i64]*, !dbg !1736 | |
%14 = load [2 x i64], [2 x i64]* %13, align 8, !dbg !1736 | |
ret [2 x i64] %14, !dbg !1736 | |
} | |
declare i32 @close(i32) | |
declare i64 @read(i32, i8*, i64) | |
declare i64 @write(i32, i8*, i64) | |
declare i64 @lseek64(i32, i64, i32) | |
declare i32 @fstat(i32, %os.OS_Stat*) | |
; Function Attrs: nounwind | |
define dso_local i64 @runtime.default_hasher8(i8* %0, i64 %1) #0 !dbg !1737 { | |
decls: | |
call void @llvm.dbg.value(metadata i8* %0, metadata !1739, metadata !DIExpression()), !dbg !1741 | |
call void @llvm.dbg.value(metadata i64 %1, metadata !1740, metadata !DIExpression()), !dbg !1741 | |
call void @llvm.dbg.value(metadata i8* %0, metadata !1742, metadata !DIExpression()), !dbg !1752 | |
call void @llvm.dbg.value(metadata i64 %1, metadata !1745, metadata !DIExpression()), !dbg !1752 | |
call void @llvm.dbg.value(metadata i64 0, metadata !1746, metadata !DIExpression()), !dbg !1755 | |
%2 = add i64 %1, -3750763034362895579, !dbg !1756 | |
call void @llvm.dbg.value(metadata i64 %2, metadata !1746, metadata !DIExpression()), !dbg !1755 | |
call void @llvm.dbg.value(metadata i64 0, metadata !1748, metadata !DIExpression()), !dbg !1755 | |
%3 = ptrtoint i8* %0 to i64, !dbg !1757 | |
call void @llvm.dbg.value(metadata i64 %3, metadata !1748, metadata !DIExpression()), !dbg !1755 | |
call void @llvm.dbg.value(metadata i64 0, metadata !1749, metadata !DIExpression()), !dbg !1758 | |
%4 = load i8, i8* %0, align 1, !dbg !1759 | |
%5 = zext i8 %4 to i64, !dbg !1759 | |
call void @llvm.dbg.value(metadata i64 %5, metadata !1749, metadata !DIExpression()), !dbg !1758 | |
%6 = xor i64 %2, %5, !dbg !1760 | |
%7 = mul i64 %6, 1099511628211, !dbg !1760 | |
call void @llvm.dbg.value(metadata i64 %7, metadata !1746, metadata !DIExpression()), !dbg !1755 | |
%8 = add i64 %3, 1, !dbg !1761 | |
call void @llvm.dbg.value(metadata i64 %8, metadata !1748, metadata !DIExpression()), !dbg !1755 | |
call void @llvm.dbg.value(metadata i64 0, metadata !1749, metadata !DIExpression()), !dbg !1758 | |
%9 = inttoptr i64 %8 to i8*, !dbg !1759 | |
%10 = load i8, i8* %9, align 1, !dbg !1759 | |
%11 = zext i8 %10 to i64, !dbg !1759 | |
call void @llvm.dbg.value(metadata i64 %11, metadata !1749, metadata !DIExpression()), !dbg !1758 | |
%12 = xor i64 %7, %11, !dbg !1760 | |
%13 = mul i64 %12, 1099511628211, !dbg !1760 | |
call void @llvm.dbg.value(metadata i64 %13, metadata !1746, metadata !DIExpression()), !dbg !1755 | |
%14 = add i64 %8, 1, !dbg !1761 | |
call void @llvm.dbg.value(metadata i64 %14, metadata !1748, metadata !DIExpression()), !dbg !1755 | |
call void @llvm.dbg.value(metadata i64 0, metadata !1749, metadata !DIExpression()), !dbg !1758 | |
%15 = inttoptr i64 %14 to i8*, !dbg !1759 | |
%16 = load i8, i8* %15, align 1, !dbg !1759 | |
%17 = zext i8 %16 to i64, !dbg !1759 | |
call void @llvm.dbg.value(metadata i64 %17, metadata !1749, metadata !DIExpression()), !dbg !1758 | |
%18 = xor i64 %13, %17, !dbg !1760 | |
%19 = mul i64 %18, 1099511628211, !dbg !1760 | |
call void @llvm.dbg.value(metadata i64 %19, metadata !1746, metadata !DIExpression()), !dbg !1755 | |
%20 = add i64 %14, 1, !dbg !1761 | |
call void @llvm.dbg.value(metadata i64 %20, metadata !1748, metadata !DIExpression()), !dbg !1755 | |
call void @llvm.dbg.value(metadata i64 0, metadata !1749, metadata !DIExpression()), !dbg !1758 | |
%21 = inttoptr i64 %20 to i8*, !dbg !1759 | |
%22 = load i8, i8* %21, align 1, !dbg !1759 | |
%23 = zext i8 %22 to i64, !dbg !1759 | |
call void @llvm.dbg.value(metadata i64 %23, metadata !1749, metadata !DIExpression()), !dbg !1758 | |
%24 = xor i64 %19, %23, !dbg !1760 | |
%25 = mul i64 %24, 1099511628211, !dbg !1760 | |
call void @llvm.dbg.value(metadata i64 %25, metadata !1746, metadata !DIExpression()), !dbg !1755 | |
%26 = add i64 %20, 1, !dbg !1761 | |
call void @llvm.dbg.value(metadata i64 %26, metadata !1748, metadata !DIExpression()), !dbg !1755 | |
call void @llvm.dbg.value(metadata i64 0, metadata !1749, metadata !DIExpression()), !dbg !1758 | |
%27 = inttoptr i64 %26 to i8*, !dbg !1759 | |
%28 = load i8, i8* %27, align 1, !dbg !1759 | |
%29 = zext i8 %28 to i64, !dbg !1759 | |
call void @llvm.dbg.value(metadata i64 %29, metadata !1749, metadata !DIExpression()), !dbg !1758 | |
%30 = xor i64 %25, %29, !dbg !1760 | |
%31 = mul i64 %30, 1099511628211, !dbg !1760 | |
call void @llvm.dbg.value(metadata i64 %31, metadata !1746, metadata !DIExpression()), !dbg !1755 | |
%32 = add i64 %26, 1, !dbg !1761 | |
call void @llvm.dbg.value(metadata i64 %32, metadata !1748, metadata !DIExpression()), !dbg !1755 | |
call void @llvm.dbg.value(metadata i64 0, metadata !1749, metadata !DIExpression()), !dbg !1758 | |
%33 = inttoptr i64 %32 to i8*, !dbg !1759 | |
%34 = load i8, i8* %33, align 1, !dbg !1759 | |
%35 = zext i8 %34 to i64, !dbg !1759 | |
call void @llvm.dbg.value(metadata i64 %35, metadata !1749, metadata !DIExpression()), !dbg !1758 | |
%36 = xor i64 %31, %35, !dbg !1760 | |
%37 = mul i64 %36, 1099511628211, !dbg !1760 | |
call void @llvm.dbg.value(metadata i64 %37, metadata !1746, metadata !DIExpression()), !dbg !1755 | |
%38 = add i64 %32, 1, !dbg !1761 | |
call void @llvm.dbg.value(metadata i64 %38, metadata !1748, metadata !DIExpression()), !dbg !1755 | |
call void @llvm.dbg.value(metadata i64 0, metadata !1749, metadata !DIExpression()), !dbg !1758 | |
%39 = inttoptr i64 %38 to i8*, !dbg !1759 | |
%40 = load i8, i8* %39, align 1, !dbg !1759 | |
%41 = zext i8 %40 to i64, !dbg !1759 | |
call void @llvm.dbg.value(metadata i64 %41, metadata !1749, metadata !DIExpression()), !dbg !1758 | |
%42 = xor i64 %37, %41, !dbg !1760 | |
%43 = mul i64 %42, 1099511628211, !dbg !1760 | |
call void @llvm.dbg.value(metadata i64 %43, metadata !1746, metadata !DIExpression()), !dbg !1755 | |
%44 = add i64 %38, 1, !dbg !1761 | |
call void @llvm.dbg.value(metadata i64 %44, metadata !1748, metadata !DIExpression()), !dbg !1755 | |
call void @llvm.dbg.value(metadata i64 0, metadata !1749, metadata !DIExpression()), !dbg !1758 | |
%45 = inttoptr i64 %44 to i8*, !dbg !1759 | |
%46 = load i8, i8* %45, align 1, !dbg !1759 | |
%47 = zext i8 %46 to i64, !dbg !1759 | |
call void @llvm.dbg.value(metadata i64 %47, metadata !1749, metadata !DIExpression()), !dbg !1758 | |
%48 = xor i64 %43, %47, !dbg !1760 | |
%49 = mul i64 %48, 1099511628211, !dbg !1760 | |
call void @llvm.dbg.value(metadata i64 %49, metadata !1746, metadata !DIExpression()), !dbg !1755 | |
call void @llvm.dbg.value(metadata i64 %44, metadata !1748, metadata !DIExpression(DW_OP_plus_uconst, 1, DW_OP_stack_value)), !dbg !1755 | |
ret i64 %49, !dbg !1762 | |
} | |
declare i8* @calloc(i64, i64) | |
declare void @free(i8*) | |
declare i8* @realloc(i8*, i64) | |
define internal [2 x i64] @strconv.generic_ftoa([2 x i64] %0, double %1, i8 %2, i64 %3, i64 %4, i8* noalias nocapture nonnull %__.context_ptr) !dbg !1763 { | |
decls: | |
%5 = alloca { i8*, i64 }, align 8 | |
call void @llvm.dbg.declare(metadata { i8*, i64 }* %6, metadata !1769, metadata !DIExpression()), !dbg !1808 | |
%6 = alloca { i8*, i64 }, align 8 | |
%7 = alloca [2 x i64], align 8, !dbg !1809 | |
%8 = alloca %runtime.Source_Code_Location, align 8, !dbg !1809 | |
call void @llvm.dbg.declare(metadata %..string* %9, metadata !1782, metadata !DIExpression()), !dbg !1811 | |
%9 = alloca %..string, align 8, !dbg !1811 | |
%10 = alloca [2 x i64], align 8, !dbg !1812 | |
%11 = alloca { i8*, i64 }, align 8, !dbg !1812 | |
call void @llvm.dbg.declare(metadata %strconv_decimal.Decimal* %12, metadata !1785, metadata !DIExpression()), !dbg !1813 | |
%12 = alloca %strconv_decimal.Decimal, align 8, !dbg !1813 | |
call void @llvm.dbg.declare(metadata %strconv.Decimal_Slice* %13, metadata !1799, metadata !DIExpression()), !dbg !1814 | |
%13 = alloca %strconv.Decimal_Slice, align 8, !dbg !1814 | |
%14 = alloca %strconv.Decimal_Slice, align 8, !dbg !1815 | |
%15 = alloca { i8*, i64 }, align 8, !dbg !1815 | |
%16 = alloca %strconv.Decimal_Slice, align 8, !dbg !1818 | |
%17 = alloca { i8*, i64 }, align 8, !dbg !1818 | |
%18 = alloca { i8*, i64 }, align 8, !dbg !1820 | |
%19 = bitcast { i8*, i64 }* %5 to [2 x i64]* | |
store [2 x i64] %0, [2 x i64]* %19, align 8 | |
%20 = bitcast { i8*, i64 }* %6 to i8* | |
%21 = bitcast { i8*, i64 }* %5 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %20, i8* align 8 %21, i64 16, i1 false) | |
call void @llvm.dbg.value(metadata double %1, metadata !1770, metadata !DIExpression()), !dbg !1821 | |
call void @llvm.dbg.value(metadata i8 %2, metadata !1771, metadata !DIExpression()), !dbg !1821 | |
call void @llvm.dbg.value(metadata i64 %3, metadata !1772, metadata !DIExpression()), !dbg !1821 | |
call void @llvm.dbg.value(metadata i64 %4, metadata !1773, metadata !DIExpression()), !dbg !1821 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1774, metadata !DIExpression()), !dbg !1822 | |
call void @llvm.dbg.value(metadata i64 0, metadata !1775, metadata !DIExpression()), !dbg !1823 | |
call void @llvm.dbg.value(metadata %strconv.Float_Info* null, metadata !1777, metadata !DIExpression()), !dbg !1823 | |
switch i64 %4, label %switch.default.body [ | |
i64 16, label %switch.case.body | |
i64 32, label %switch.case.body1 | |
i64 64, label %switch.case.body2 | |
], !dbg !1824 | |
switch.case.body: ; preds = %decls | |
%22 = fptrunc double %1 to half, !dbg !1825 | |
%23 = bitcast half %22 to i16, !dbg !1825 | |
%24 = zext i16 %23 to i64, !dbg !1825 | |
call void @llvm.dbg.value(metadata i64 %24, metadata !1775, metadata !DIExpression()), !dbg !1823 | |
call void @llvm.dbg.value(metadata %strconv.Float_Info* @strconv._f16_info, metadata !1777, metadata !DIExpression()), !dbg !1823 | |
br label %switch.done, !dbg !1824 | |
switch.case.body1: ; preds = %decls | |
%25 = fptrunc double %1 to float, !dbg !1826 | |
%26 = bitcast float %25 to i32, !dbg !1826 | |
%27 = zext i32 %26 to i64, !dbg !1826 | |
call void @llvm.dbg.value(metadata i64 %27, metadata !1775, metadata !DIExpression()), !dbg !1823 | |
call void @llvm.dbg.value(metadata %strconv.Float_Info* @strconv._f32_info, metadata !1777, metadata !DIExpression()), !dbg !1823 | |
br label %switch.done, !dbg !1824 | |
switch.case.body2: ; preds = %decls | |
%28 = bitcast double %1 to i64, !dbg !1827 | |
call void @llvm.dbg.value(metadata i64 %28, metadata !1775, metadata !DIExpression()), !dbg !1823 | |
call void @llvm.dbg.value(metadata %strconv.Float_Info* @strconv._f64_info, metadata !1777, metadata !DIExpression()), !dbg !1823 | |
br label %switch.done, !dbg !1824 | |
switch.default.body: ; preds = %decls | |
%29 = bitcast [2 x i64]* %7 to %..string*, !dbg !1809 | |
store %..string { i8* getelementptr inbounds ([26 x i8], [26 x i8]* @"csbs$8a", i64 0, i64 0), i64 25 }, %..string* %29, align 8, !dbg !1809 | |
%30 = load [2 x i64], [2 x i64]* %7, align 8, !dbg !1809 | |
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([60 x i8], [60 x i8]* @"csbs$8b", i64 0, i64 0), i64 59 }, i32 38, i32 3, %..string { i8* getelementptr inbounds ([13 x i8], [13 x i8]* @"csbs$8c", i64 0, i64 0), i64 12 } }, %runtime.Source_Code_Location* %8, align 8, !dbg !1809 | |
call void @runtime.panic([2 x i64] %30, %runtime.Source_Code_Location* %8, i8* %__.context_ptr), !dbg !1809 | |
unreachable, !dbg !1809 | |
switch.done: ; preds = %switch.case.body2, %switch.case.body1, %switch.case.body | |
%.026 = phi %strconv.Float_Info* [ @strconv._f64_info, %switch.case.body2 ], [ @strconv._f32_info, %switch.case.body1 ], [ @strconv._f16_info, %switch.case.body ], !dbg !1828 | |
%.025 = phi i64 [ %28, %switch.case.body2 ], [ %27, %switch.case.body1 ], [ %24, %switch.case.body ], !dbg !1828 | |
call void @llvm.dbg.value(metadata i64 %.025, metadata !1775, metadata !DIExpression()), !dbg !1823 | |
call void @llvm.dbg.value(metadata %strconv.Float_Info* %.026, metadata !1777, metadata !DIExpression()), !dbg !1823 | |
call void @llvm.dbg.value(metadata i8 0, metadata !1779, metadata !DIExpression()), !dbg !1823 | |
%31 = getelementptr inbounds %strconv.Float_Info, %strconv.Float_Info* %.026, i32 0, i32 1, !dbg !1829 | |
%32 = load i64, i64* %31, align 8, !dbg !1829 | |
%33 = getelementptr inbounds %strconv.Float_Info, %strconv.Float_Info* %.026, i32 0, i32 0, !dbg !1829 | |
%34 = load i64, i64* %33, align 8, !dbg !1829 | |
%35 = add i64 %32, %34, !dbg !1829 | |
%36 = icmp ult i64 %35, 64, !dbg !1829 | |
%37 = lshr i64 %.025, %35, !dbg !1829 | |
%38 = select i1 %36, i64 %37, i64 0, !dbg !1829 | |
%39 = icmp ne i64 %38, 0, !dbg !1829 | |
call void @llvm.dbg.value(metadata i8 undef, metadata !1779, metadata !DIExpression()), !dbg !1823 | |
call void @llvm.dbg.value(metadata i64 0, metadata !1780, metadata !DIExpression()), !dbg !1823 | |
%40 = icmp ult i64 %34, 64, !dbg !1830 | |
%41 = lshr i64 %.025, %34, !dbg !1830 | |
%42 = select i1 %40, i64 %41, i64 0, !dbg !1830 | |
%43 = icmp ult i64 %32, 64, !dbg !1830 | |
%44 = shl i64 1, %32, !dbg !1830 | |
%45 = select i1 %43, i64 %44, i64 0, !dbg !1830 | |
%46 = sub i64 %45, 1, !dbg !1830 | |
%47 = and i64 %42, %46, !dbg !1830 | |
call void @llvm.dbg.value(metadata i64 %47, metadata !1780, metadata !DIExpression()), !dbg !1823 | |
call void @llvm.dbg.value(metadata i64 0, metadata !1781, metadata !DIExpression()), !dbg !1823 | |
%48 = shl i64 1, %34, !dbg !1831 | |
%49 = select i1 %40, i64 %48, i64 0, !dbg !1831 | |
%50 = sub i64 %49, 1, !dbg !1831 | |
%51 = and i64 %.025, %50, !dbg !1831 | |
call void @llvm.dbg.value(metadata i64 %51, metadata !1781, metadata !DIExpression()), !dbg !1823 | |
%52 = icmp eq i64 %47, %46, !dbg !1832 | |
br i1 %52, label %switch.case.body3, label %switch.case.next, !dbg !1832 | |
switch.case.next: ; preds = %switch.done | |
%53 = icmp eq i64 %47, 0, !dbg !1832 | |
%54 = add i64 %47, 1, !dbg !1832 | |
%55 = or i64 %51, %49, !dbg !1832 | |
%.027 = select i1 %53, i64 %54, i64 %47, !dbg !1832 | |
%.024 = select i1 %53, i64 %51, i64 %55, !dbg !1832 | |
call void @llvm.dbg.value(metadata i64 %.024, metadata !1781, metadata !DIExpression()), !dbg !1823 | |
call void @llvm.dbg.value(metadata i64 %.027, metadata !1780, metadata !DIExpression()), !dbg !1823 | |
%56 = getelementptr inbounds %strconv.Float_Info, %strconv.Float_Info* %.026, i32 0, i32 2, !dbg !1833 | |
%57 = load i64, i64* %56, align 8, !dbg !1833 | |
%58 = add i64 %.027, %57, !dbg !1833 | |
call void @llvm.dbg.value(metadata i64 %58, metadata !1780, metadata !DIExpression()), !dbg !1823 | |
%59 = bitcast %strconv_decimal.Decimal* %12 to i8*, !dbg !1813 | |
call void @llvm.memset.p0i8.i64(i8* %59, i8 0, i64 408, i1 false), !dbg !1813 | |
call void @llvm.dbg.value(metadata %strconv_decimal.Decimal* %12, metadata !1797, metadata !DIExpression()), !dbg !1823 | |
call void @strconv_decimal.assign(%strconv_decimal.Decimal* %12, i64 %.024, i8* %__.context_ptr), !dbg !1834 | |
%60 = load i64, i64* %33, align 8, !dbg !1835 | |
%61 = sub i64 %58, %60, !dbg !1835 | |
call void @strconv_decimal.shift(%strconv_decimal.Decimal* %12, i64 %61, i8* %__.context_ptr), !dbg !1835 | |
%62 = bitcast %strconv.Decimal_Slice* %13 to i8*, !dbg !1814 | |
call void @llvm.memset.p0i8.i64(i8* %62, i8 0, i64 40, i1 false), !dbg !1814 | |
call void @llvm.dbg.value(metadata i64 %3, metadata !1806, metadata !DIExpression()), !dbg !1823 | |
call void @llvm.dbg.value(metadata i8 0, metadata !1807, metadata !DIExpression()), !dbg !1823 | |
%63 = icmp slt i64 %3, 0, !dbg !1836 | |
call void @llvm.dbg.value(metadata i8 undef, metadata !1807, metadata !DIExpression()), !dbg !1823 | |
br i1 %63, label %if.then11, label %if.else16, !dbg !1837 | |
switch.case.body3: ; preds = %switch.done | |
%64 = bitcast %..string* %9 to i8*, !dbg !1811 | |
call void @llvm.memset.p0i8.i64(i8* %64, i8 0, i64 16, i1 false), !dbg !1811 | |
%65 = icmp ne i64 %51, 0, !dbg !1838 | |
br i1 %65, label %if.then, label %if.else, !dbg !1838 | |
if.then: ; preds = %switch.case.body3 | |
store %..string { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"csbs$8d", i64 0, i64 0), i64 3 }, %..string* %9, align 8, !dbg !1839 | |
br label %if.done6, !dbg !1838 | |
if.else: ; preds = %switch.case.body3 | |
br i1 %39, label %if.then4, label %if.else5, !dbg !1842 | |
if.then4: ; preds = %if.else | |
store %..string { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"csbs$8e", i64 0, i64 0), i64 4 }, %..string* %9, align 8, !dbg !1844 | |
br label %if.done6, !dbg !1842 | |
if.else5: ; preds = %if.else | |
store %..string { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"csbs$8f", i64 0, i64 0), i64 4 }, %..string* %9, align 8, !dbg !1846 | |
br label %if.done6, !dbg !1842 | |
if.done6: ; preds = %if.then4, %if.else5, %if.then | |
call void @llvm.dbg.value(metadata i64 0, metadata !1784, metadata !DIExpression()), !dbg !1848 | |
%66 = bitcast { i8*, i64 }* %6 to [2 x i64]*, !dbg !1849 | |
%67 = load [2 x i64], [2 x i64]* %66, align 8, !dbg !1849 | |
%68 = bitcast %..string* %9 to [2 x i64]*, !dbg !1849 | |
%69 = load [2 x i64], [2 x i64]* %68, align 8, !dbg !1849 | |
%70 = call i64 @runtime.copy_from_string-6588([2 x i64] %67, [2 x i64] %69), !dbg !1849 | |
call void @llvm.dbg.value(metadata i64 %70, metadata !1784, metadata !DIExpression()), !dbg !1848 | |
%71 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %6, i32 0, i32 1, !dbg !1812 | |
%72 = load i64, i64* %71, align 8, !dbg !1812 | |
%73 = bitcast [2 x i64]* %10 to %..string*, !dbg !1812 | |
store %..string { i8* getelementptr inbounds ([60 x i8], [60 x i8]* @"csbs$8b", i64 0, i64 0), i64 59 }, %..string* %73, align 8, !dbg !1812 | |
%74 = load [2 x i64], [2 x i64]* %10, align 8, !dbg !1812 | |
call void @runtime.slice_expr_error_hi([2 x i64] %74, i32 56, i32 13, i64 %70, i64 %72), !dbg !1812 | |
%75 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %6, i32 0, i32 0, !dbg !1812 | |
%76 = load i8*, i8** %75, align 8, !dbg !1812 | |
%77 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %11, i32 0, i32 0, !dbg !1812 | |
store i8* %76, i8** %77, align 8, !dbg !1812 | |
%78 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %11, i32 0, i32 1, !dbg !1812 | |
store i64 %70, i64* %78, align 8, !dbg !1812 | |
%79 = bitcast { i8*, i64 }* %11 to [2 x i64]*, !dbg !1812 | |
%80 = load [2 x i64], [2 x i64]* %79, align 8, !dbg !1812 | |
ret [2 x i64] %80, !dbg !1812 | |
if.then11: ; preds = %switch.case.next | |
call void @strconv.round_shortest(%strconv_decimal.Decimal* %12, i64 %.024, i64 %58, %strconv.Float_Info* %.026, i8* %__.context_ptr), !dbg !1850 | |
%81 = bitcast %strconv.Decimal_Slice* %14 to i8*, !dbg !1815 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %81, i8 0, i64 40, i1 false), !dbg !1815 | |
%82 = getelementptr inbounds %strconv_decimal.Decimal, %strconv_decimal.Decimal* %12, i32 0, i32 0, !dbg !1815 | |
%83 = getelementptr [384 x i8], [384 x i8]* %82, i64 0, i64 0, !dbg !1815 | |
%84 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %15, i32 0, i32 0, !dbg !1815 | |
store i8* %83, i8** %84, align 8, !dbg !1815 | |
%85 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %15, i32 0, i32 1, !dbg !1815 | |
store i64 384, i64* %85, align 8, !dbg !1815 | |
%86 = getelementptr inbounds %strconv.Decimal_Slice, %strconv.Decimal_Slice* %14, i32 0, i32 0, !dbg !1815 | |
%87 = bitcast { i8*, i64 }* %86 to i8*, !dbg !1815 | |
%88 = bitcast { i8*, i64 }* %15 to i8*, !dbg !1815 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %87, i8* align 8 %88, i64 16, i1 false), !dbg !1815 | |
%89 = getelementptr inbounds %strconv_decimal.Decimal, %strconv_decimal.Decimal* %12, i32 0, i32 1, !dbg !1815 | |
%90 = load i64, i64* %89, align 8, !dbg !1815 | |
%91 = getelementptr inbounds %strconv.Decimal_Slice, %strconv.Decimal_Slice* %14, i32 0, i32 1, !dbg !1815 | |
store i64 %90, i64* %91, align 8, !dbg !1815 | |
%92 = getelementptr inbounds %strconv_decimal.Decimal, %strconv_decimal.Decimal* %12, i32 0, i32 2, !dbg !1815 | |
%93 = load i64, i64* %92, align 8, !dbg !1815 | |
%94 = getelementptr inbounds %strconv.Decimal_Slice, %strconv.Decimal_Slice* %14, i32 0, i32 2, !dbg !1815 | |
store i64 %93, i64* %94, align 8, !dbg !1815 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %62, i8* align 8 %81, i64 40, i1 false), !dbg !1815 | |
switch i8 %2, label %if.done23 [ | |
i8 101, label %switch.case.body12 | |
i8 69, label %switch.case.body12 | |
i8 102, label %switch.case.body13 | |
i8 70, label %switch.case.body13 | |
i8 103, label %switch.case.body14 | |
i8 71, label %switch.case.body14 | |
], !dbg !1851 | |
switch.case.body12: ; preds = %if.then11, %if.then11 | |
%95 = getelementptr inbounds %strconv.Decimal_Slice, %strconv.Decimal_Slice* %13, i32 0, i32 1, !dbg !1852 | |
%96 = load i64, i64* %95, align 8, !dbg !1852 | |
%97 = sub i64 %96, 1, !dbg !1852 | |
call void @llvm.dbg.value(metadata i64 %97, metadata !1806, metadata !DIExpression()), !dbg !1823 | |
br label %if.done23, !dbg !1851 | |
switch.case.body13: ; preds = %if.then11, %if.then11 | |
%98 = getelementptr inbounds %strconv.Decimal_Slice, %strconv.Decimal_Slice* %13, i32 0, i32 1, !dbg !1854 | |
%99 = load i64, i64* %98, align 8, !dbg !1854 | |
%100 = getelementptr inbounds %strconv.Decimal_Slice, %strconv.Decimal_Slice* %13, i32 0, i32 2, !dbg !1854 | |
%101 = load i64, i64* %100, align 8, !dbg !1854 | |
%102 = sub i64 %99, %101, !dbg !1854 | |
%103 = icmp sgt i64 %102, 0, !dbg !1854 | |
%104 = select i1 %103, i64 %102, i64 0, !dbg !1854 | |
call void @llvm.dbg.value(metadata i64 %104, metadata !1806, metadata !DIExpression()), !dbg !1823 | |
br label %if.done23, !dbg !1851 | |
switch.case.body14: ; preds = %if.then11, %if.then11 | |
%105 = getelementptr inbounds %strconv.Decimal_Slice, %strconv.Decimal_Slice* %13, i32 0, i32 1, !dbg !1855 | |
%106 = load i64, i64* %105, align 8, !dbg !1855 | |
call void @llvm.dbg.value(metadata i64 %106, metadata !1806, metadata !DIExpression()), !dbg !1823 | |
br label %if.done23, !dbg !1851 | |
if.else16: ; preds = %switch.case.next | |
switch i8 %2, label %switch.done22 [ | |
i8 101, label %switch.case.body17 | |
i8 69, label %switch.case.body17 | |
i8 102, label %switch.case.body18 | |
i8 70, label %switch.case.body18 | |
i8 103, label %switch.case.body19 | |
i8 71, label %switch.case.body19 | |
], !dbg !1856 | |
switch.case.body17: ; preds = %if.else16, %if.else16 | |
%107 = add i64 %3, 1, !dbg !1857 | |
call void @strconv_decimal.round(%strconv_decimal.Decimal* %12, i64 %107, i8* %__.context_ptr), !dbg !1857 | |
br label %switch.done22, !dbg !1856 | |
switch.case.body18: ; preds = %if.else16, %if.else16 | |
%108 = getelementptr inbounds %strconv_decimal.Decimal, %strconv_decimal.Decimal* %12, i32 0, i32 2, !dbg !1859 | |
%109 = load i64, i64* %108, align 8, !dbg !1859 | |
%110 = add i64 %109, %3, !dbg !1859 | |
call void @strconv_decimal.round(%strconv_decimal.Decimal* %12, i64 %110, i8* %__.context_ptr), !dbg !1859 | |
br label %switch.done22, !dbg !1856 | |
switch.case.body19: ; preds = %if.else16, %if.else16 | |
%111 = icmp eq i64 %3, 0, !dbg !1860 | |
%spec.select = select i1 %111, i64 1, i64 %3, !dbg !1860 | |
call void @llvm.dbg.value(metadata i64 %spec.select, metadata !1806, metadata !DIExpression()), !dbg !1823 | |
call void @strconv_decimal.round(%strconv_decimal.Decimal* %12, i64 %spec.select, i8* %__.context_ptr), !dbg !1861 | |
br label %switch.done22, !dbg !1856 | |
switch.done22: ; preds = %switch.case.body19, %switch.case.body18, %switch.case.body17, %if.else16 | |
%.2 = phi i64 [ %3, %if.else16 ], [ %spec.select, %switch.case.body19 ], [ %3, %switch.case.body18 ], [ %3, %switch.case.body17 ], !dbg !1821 | |
call void @llvm.dbg.value(metadata i64 %.2, metadata !1806, metadata !DIExpression()), !dbg !1823 | |
%112 = bitcast %strconv.Decimal_Slice* %16 to i8*, !dbg !1818 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %112, i8 0, i64 40, i1 false), !dbg !1818 | |
%113 = getelementptr inbounds %strconv_decimal.Decimal, %strconv_decimal.Decimal* %12, i32 0, i32 0, !dbg !1818 | |
%114 = getelementptr [384 x i8], [384 x i8]* %113, i64 0, i64 0, !dbg !1818 | |
%115 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %17, i32 0, i32 0, !dbg !1818 | |
store i8* %114, i8** %115, align 8, !dbg !1818 | |
%116 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %17, i32 0, i32 1, !dbg !1818 | |
store i64 384, i64* %116, align 8, !dbg !1818 | |
%117 = getelementptr inbounds %strconv.Decimal_Slice, %strconv.Decimal_Slice* %16, i32 0, i32 0, !dbg !1818 | |
%118 = bitcast { i8*, i64 }* %117 to i8*, !dbg !1818 | |
%119 = bitcast { i8*, i64 }* %17 to i8*, !dbg !1818 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %118, i8* align 8 %119, i64 16, i1 false), !dbg !1818 | |
%120 = getelementptr inbounds %strconv_decimal.Decimal, %strconv_decimal.Decimal* %12, i32 0, i32 1, !dbg !1818 | |
%121 = load i64, i64* %120, align 8, !dbg !1818 | |
%122 = getelementptr inbounds %strconv.Decimal_Slice, %strconv.Decimal_Slice* %16, i32 0, i32 1, !dbg !1818 | |
store i64 %121, i64* %122, align 8, !dbg !1818 | |
%123 = getelementptr inbounds %strconv_decimal.Decimal, %strconv_decimal.Decimal* %12, i32 0, i32 2, !dbg !1818 | |
%124 = load i64, i64* %123, align 8, !dbg !1818 | |
%125 = getelementptr inbounds %strconv.Decimal_Slice, %strconv.Decimal_Slice* %16, i32 0, i32 2, !dbg !1818 | |
store i64 %124, i64* %125, align 8, !dbg !1818 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %62, i8* align 8 %112, i64 40, i1 false), !dbg !1818 | |
br label %if.done23, !dbg !1837 | |
if.done23: ; preds = %if.then11, %switch.case.body12, %switch.case.body13, %switch.case.body14, %switch.done22 | |
%.3 = phi i64 [ %.2, %switch.done22 ], [ %3, %if.then11 ], [ %106, %switch.case.body14 ], [ %104, %switch.case.body13 ], [ %97, %switch.case.body12 ], !dbg !1862 | |
call void @llvm.dbg.value(metadata i64 %.3, metadata !1806, metadata !DIExpression()), !dbg !1823 | |
%126 = bitcast { i8*, i64 }* %6 to [2 x i64]*, !dbg !1820 | |
%127 = load [2 x i64], [2 x i64]* %126, align 8, !dbg !1820 | |
%128 = call [2 x i64] @strconv.format_digits([2 x i64] %127, i1 %63, i1 %39, %strconv.Decimal_Slice* %13, i64 %.3, i8 %2, i8* %__.context_ptr), !dbg !1820 | |
%129 = bitcast { i8*, i64 }* %18 to [2 x i64]*, !dbg !1820 | |
store [2 x i64] %128, [2 x i64]* %129, align 8, !dbg !1820 | |
ret [2 x i64] %128, !dbg !1820 | |
} | |
define internal [2 x i64] @strconv.format_digits([2 x i64] %0, i1 zeroext %1, i1 zeroext %2, %strconv.Decimal_Slice* %3, i64 %4, i8 %5, i8* noalias nocapture nonnull %__.context_ptr) !dbg !1863 { | |
decls: | |
%6 = alloca { i8*, i64 }, align 8 | |
call void @llvm.dbg.declare(metadata { i8*, i64 }* %7, metadata !1867, metadata !DIExpression()), !dbg !1900 | |
%7 = alloca { i8*, i64 }, align 8 | |
call void @llvm.dbg.declare(metadata %strconv.format_digits.Buffer-1* %8, metadata !1873, metadata !DIExpression()), !dbg !1901 | |
%8 = alloca %strconv.format_digits.Buffer-1, align 8, !dbg !1901 | |
%9 = alloca %strconv.format_digits.Buffer-1, align 8, !dbg !1901 | |
%10 = alloca { i8*, i64 }, align 8, !dbg !1902 | |
%11 = alloca [1 x i8], align 1, !dbg !1902 | |
%12 = alloca [2 x i64], align 8, !dbg !1903 | |
%13 = alloca { i8*, i64 }, align 8, !dbg !1903 | |
%14 = alloca { i8*, i64 }, align 8, !dbg !1904 | |
%15 = alloca [1 x i8], align 1, !dbg !1904 | |
%16 = alloca { i8*, i64 }, align 8, !dbg !1907 | |
%17 = alloca [1 x i8], align 1, !dbg !1907 | |
%18 = alloca { i8*, i64 }, align 8, !dbg !1909 | |
%19 = alloca [1 x i8], align 1, !dbg !1909 | |
%20 = alloca [2 x i64], align 8, !dbg !1910 | |
%21 = alloca { i8*, i64 }, align 8, !dbg !1912 | |
%22 = alloca [1 x i8], align 1, !dbg !1912 | |
%23 = alloca { i8*, i64 }, align 8, !dbg !1913 | |
%24 = alloca { i8*, i64 }, align 8, !dbg !1914 | |
%25 = alloca [1 x i8], align 1, !dbg !1914 | |
%26 = alloca [2 x i64], align 8, !dbg !1915 | |
%27 = alloca { i8*, i64 }, align 8, !dbg !1918 | |
%28 = alloca [1 x i8], align 1, !dbg !1918 | |
%29 = alloca { i8*, i64 }, align 8, !dbg !1919 | |
%30 = alloca [1 x i8], align 1, !dbg !1919 | |
%31 = alloca [2 x i64], align 8, !dbg !1920 | |
%32 = alloca { i8*, i64 }, align 8, !dbg !1920 | |
%33 = alloca { i8*, i64 }, align 8, !dbg !1923 | |
%34 = alloca [1 x i8], align 1, !dbg !1923 | |
%35 = alloca { i8*, i64 }, align 8, !dbg !1926 | |
%36 = alloca [1 x i8], align 1, !dbg !1926 | |
%37 = alloca { i8*, i64 }, align 8, !dbg !1927 | |
%38 = alloca [1 x i8], align 1, !dbg !1927 | |
%39 = alloca { i8*, i64 }, align 8, !dbg !1928 | |
%40 = alloca [2 x i8], align 1, !dbg !1928 | |
%41 = alloca { i8*, i64 }, align 8, !dbg !1930 | |
%42 = alloca [2 x i8], align 1, !dbg !1930 | |
%43 = alloca { i8*, i64 }, align 8, !dbg !1931 | |
%44 = alloca [3 x i8], align 1, !dbg !1931 | |
%45 = alloca { i8*, i64 }, align 8, !dbg !1932 | |
%46 = alloca { i8*, i64 }, align 8, !dbg !1933 | |
%47 = alloca { i8*, i64 }, align 8, !dbg !1936 | |
%48 = alloca { i8*, i64 }, align 8, !dbg !1937 | |
%49 = alloca [2 x i8], align 1, !dbg !1937 | |
%50 = alloca { i8*, i64 }, align 8, !dbg !1938 | |
%51 = bitcast { i8*, i64 }* %6 to [2 x i64]* | |
store [2 x i64] %0, [2 x i64]* %51, align 8 | |
%52 = bitcast { i8*, i64 }* %7 to i8* | |
%53 = bitcast { i8*, i64 }* %6 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %52, i8* align 8 %53, i64 16, i1 false) | |
call void @llvm.dbg.value(metadata i8 undef, metadata !1868, metadata !DIExpression()), !dbg !1939 | |
call void @llvm.dbg.value(metadata i8 undef, metadata !1869, metadata !DIExpression()), !dbg !1939 | |
call void @llvm.dbg.value(metadata i64 %4, metadata !1870, metadata !DIExpression()), !dbg !1939 | |
call void @llvm.dbg.value(metadata i8 %5, metadata !1871, metadata !DIExpression()), !dbg !1939 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1872, metadata !DIExpression()), !dbg !1940 | |
%54 = bitcast %strconv.format_digits.Buffer-1* %8 to i8*, !dbg !1901 | |
call void @llvm.memset.p0i8.i64(i8* %54, i8 0, i64 24, i1 false), !dbg !1901 | |
%55 = getelementptr inbounds %strconv.format_digits.Buffer-1, %strconv.format_digits.Buffer-1* %9, i32 0, i32 0, !dbg !1901 | |
%56 = bitcast { i8*, i64 }* %55 to i8*, !dbg !1901 | |
%57 = getelementptr i8, i8* %56, i64 16, !dbg !1901 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %57, i8 0, i64 8, i1 false), !dbg !1901 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %56, i8* align 8 %53, i64 16, i1 false), !dbg !1901 | |
%58 = bitcast %strconv.format_digits.Buffer-1* %9 to i8*, !dbg !1901 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %54, i8* align 8 %58, i64 24, i1 false), !dbg !1901 | |
call void @llvm.dbg.value(metadata i64 %4, metadata !1879, metadata !DIExpression()), !dbg !1941 | |
switch i8 %5, label %switch.default.body41 [ | |
i8 102, label %switch.case.body | |
i8 70, label %switch.case.body | |
i8 101, label %switch.case.body8 | |
i8 69, label %switch.case.body8 | |
i8 103, label %switch.case.body29 | |
i8 71, label %switch.case.body29 | |
], !dbg !1942 | |
switch.case.body: ; preds = %decls, %decls | |
%. = select i1 %2, i8 45, i8 43, !dbg !1902 | |
%59 = bitcast { i8*, i64 }* %10 to i8*, !dbg !1902 | |
call void @llvm.memset.p0i8.i64(i8* %59, i8 0, i64 16, i1 false), !dbg !1902 | |
%60 = bitcast [1 x i8]* %11 to i8*, !dbg !1902 | |
call void @llvm.memset.p0i8.i64(i8* %60, i8 0, i64 1, i1 false), !dbg !1902 | |
%61 = getelementptr [1 x i8], [1 x i8]* %11, i64 0, i64 0, !dbg !1902 | |
store i8 %., i8* %61, align 1, !dbg !1902 | |
%62 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %10, i32 0, i32 0, !dbg !1902 | |
store i8* %61, i8** %62, align 8, !dbg !1902 | |
%63 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %10, i32 0, i32 1, !dbg !1902 | |
store i64 1, i64* %63, align 8, !dbg !1902 | |
%64 = bitcast { i8*, i64 }* %10 to [2 x i64]*, !dbg !1902 | |
%65 = load [2 x i64], [2 x i64]* %64, align 8, !dbg !1902 | |
call void @strconv.format_digits.add_bytes-1(%strconv.format_digits.Buffer-1* %8, [2 x i64] %65, i8* %__.context_ptr), !dbg !1902 | |
%66 = getelementptr inbounds %strconv.Decimal_Slice, %strconv.Decimal_Slice* %3, i32 0, i32 2, !dbg !1943 | |
%67 = load i64, i64* %66, align 8, !dbg !1943 | |
%68 = icmp sgt i64 %67, 0, !dbg !1943 | |
br i1 %68, label %if.then1, label %if.else2, !dbg !1943 | |
if.then1: ; preds = %switch.case.body | |
call void @llvm.dbg.value(metadata i64 0, metadata !1880, metadata !DIExpression()), !dbg !1944 | |
%69 = getelementptr inbounds %strconv.Decimal_Slice, %strconv.Decimal_Slice* %3, i32 0, i32 1, !dbg !1945 | |
%70 = load i64, i64* %69, align 8, !dbg !1945 | |
%71 = icmp slt i64 %70, %67, !dbg !1945 | |
%72 = select i1 %71, i64 %70, i64 %67, !dbg !1945 | |
call void @llvm.dbg.value(metadata i64 %72, metadata !1880, metadata !DIExpression()), !dbg !1944 | |
%73 = getelementptr inbounds %strconv.Decimal_Slice, %strconv.Decimal_Slice* %3, i32 0, i32 0, !dbg !1903 | |
%74 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %73, i32 0, i32 1, !dbg !1903 | |
%75 = load i64, i64* %74, align 8, !dbg !1903 | |
%76 = bitcast [2 x i64]* %12 to %..string*, !dbg !1903 | |
store %..string { i8* getelementptr inbounds ([60 x i8], [60 x i8]* @"csbs$8b", i64 0, i64 0), i64 59 }, %..string* %76, align 8, !dbg !1903 | |
%77 = load [2 x i64], [2 x i64]* %12, align 8, !dbg !1903 | |
call void @runtime.slice_expr_error_lo_hi([2 x i64] %77, i32 123, i32 31, i64 0, i64 %72, i64 %75), !dbg !1903 | |
%78 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %73, i32 0, i32 0, !dbg !1903 | |
%79 = load i8*, i8** %78, align 8, !dbg !1903 | |
%80 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %13, i32 0, i32 0, !dbg !1903 | |
store i8* %79, i8** %80, align 8, !dbg !1903 | |
%81 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %13, i32 0, i32 1, !dbg !1903 | |
store i64 %72, i64* %81, align 8, !dbg !1903 | |
%82 = bitcast { i8*, i64 }* %13 to [2 x i64]*, !dbg !1903 | |
%83 = load [2 x i64], [2 x i64]* %82, align 8, !dbg !1903 | |
call void @strconv.format_digits.add_bytes-1(%strconv.format_digits.Buffer-1* %8, [2 x i64] %83, i8* %__.context_ptr), !dbg !1903 | |
br label %for.loop, !dbg !1946 | |
for.loop: ; preds = %for.body, %if.then1 | |
%.047 = phi i64 [ %72, %if.then1 ], [ %93, %for.body ], !dbg !1944 | |
call void @llvm.dbg.value(metadata i64 %.047, metadata !1880, metadata !DIExpression()), !dbg !1944 | |
%84 = load i64, i64* %66, align 8, !dbg !1946 | |
%85 = icmp slt i64 %.047, %84, !dbg !1946 | |
br i1 %85, label %for.body, label %if.done3, !dbg !1946 | |
for.body: ; preds = %for.loop | |
%86 = bitcast { i8*, i64 }* %14 to i8*, !dbg !1904 | |
call void @llvm.memset.p0i8.i64(i8* %86, i8 0, i64 16, i1 false), !dbg !1904 | |
%87 = bitcast [1 x i8]* %15 to i8*, !dbg !1904 | |
call void @llvm.memset.p0i8.i64(i8* %87, i8 0, i64 1, i1 false), !dbg !1904 | |
%88 = getelementptr [1 x i8], [1 x i8]* %15, i64 0, i64 0, !dbg !1904 | |
store i8 48, i8* %88, align 1, !dbg !1904 | |
%89 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %14, i32 0, i32 0, !dbg !1904 | |
store i8* %88, i8** %89, align 8, !dbg !1904 | |
%90 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %14, i32 0, i32 1, !dbg !1904 | |
store i64 1, i64* %90, align 8, !dbg !1904 | |
%91 = bitcast { i8*, i64 }* %14 to [2 x i64]*, !dbg !1904 | |
%92 = load [2 x i64], [2 x i64]* %91, align 8, !dbg !1904 | |
call void @strconv.format_digits.add_bytes-1(%strconv.format_digits.Buffer-1* %8, [2 x i64] %92, i8* %__.context_ptr), !dbg !1904 | |
%93 = add i64 %.047, 1, !dbg !1947 | |
call void @llvm.dbg.value(metadata i64 %93, metadata !1880, metadata !DIExpression()), !dbg !1944 | |
br label %for.loop, !dbg !1946 | |
if.else2: ; preds = %switch.case.body | |
%94 = bitcast { i8*, i64 }* %16 to i8*, !dbg !1907 | |
call void @llvm.memset.p0i8.i64(i8* %94, i8 0, i64 16, i1 false), !dbg !1907 | |
%95 = bitcast [1 x i8]* %17 to i8*, !dbg !1907 | |
call void @llvm.memset.p0i8.i64(i8* %95, i8 0, i64 1, i1 false), !dbg !1907 | |
%96 = getelementptr [1 x i8], [1 x i8]* %17, i64 0, i64 0, !dbg !1907 | |
store i8 48, i8* %96, align 1, !dbg !1907 | |
%97 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %16, i32 0, i32 0, !dbg !1907 | |
store i8* %96, i8** %97, align 8, !dbg !1907 | |
%98 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %16, i32 0, i32 1, !dbg !1907 | |
store i64 1, i64* %98, align 8, !dbg !1907 | |
%99 = bitcast { i8*, i64 }* %16 to [2 x i64]*, !dbg !1907 | |
%100 = load [2 x i64], [2 x i64]* %99, align 8, !dbg !1907 | |
call void @strconv.format_digits.add_bytes-1(%strconv.format_digits.Buffer-1* %8, [2 x i64] %100, i8* %__.context_ptr), !dbg !1907 | |
br label %if.done3, !dbg !1943 | |
if.done3: ; preds = %for.loop, %if.else2 | |
%101 = icmp sgt i64 %4, 0, !dbg !1948 | |
br i1 %101, label %if.then4, label %if.done7, !dbg !1948 | |
if.then4: ; preds = %if.done3 | |
%102 = bitcast { i8*, i64 }* %18 to i8*, !dbg !1909 | |
call void @llvm.memset.p0i8.i64(i8* %102, i8 0, i64 16, i1 false), !dbg !1909 | |
%103 = bitcast [1 x i8]* %19 to i8*, !dbg !1909 | |
call void @llvm.memset.p0i8.i64(i8* %103, i8 0, i64 1, i1 false), !dbg !1909 | |
%104 = getelementptr [1 x i8], [1 x i8]* %19, i64 0, i64 0, !dbg !1909 | |
store i8 46, i8* %104, align 1, !dbg !1909 | |
%105 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %18, i32 0, i32 0, !dbg !1909 | |
store i8* %104, i8** %105, align 8, !dbg !1909 | |
%106 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %18, i32 0, i32 1, !dbg !1909 | |
store i64 1, i64* %106, align 8, !dbg !1909 | |
%107 = bitcast { i8*, i64 }* %18 to [2 x i64]*, !dbg !1909 | |
%108 = load [2 x i64], [2 x i64]* %107, align 8, !dbg !1909 | |
call void @strconv.format_digits.add_bytes-1(%strconv.format_digits.Buffer-1* %8, [2 x i64] %108, i8* %__.context_ptr), !dbg !1909 | |
call void @llvm.dbg.value(metadata i64 0, metadata !1883, metadata !DIExpression()), !dbg !1949 | |
br label %for.interval.loop, !dbg !1950 | |
for.interval.loop: ; preds = %if.done6, %if.then4 | |
%.051 = phi i64 [ 0, %if.then4 ], [ %133, %if.done6 ], !dbg !1950 | |
%.050 = phi i64 [ 0, %if.then4 ], [ %132, %if.done6 ], !dbg !1950 | |
%109 = icmp slt i64 %.050, %4, !dbg !1950 | |
br i1 %109, label %if.init, label %if.done7, !dbg !1950 | |
if.init: ; preds = %for.interval.loop | |
call void @llvm.dbg.value(metadata i64 %.050, metadata !1883, metadata !DIExpression()), !dbg !1949 | |
call void @llvm.dbg.value(metadata i8 0, metadata !1887, metadata !DIExpression()), !dbg !1951 | |
call void @llvm.dbg.value(metadata i8 48, metadata !1887, metadata !DIExpression()), !dbg !1951 | |
call void @llvm.dbg.value(metadata i64 0, metadata !1889, metadata !DIExpression()), !dbg !1952 | |
%110 = load i64, i64* %66, align 8, !dbg !1953 | |
%111 = add i64 %110, %.050, !dbg !1953 | |
call void @llvm.dbg.value(metadata i64 %111, metadata !1889, metadata !DIExpression()), !dbg !1952 | |
%112 = icmp sle i64 0, %111, !dbg !1954 | |
br i1 %112, label %cmp.and, label %if.done6, !dbg !1954 | |
cmp.and: ; preds = %if.init | |
%113 = getelementptr inbounds %strconv.Decimal_Slice, %strconv.Decimal_Slice* %3, i32 0, i32 1, !dbg !1954 | |
%114 = load i64, i64* %113, align 8, !dbg !1954 | |
%115 = icmp slt i64 %111, %114, !dbg !1954 | |
br i1 %115, label %if.then5, label %if.done6, !dbg !1954 | |
if.then5: ; preds = %cmp.and | |
%116 = getelementptr inbounds %strconv.Decimal_Slice, %strconv.Decimal_Slice* %3, i32 0, i32 0, !dbg !1910 | |
%117 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %116, i32 0, i32 0, !dbg !1910 | |
%118 = load i8*, i8** %117, align 8, !dbg !1910 | |
%119 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %116, i32 0, i32 1, !dbg !1910 | |
%120 = load i64, i64* %119, align 8, !dbg !1910 | |
%121 = bitcast [2 x i64]* %20 to %..string*, !dbg !1910 | |
store %..string { i8* getelementptr inbounds ([60 x i8], [60 x i8]* @"csbs$8b", i64 0, i64 0), i64 59 }, %..string* %121, align 8, !dbg !1910 | |
%122 = load [2 x i64], [2 x i64]* %20, align 8, !dbg !1910 | |
call void @runtime.bounds_check_error([2 x i64] %122, i32 138, i32 22, i64 %111, i64 %120), !dbg !1910 | |
%123 = getelementptr i8, i8* %118, i64 %111, !dbg !1910 | |
%124 = load i8, i8* %123, align 1, !dbg !1910 | |
call void @llvm.dbg.value(metadata i8 %124, metadata !1887, metadata !DIExpression()), !dbg !1951 | |
br label %if.done6, !dbg !1954 | |
if.done6: ; preds = %if.then5, %cmp.and, %if.init | |
%.054 = phi i8 [ %124, %if.then5 ], [ 48, %cmp.and ], [ 48, %if.init ], !dbg !1951 | |
call void @llvm.dbg.value(metadata i8 %.054, metadata !1887, metadata !DIExpression()), !dbg !1951 | |
%125 = bitcast { i8*, i64 }* %21 to i8*, !dbg !1912 | |
call void @llvm.memset.p0i8.i64(i8* %125, i8 0, i64 16, i1 false), !dbg !1912 | |
%126 = bitcast [1 x i8]* %22 to i8*, !dbg !1912 | |
call void @llvm.memset.p0i8.i64(i8* %126, i8 0, i64 1, i1 false), !dbg !1912 | |
%127 = getelementptr [1 x i8], [1 x i8]* %22, i64 0, i64 0, !dbg !1912 | |
store i8 %.054, i8* %127, align 1, !dbg !1912 | |
%128 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %21, i32 0, i32 0, !dbg !1912 | |
store i8* %127, i8** %128, align 8, !dbg !1912 | |
%129 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %21, i32 0, i32 1, !dbg !1912 | |
store i64 1, i64* %129, align 8, !dbg !1912 | |
%130 = bitcast { i8*, i64 }* %21 to [2 x i64]*, !dbg !1912 | |
%131 = load [2 x i64], [2 x i64]* %130, align 8, !dbg !1912 | |
call void @strconv.format_digits.add_bytes-1(%strconv.format_digits.Buffer-1* %8, [2 x i64] %131, i8* %__.context_ptr), !dbg !1912 | |
%132 = add i64 %.050, 1, !dbg !1950 | |
%133 = add i64 %.051, 1, !dbg !1950 | |
br label %for.interval.loop, !dbg !1950 | |
if.done7: ; preds = %for.interval.loop, %if.done3 | |
%134 = call [2 x i64] @strconv.format_digits.to_bytes-0(%strconv.format_digits.Buffer-1* %8, i8* %__.context_ptr), !dbg !1913 | |
%135 = bitcast { i8*, i64 }* %23 to [2 x i64]*, !dbg !1913 | |
store [2 x i64] %134, [2 x i64]* %135, align 8, !dbg !1913 | |
ret [2 x i64] %134, !dbg !1913 | |
switch.case.body8: ; preds = %decls, %decls | |
%.55 = select i1 %2, i8 45, i8 43, !dbg !1914 | |
%136 = bitcast { i8*, i64 }* %24 to i8*, !dbg !1914 | |
call void @llvm.memset.p0i8.i64(i8* %136, i8 0, i64 16, i1 false), !dbg !1914 | |
%137 = bitcast [1 x i8]* %25 to i8*, !dbg !1914 | |
call void @llvm.memset.p0i8.i64(i8* %137, i8 0, i64 1, i1 false), !dbg !1914 | |
%138 = getelementptr [1 x i8], [1 x i8]* %25, i64 0, i64 0, !dbg !1914 | |
store i8 %.55, i8* %138, align 1, !dbg !1914 | |
%139 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %24, i32 0, i32 0, !dbg !1914 | |
store i8* %138, i8** %139, align 8, !dbg !1914 | |
%140 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %24, i32 0, i32 1, !dbg !1914 | |
store i64 1, i64* %140, align 8, !dbg !1914 | |
%141 = bitcast { i8*, i64 }* %24 to [2 x i64]*, !dbg !1914 | |
%142 = load [2 x i64], [2 x i64]* %141, align 8, !dbg !1914 | |
call void @strconv.format_digits.add_bytes-1(%strconv.format_digits.Buffer-1* %8, [2 x i64] %142, i8* %__.context_ptr), !dbg !1914 | |
call void @llvm.dbg.value(metadata i8 48, metadata !1891, metadata !DIExpression()), !dbg !1955 | |
%143 = getelementptr inbounds %strconv.Decimal_Slice, %strconv.Decimal_Slice* %3, i32 0, i32 1, !dbg !1956 | |
%144 = load i64, i64* %143, align 8, !dbg !1956 | |
%145 = icmp ne i64 %144, 0, !dbg !1956 | |
br i1 %145, label %if.then12, label %if.done13, !dbg !1956 | |
if.then12: ; preds = %switch.case.body8 | |
%146 = getelementptr inbounds %strconv.Decimal_Slice, %strconv.Decimal_Slice* %3, i32 0, i32 0, !dbg !1915 | |
%147 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %146, i32 0, i32 0, !dbg !1915 | |
%148 = load i8*, i8** %147, align 8, !dbg !1915 | |
%149 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %146, i32 0, i32 1, !dbg !1915 | |
%150 = load i64, i64* %149, align 8, !dbg !1915 | |
%151 = bitcast [2 x i64]* %26 to %..string*, !dbg !1915 | |
store %..string { i8* getelementptr inbounds ([60 x i8], [60 x i8]* @"csbs$8b", i64 0, i64 0), i64 59 }, %..string* %151, align 8, !dbg !1915 | |
%152 = load [2 x i64], [2 x i64]* %26, align 8, !dbg !1915 | |
call void @runtime.bounds_check_error([2 x i64] %152, i32 150, i32 21, i64 0, i64 %150), !dbg !1915 | |
%153 = load i8, i8* %148, align 1, !dbg !1915 | |
call void @llvm.dbg.value(metadata i8 %153, metadata !1891, metadata !DIExpression()), !dbg !1955 | |
br label %if.done13, !dbg !1956 | |
if.done13: ; preds = %if.then12, %switch.case.body8 | |
%.052 = phi i8 [ %153, %if.then12 ], [ 48, %switch.case.body8 ], !dbg !1939 | |
call void @llvm.dbg.value(metadata i8 %.052, metadata !1891, metadata !DIExpression()), !dbg !1955 | |
%154 = bitcast { i8*, i64 }* %27 to i8*, !dbg !1918 | |
call void @llvm.memset.p0i8.i64(i8* %154, i8 0, i64 16, i1 false), !dbg !1918 | |
%155 = bitcast [1 x i8]* %28 to i8*, !dbg !1918 | |
call void @llvm.memset.p0i8.i64(i8* %155, i8 0, i64 1, i1 false), !dbg !1918 | |
%156 = getelementptr [1 x i8], [1 x i8]* %28, i64 0, i64 0, !dbg !1918 | |
store i8 %.052, i8* %156, align 1, !dbg !1918 | |
%157 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %27, i32 0, i32 0, !dbg !1918 | |
store i8* %156, i8** %157, align 8, !dbg !1918 | |
%158 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %27, i32 0, i32 1, !dbg !1918 | |
store i64 1, i64* %158, align 8, !dbg !1918 | |
%159 = bitcast { i8*, i64 }* %27 to [2 x i64]*, !dbg !1918 | |
%160 = load [2 x i64], [2 x i64]* %159, align 8, !dbg !1918 | |
call void @strconv.format_digits.add_bytes-1(%strconv.format_digits.Buffer-1* %8, [2 x i64] %160, i8* %__.context_ptr), !dbg !1918 | |
%161 = icmp sgt i64 %4, 0, !dbg !1957 | |
br i1 %161, label %if.then14, label %if.done21, !dbg !1957 | |
if.then14: ; preds = %if.done13 | |
%162 = bitcast { i8*, i64 }* %29 to i8*, !dbg !1919 | |
call void @llvm.memset.p0i8.i64(i8* %162, i8 0, i64 16, i1 false), !dbg !1919 | |
%163 = bitcast [1 x i8]* %30 to i8*, !dbg !1919 | |
call void @llvm.memset.p0i8.i64(i8* %163, i8 0, i64 1, i1 false), !dbg !1919 | |
%164 = getelementptr [1 x i8], [1 x i8]* %30, i64 0, i64 0, !dbg !1919 | |
store i8 46, i8* %164, align 1, !dbg !1919 | |
%165 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %29, i32 0, i32 0, !dbg !1919 | |
store i8* %164, i8** %165, align 8, !dbg !1919 | |
%166 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %29, i32 0, i32 1, !dbg !1919 | |
store i64 1, i64* %166, align 8, !dbg !1919 | |
%167 = bitcast { i8*, i64 }* %29 to [2 x i64]*, !dbg !1919 | |
%168 = load [2 x i64], [2 x i64]* %167, align 8, !dbg !1919 | |
call void @strconv.format_digits.add_bytes-1(%strconv.format_digits.Buffer-1* %8, [2 x i64] %168, i8* %__.context_ptr), !dbg !1919 | |
call void @llvm.dbg.value(metadata i64 0, metadata !1893, metadata !DIExpression()), !dbg !1958 | |
call void @llvm.dbg.value(metadata i64 1, metadata !1893, metadata !DIExpression()), !dbg !1958 | |
call void @llvm.dbg.value(metadata i64 0, metadata !1896, metadata !DIExpression()), !dbg !1958 | |
%169 = load i64, i64* %143, align 8, !dbg !1959 | |
%170 = add i64 %4, 1, !dbg !1959 | |
%171 = icmp slt i64 %169, %170, !dbg !1959 | |
%172 = select i1 %171, i64 %169, i64 %170, !dbg !1959 | |
call void @llvm.dbg.value(metadata i64 %172, metadata !1896, metadata !DIExpression()), !dbg !1958 | |
%173 = icmp slt i64 1, %172, !dbg !1960 | |
br i1 %173, label %if.then15, label %if.done16, !dbg !1960 | |
if.then15: ; preds = %if.then14 | |
%174 = getelementptr inbounds %strconv.Decimal_Slice, %strconv.Decimal_Slice* %3, i32 0, i32 0, !dbg !1920 | |
%175 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %174, i32 0, i32 1, !dbg !1920 | |
%176 = load i64, i64* %175, align 8, !dbg !1920 | |
%177 = bitcast [2 x i64]* %31 to %..string*, !dbg !1920 | |
store %..string { i8* getelementptr inbounds ([60 x i8], [60 x i8]* @"csbs$8b", i64 0, i64 0), i64 59 }, %..string* %177, align 8, !dbg !1920 | |
%178 = load [2 x i64], [2 x i64]* %31, align 8, !dbg !1920 | |
call void @runtime.slice_expr_error_lo_hi([2 x i64] %178, i32 159, i32 32, i64 1, i64 %172, i64 %176), !dbg !1920 | |
%179 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %174, i32 0, i32 0, !dbg !1920 | |
%180 = load i8*, i8** %179, align 8, !dbg !1920 | |
%181 = getelementptr i8, i8* %180, i64 1, !dbg !1920 | |
%182 = sub i64 %172, 1, !dbg !1920 | |
%183 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %32, i32 0, i32 0, !dbg !1920 | |
store i8* %181, i8** %183, align 8, !dbg !1920 | |
%184 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %32, i32 0, i32 1, !dbg !1920 | |
store i64 %182, i64* %184, align 8, !dbg !1920 | |
%185 = bitcast { i8*, i64 }* %32 to [2 x i64]*, !dbg !1920 | |
%186 = load [2 x i64], [2 x i64]* %185, align 8, !dbg !1920 | |
call void @strconv.format_digits.add_bytes-1(%strconv.format_digits.Buffer-1* %8, [2 x i64] %186, i8* %__.context_ptr), !dbg !1920 | |
call void @llvm.dbg.value(metadata i64 %172, metadata !1893, metadata !DIExpression()), !dbg !1958 | |
br label %if.done16, !dbg !1960 | |
if.done16: ; preds = %if.then15, %if.then14 | |
%.048 = phi i64 [ %172, %if.then15 ], [ 1, %if.then14 ], !dbg !1958 | |
call void @llvm.dbg.value(metadata i64 %.048, metadata !1893, metadata !DIExpression()), !dbg !1958 | |
br label %for.loop17, !dbg !1961 | |
for.loop17: ; preds = %for.body18, %if.done16 | |
%.149 = phi i64 [ %.048, %if.done16 ], [ %195, %for.body18 ], !dbg !1958 | |
call void @llvm.dbg.value(metadata i64 %.149, metadata !1893, metadata !DIExpression()), !dbg !1958 | |
%187 = icmp sle i64 %.149, %4, !dbg !1961 | |
br i1 %187, label %for.body18, label %if.done21, !dbg !1961 | |
for.body18: ; preds = %for.loop17 | |
%188 = bitcast { i8*, i64 }* %33 to i8*, !dbg !1923 | |
call void @llvm.memset.p0i8.i64(i8* %188, i8 0, i64 16, i1 false), !dbg !1923 | |
%189 = bitcast [1 x i8]* %34 to i8*, !dbg !1923 | |
call void @llvm.memset.p0i8.i64(i8* %189, i8 0, i64 1, i1 false), !dbg !1923 | |
%190 = getelementptr [1 x i8], [1 x i8]* %34, i64 0, i64 0, !dbg !1923 | |
store i8 48, i8* %190, align 1, !dbg !1923 | |
%191 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %33, i32 0, i32 0, !dbg !1923 | |
store i8* %190, i8** %191, align 8, !dbg !1923 | |
%192 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %33, i32 0, i32 1, !dbg !1923 | |
store i64 1, i64* %192, align 8, !dbg !1923 | |
%193 = bitcast { i8*, i64 }* %33 to [2 x i64]*, !dbg !1923 | |
%194 = load [2 x i64], [2 x i64]* %193, align 8, !dbg !1923 | |
call void @strconv.format_digits.add_bytes-1(%strconv.format_digits.Buffer-1* %8, [2 x i64] %194, i8* %__.context_ptr), !dbg !1923 | |
%195 = add i64 %.149, 1, !dbg !1962 | |
call void @llvm.dbg.value(metadata i64 %195, metadata !1893, metadata !DIExpression()), !dbg !1958 | |
br label %for.loop17, !dbg !1961 | |
if.done21: ; preds = %for.loop17, %if.done13 | |
%196 = bitcast { i8*, i64 }* %35 to i8*, !dbg !1926 | |
call void @llvm.memset.p0i8.i64(i8* %196, i8 0, i64 16, i1 false), !dbg !1926 | |
%197 = bitcast [1 x i8]* %36 to i8*, !dbg !1926 | |
call void @llvm.memset.p0i8.i64(i8* %197, i8 0, i64 1, i1 false), !dbg !1926 | |
%198 = getelementptr [1 x i8], [1 x i8]* %36, i64 0, i64 0, !dbg !1926 | |
store i8 %5, i8* %198, align 1, !dbg !1926 | |
%199 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %35, i32 0, i32 0, !dbg !1926 | |
store i8* %198, i8** %199, align 8, !dbg !1926 | |
%200 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %35, i32 0, i32 1, !dbg !1926 | |
store i64 1, i64* %200, align 8, !dbg !1926 | |
%201 = bitcast { i8*, i64 }* %35 to [2 x i64]*, !dbg !1926 | |
%202 = load [2 x i64], [2 x i64]* %201, align 8, !dbg !1926 | |
call void @strconv.format_digits.add_bytes-1(%strconv.format_digits.Buffer-1* %8, [2 x i64] %202, i8* %__.context_ptr), !dbg !1926 | |
call void @llvm.dbg.value(metadata i64 0, metadata !1897, metadata !DIExpression()), !dbg !1955 | |
%203 = getelementptr inbounds %strconv.Decimal_Slice, %strconv.Decimal_Slice* %3, i32 0, i32 2, !dbg !1963 | |
%204 = load i64, i64* %203, align 8, !dbg !1963 | |
%205 = sub i64 %204, 1, !dbg !1963 | |
call void @llvm.dbg.value(metadata i64 %205, metadata !1897, metadata !DIExpression()), !dbg !1955 | |
%206 = load i64, i64* %143, align 8, !dbg !1964 | |
%207 = icmp eq i64 %206, 0, !dbg !1964 | |
%spec.select = select i1 %207, i64 0, i64 %205, !dbg !1964 | |
call void @llvm.dbg.value(metadata i64 %spec.select, metadata !1897, metadata !DIExpression()), !dbg !1955 | |
call void @llvm.dbg.value(metadata i8 43, metadata !1891, metadata !DIExpression()), !dbg !1955 | |
%208 = icmp slt i64 %spec.select, 0, !dbg !1965 | |
%209 = sub i64 0, %spec.select, !dbg !1965 | |
%.153 = select i1 %208, i8 45, i8 43, !dbg !1965 | |
%.144 = select i1 %208, i64 %209, i64 %spec.select, !dbg !1965 | |
call void @llvm.dbg.value(metadata i64 %.144, metadata !1897, metadata !DIExpression()), !dbg !1955 | |
call void @llvm.dbg.value(metadata i8 %.153, metadata !1891, metadata !DIExpression()), !dbg !1955 | |
%210 = bitcast { i8*, i64 }* %37 to i8*, !dbg !1927 | |
call void @llvm.memset.p0i8.i64(i8* %210, i8 0, i64 16, i1 false), !dbg !1927 | |
%211 = bitcast [1 x i8]* %38 to i8*, !dbg !1927 | |
call void @llvm.memset.p0i8.i64(i8* %211, i8 0, i64 1, i1 false), !dbg !1927 | |
%212 = getelementptr [1 x i8], [1 x i8]* %38, i64 0, i64 0, !dbg !1927 | |
store i8 %.153, i8* %212, align 1, !dbg !1927 | |
%213 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %37, i32 0, i32 0, !dbg !1927 | |
store i8* %212, i8** %213, align 8, !dbg !1927 | |
%214 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %37, i32 0, i32 1, !dbg !1927 | |
store i64 1, i64* %214, align 8, !dbg !1927 | |
%215 = bitcast { i8*, i64 }* %37 to [2 x i64]*, !dbg !1927 | |
%216 = load [2 x i64], [2 x i64]* %215, align 8, !dbg !1927 | |
call void @strconv.format_digits.add_bytes-1(%strconv.format_digits.Buffer-1* %8, [2 x i64] %216, i8* %__.context_ptr), !dbg !1927 | |
%217 = icmp slt i64 %.144, 10, !dbg !1966 | |
br i1 %217, label %switch.case.body26, label %switch.case.next, !dbg !1966 | |
switch.case.next: ; preds = %if.done21 | |
%218 = icmp slt i64 %.144, 100, !dbg !1966 | |
br i1 %218, label %switch.case.body28, label %switch.default.body, !dbg !1966 | |
switch.case.body26: ; preds = %if.done21 | |
%219 = trunc i64 %.144 to i8, !dbg !1928 | |
%220 = add i8 %219, 48, !dbg !1928 | |
%221 = bitcast { i8*, i64 }* %39 to i8*, !dbg !1928 | |
call void @llvm.memset.p0i8.i64(i8* %221, i8 0, i64 16, i1 false), !dbg !1928 | |
%222 = bitcast [2 x i8]* %40 to i8*, !dbg !1928 | |
call void @llvm.memset.p0i8.i64(i8* %222, i8 0, i64 2, i1 false), !dbg !1928 | |
%223 = getelementptr [2 x i8], [2 x i8]* %40, i64 0, i64 0, !dbg !1928 | |
store i8 48, i8* %223, align 1, !dbg !1928 | |
%224 = getelementptr [2 x i8], [2 x i8]* %40, i64 0, i64 1, !dbg !1928 | |
store i8 %220, i8* %224, align 1, !dbg !1928 | |
%225 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %39, i32 0, i32 0, !dbg !1928 | |
store i8* %223, i8** %225, align 8, !dbg !1928 | |
%226 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %39, i32 0, i32 1, !dbg !1928 | |
store i64 2, i64* %226, align 8, !dbg !1928 | |
%227 = bitcast { i8*, i64 }* %39 to [2 x i64]*, !dbg !1928 | |
%228 = load [2 x i64], [2 x i64]* %227, align 8, !dbg !1928 | |
call void @strconv.format_digits.add_bytes-1(%strconv.format_digits.Buffer-1* %8, [2 x i64] %228, i8* %__.context_ptr), !dbg !1928 | |
br label %switch.done, !dbg !1966 | |
switch.case.body28: ; preds = %switch.case.next | |
%229 = sdiv i64 %.144, 10, !dbg !1930 | |
%230 = trunc i64 %229 to i8, !dbg !1930 | |
%231 = add i8 %230, 48, !dbg !1930 | |
%232 = srem i64 %.144, 10, !dbg !1930 | |
%233 = trunc i64 %232 to i8, !dbg !1930 | |
%234 = add i8 %233, 48, !dbg !1930 | |
%235 = bitcast { i8*, i64 }* %41 to i8*, !dbg !1930 | |
call void @llvm.memset.p0i8.i64(i8* %235, i8 0, i64 16, i1 false), !dbg !1930 | |
%236 = bitcast [2 x i8]* %42 to i8*, !dbg !1930 | |
call void @llvm.memset.p0i8.i64(i8* %236, i8 0, i64 2, i1 false), !dbg !1930 | |
%237 = getelementptr [2 x i8], [2 x i8]* %42, i64 0, i64 0, !dbg !1930 | |
store i8 %231, i8* %237, align 1, !dbg !1930 | |
%238 = getelementptr [2 x i8], [2 x i8]* %42, i64 0, i64 1, !dbg !1930 | |
store i8 %234, i8* %238, align 1, !dbg !1930 | |
%239 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %41, i32 0, i32 0, !dbg !1930 | |
store i8* %237, i8** %239, align 8, !dbg !1930 | |
%240 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %41, i32 0, i32 1, !dbg !1930 | |
store i64 2, i64* %240, align 8, !dbg !1930 | |
%241 = bitcast { i8*, i64 }* %41 to [2 x i64]*, !dbg !1930 | |
%242 = load [2 x i64], [2 x i64]* %241, align 8, !dbg !1930 | |
call void @strconv.format_digits.add_bytes-1(%strconv.format_digits.Buffer-1* %8, [2 x i64] %242, i8* %__.context_ptr), !dbg !1930 | |
br label %switch.done, !dbg !1966 | |
switch.default.body: ; preds = %switch.case.next | |
%243 = sdiv i64 %.144, 100, !dbg !1931 | |
%244 = trunc i64 %243 to i8, !dbg !1931 | |
%245 = add i8 %244, 48, !dbg !1931 | |
%246 = sdiv i64 %.144, 10, !dbg !1931 | |
%247 = trunc i64 %246 to i8, !dbg !1931 | |
%248 = urem i8 %247, 10, !dbg !1931 | |
%249 = add i8 %248, 48, !dbg !1931 | |
%250 = srem i64 %.144, 10, !dbg !1931 | |
%251 = trunc i64 %250 to i8, !dbg !1931 | |
%252 = add i8 %251, 48, !dbg !1931 | |
%253 = bitcast { i8*, i64 }* %43 to i8*, !dbg !1931 | |
call void @llvm.memset.p0i8.i64(i8* %253, i8 0, i64 16, i1 false), !dbg !1931 | |
%254 = bitcast [3 x i8]* %44 to i8*, !dbg !1931 | |
call void @llvm.memset.p0i8.i64(i8* %254, i8 0, i64 3, i1 false), !dbg !1931 | |
%255 = getelementptr [3 x i8], [3 x i8]* %44, i64 0, i64 0, !dbg !1931 | |
store i8 %245, i8* %255, align 1, !dbg !1931 | |
%256 = getelementptr [3 x i8], [3 x i8]* %44, i64 0, i64 1, !dbg !1931 | |
store i8 %249, i8* %256, align 1, !dbg !1931 | |
%257 = getelementptr [3 x i8], [3 x i8]* %44, i64 0, i64 2, !dbg !1931 | |
store i8 %252, i8* %257, align 1, !dbg !1931 | |
%258 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %43, i32 0, i32 0, !dbg !1931 | |
store i8* %255, i8** %258, align 8, !dbg !1931 | |
%259 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %43, i32 0, i32 1, !dbg !1931 | |
store i64 3, i64* %259, align 8, !dbg !1931 | |
%260 = bitcast { i8*, i64 }* %43 to [2 x i64]*, !dbg !1931 | |
%261 = load [2 x i64], [2 x i64]* %260, align 8, !dbg !1931 | |
call void @strconv.format_digits.add_bytes-1(%strconv.format_digits.Buffer-1* %8, [2 x i64] %261, i8* %__.context_ptr), !dbg !1931 | |
br label %switch.done, !dbg !1966 | |
switch.done: ; preds = %switch.default.body, %switch.case.body28, %switch.case.body26 | |
%262 = call [2 x i64] @strconv.format_digits.to_bytes-0(%strconv.format_digits.Buffer-1* %8, i8* %__.context_ptr), !dbg !1932 | |
%263 = bitcast { i8*, i64 }* %45 to [2 x i64]*, !dbg !1932 | |
store [2 x i64] %262, [2 x i64]* %263, align 8, !dbg !1932 | |
ret [2 x i64] %262, !dbg !1932 | |
switch.case.body29: ; preds = %decls, %decls | |
call void @llvm.dbg.value(metadata i64 0, metadata !1898, metadata !DIExpression()), !dbg !1955 | |
call void @llvm.dbg.value(metadata i64 %4, metadata !1898, metadata !DIExpression()), !dbg !1955 | |
%264 = getelementptr inbounds %strconv.Decimal_Slice, %strconv.Decimal_Slice* %3, i32 0, i32 1, !dbg !1967 | |
%265 = load i64, i64* %264, align 8, !dbg !1967 | |
%266 = icmp sgt i64 %4, %265, !dbg !1967 | |
br i1 %266, label %cmp.and30, label %if.done32, !dbg !1967 | |
cmp.and30: ; preds = %switch.case.body29 | |
%267 = getelementptr inbounds %strconv.Decimal_Slice, %strconv.Decimal_Slice* %3, i32 0, i32 2, !dbg !1967 | |
%268 = load i64, i64* %267, align 8, !dbg !1967 | |
%269 = icmp sge i64 %265, %268, !dbg !1967 | |
%spec.select56 = select i1 %269, i64 %265, i64 %4, !dbg !1967 | |
br label %if.done32, !dbg !1967 | |
if.done32: ; preds = %cmp.and30, %switch.case.body29 | |
%.0 = phi i64 [ %4, %switch.case.body29 ], [ %spec.select56, %cmp.and30 ], !dbg !1939 | |
call void @llvm.dbg.value(metadata i64 %.0, metadata !1898, metadata !DIExpression()), !dbg !1955 | |
%spec.select57 = select i1 %1, i64 6, i64 %.0, !dbg !1968 | |
call void @llvm.dbg.value(metadata i64 %spec.select57, metadata !1898, metadata !DIExpression()), !dbg !1955 | |
call void @llvm.dbg.value(metadata i64 0, metadata !1899, metadata !DIExpression()), !dbg !1955 | |
%270 = getelementptr inbounds %strconv.Decimal_Slice, %strconv.Decimal_Slice* %3, i32 0, i32 2, !dbg !1969 | |
%271 = load i64, i64* %270, align 8, !dbg !1969 | |
%272 = sub i64 %271, 1, !dbg !1969 | |
call void @llvm.dbg.value(metadata i64 %272, metadata !1899, metadata !DIExpression()), !dbg !1955 | |
%273 = icmp slt i64 %272, -4, !dbg !1970 | |
br i1 %273, label %if.then35, label %cmp.or, !dbg !1970 | |
cmp.or: ; preds = %if.done32 | |
%274 = icmp sge i64 %272, %spec.select57, !dbg !1970 | |
br i1 %274, label %if.then35, label %if.done38, !dbg !1970 | |
if.then35: ; preds = %cmp.or, %if.done32 | |
%275 = load i64, i64* %264, align 8, !dbg !1971 | |
%276 = icmp sgt i64 %4, %275, !dbg !1971 | |
%spec.select58 = select i1 %276, i64 %275, i64 %4, !dbg !1971 | |
call void @llvm.dbg.value(metadata i64 %spec.select58, metadata !1879, metadata !DIExpression()), !dbg !1941 | |
%277 = sub i64 %spec.select58, 1, !dbg !1933 | |
%278 = add i8 %5, 101, !dbg !1933 | |
%279 = sub i8 %278, 103, !dbg !1933 | |
%280 = bitcast { i8*, i64 }* %7 to [2 x i64]*, !dbg !1933 | |
%281 = load [2 x i64], [2 x i64]* %280, align 8, !dbg !1933 | |
%282 = call [2 x i64] @strconv.format_digits([2 x i64] %281, i1 %1, i1 %2, %strconv.Decimal_Slice* %3, i64 %277, i8 %279, i8* %__.context_ptr), !dbg !1933 | |
%283 = bitcast { i8*, i64 }* %46 to [2 x i64]*, !dbg !1933 | |
store [2 x i64] %282, [2 x i64]* %283, align 8, !dbg !1933 | |
ret [2 x i64] %282, !dbg !1933 | |
if.done38: ; preds = %cmp.or | |
%284 = icmp sgt i64 %4, %271, !dbg !1972 | |
br i1 %284, label %if.then39, label %if.done40, !dbg !1972 | |
if.then39: ; preds = %if.done38 | |
%285 = load i64, i64* %264, align 8, !dbg !1973 | |
call void @llvm.dbg.value(metadata i64 %285, metadata !1879, metadata !DIExpression()), !dbg !1941 | |
br label %if.done40, !dbg !1972 | |
if.done40: ; preds = %if.then39, %if.done38 | |
%.146 = phi i64 [ %285, %if.then39 ], [ %4, %if.done38 ], !dbg !1939 | |
call void @llvm.dbg.value(metadata i64 %.146, metadata !1879, metadata !DIExpression()), !dbg !1941 | |
%286 = load i64, i64* %270, align 8, !dbg !1936 | |
%287 = sub i64 %.146, %286, !dbg !1936 | |
%288 = icmp sgt i64 %287, 0, !dbg !1936 | |
%289 = select i1 %288, i64 %287, i64 0, !dbg !1936 | |
%290 = bitcast { i8*, i64 }* %7 to [2 x i64]*, !dbg !1936 | |
%291 = load [2 x i64], [2 x i64]* %290, align 8, !dbg !1936 | |
%292 = call [2 x i64] @strconv.format_digits([2 x i64] %291, i1 %1, i1 %2, %strconv.Decimal_Slice* %3, i64 %289, i8 102, i8* %__.context_ptr), !dbg !1936 | |
%293 = bitcast { i8*, i64 }* %47 to [2 x i64]*, !dbg !1936 | |
store [2 x i64] %292, [2 x i64]* %293, align 8, !dbg !1936 | |
ret [2 x i64] %292, !dbg !1936 | |
switch.default.body41: ; preds = %decls | |
%294 = bitcast { i8*, i64 }* %48 to i8*, !dbg !1937 | |
call void @llvm.memset.p0i8.i64(i8* %294, i8 0, i64 16, i1 false), !dbg !1937 | |
%295 = bitcast [2 x i8]* %49 to i8*, !dbg !1937 | |
call void @llvm.memset.p0i8.i64(i8* %295, i8 0, i64 2, i1 false), !dbg !1937 | |
%296 = getelementptr [2 x i8], [2 x i8]* %49, i64 0, i64 0, !dbg !1937 | |
store i8 37, i8* %296, align 1, !dbg !1937 | |
%297 = getelementptr [2 x i8], [2 x i8]* %49, i64 0, i64 1, !dbg !1937 | |
store i8 %5, i8* %297, align 1, !dbg !1937 | |
%298 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %48, i32 0, i32 0, !dbg !1937 | |
store i8* %296, i8** %298, align 8, !dbg !1937 | |
%299 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %48, i32 0, i32 1, !dbg !1937 | |
store i64 2, i64* %299, align 8, !dbg !1937 | |
%300 = bitcast { i8*, i64 }* %48 to [2 x i64]*, !dbg !1937 | |
%301 = load [2 x i64], [2 x i64]* %300, align 8, !dbg !1937 | |
call void @strconv.format_digits.add_bytes-1(%strconv.format_digits.Buffer-1* %8, [2 x i64] %301, i8* %__.context_ptr), !dbg !1937 | |
%302 = call [2 x i64] @strconv.format_digits.to_bytes-0(%strconv.format_digits.Buffer-1* %8, i8* %__.context_ptr), !dbg !1938 | |
%303 = bitcast { i8*, i64 }* %50 to [2 x i64]*, !dbg !1938 | |
store [2 x i64] %302, [2 x i64]* %303, align 8, !dbg !1938 | |
ret [2 x i64] %302, !dbg !1938 | |
} | |
define internal i64 @os.get_last_error(i8* noalias nocapture nonnull %__.context_ptr) !dbg !1976 { | |
decls: | |
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !1980, metadata !DIExpression()), !dbg !1981 | |
%0 = call i64* @__errno_location(), !dbg !1982 | |
%1 = load i64, i64* %0, align 8, !dbg !1982 | |
ret i64 %1, !dbg !1982 | |
} | |
define internal void @strconv.round_shortest(%strconv_decimal.Decimal* %0, i64 %1, i64 %2, %strconv.Float_Info* %3, i8* noalias nocapture nonnull %__.context_ptr) !dbg !1984 { | |
decls: | |
call void @llvm.dbg.declare(metadata %strconv_decimal.Decimal* %4, metadata !1995, metadata !DIExpression()), !dbg !2010 | |
%4 = alloca %strconv_decimal.Decimal, align 8, !dbg !2010 | |
call void @llvm.dbg.declare(metadata %strconv_decimal.Decimal* %5, metadata !1999, metadata !DIExpression()), !dbg !2011 | |
%5 = alloca %strconv_decimal.Decimal, align 8, !dbg !2011 | |
%6 = alloca [2 x i64], align 8, !dbg !2012 | |
%7 = alloca [2 x i64], align 8, !dbg !2015 | |
%8 = alloca [2 x i64], align 8, !dbg !2016 | |
call void @llvm.dbg.value(metadata %strconv_decimal.Decimal* %0, metadata !1988, metadata !DIExpression()), !dbg !2019 | |
call void @llvm.dbg.value(metadata i64 %1, metadata !1989, metadata !DIExpression()), !dbg !2019 | |
call void @llvm.dbg.value(metadata i64 %2, metadata !1990, metadata !DIExpression()), !dbg !2019 | |
call void @llvm.dbg.value(metadata %strconv.Float_Info* %3, metadata !1991, metadata !DIExpression()), !dbg !2019 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1992, metadata !DIExpression()), !dbg !2020 | |
%9 = icmp eq i64 %1, 0, !dbg !2021 | |
br i1 %9, label %if.then, label %if.done, !dbg !2021 | |
if.then: ; preds = %decls | |
%10 = getelementptr inbounds %strconv_decimal.Decimal, %strconv_decimal.Decimal* %0, i32 0, i32 1, !dbg !2022 | |
store i64 0, i64* %10, align 8, !dbg !2022 | |
ret void, !dbg !2025 | |
if.done: ; preds = %decls | |
call void @llvm.dbg.value(metadata i64 0, metadata !1993, metadata !DIExpression()), !dbg !2026 | |
%11 = getelementptr inbounds %strconv.Float_Info, %strconv.Float_Info* %3, i32 0, i32 2, !dbg !2027 | |
%12 = load i64, i64* %11, align 8, !dbg !2027 | |
%13 = add i64 %12, 1, !dbg !2027 | |
call void @llvm.dbg.value(metadata i64 %13, metadata !1993, metadata !DIExpression()), !dbg !2026 | |
%14 = icmp sgt i64 %2, %13, !dbg !2028 | |
br i1 %14, label %cmp.and, label %if.done2, !dbg !2028 | |
cmp.and: ; preds = %if.done | |
%15 = getelementptr inbounds %strconv_decimal.Decimal, %strconv_decimal.Decimal* %0, i32 0, i32 2, !dbg !2028 | |
%16 = load i64, i64* %15, align 8, !dbg !2028 | |
%17 = getelementptr inbounds %strconv_decimal.Decimal, %strconv_decimal.Decimal* %0, i32 0, i32 1, !dbg !2028 | |
%18 = load i64, i64* %17, align 8, !dbg !2028 | |
%19 = sub i64 %16, %18, !dbg !2028 | |
%20 = mul i64 332, %19, !dbg !2028 | |
%21 = getelementptr inbounds %strconv.Float_Info, %strconv.Float_Info* %3, i32 0, i32 0, !dbg !2028 | |
%22 = load i64, i64* %21, align 8, !dbg !2028 | |
%23 = sub i64 %2, %22, !dbg !2028 | |
%24 = mul i64 100, %23, !dbg !2028 | |
%25 = icmp sge i64 %20, %24, !dbg !2028 | |
br i1 %25, label %if.then1, label %if.done2, !dbg !2028 | |
if.then1: ; preds = %for.interval.loop, %cmp.and | |
ret void, !dbg !2029 | |
if.done2: ; preds = %cmp.and, %if.done | |
%26 = bitcast %strconv_decimal.Decimal* %4 to i8*, !dbg !2010 | |
call void @llvm.memset.p0i8.i64(i8* %26, i8 0, i64 408, i1 false), !dbg !2010 | |
call void @llvm.dbg.value(metadata %strconv_decimal.Decimal* null, metadata !1996, metadata !DIExpression()), !dbg !2026 | |
call void @llvm.dbg.value(metadata %strconv_decimal.Decimal* %4, metadata !1996, metadata !DIExpression()), !dbg !2026 | |
%27 = mul i64 2, %1, !dbg !2032 | |
%28 = sub i64 %27, 1, !dbg !2032 | |
call void @strconv_decimal.assign(%strconv_decimal.Decimal* %4, i64 %28, i8* %__.context_ptr), !dbg !2032 | |
%29 = getelementptr inbounds %strconv.Float_Info, %strconv.Float_Info* %3, i32 0, i32 0, !dbg !2033 | |
%30 = load i64, i64* %29, align 8, !dbg !2033 | |
%31 = sub i64 %2, %30, !dbg !2033 | |
%32 = sub i64 %31, 1, !dbg !2033 | |
call void @strconv_decimal.shift(%strconv_decimal.Decimal* %4, i64 %32, i8* %__.context_ptr), !dbg !2033 | |
call void @llvm.dbg.value(metadata i64 0, metadata !1997, metadata !DIExpression()), !dbg !2026 | |
call void @llvm.dbg.value(metadata i64 0, metadata !1998, metadata !DIExpression()), !dbg !2026 | |
%33 = load i64, i64* %29, align 8, !dbg !2034 | |
%34 = icmp ult i64 %33, 64, !dbg !2034 | |
%35 = shl i64 1, %33, !dbg !2034 | |
%36 = select i1 %34, i64 %35, i64 0, !dbg !2034 | |
%37 = icmp ugt i64 %1, %36, !dbg !2034 | |
br i1 %37, label %if.then3, label %cmp.or, !dbg !2034 | |
cmp.or: ; preds = %if.done2 | |
%38 = icmp eq i64 %2, %13, !dbg !2034 | |
br i1 %38, label %if.then3, label %if.else, !dbg !2034 | |
if.then3: ; preds = %cmp.or, %if.done2 | |
%39 = sub i64 %1, 1, !dbg !2035 | |
call void @llvm.dbg.value(metadata i64 %39, metadata !1997, metadata !DIExpression()), !dbg !2026 | |
call void @llvm.dbg.value(metadata i64 %2, metadata !1998, metadata !DIExpression()), !dbg !2026 | |
br label %if.done4, !dbg !2034 | |
if.else: ; preds = %cmp.or | |
call void @llvm.dbg.value(metadata i64 %28, metadata !1997, metadata !DIExpression()), !dbg !2026 | |
%40 = sub i64 %2, 1, !dbg !2038 | |
call void @llvm.dbg.value(metadata i64 %40, metadata !1998, metadata !DIExpression()), !dbg !2026 | |
br label %if.done4, !dbg !2034 | |
if.done4: ; preds = %if.else, %if.then3 | |
%.024 = phi i64 [ %2, %if.then3 ], [ %40, %if.else ], !dbg !2040 | |
%.023 = phi i64 [ %39, %if.then3 ], [ %28, %if.else ], !dbg !2040 | |
call void @llvm.dbg.value(metadata i64 %.023, metadata !1997, metadata !DIExpression()), !dbg !2026 | |
call void @llvm.dbg.value(metadata i64 %.024, metadata !1998, metadata !DIExpression()), !dbg !2026 | |
%41 = bitcast %strconv_decimal.Decimal* %5 to i8*, !dbg !2011 | |
call void @llvm.memset.p0i8.i64(i8* %41, i8 0, i64 408, i1 false), !dbg !2011 | |
call void @llvm.dbg.value(metadata %strconv_decimal.Decimal* null, metadata !2000, metadata !DIExpression()), !dbg !2026 | |
call void @llvm.dbg.value(metadata %strconv_decimal.Decimal* %5, metadata !2000, metadata !DIExpression()), !dbg !2026 | |
%42 = mul i64 2, %.023, !dbg !2041 | |
%43 = add i64 %42, 1, !dbg !2041 | |
call void @strconv_decimal.assign(%strconv_decimal.Decimal* %5, i64 %43, i8* %__.context_ptr), !dbg !2041 | |
%44 = load i64, i64* %29, align 8, !dbg !2042 | |
%45 = sub i64 %.024, %44, !dbg !2042 | |
%46 = sub i64 %45, 1, !dbg !2042 | |
call void @strconv_decimal.shift(%strconv_decimal.Decimal* %5, i64 %46, i8* %__.context_ptr), !dbg !2042 | |
call void @llvm.dbg.value(metadata i8 0, metadata !2001, metadata !DIExpression()), !dbg !2026 | |
%47 = urem i64 %1, 2, !dbg !2043 | |
%48 = icmp eq i64 %47, 0, !dbg !2043 | |
call void @llvm.dbg.value(metadata i8 undef, metadata !2001, metadata !DIExpression()), !dbg !2026 | |
call void @llvm.dbg.value(metadata i64 0, metadata !2002, metadata !DIExpression()), !dbg !2044 | |
br label %for.interval.loop, !dbg !2045 | |
for.interval.loop: ; preds = %for.interval.post, %if.done4 | |
%.027 = phi i64 [ 0, %if.done4 ], [ %94, %for.interval.post ], !dbg !2045 | |
%.026 = phi i64 [ 0, %if.done4 ], [ %93, %for.interval.post ], !dbg !2045 | |
%49 = getelementptr inbounds %strconv_decimal.Decimal, %strconv_decimal.Decimal* %0, i32 0, i32 1, !dbg !2045 | |
%50 = load i64, i64* %49, align 8, !dbg !2045 | |
%51 = icmp slt i64 %.026, %50, !dbg !2045 | |
br i1 %51, label %for.interval.body, label %if.then1, !dbg !2045 | |
for.interval.body: ; preds = %for.interval.loop | |
call void @llvm.dbg.value(metadata i64 %.026, metadata !2002, metadata !DIExpression()), !dbg !2044 | |
call void @llvm.dbg.value(metadata i8 0, metadata !2004, metadata !DIExpression()), !dbg !2046 | |
call void @llvm.dbg.value(metadata i8 48, metadata !2004, metadata !DIExpression()), !dbg !2046 | |
%52 = getelementptr inbounds %strconv_decimal.Decimal, %strconv_decimal.Decimal* %5, i32 0, i32 1, !dbg !2047 | |
%53 = load i64, i64* %52, align 8, !dbg !2047 | |
%54 = icmp slt i64 %.026, %53, !dbg !2047 | |
br i1 %54, label %if.then5, label %if.done6, !dbg !2047 | |
if.then5: ; preds = %for.interval.body | |
%55 = getelementptr inbounds %strconv_decimal.Decimal, %strconv_decimal.Decimal* %5, i32 0, i32 0, !dbg !2012 | |
%56 = getelementptr [384 x i8], [384 x i8]* %55, i64 0, i64 %.026, !dbg !2012 | |
%57 = bitcast [2 x i64]* %6 to %..string*, !dbg !2012 | |
store %..string { i8* getelementptr inbounds ([60 x i8], [60 x i8]* @"csbs$8b", i64 0, i64 0), i64 59 }, %..string* %57, align 8, !dbg !2012 | |
%58 = load [2 x i64], [2 x i64]* %6, align 8, !dbg !2012 | |
call void @runtime.bounds_check_error([2 x i64] %58, i32 261, i32 21, i64 %.026, i64 384), !dbg !2012 | |
%59 = load i8, i8* %56, align 1, !dbg !2012 | |
call void @llvm.dbg.value(metadata i8 %59, metadata !2004, metadata !DIExpression()), !dbg !2046 | |
br label %if.done6, !dbg !2047 | |
if.done6: ; preds = %if.then5, %for.interval.body | |
%.025 = phi i8 [ %59, %if.then5 ], [ 48, %for.interval.body ], !dbg !2046 | |
call void @llvm.dbg.value(metadata i8 %.025, metadata !2004, metadata !DIExpression()), !dbg !2046 | |
call void @llvm.dbg.value(metadata i8 0, metadata !2006, metadata !DIExpression()), !dbg !2046 | |
%60 = getelementptr inbounds %strconv_decimal.Decimal, %strconv_decimal.Decimal* %0, i32 0, i32 0, !dbg !2015 | |
%61 = getelementptr [384 x i8], [384 x i8]* %60, i64 0, i64 %.026, !dbg !2015 | |
%62 = bitcast [2 x i64]* %7 to %..string*, !dbg !2015 | |
store %..string { i8* getelementptr inbounds ([60 x i8], [60 x i8]* @"csbs$8b", i64 0, i64 0), i64 59 }, %..string* %62, align 8, !dbg !2015 | |
%63 = load [2 x i64], [2 x i64]* %7, align 8, !dbg !2015 | |
call void @runtime.bounds_check_error([2 x i64] %63, i32 263, i32 17, i64 %.026, i64 384), !dbg !2015 | |
%64 = load i8, i8* %61, align 1, !dbg !2015 | |
call void @llvm.dbg.value(metadata i8 %64, metadata !2006, metadata !DIExpression()), !dbg !2046 | |
call void @llvm.dbg.value(metadata i8 0, metadata !2007, metadata !DIExpression()), !dbg !2046 | |
call void @llvm.dbg.value(metadata i8 48, metadata !2007, metadata !DIExpression()), !dbg !2046 | |
%65 = getelementptr inbounds %strconv_decimal.Decimal, %strconv_decimal.Decimal* %4, i32 0, i32 1, !dbg !2048 | |
%66 = load i64, i64* %65, align 8, !dbg !2048 | |
%67 = icmp slt i64 %.026, %66, !dbg !2048 | |
br i1 %67, label %if.then7, label %if.done8, !dbg !2048 | |
if.then7: ; preds = %if.done6 | |
%68 = getelementptr inbounds %strconv_decimal.Decimal, %strconv_decimal.Decimal* %4, i32 0, i32 0, !dbg !2016 | |
%69 = getelementptr [384 x i8], [384 x i8]* %68, i64 0, i64 %.026, !dbg !2016 | |
%70 = bitcast [2 x i64]* %8 to %..string*, !dbg !2016 | |
store %..string { i8* getelementptr inbounds ([60 x i8], [60 x i8]* @"csbs$8b", i64 0, i64 0), i64 59 }, %..string* %70, align 8, !dbg !2016 | |
%71 = load [2 x i64], [2 x i64]* %8, align 8, !dbg !2016 | |
call void @runtime.bounds_check_error([2 x i64] %71, i32 266, i32 21, i64 %.026, i64 384), !dbg !2016 | |
%72 = load i8, i8* %69, align 1, !dbg !2016 | |
call void @llvm.dbg.value(metadata i8 %72, metadata !2007, metadata !DIExpression()), !dbg !2046 | |
br label %if.done8, !dbg !2048 | |
if.done8: ; preds = %if.then7, %if.done6 | |
%.0 = phi i8 [ %72, %if.then7 ], [ 48, %if.done6 ], !dbg !2046 | |
call void @llvm.dbg.value(metadata i8 %.0, metadata !2007, metadata !DIExpression()), !dbg !2046 | |
call void @llvm.dbg.value(metadata i8 0, metadata !2008, metadata !DIExpression()), !dbg !2046 | |
%73 = icmp ne i8 %.025, %64, !dbg !2049 | |
br i1 %73, label %logical.cmp.done10, label %logical.cmp.rhs, !dbg !2049 | |
logical.cmp.rhs: ; preds = %if.done8 | |
%74 = add i64 %.026, 1, !dbg !2049 | |
%75 = load i64, i64* %52, align 8, !dbg !2049 | |
%76 = icmp eq i64 %74, %75, !dbg !2049 | |
%77 = zext i1 %76 to i8, !dbg !2049 | |
%78 = select i1 %48, i8 %77, i8 0, !dbg !2049 | |
br label %logical.cmp.done10, !dbg !2049 | |
logical.cmp.done10: ; preds = %logical.cmp.rhs, %if.done8 | |
%79 = phi i8 [ 1, %if.done8 ], [ %78, %logical.cmp.rhs ], !dbg !2049 | |
call void @llvm.dbg.value(metadata i8 %79, metadata !2008, metadata !DIExpression()), !dbg !2046 | |
call void @llvm.dbg.value(metadata i8 0, metadata !2009, metadata !DIExpression()), !dbg !2046 | |
%80 = icmp ne i8 %64, %.0, !dbg !2050 | |
%.not = xor i1 %80, true, !dbg !2050 | |
%brmerge = or i1 %.not, %48, !dbg !2050 | |
%.mux = select i1 %.not, i8 0, i8 1, !dbg !2050 | |
br i1 %brmerge, label %logical.cmp.done15, label %cmp.or12, !dbg !2050 | |
cmp.or12: ; preds = %logical.cmp.done10 | |
%81 = add i8 %64, 1, !dbg !2050 | |
%82 = icmp ult i8 %81, %.0, !dbg !2050 | |
br i1 %82, label %logical.cmp.done15, label %logical.cmp.rhs13, !dbg !2050 | |
logical.cmp.rhs13: ; preds = %cmp.or12 | |
%83 = add i64 %.026, 1, !dbg !2050 | |
%84 = load i64, i64* %65, align 8, !dbg !2050 | |
%85 = icmp slt i64 %83, %84, !dbg !2050 | |
%86 = zext i1 %85 to i8, !dbg !2050 | |
br label %logical.cmp.done15, !dbg !2050 | |
logical.cmp.done15: ; preds = %logical.cmp.done10, %cmp.or12, %logical.cmp.rhs13 | |
%87 = phi i8 [ %.mux, %logical.cmp.done10 ], [ 1, %cmp.or12 ], [ %86, %logical.cmp.rhs13 ], !dbg !2050 | |
call void @llvm.dbg.value(metadata i8 %87, metadata !2009, metadata !DIExpression()), !dbg !2046 | |
%88 = trunc i8 %79 to i1, !dbg !2051 | |
br i1 %88, label %cmp.and16, label %if.done20, !dbg !2051 | |
cmp.and16: ; preds = %logical.cmp.done15 | |
%89 = trunc i8 %87 to i1, !dbg !2051 | |
br i1 %89, label %if.then17, label %if.done18, !dbg !2051 | |
if.then17: ; preds = %cmp.and16 | |
%90 = add i64 %.026, 1, !dbg !2052 | |
call void @strconv_decimal.round(%strconv_decimal.Decimal* %0, i64 %90, i8* %__.context_ptr), !dbg !2052 | |
ret void, !dbg !2055 | |
if.done18: ; preds = %cmp.and16 | |
br i1 %88, label %if.then19, label %if.done20, !dbg !2056 | |
if.then19: ; preds = %if.done18 | |
%91 = add i64 %.026, 1, !dbg !2057 | |
call void @strconv_decimal.round_down(%strconv_decimal.Decimal* %0, i64 %91, i8* %__.context_ptr), !dbg !2057 | |
ret void, !dbg !2060 | |
if.done20: ; preds = %logical.cmp.done15, %if.done18 | |
%92 = trunc i8 %87 to i1, !dbg !2061 | |
%93 = add i64 %.026, 1, !dbg !2026 | |
br i1 %92, label %if.then21, label %for.interval.post, !dbg !2061 | |
if.then21: ; preds = %if.done20 | |
call void @strconv_decimal.round_up(%strconv_decimal.Decimal* %0, i64 %93, i8* %__.context_ptr), !dbg !2062 | |
ret void, !dbg !2065 | |
for.interval.post: ; preds = %if.done20 | |
%94 = add i64 %.027, 1, !dbg !2045 | |
br label %for.interval.loop, !dbg !2045 | |
} | |
define dso_local void @runtime.__dynamic_map_reserve(%runtime.Map_Header* %0, i64 %1, %runtime.Source_Code_Location* %2, i8* noalias nocapture nonnull %__.context_ptr) !dbg !2066 { | |
decls: | |
%3 = alloca [2 x i64], align 8, !dbg !2082 | |
call void @llvm.dbg.value(metadata i64 %1, metadata !2070, metadata !DIExpression()), !dbg !2083 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !2071, metadata !DIExpression()), !dbg !2084 | |
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %4, metadata !2072, metadata !DIExpression()), !dbg !2085 | |
%4 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 0, !dbg !2086 | |
%5 = load %runtime.Raw_Map*, %runtime.Raw_Map** %4, align 8, !dbg !2086 | |
%6 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %5, i32 0, i32 1, !dbg !2086 | |
call void @llvm.dbg.declare(metadata i64* %7, metadata !2074, metadata !DIExpression()), !dbg !2085 | |
%7 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 2, !dbg !2086 | |
%8 = load i64, i64* %7, align 8, !dbg !2086 | |
call void @llvm.dbg.declare(metadata i64* %9, metadata !2075, metadata !DIExpression()), !dbg !2085 | |
%9 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 3, !dbg !2086 | |
%10 = load i64, i64* %9, align 8, !dbg !2086 | |
%11 = bitcast %runtime.Raw_Dynamic_Array* %6 to i8*, !dbg !2086 | |
%12 = call i8 @runtime.__dynamic_array_reserve(i8* %11, i64 %8, i64 %10, i64 %1, %runtime.Source_Code_Location* %2, i8* %__.context_ptr), !dbg !2086 | |
call void @llvm.dbg.value(metadata i64 0, metadata !2076, metadata !DIExpression()), !dbg !2087 | |
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %4, metadata !2072, metadata !DIExpression()), !dbg !2085 | |
%13 = load %runtime.Raw_Map*, %runtime.Raw_Map** %4, align 8, !dbg !2088 | |
%14 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %13, i32 0, i32 0, !dbg !2088 | |
%15 = getelementptr inbounds { i64*, i64 }, { i64*, i64 }* %14, i32 0, i32 1, !dbg !2088 | |
%16 = load i64, i64* %15, align 8, !dbg !2088 | |
call void @llvm.dbg.value(metadata i64 %16, metadata !2076, metadata !DIExpression()), !dbg !2087 | |
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %4, metadata !2072, metadata !DIExpression()), !dbg !2085 | |
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %4, metadata !2072, metadata !DIExpression()), !dbg !2085 | |
%17 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %13, i32 0, i32 1, !dbg !2089 | |
%18 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %17, i32 0, i32 3, !dbg !2089 | |
%19 = bitcast %runtime.Allocator* %18 to [2 x i64]*, !dbg !2089 | |
%20 = load [2 x i64], [2 x i64]* %19, align 8, !dbg !2089 | |
%21 = call i8 @runtime.__slice_resize-10430({ i64*, i64 }* %14, i64 %1, [2 x i64] %20, %runtime.Source_Code_Location* %2, i8* %__.context_ptr), !dbg !2089 | |
call void @llvm.dbg.value(metadata i64 0, metadata !2077, metadata !DIExpression()), !dbg !2090 | |
br label %for.interval.loop, !dbg !2091 | |
for.interval.loop: ; preds = %for.interval.body, %decls | |
%.01 = phi i64 [ %16, %decls ], [ %32, %for.interval.body ], !dbg !2091 | |
%.0 = phi i64 [ 0, %decls ], [ %33, %for.interval.body ], !dbg !2091 | |
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %4, metadata !2079, metadata !DIExpression()), !dbg !2092 | |
%22 = load %runtime.Raw_Map*, %runtime.Raw_Map** %4, align 8, !dbg !2091 | |
%23 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %22, i32 0, i32 0, !dbg !2091 | |
%24 = getelementptr inbounds { i64*, i64 }, { i64*, i64 }* %23, i32 0, i32 1, !dbg !2091 | |
%25 = load i64, i64* %24, align 8, !dbg !2091 | |
%26 = icmp slt i64 %.01, %25, !dbg !2091 | |
br i1 %26, label %for.interval.body, label %for.interval.done, !dbg !2091 | |
for.interval.body: ; preds = %for.interval.loop | |
call void @llvm.dbg.value(metadata i64 %.01, metadata !2077, metadata !DIExpression()), !dbg !2090 | |
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %4, metadata !2080, metadata !DIExpression()), !dbg !2093 | |
%27 = getelementptr inbounds { i64*, i64 }, { i64*, i64 }* %23, i32 0, i32 0, !dbg !2082 | |
%28 = load i64*, i64** %27, align 8, !dbg !2082 | |
%29 = bitcast [2 x i64]* %3 to %..string*, !dbg !2082 | |
store %..string { i8* getelementptr inbounds ([67 x i8], [67 x i8]* @"csbs$90", i64 0, i64 0), i64 66 }, %..string* %29, align 8, !dbg !2082 | |
%30 = load [2 x i64], [2 x i64]* %3, align 8, !dbg !2082 | |
call void @runtime.bounds_check_error([2 x i64] %30, i32 191, i32 12, i64 %.01, i64 %25), !dbg !2082 | |
%31 = getelementptr i64, i64* %28, i64 %.01, !dbg !2082 | |
store i64 -1, i64* %31, align 8, !dbg !2082 | |
%32 = add i64 %.01, 1, !dbg !2091 | |
%33 = add i64 %.0, 1, !dbg !2091 | |
br label %for.interval.loop, !dbg !2091 | |
for.interval.done: ; preds = %for.interval.loop | |
ret void, !dbg !2084 | |
} | |
define internal i32 @os.close(i32 %0, i8* noalias nocapture nonnull %__.context_ptr) !dbg !2094 { | |
decls: | |
call void @llvm.dbg.value(metadata i32 %0, metadata !2099, metadata !DIExpression()), !dbg !2103 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !2100, metadata !DIExpression()), !dbg !2104 | |
call void @llvm.dbg.value(metadata i32 0, metadata !2101, metadata !DIExpression()), !dbg !2105 | |
%1 = call i32 @close(i32 %0), !dbg !2106 | |
call void @llvm.dbg.value(metadata i32 %1, metadata !2101, metadata !DIExpression()), !dbg !2105 | |
%2 = icmp eq i32 %1, -1, !dbg !2107 | |
br i1 %2, label %if.then, label %if.done, !dbg !2107 | |
if.then: ; preds = %decls | |
%3 = call i64 @os.get_last_error(i8* %__.context_ptr), !dbg !2108 | |
%4 = trunc i64 %3 to i32, !dbg !2108 | |
ret i32 %4, !dbg !2108 | |
if.done: ; preds = %decls | |
ret i32 0, !dbg !2111 | |
} | |
define dso_local void @runtime.__dynamic_map_rehash(%runtime.Map_Header* %0, i64 %1, %runtime.Source_Code_Location* %2, i8* noalias nocapture nonnull %__.context_ptr) !dbg !2112 { | |
decls: | |
%3 = alloca %runtime.Allocator, align 8 | |
%4 = alloca %runtime.Allocator, align 8 | |
%5 = alloca { { i8*, i64 }, i8 }, align 8, !dbg !2147 | |
call void @llvm.dbg.declare(metadata %runtime.Context* %6, metadata !2116, metadata !DIExpression()), !dbg !2149 | |
%6 = alloca %runtime.Context, align 8, !dbg !2149 | |
%7 = alloca %runtime.Context, align 8, !dbg !2150 | |
call void @llvm.dbg.declare(metadata %runtime.Raw_Map* %8, metadata !2122, metadata !DIExpression()), !dbg !2151 | |
%8 = alloca %runtime.Raw_Map, align 8, !dbg !2151 | |
call void @llvm.dbg.declare(metadata %runtime.Map_Header* %9, metadata !2124, metadata !DIExpression()), !dbg !2152 | |
%9 = alloca %runtime.Map_Header, align 8, !dbg !2152 | |
call void @llvm.dbg.declare(metadata %runtime.Map_Hash* %10, metadata !2135, metadata !DIExpression()), !dbg !2153 | |
%10 = alloca %runtime.Map_Hash, align 8, !dbg !2153 | |
%11 = alloca %runtime.Map_Hash, align 8, !dbg !2153 | |
call void @llvm.dbg.declare(metadata %runtime.Map_Find_Result* %12, metadata !2136, metadata !DIExpression()), !dbg !2154 | |
%12 = alloca %runtime.Map_Find_Result, align 8, !dbg !2154 | |
%13 = alloca %runtime.Map_Find_Result, align 8, !dbg !2154 | |
call void @llvm.dbg.value(metadata i64 %1, metadata !2114, metadata !DIExpression()), !dbg !2155 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !2115, metadata !DIExpression()), !dbg !2156 | |
%14 = bitcast %runtime.Context* %6 to i8*, !dbg !2149 | |
%15 = getelementptr i8, i8* %14, i64 112, !dbg !2149 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %15, i8 0, i64 0, i1 false), !dbg !2149 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %14, i8* align 8 %__.context_ptr, i64 112, i1 false), !dbg !2149 | |
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %16, metadata !2118, metadata !DIExpression()), !dbg !2157 | |
%16 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 0, !dbg !2158 | |
%17 = load %runtime.Raw_Map*, %runtime.Raw_Map** %16, align 8, !dbg !2158 | |
%18 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %17, i32 0, i32 1, !dbg !2158 | |
%19 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %18, i32 0, i32 3, !dbg !2158 | |
%20 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %19, i32 0, i32 0, !dbg !2158 | |
%21 = load i8*, i8** %20, align 8, !dbg !2158 | |
%22 = icmp ne i8* %21, null, !dbg !2158 | |
br i1 %22, label %if.then, label %if.done, !dbg !2158 | |
if.then: ; preds = %decls | |
%23 = getelementptr inbounds %runtime.Context, %runtime.Context* %6, i32 0, i32 0, !dbg !2159 | |
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %16, metadata !2120, metadata !DIExpression()), !dbg !2160 | |
%24 = bitcast %runtime.Allocator* %23 to i8*, !dbg !2159 | |
%25 = bitcast %runtime.Allocator* %19 to i8*, !dbg !2159 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %24, i8* align 8 %25, i64 16, i1 false), !dbg !2159 | |
br label %if.done, !dbg !2158 | |
if.done: ; preds = %if.then, %decls | |
%26 = bitcast %runtime.Context* %7 to i8*, !dbg !2150 | |
%27 = getelementptr i8, i8* %26, i64 112, !dbg !2150 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %27, i8 0, i64 0, i1 false), !dbg !2150 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %26, i8* align 8 %__.context_ptr, i64 112, i1 false), !dbg !2150 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %26, i8* align 8 %14, i64 112, i1 false), !dbg !2150 | |
%28 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %8, i32 0, i32 1, !dbg !2161 | |
%29 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %28, i32 0, i32 3, !dbg !2161 | |
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %16, metadata !2123, metadata !DIExpression()), !dbg !2162 | |
%30 = bitcast %runtime.Raw_Map* %8 to i8*, !dbg !2161 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %30, i8 0, i64 56, i1 false), !dbg !2151 | |
%31 = load %runtime.Raw_Map*, %runtime.Raw_Map** %16, align 8, !dbg !2161 | |
%32 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %31, i32 0, i32 1, !dbg !2161 | |
%33 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %32, i32 0, i32 3, !dbg !2161 | |
%34 = bitcast %runtime.Allocator* %29 to i8*, !dbg !2161 | |
%35 = bitcast %runtime.Allocator* %33 to i8*, !dbg !2161 | |
call void @llvm.memmove.p0i8.p0i8.i64(i8* align 8 %34, i8* align 8 %35, i64 16, i1 false), !dbg !2161 | |
%36 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %8, i32 0, i32 0, !dbg !2163 | |
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %16, metadata !2123, metadata !DIExpression()), !dbg !2162 | |
%37 = load %runtime.Raw_Map*, %runtime.Raw_Map** %16, align 8, !dbg !2163 | |
%38 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %37, i32 0, i32 0, !dbg !2163 | |
%39 = bitcast { i64*, i64 }* %36 to i8*, !dbg !2163 | |
%40 = bitcast { i64*, i64 }* %38 to i8*, !dbg !2163 | |
call void @llvm.memmove.p0i8.p0i8.i64(i8* align 8 %39, i8* align 8 %40, i64 16, i1 false), !dbg !2163 | |
%41 = bitcast %runtime.Map_Header* %9 to i8*, !dbg !2152 | |
%42 = bitcast %runtime.Map_Header* %0 to i8*, !dbg !2152 | |
%43 = getelementptr i8, i8* %41, i64 64, !dbg !2152 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %43, i8 0, i64 0, i1 false), !dbg !2152 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %41, i8* align 8 %42, i64 64, i1 false), !dbg !2152 | |
%44 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %9, i32 0, i32 0, !dbg !2164 | |
store %runtime.Raw_Map* %8, %runtime.Raw_Map** %44, align 8, !dbg !2164 | |
call void @llvm.dbg.value(metadata i64 0, metadata !2125, metadata !DIExpression()), !dbg !2165 | |
call void @llvm.dbg.value(metadata i64 %1, metadata !2125, metadata !DIExpression()), !dbg !2165 | |
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %16, metadata !2123, metadata !DIExpression()), !dbg !2162 | |
%45 = load %runtime.Raw_Map*, %runtime.Raw_Map** %16, align 8, !dbg !2166 | |
%46 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %45, i32 0, i32 1, !dbg !2166 | |
%47 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %46, i32 0, i32 1, !dbg !2166 | |
%48 = load i64, i64* %47, align 8, !dbg !2166 | |
%49 = mul i64 2, %48, !dbg !2166 | |
%50 = icmp sgt i64 %1, %49, !dbg !2166 | |
%51 = select i1 %50, i64 %1, i64 %49, !dbg !2166 | |
call void @llvm.dbg.value(metadata i64 %51, metadata !2125, metadata !DIExpression()), !dbg !2165 | |
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %16, metadata !2123, metadata !DIExpression()), !dbg !2162 | |
%52 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %46, i32 0, i32 3, !dbg !2167 | |
%53 = bitcast %runtime.Allocator* %52 to [2 x i64]*, !dbg !2167 | |
%54 = load [2 x i64], [2 x i64]* %53, align 8, !dbg !2167 | |
%55 = call i8 @runtime.__slice_resize-10430({ i64*, i64 }* %36, i64 %51, [2 x i64] %54, %runtime.Source_Code_Location* %2, i8* %26), !dbg !2167 | |
call void @llvm.dbg.value(metadata i64 0, metadata !2126, metadata !DIExpression()), !dbg !2168 | |
br label %for.interval.loop, !dbg !2169 | |
for.interval.loop: ; preds = %for.interval.body, %if.done | |
%.011 = phi i64 [ 0, %if.done ], [ %61, %for.interval.body ], !dbg !2169 | |
%.0 = phi i64 [ 0, %if.done ], [ %60, %for.interval.body ], !dbg !2169 | |
%56 = icmp slt i64 %.0, %51, !dbg !2169 | |
br i1 %56, label %for.interval.body, label %for.interval.done, !dbg !2169 | |
for.interval.body: ; preds = %for.interval.loop | |
call void @llvm.dbg.value(metadata i64 %.0, metadata !2126, metadata !DIExpression()), !dbg !2168 | |
%57 = getelementptr inbounds { i64*, i64 }, { i64*, i64 }* %36, i32 0, i32 0, !dbg !2170 | |
%58 = load i64*, i64** %57, align 8, !dbg !2170 | |
%59 = getelementptr i64, i64* %58, i64 %.0, !dbg !2170 | |
store i64 -1, i64* %59, align 8, !dbg !2170 | |
%60 = add i64 %.0, 1, !dbg !2169 | |
%61 = add i64 %.011, 1, !dbg !2169 | |
br label %for.interval.loop, !dbg !2169 | |
for.interval.done: ; preds = %for.interval.loop | |
call void @llvm.dbg.declare(metadata i64* %62, metadata !2128, metadata !DIExpression()), !dbg !2162 | |
%62 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 2, !dbg !2172 | |
%63 = load i64, i64* %62, align 8, !dbg !2172 | |
call void @llvm.dbg.declare(metadata i64* %64, metadata !2129, metadata !DIExpression()), !dbg !2162 | |
%64 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 3, !dbg !2172 | |
%65 = load i64, i64* %64, align 8, !dbg !2172 | |
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %16, metadata !2123, metadata !DIExpression()), !dbg !2162 | |
%66 = load %runtime.Raw_Map*, %runtime.Raw_Map** %16, align 8, !dbg !2172 | |
%67 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %66, i32 0, i32 1, !dbg !2172 | |
%68 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %67, i32 0, i32 1, !dbg !2172 | |
%69 = load i64, i64* %68, align 8, !dbg !2172 | |
%70 = bitcast %runtime.Raw_Dynamic_Array* %28 to i8*, !dbg !2172 | |
%71 = call i8 @runtime.__dynamic_array_reserve(i8* %70, i64 %63, i64 %65, i64 %69, %runtime.Source_Code_Location* %2, i8* %26), !dbg !2172 | |
call void @llvm.dbg.value(metadata i64 0, metadata !2130, metadata !DIExpression()), !dbg !2173 | |
br label %for.interval.loop1, !dbg !2174 | |
for.interval.loop1: ; preds = %for.interval.post9, %for.interval.done | |
%.013 = phi i64 [ 0, %for.interval.done ], [ %119, %for.interval.post9 ], !dbg !2174 | |
%.012 = phi i64 [ 0, %for.interval.done ], [ %120, %for.interval.post9 ], !dbg !2174 | |
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %16, metadata !2132, metadata !DIExpression()), !dbg !2175 | |
%72 = load %runtime.Raw_Map*, %runtime.Raw_Map** %16, align 8, !dbg !2174 | |
%73 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %72, i32 0, i32 1, !dbg !2174 | |
%74 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %73, i32 0, i32 1, !dbg !2174 | |
%75 = load i64, i64* %74, align 8, !dbg !2174 | |
%76 = icmp slt i64 %.013, %75, !dbg !2174 | |
br i1 %76, label %for.interval.body2, label %for.interval.done10, !dbg !2174 | |
for.interval.body2: ; preds = %for.interval.loop1 | |
call void @llvm.dbg.value(metadata i64 %.013, metadata !2130, metadata !DIExpression()), !dbg !2173 | |
%77 = getelementptr inbounds { i64*, i64 }, { i64*, i64 }* %36, i32 0, i32 1, !dbg !2176 | |
%78 = load i64, i64* %77, align 8, !dbg !2176 | |
%79 = icmp eq i64 %78, 0, !dbg !2176 | |
br i1 %79, label %if.then3, label %if.done4, !dbg !2176 | |
if.then3: ; preds = %for.interval.body2 | |
call void @runtime.__dynamic_map_grow(%runtime.Map_Header* %9, %runtime.Source_Code_Location* %2, i8* %26), !dbg !2177 | |
br label %if.done4, !dbg !2176 | |
if.done4: ; preds = %if.then3, %for.interval.body2 | |
call void @llvm.dbg.value(metadata %runtime.Map_Entry_Header* null, metadata !2133, metadata !DIExpression()), !dbg !2180 | |
%80 = call %runtime.Map_Entry_Header* @runtime.__dynamic_map_get_entry(%runtime.Map_Header* %0, i64 %.013, i8* %26), !dbg !2181 | |
call void @llvm.dbg.value(metadata %runtime.Map_Entry_Header* %80, metadata !2133, metadata !DIExpression()), !dbg !2180 | |
%81 = bitcast %runtime.Map_Hash* %10 to i8*, !dbg !2153 | |
call void @llvm.memset.p0i8.i64(i8* %81, i8 0, i64 16, i1 false), !dbg !2153 | |
%82 = call [2 x i64] @runtime.__get_map_hash_from_entry(%runtime.Map_Header* %0, %runtime.Map_Entry_Header* %80), !dbg !2153 | |
%83 = bitcast %runtime.Map_Hash* %11 to [2 x i64]*, !dbg !2153 | |
store [2 x i64] %82, [2 x i64]* %83, align 8, !dbg !2153 | |
%84 = bitcast %runtime.Map_Hash* %11 to i8*, !dbg !2153 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %81, i8* align 8 %84, i64 16, i1 false), !dbg !2153 | |
%85 = bitcast %runtime.Map_Find_Result* %12 to i8*, !dbg !2154 | |
call void @llvm.memset.p0i8.i64(i8* %85, i8 0, i64 24, i1 false), !dbg !2154 | |
%86 = bitcast %runtime.Map_Hash* %10 to [2 x i64]*, !dbg !2154 | |
%87 = load [2 x i64], [2 x i64]* %86, align 8, !dbg !2154 | |
%88 = bitcast %runtime.Map_Find_Result* %13 to i8*, !dbg !2154 | |
call void @llvm.memset.p0i8.i64(i8* %88, i8 0, i64 24, i1 false), !dbg !2154 | |
call void @runtime.__dynamic_map_find(%runtime.Map_Find_Result* %13, %runtime.Map_Header* %9, [2 x i64] %87, i8* %26), !dbg !2154 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %85, i8* align 8 %88, i64 24, i1 false), !dbg !2154 | |
call void @llvm.dbg.value(metadata i64 0, metadata !2142, metadata !DIExpression()), !dbg !2180 | |
%89 = load [2 x i64], [2 x i64]* %86, align 8, !dbg !2182 | |
%90 = call i64 @runtime.__dynamic_map_add_entry(%runtime.Map_Header* %9, [2 x i64] %89, %runtime.Source_Code_Location* %2, i8* %26), !dbg !2182 | |
call void @llvm.dbg.value(metadata i64 %90, metadata !2142, metadata !DIExpression()), !dbg !2180 | |
%91 = getelementptr inbounds %runtime.Map_Find_Result, %runtime.Map_Find_Result* %12, i32 0, i32 1, !dbg !2183 | |
%92 = load i64, i64* %91, align 8, !dbg !2183 | |
%93 = icmp slt i64 %92, 0, !dbg !2183 | |
br i1 %93, label %if.then5, label %if.else, !dbg !2183 | |
if.then5: ; preds = %if.done4 | |
%94 = getelementptr inbounds { i64*, i64 }, { i64*, i64 }* %36, i32 0, i32 0, !dbg !2184 | |
%95 = load i64*, i64** %94, align 8, !dbg !2184 | |
%96 = getelementptr inbounds %runtime.Map_Find_Result, %runtime.Map_Find_Result* %12, i32 0, i32 0, !dbg !2184 | |
%97 = load i64, i64* %96, align 8, !dbg !2184 | |
%98 = getelementptr i64, i64* %95, i64 %97, !dbg !2184 | |
store i64 %90, i64* %98, align 8, !dbg !2184 | |
br label %if.done6, !dbg !2183 | |
if.else: ; preds = %if.done4 | |
call void @llvm.dbg.value(metadata %runtime.Map_Entry_Header* null, metadata !2143, metadata !DIExpression()), !dbg !2186 | |
%99 = call %runtime.Map_Entry_Header* @runtime.__dynamic_map_get_entry(%runtime.Map_Header* %9, i64 %92, i8* %26), !dbg !2187 | |
call void @llvm.dbg.value(metadata %runtime.Map_Entry_Header* %99, metadata !2143, metadata !DIExpression()), !dbg !2186 | |
%100 = getelementptr inbounds %runtime.Map_Entry_Header, %runtime.Map_Entry_Header* %99, i32 0, i32 1, !dbg !2188 | |
store i64 %90, i64* %100, align 8, !dbg !2188 | |
br label %if.done6, !dbg !2183 | |
if.done6: ; preds = %if.else, %if.then5 | |
call void @llvm.dbg.value(metadata %runtime.Map_Entry_Header* null, metadata !2146, metadata !DIExpression()), !dbg !2180 | |
%101 = call %runtime.Map_Entry_Header* @runtime.__dynamic_map_get_entry(%runtime.Map_Header* %9, i64 %90, i8* %26), !dbg !2189 | |
call void @llvm.dbg.value(metadata %runtime.Map_Entry_Header* %101, metadata !2146, metadata !DIExpression()), !dbg !2180 | |
call void @runtime.__dynamic_map_copy_entry(%runtime.Map_Header* %0, %runtime.Map_Entry_Header* %101, %runtime.Map_Entry_Header* %80), !dbg !2190 | |
%102 = getelementptr inbounds %runtime.Map_Entry_Header, %runtime.Map_Entry_Header* %101, i32 0, i32 1, !dbg !2191 | |
%103 = getelementptr inbounds %runtime.Map_Find_Result, %runtime.Map_Find_Result* %12, i32 0, i32 2, !dbg !2191 | |
%104 = load i64, i64* %103, align 8, !dbg !2191 | |
store i64 %104, i64* %102, align 8, !dbg !2191 | |
call void @llvm.dbg.declare(metadata !112, metadata !2192, metadata !DIExpression()), !dbg !2198 | |
%105 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %9, i32 0, i32 0, !dbg !2200 | |
%106 = load %runtime.Raw_Map*, %runtime.Raw_Map** %105, align 8, !dbg !2200 | |
%107 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %106, i32 0, i32 0, !dbg !2200 | |
%108 = getelementptr inbounds { i64*, i64 }, { i64*, i64 }* %107, i32 0, i32 1, !dbg !2200 | |
%109 = load i64, i64* %108, align 8, !dbg !2200 | |
%110 = sitofp i64 %109 to double, !dbg !2200 | |
%111 = fmul double 7.500000e-01, %110, !dbg !2200 | |
%112 = fptosi double %111 to i64, !dbg !2200 | |
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %105, metadata !2192, metadata !DIExpression()), !dbg !2198 | |
%113 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %106, i32 0, i32 1, !dbg !2200 | |
%114 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %113, i32 0, i32 1, !dbg !2200 | |
%115 = load i64, i64* %114, align 8, !dbg !2200 | |
%116 = icmp sle i64 %112, %115, !dbg !2200 | |
%117 = zext i1 %116 to i8, !dbg !2200 | |
%118 = trunc i8 %117 to i1, !dbg !2201 | |
br i1 %118, label %if.then7, label %for.interval.post9, !dbg !2201 | |
if.then7: ; preds = %if.done6 | |
call void @runtime.__dynamic_map_grow(%runtime.Map_Header* %9, %runtime.Source_Code_Location* %2, i8* %26), !dbg !2202 | |
br label %for.interval.post9, !dbg !2201 | |
for.interval.post9: ; preds = %if.done6, %if.then7 | |
%119 = add i64 %.013, 1, !dbg !2174 | |
%120 = add i64 %.012, 1, !dbg !2174 | |
br label %for.interval.loop1, !dbg !2174 | |
for.interval.done10: ; preds = %for.interval.loop1 | |
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %16, metadata !2123, metadata !DIExpression()), !dbg !2162 | |
%121 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %73, i32 0, i32 0, !dbg !2205 | |
%122 = load i8*, i8** %121, align 8, !dbg !2205 | |
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %16, metadata !2123, metadata !DIExpression()), !dbg !2162 | |
%123 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %73, i32 0, i32 3, !dbg !2205 | |
%124 = bitcast %runtime.Allocator* %123 to [2 x i64]*, !dbg !2205 | |
%125 = load [2 x i64], [2 x i64]* %124, align 8, !dbg !2205 | |
%126 = bitcast %runtime.Allocator* %3 to i8*, !dbg !2206 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %126), !dbg !2206 | |
%127 = bitcast %runtime.Allocator* %4 to i8*, !dbg !2206 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %127), !dbg !2206 | |
%128 = bitcast { { i8*, i64 }, i8 }* %5 to i8*, !dbg !2206 | |
call void @llvm.lifetime.start.p0i8(i64 24, i8* %128), !dbg !2206 | |
call void @llvm.dbg.declare(metadata !112, metadata !1424, metadata !DIExpression()), !dbg !2206 | |
call void @llvm.dbg.value(metadata i8* %122, metadata !1423, metadata !DIExpression()), !dbg !2207 | |
%129 = bitcast %runtime.Allocator* %3 to [2 x i64]* | |
store [2 x i64] %125, [2 x i64]* %129, align 8, !noalias !2208 | |
%130 = bitcast %runtime.Allocator* %4 to i8* | |
%131 = bitcast %runtime.Allocator* %3 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %130, i8* align 8 %131, i64 16, i1 false), !noalias !2208 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1425, metadata !DIExpression()), !dbg !2211 | |
%132 = icmp eq i8* %122, null, !dbg !2212 | |
br i1 %132, label %if.then.i, label %if.done.i, !dbg !2212 | |
if.then.i: ; preds = %if.done.i, %for.interval.done10 | |
%133 = bitcast %runtime.Allocator* %3 to i8*, !dbg !2213 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %133), !dbg !2213 | |
%134 = bitcast %runtime.Allocator* %4 to i8*, !dbg !2213 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %134), !dbg !2213 | |
%135 = bitcast { { i8*, i64 }, i8 }* %5 to i8*, !dbg !2213 | |
call void @llvm.lifetime.end.p0i8(i64 24, i8* %135), !dbg !2213 | |
br label %runtime.mem_free.exit, !dbg !2213 | |
if.done.i: ; preds = %for.interval.done10 | |
%136 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %4, i32 0, i32 0, !dbg !2214 | |
%137 = load i8*, i8** %136, align 8, !dbg !2214, !noalias !2208 | |
%138 = icmp eq i8* %137, null, !dbg !2214 | |
br i1 %138, label %if.then.i, label %if.done2.i, !dbg !2214 | |
if.done2.i: ; preds = %if.done.i | |
call void @llvm.dbg.value(metadata i8 0, metadata !1426, metadata !DIExpression()), !dbg !2215 | |
%139 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %4, i32 0, i32 1, !dbg !2147 | |
%140 = load i8*, i8** %139, align 8, !dbg !2147, !noalias !2208 | |
%141 = bitcast { { i8*, i64 }, i8 }* %5 to i8*, !dbg !2147 | |
call void @llvm.memset.p0i8.i64(i8* %141, i8 0, i64 24, i1 false), !dbg !2147, !noalias !2208 | |
%142 = bitcast i8* %137 to void ({ { i8*, i64 }, i8 }*, i8*, i8, i64, i64, i8*, i64, %runtime.Source_Code_Location*, i8*)*, !dbg !2147 | |
call void %142({ { i8*, i64 }, i8 }* %5, i8* %140, i8 1, i64 0, i64 0, i8* %122, i64 0, %runtime.Source_Code_Location* %2, i8* %26) #4, !dbg !2147 | |
%143 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %5, i32 0, i32 1, !dbg !2147 | |
%144 = load i8, i8* %143, align 1, !dbg !2147, !noalias !2208 | |
call void @llvm.dbg.value(metadata i8 %144, metadata !1426, metadata !DIExpression()), !dbg !2215 | |
%145 = bitcast %runtime.Allocator* %3 to i8*, !dbg !2216 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %145), !dbg !2216 | |
%146 = bitcast %runtime.Allocator* %4 to i8*, !dbg !2216 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %146), !dbg !2216 | |
%147 = bitcast { { i8*, i64 }, i8 }* %5 to i8*, !dbg !2216 | |
call void @llvm.lifetime.end.p0i8(i64 24, i8* %147), !dbg !2216 | |
br label %runtime.mem_free.exit, !dbg !2216 | |
runtime.mem_free.exit: ; preds = %if.done2.i, %if.then.i | |
%148 = load %runtime.Raw_Map*, %runtime.Raw_Map** %16, align 8, !dbg !2217 | |
%149 = bitcast %runtime.Raw_Map* %148 to i8*, !dbg !2217 | |
call void @llvm.memmove.p0i8.p0i8.i64(i8* align 8 %149, i8* align 8 %30, i64 56, i1 false), !dbg !2217 | |
ret void, !dbg !2156 | |
} | |
define dso_local i8* @runtime.__dynamic_map_get(%runtime.Map_Header* %0, [2 x i64] %1, i8* noalias nocapture nonnull %__.context_ptr) !dbg !2218 { | |
decls: | |
%2 = alloca %runtime.Map_Hash, align 8 | |
call void @llvm.dbg.declare(metadata %runtime.Map_Hash* %3, metadata !2222, metadata !DIExpression()), !dbg !2229 | |
%3 = alloca %runtime.Map_Hash, align 8 | |
%4 = alloca %runtime.Map_Find_Result, align 8, !dbg !2230 | |
%5 = bitcast %runtime.Map_Hash* %2 to [2 x i64]* | |
store [2 x i64] %1, [2 x i64]* %5, align 8 | |
%6 = bitcast %runtime.Map_Hash* %3 to i8* | |
%7 = bitcast %runtime.Map_Hash* %2 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %6, i8* align 8 %7, i64 16, i1 false) | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !2223, metadata !DIExpression()), !dbg !2231 | |
call void @llvm.dbg.value(metadata i64 0, metadata !2224, metadata !DIExpression()), !dbg !2232 | |
%8 = bitcast %runtime.Map_Hash* %3 to [2 x i64]*, !dbg !2230 | |
%9 = load [2 x i64], [2 x i64]* %8, align 8, !dbg !2230 | |
%10 = bitcast %runtime.Map_Find_Result* %4 to i8*, !dbg !2230 | |
call void @llvm.memset.p0i8.i64(i8* %10, i8 0, i64 24, i1 false), !dbg !2230 | |
call void @runtime.__dynamic_map_find(%runtime.Map_Find_Result* %4, %runtime.Map_Header* %0, [2 x i64] %9, i8* %__.context_ptr), !dbg !2230 | |
%11 = getelementptr inbounds %runtime.Map_Find_Result, %runtime.Map_Find_Result* %4, i32 0, i32 2, !dbg !2230 | |
%12 = load i64, i64* %11, align 8, !dbg !2230 | |
call void @llvm.dbg.value(metadata i64 %12, metadata !2224, metadata !DIExpression()), !dbg !2232 | |
%13 = icmp sge i64 %12, 0, !dbg !2233 | |
br i1 %13, label %if.then, label %if.done, !dbg !2233 | |
if.then: ; preds = %decls | |
call void @llvm.dbg.value(metadata i64 0, metadata !2226, metadata !DIExpression()), !dbg !2234 | |
%14 = call %runtime.Map_Entry_Header* @runtime.__dynamic_map_get_entry(%runtime.Map_Header* %0, i64 %12, i8* %__.context_ptr), !dbg !2235 | |
%15 = ptrtoint %runtime.Map_Entry_Header* %14 to i64, !dbg !2235 | |
call void @llvm.dbg.value(metadata i64 %15, metadata !2226, metadata !DIExpression()), !dbg !2234 | |
%16 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 6, !dbg !2236 | |
%17 = load i64, i64* %16, align 8, !dbg !2236 | |
%18 = add i64 %15, %17, !dbg !2236 | |
%19 = inttoptr i64 %18 to i8*, !dbg !2236 | |
ret i8* %19, !dbg !2236 | |
if.done: ; preds = %decls | |
ret i8* null, !dbg !2237 | |
} | |
define internal [2 x i64] @os.read(i32 %0, [2 x i64] %1, i8* noalias nocapture nonnull %__.context_ptr) !dbg !2238 { | |
decls: | |
%2 = alloca { i8*, i64 }, align 8 | |
call void @llvm.dbg.declare(metadata { i8*, i64 }* %3, metadata !2247, metadata !DIExpression()), !dbg !2251 | |
%3 = alloca { i8*, i64 }, align 8 | |
%4 = alloca [2 x i64], align 8, !dbg !2252 | |
%5 = alloca { i64, i32 }, align 8, !dbg !2253 | |
%6 = alloca { i64, i32 }, align 8, !dbg !2256 | |
call void @llvm.dbg.value(metadata i32 %0, metadata !2246, metadata !DIExpression()), !dbg !2257 | |
%7 = bitcast { i8*, i64 }* %2 to [2 x i64]* | |
store [2 x i64] %1, [2 x i64]* %7, align 8 | |
%8 = bitcast { i8*, i64 }* %3 to i8* | |
%9 = bitcast { i8*, i64 }* %2 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %8, i8* align 8 %9, i64 16, i1 false) | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !2248, metadata !DIExpression()), !dbg !2258 | |
call void @llvm.dbg.value(metadata i64 0, metadata !2249, metadata !DIExpression()), !dbg !2259 | |
%10 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %3, i32 0, i32 0, !dbg !2252 | |
%11 = load i8*, i8** %10, align 8, !dbg !2252 | |
%12 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %3, i32 0, i32 1, !dbg !2252 | |
%13 = load i64, i64* %12, align 8, !dbg !2252 | |
%14 = bitcast [2 x i64]* %4 to %..string*, !dbg !2252 | |
store %..string { i8* getelementptr inbounds ([50 x i8], [50 x i8]* @"csbs$91", i64 0, i64 0), i64 49 }, %..string* %14, align 8, !dbg !2252 | |
%15 = load [2 x i64], [2 x i64]* %4, align 8, !dbg !2252 | |
call void @runtime.bounds_check_error([2 x i64] %15, i32 335, i32 37, i64 0, i64 %13), !dbg !2252 | |
%16 = load i64, i64* %12, align 8, !dbg !2252 | |
%17 = call i64 @read(i32 %0, i8* %11, i64 %16), !dbg !2252 | |
call void @llvm.dbg.value(metadata i64 %17, metadata !2249, metadata !DIExpression()), !dbg !2259 | |
%18 = icmp eq i64 %17, -1, !dbg !2260 | |
br i1 %18, label %if.then, label %if.done, !dbg !2260 | |
if.then: ; preds = %decls | |
%19 = call i64 @os.get_last_error(i8* %__.context_ptr), !dbg !2253 | |
%20 = trunc i64 %19 to i32, !dbg !2253 | |
%21 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %5, i32 0, i32 0, !dbg !2253 | |
%22 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %5, i32 0, i32 1, !dbg !2253 | |
store i64 -1, i64* %21, align 8, !dbg !2253 | |
store i32 %20, i32* %22, align 4, !dbg !2253 | |
%23 = bitcast { i64, i32 }* %5 to [2 x i64]*, !dbg !2253 | |
%24 = load [2 x i64], [2 x i64]* %23, align 8, !dbg !2253 | |
ret [2 x i64] %24, !dbg !2253 | |
if.done: ; preds = %decls | |
%25 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %6, i32 0, i32 0, !dbg !2256 | |
%26 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %6, i32 0, i32 1, !dbg !2256 | |
store i64 %17, i64* %25, align 8, !dbg !2256 | |
store i32 0, i32* %26, align 4, !dbg !2256 | |
%27 = bitcast { i64, i32 }* %6 to [2 x i64]*, !dbg !2256 | |
%28 = load [2 x i64], [2 x i64]* %27, align 8, !dbg !2256 | |
ret [2 x i64] %28, !dbg !2256 | |
} | |
define dso_local %runtime.Map_Entry_Header* @runtime.__dynamic_map_set(%runtime.Map_Header* %0, [2 x i64] %1, i8* %2, %runtime.Source_Code_Location* %3, i8* noalias nocapture nonnull %__.context_ptr) !dbg !2261 { | |
decls: | |
%4 = alloca %runtime.Map_Hash, align 8 | |
call void @llvm.dbg.declare(metadata %runtime.Map_Hash* %5, metadata !2265, metadata !DIExpression()), !dbg !2279 | |
%5 = alloca %runtime.Map_Hash, align 8 | |
%6 = alloca [2 x i64], align 8, !dbg !2280 | |
%7 = alloca %runtime.Source_Code_Location, align 8, !dbg !2280 | |
call void @llvm.dbg.declare(metadata %runtime.Map_Find_Result* %8, metadata !2270, metadata !DIExpression()), !dbg !2281 | |
%8 = alloca %runtime.Map_Find_Result, align 8, !dbg !2281 | |
%9 = alloca %runtime.Map_Find_Result, align 8, !dbg !2281 | |
%10 = alloca %runtime.Map_Find_Result, align 8, !dbg !2282 | |
%11 = alloca [2 x i64], align 8, !dbg !2285 | |
%12 = alloca %runtime.Source_Code_Location, align 8, !dbg !2285 | |
%13 = bitcast %runtime.Map_Hash* %4 to [2 x i64]* | |
store [2 x i64] %1, [2 x i64]* %13, align 8 | |
%14 = bitcast %runtime.Map_Hash* %5 to i8* | |
%15 = bitcast %runtime.Map_Hash* %4 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %14, i8* align 8 %15, i64 16, i1 false) | |
call void @llvm.dbg.value(metadata i8* %2, metadata !2266, metadata !DIExpression()), !dbg !2286 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !2267, metadata !DIExpression()), !dbg !2287 | |
call void @llvm.dbg.value(metadata i64 0, metadata !2268, metadata !DIExpression()), !dbg !2288 | |
%16 = icmp ne i8* %2, null, !dbg !2280 | |
%17 = bitcast [2 x i64]* %6 to %..string*, !dbg !2280 | |
%18 = bitcast %..string* %17 to i8*, !dbg !2280 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %18, i8 0, i64 16, i1 false), !dbg !2280 | |
%19 = load [2 x i64], [2 x i64]* %6, align 8, !dbg !2280 | |
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([67 x i8], [67 x i8]* @"csbs$90", i64 0, i64 0), i64 66 }, i32 259, i32 2, %..string { i8* getelementptr inbounds ([18 x i8], [18 x i8]* @"csbs$92", i64 0, i64 0), i64 17 } }, %runtime.Source_Code_Location* %7, align 8, !dbg !2280 | |
call void @runtime.assert(i1 %16, [2 x i64] %19, %runtime.Source_Code_Location* %7, i8* %__.context_ptr), !dbg !2280 | |
%20 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 0, !dbg !2289 | |
%21 = load %runtime.Raw_Map*, %runtime.Raw_Map** %20, align 8, !dbg !2289 | |
%22 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %21, i32 0, i32 0, !dbg !2289 | |
%23 = getelementptr inbounds { i64*, i64 }, { i64*, i64 }* %22, i32 0, i32 1, !dbg !2289 | |
%24 = load i64, i64* %23, align 8, !dbg !2289 | |
%25 = icmp eq i64 %24, 0, !dbg !2289 | |
br i1 %25, label %if.then, label %if.done, !dbg !2289 | |
if.then: ; preds = %decls | |
call void @runtime.__dynamic_map_reserve(%runtime.Map_Header* %0, i64 16, %runtime.Source_Code_Location* %3, i8* %__.context_ptr), !dbg !2290 | |
call void @runtime.__dynamic_map_grow(%runtime.Map_Header* %0, %runtime.Source_Code_Location* %3, i8* %__.context_ptr), !dbg !2293 | |
br label %if.done, !dbg !2289 | |
if.done: ; preds = %if.then, %decls | |
%26 = bitcast %runtime.Map_Find_Result* %8 to i8*, !dbg !2281 | |
call void @llvm.memset.p0i8.i64(i8* %26, i8 0, i64 24, i1 false), !dbg !2281 | |
%27 = bitcast %runtime.Map_Hash* %5 to [2 x i64]*, !dbg !2281 | |
%28 = load [2 x i64], [2 x i64]* %27, align 8, !dbg !2281 | |
%29 = bitcast %runtime.Map_Find_Result* %9 to i8*, !dbg !2281 | |
call void @llvm.memset.p0i8.i64(i8* %29, i8 0, i64 24, i1 false), !dbg !2281 | |
call void @runtime.__dynamic_map_find(%runtime.Map_Find_Result* %9, %runtime.Map_Header* %0, [2 x i64] %28, i8* %__.context_ptr), !dbg !2281 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %26, i8* align 8 %29, i64 24, i1 false), !dbg !2281 | |
%30 = getelementptr inbounds %runtime.Map_Find_Result, %runtime.Map_Find_Result* %8, i32 0, i32 2, !dbg !2294 | |
%31 = load i64, i64* %30, align 8, !dbg !2294 | |
%32 = icmp sge i64 %31, 0, !dbg !2294 | |
br i1 %32, label %if.done5, label %if.else, !dbg !2294 | |
if.else: ; preds = %if.done | |
%33 = load [2 x i64], [2 x i64]* %27, align 8, !dbg !2295 | |
%34 = call i64 @runtime.__dynamic_map_add_entry(%runtime.Map_Header* %0, [2 x i64] %33, %runtime.Source_Code_Location* %3, i8* %__.context_ptr), !dbg !2295 | |
call void @llvm.dbg.value(metadata i64 %34, metadata !2268, metadata !DIExpression()), !dbg !2288 | |
%35 = getelementptr inbounds %runtime.Map_Find_Result, %runtime.Map_Find_Result* %8, i32 0, i32 1, !dbg !2296 | |
%36 = load i64, i64* %35, align 8, !dbg !2296 | |
%37 = icmp sge i64 %36, 0, !dbg !2296 | |
br i1 %37, label %if.then2, label %if.else3, !dbg !2296 | |
if.then2: ; preds = %if.else | |
call void @llvm.dbg.value(metadata %runtime.Map_Entry_Header* null, metadata !2271, metadata !DIExpression()), !dbg !2297 | |
%38 = call %runtime.Map_Entry_Header* @runtime.__dynamic_map_get_entry(%runtime.Map_Header* %0, i64 %36, i8* %__.context_ptr), !dbg !2298 | |
call void @llvm.dbg.value(metadata %runtime.Map_Entry_Header* %38, metadata !2271, metadata !DIExpression()), !dbg !2297 | |
%39 = getelementptr inbounds %runtime.Map_Entry_Header, %runtime.Map_Entry_Header* %38, i32 0, i32 1, !dbg !2299 | |
store i64 %34, i64* %39, align 8, !dbg !2299 | |
br label %if.done5, !dbg !2296 | |
if.else3: ; preds = %if.else | |
%40 = load %runtime.Raw_Map*, %runtime.Raw_Map** %20, align 8, !dbg !2300 | |
%41 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %40, i32 0, i32 0, !dbg !2300 | |
%42 = getelementptr inbounds { i64*, i64 }, { i64*, i64 }* %41, i32 0, i32 0, !dbg !2300 | |
%43 = load i64*, i64** %42, align 8, !dbg !2300 | |
%44 = getelementptr inbounds %runtime.Map_Find_Result, %runtime.Map_Find_Result* %8, i32 0, i32 0, !dbg !2300 | |
%45 = load i64, i64* %44, align 8, !dbg !2300 | |
%46 = getelementptr i64, i64* %43, i64 %45, !dbg !2300 | |
store i64 %34, i64* %46, align 8, !dbg !2300 | |
br label %if.done5, !dbg !2296 | |
if.done5: ; preds = %if.then2, %if.else3, %if.done | |
%.0 = phi i64 [ %31, %if.done ], [ %34, %if.else3 ], [ %34, %if.then2 ], !dbg !2302 | |
call void @llvm.dbg.value(metadata i64 %.0, metadata !2268, metadata !DIExpression()), !dbg !2288 | |
call void @llvm.dbg.value(metadata %runtime.Map_Entry_Header* null, metadata !2276, metadata !DIExpression()), !dbg !2288 | |
%47 = call %runtime.Map_Entry_Header* @runtime.__dynamic_map_get_entry(%runtime.Map_Header* %0, i64 %.0, i8* %__.context_ptr), !dbg !2303 | |
call void @llvm.dbg.value(metadata %runtime.Map_Entry_Header* %47, metadata !2276, metadata !DIExpression()), !dbg !2288 | |
%48 = getelementptr inbounds %runtime.Map_Entry_Header, %runtime.Map_Entry_Header* %47, i32 0, i32 0, !dbg !2304 | |
%49 = getelementptr inbounds %runtime.Map_Hash, %runtime.Map_Hash* %5, i32 0, i32 0, !dbg !2304 | |
%50 = load i64, i64* %49, align 8, !dbg !2304 | |
store i64 %50, i64* %48, align 8, !dbg !2304 | |
call void @llvm.dbg.value(metadata i8* null, metadata !2277, metadata !DIExpression()), !dbg !2288 | |
%51 = ptrtoint %runtime.Map_Entry_Header* %47 to i64, !dbg !2305 | |
%52 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 4, !dbg !2305 | |
%53 = load i64, i64* %52, align 8, !dbg !2305 | |
%54 = add i64 %51, %53, !dbg !2305 | |
%55 = inttoptr i64 %54 to i8*, !dbg !2305 | |
call void @llvm.dbg.value(metadata i8* %55, metadata !2277, metadata !DIExpression()), !dbg !2288 | |
%56 = getelementptr inbounds %runtime.Map_Hash, %runtime.Map_Hash* %5, i32 0, i32 1, !dbg !2306 | |
%57 = load i8*, i8** %56, align 8, !dbg !2306 | |
%58 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 5, !dbg !2306 | |
%59 = load i64, i64* %58, align 8, !dbg !2306 | |
%60 = call i8* @runtime.mem_copy(i8* %55, i8* %57, i64 %59), !dbg !2306 | |
call void @llvm.dbg.value(metadata i8* null, metadata !2278, metadata !DIExpression()), !dbg !2288 | |
%61 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 6, !dbg !2307 | |
%62 = load i64, i64* %61, align 8, !dbg !2307 | |
%63 = add i64 %51, %62, !dbg !2307 | |
%64 = inttoptr i64 %63 to i8*, !dbg !2307 | |
call void @llvm.dbg.value(metadata i8* %64, metadata !2278, metadata !DIExpression()), !dbg !2288 | |
%65 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 7, !dbg !2308 | |
%66 = load i64, i64* %65, align 8, !dbg !2308 | |
%67 = call i8* @runtime.mem_copy(i8* %64, i8* %2, i64 %66), !dbg !2308 | |
call void @llvm.dbg.declare(metadata !112, metadata !2192, metadata !DIExpression()), !dbg !2309 | |
%68 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 0, !dbg !2311 | |
%69 = load %runtime.Raw_Map*, %runtime.Raw_Map** %68, align 8, !dbg !2311 | |
%70 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %69, i32 0, i32 0, !dbg !2311 | |
%71 = getelementptr inbounds { i64*, i64 }, { i64*, i64 }* %70, i32 0, i32 1, !dbg !2311 | |
%72 = load i64, i64* %71, align 8, !dbg !2311 | |
%73 = sitofp i64 %72 to double, !dbg !2311 | |
%74 = fmul double 7.500000e-01, %73, !dbg !2311 | |
%75 = fptosi double %74 to i64, !dbg !2311 | |
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %68, metadata !2192, metadata !DIExpression()), !dbg !2309 | |
%76 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %69, i32 0, i32 1, !dbg !2311 | |
%77 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %76, i32 0, i32 1, !dbg !2311 | |
%78 = load i64, i64* %77, align 8, !dbg !2311 | |
%79 = icmp sle i64 %75, %78, !dbg !2311 | |
%80 = zext i1 %79 to i8, !dbg !2311 | |
%81 = trunc i8 %80 to i1, !dbg !2312 | |
br i1 %81, label %if.then6, label %if.done7, !dbg !2312 | |
if.then6: ; preds = %if.done5 | |
call void @runtime.__dynamic_map_grow(%runtime.Map_Header* %0, %runtime.Source_Code_Location* %3, i8* %__.context_ptr), !dbg !2313 | |
%82 = load [2 x i64], [2 x i64]* %27, align 8, !dbg !2282 | |
%83 = bitcast %runtime.Map_Find_Result* %10 to i8*, !dbg !2282 | |
call void @llvm.memset.p0i8.i64(i8* %83, i8 0, i64 24, i1 false), !dbg !2282 | |
call void @runtime.__dynamic_map_find(%runtime.Map_Find_Result* %10, %runtime.Map_Header* %0, [2 x i64] %82, i8* %__.context_ptr), !dbg !2282 | |
%84 = getelementptr inbounds %runtime.Map_Find_Result, %runtime.Map_Find_Result* %10, i32 0, i32 2, !dbg !2282 | |
%85 = load i64, i64* %84, align 8, !dbg !2282 | |
call void @llvm.dbg.value(metadata i64 %85, metadata !2268, metadata !DIExpression()), !dbg !2288 | |
%86 = icmp sge i64 %85, 0, !dbg !2285 | |
%87 = bitcast [2 x i64]* %11 to %..string*, !dbg !2285 | |
%88 = bitcast %..string* %87 to i8*, !dbg !2285 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %88, i8 0, i64 16, i1 false), !dbg !2285 | |
%89 = load [2 x i64], [2 x i64]* %11, align 8, !dbg !2285 | |
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([67 x i8], [67 x i8]* @"csbs$90", i64 0, i64 0), i64 66 }, i32 291, i32 3, %..string { i8* getelementptr inbounds ([18 x i8], [18 x i8]* @"csbs$92", i64 0, i64 0), i64 17 } }, %runtime.Source_Code_Location* %12, align 8, !dbg !2285 | |
call void @runtime.assert(i1 %86, [2 x i64] %89, %runtime.Source_Code_Location* %12, i8* %__.context_ptr), !dbg !2285 | |
br label %if.done7, !dbg !2312 | |
if.done7: ; preds = %if.then6, %if.done5 | |
%.1 = phi i64 [ %85, %if.then6 ], [ %.0, %if.done5 ], !dbg !2288 | |
call void @llvm.dbg.value(metadata i64 %.1, metadata !2268, metadata !DIExpression()), !dbg !2288 | |
%90 = call %runtime.Map_Entry_Header* @runtime.__dynamic_map_get_entry(%runtime.Map_Header* %0, i64 %.1, i8* %__.context_ptr), !dbg !2314 | |
ret %runtime.Map_Entry_Header* %90, !dbg !2314 | |
} | |
define internal [2 x i64] @os.write(i32 %0, [2 x i64] %1, i8* noalias nocapture nonnull %__.context_ptr) !dbg !2315 { | |
decls: | |
%2 = alloca { i8*, i64 }, align 8 | |
call void @llvm.dbg.declare(metadata { i8*, i64 }* %3, metadata !2318, metadata !DIExpression()), !dbg !2322 | |
%3 = alloca { i8*, i64 }, align 8 | |
%4 = alloca { i64, i32 }, align 8, !dbg !2323 | |
%5 = alloca [2 x i64], align 8, !dbg !2326 | |
%6 = alloca { i64, i32 }, align 8, !dbg !2327 | |
%7 = alloca { i64, i32 }, align 8, !dbg !2330 | |
call void @llvm.dbg.value(metadata i32 %0, metadata !2317, metadata !DIExpression()), !dbg !2331 | |
%8 = bitcast { i8*, i64 }* %2 to [2 x i64]* | |
store [2 x i64] %1, [2 x i64]* %8, align 8 | |
%9 = bitcast { i8*, i64 }* %3 to i8* | |
%10 = bitcast { i8*, i64 }* %2 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %9, i8* align 8 %10, i64 16, i1 false) | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !2319, metadata !DIExpression()), !dbg !2332 | |
%11 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %3, i32 0, i32 1, !dbg !2333 | |
%12 = load i64, i64* %11, align 8, !dbg !2333 | |
%13 = icmp eq i64 %12, 0, !dbg !2333 | |
br i1 %13, label %if.then, label %if.done, !dbg !2333 | |
if.then: ; preds = %decls | |
%14 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %4, i32 0, i32 0, !dbg !2323 | |
%15 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %4, i32 0, i32 1, !dbg !2323 | |
store i64 0, i64* %14, align 8, !dbg !2323 | |
store i32 0, i32* %15, align 4, !dbg !2323 | |
%16 = bitcast { i64, i32 }* %4 to [2 x i64]*, !dbg !2323 | |
%17 = load [2 x i64], [2 x i64]* %16, align 8, !dbg !2323 | |
ret [2 x i64] %17, !dbg !2323 | |
if.done: ; preds = %decls | |
call void @llvm.dbg.value(metadata i64 0, metadata !2320, metadata !DIExpression()), !dbg !2334 | |
%18 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %3, i32 0, i32 0, !dbg !2326 | |
%19 = load i8*, i8** %18, align 8, !dbg !2326 | |
%20 = bitcast [2 x i64]* %5 to %..string*, !dbg !2326 | |
store %..string { i8* getelementptr inbounds ([50 x i8], [50 x i8]* @"csbs$91", i64 0, i64 0), i64 49 }, %..string* %20, align 8, !dbg !2326 | |
%21 = load [2 x i64], [2 x i64]* %5, align 8, !dbg !2326 | |
call void @runtime.bounds_check_error([2 x i64] %21, i32 346, i32 41, i64 0, i64 %12), !dbg !2326 | |
%22 = load i64, i64* %11, align 8, !dbg !2326 | |
%23 = call i64 @write(i32 %0, i8* %19, i64 %22), !dbg !2326 | |
call void @llvm.dbg.value(metadata i64 %23, metadata !2320, metadata !DIExpression()), !dbg !2334 | |
%24 = icmp eq i64 %23, -1, !dbg !2335 | |
br i1 %24, label %if.then1, label %if.done2, !dbg !2335 | |
if.then1: ; preds = %if.done | |
%25 = call i64 @os.get_last_error(i8* %__.context_ptr), !dbg !2327 | |
%26 = trunc i64 %25 to i32, !dbg !2327 | |
%27 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %6, i32 0, i32 0, !dbg !2327 | |
%28 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %6, i32 0, i32 1, !dbg !2327 | |
store i64 -1, i64* %27, align 8, !dbg !2327 | |
store i32 %26, i32* %28, align 4, !dbg !2327 | |
%29 = bitcast { i64, i32 }* %6 to [2 x i64]*, !dbg !2327 | |
%30 = load [2 x i64], [2 x i64]* %29, align 8, !dbg !2327 | |
ret [2 x i64] %30, !dbg !2327 | |
if.done2: ; preds = %if.done | |
%31 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %7, i32 0, i32 0, !dbg !2330 | |
%32 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %7, i32 0, i32 1, !dbg !2330 | |
store i64 %23, i64* %31, align 8, !dbg !2330 | |
store i32 0, i32* %32, align 4, !dbg !2330 | |
%33 = bitcast { i64, i32 }* %7 to [2 x i64]*, !dbg !2330 | |
%34 = load [2 x i64], [2 x i64]* %33, align 8, !dbg !2330 | |
ret [2 x i64] %34, !dbg !2330 | |
} | |
define internal [2 x i64] @os.seek(i32 %0, i64 %1, i64 %2, i8* noalias nocapture nonnull %__.context_ptr) !dbg !2336 { | |
decls: | |
%3 = alloca { i64, i32 }, align 8, !dbg !2349 | |
%4 = alloca { i64, i32 }, align 8, !dbg !2352 | |
call void @llvm.dbg.value(metadata i32 %0, metadata !2343, metadata !DIExpression()), !dbg !2353 | |
call void @llvm.dbg.value(metadata i64 %1, metadata !2344, metadata !DIExpression()), !dbg !2353 | |
call void @llvm.dbg.value(metadata i64 %2, metadata !2345, metadata !DIExpression()), !dbg !2353 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !2346, metadata !DIExpression()), !dbg !2354 | |
call void @llvm.dbg.value(metadata i64 0, metadata !2347, metadata !DIExpression()), !dbg !2355 | |
%5 = trunc i64 %2 to i32, !dbg !2356 | |
%6 = call i64 @lseek64(i32 %0, i64 %1, i32 %5), !dbg !2356 | |
call void @llvm.dbg.value(metadata i64 %6, metadata !2347, metadata !DIExpression()), !dbg !2355 | |
%7 = icmp eq i64 %6, -1, !dbg !2357 | |
br i1 %7, label %if.then, label %if.done, !dbg !2357 | |
if.then: ; preds = %decls | |
%8 = call i64 @os.get_last_error(i8* %__.context_ptr), !dbg !2349 | |
%9 = trunc i64 %8 to i32, !dbg !2349 | |
%10 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %3, i32 0, i32 0, !dbg !2349 | |
%11 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %3, i32 0, i32 1, !dbg !2349 | |
store i64 -1, i64* %10, align 8, !dbg !2349 | |
store i32 %9, i32* %11, align 4, !dbg !2349 | |
%12 = bitcast { i64, i32 }* %3 to [2 x i64]*, !dbg !2349 | |
%13 = load [2 x i64], [2 x i64]* %12, align 8, !dbg !2349 | |
ret [2 x i64] %13, !dbg !2349 | |
if.done: ; preds = %decls | |
%14 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %4, i32 0, i32 0, !dbg !2352 | |
%15 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %4, i32 0, i32 1, !dbg !2352 | |
store i64 %6, i64* %14, align 8, !dbg !2352 | |
store i32 0, i32* %15, align 4, !dbg !2352 | |
%16 = bitcast { i64, i32 }* %4 to [2 x i64]*, !dbg !2352 | |
%17 = load [2 x i64], [2 x i64]* %16, align 8, !dbg !2352 | |
ret [2 x i64] %17, !dbg !2352 | |
} | |
define dso_local void @runtime.__dynamic_map_grow(%runtime.Map_Header* %0, %runtime.Source_Code_Location* %1, i8* noalias nocapture nonnull %__.context_ptr) !dbg !2358 { | |
decls: | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !2362, metadata !DIExpression()), !dbg !2366 | |
call void @llvm.dbg.value(metadata i64 0, metadata !2363, metadata !DIExpression()), !dbg !2367 | |
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %2, metadata !2365, metadata !DIExpression()), !dbg !2368 | |
%2 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 0, !dbg !2369 | |
%3 = load %runtime.Raw_Map*, %runtime.Raw_Map** %2, align 8, !dbg !2369 | |
%4 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %3, i32 0, i32 1, !dbg !2369 | |
%5 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %4, i32 0, i32 2, !dbg !2369 | |
%6 = load i64, i64* %5, align 8, !dbg !2369 | |
%7 = mul i64 4, %6, !dbg !2369 | |
%8 = add i64 %7, 7, !dbg !2369 | |
%9 = icmp sgt i64 %8, 16, !dbg !2369 | |
%10 = select i1 %9, i64 %8, i64 16, !dbg !2369 | |
call void @llvm.dbg.value(metadata i64 %10, metadata !2363, metadata !DIExpression()), !dbg !2367 | |
call void @runtime.__dynamic_map_rehash(%runtime.Map_Header* %0, i64 %10, %runtime.Source_Code_Location* %1, i8* %__.context_ptr), !dbg !2370 | |
ret void, !dbg !2366 | |
} | |
define internal [2 x i64] @strconv.is_integer_negative(i64 %0, i1 zeroext %1, i64 %2, i8* noalias nocapture nonnull %__.context_ptr) !dbg !2371 { | |
decls: | |
%3 = alloca [2 x i64], align 8, !dbg !2397 | |
%4 = alloca %runtime.Source_Code_Location, align 8, !dbg !2397 | |
%5 = alloca { i64, i8 }, align 8, !dbg !2398 | |
call void @llvm.dbg.value(metadata i64 %0, metadata !2379, metadata !DIExpression()), !dbg !2399 | |
call void @llvm.dbg.value(metadata i8 undef, metadata !2380, metadata !DIExpression()), !dbg !2399 | |
call void @llvm.dbg.value(metadata i64 %2, metadata !2381, metadata !DIExpression()), !dbg !2399 | |
call void @llvm.dbg.value(metadata i64 0, metadata !2382, metadata !DIExpression()), !dbg !2399 | |
call void @llvm.dbg.value(metadata i8 0, metadata !2383, metadata !DIExpression()), !dbg !2399 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !2384, metadata !DIExpression()), !dbg !2400 | |
call void @llvm.dbg.value(metadata i64 %0, metadata !2382, metadata !DIExpression()), !dbg !2399 | |
br i1 %1, label %if.then, label %if.done, !dbg !2401 | |
if.then: ; preds = %decls | |
%6 = sub i64 %2, 8, !dbg !2402 | |
%7 = lshr i64 %6, 3, !dbg !2402 | |
%8 = shl i64 %6, 61, !dbg !2402 | |
%9 = or i64 %7, %8, !dbg !2402 | |
switch i64 %9, label %switch.default.body [ | |
i64 0, label %switch.case.body | |
i64 1, label %switch.case.body1 | |
i64 3, label %switch.case.body2 | |
i64 7, label %switch.case.body3 | |
], !dbg !2402 | |
switch.case.body: ; preds = %if.then | |
call void @llvm.dbg.value(metadata i8 0, metadata !2385, metadata !DIExpression()), !dbg !2403 | |
%10 = trunc i64 %0 to i8, !dbg !2404 | |
call void @llvm.dbg.value(metadata i8 %10, metadata !2385, metadata !DIExpression()), !dbg !2403 | |
%11 = icmp slt i8 %10, 0, !dbg !2405 | |
%12 = zext i1 %11 to i8, !dbg !2405 | |
call void @llvm.dbg.value(metadata i8 %12, metadata !2383, metadata !DIExpression()), !dbg !2399 | |
%13 = sext i8 %10 to i64, !dbg !2406 | |
%14 = icmp slt i64 %13, 0, !dbg !2406 | |
%15 = sub i64 0, %13, !dbg !2406 | |
%16 = select i1 %14, i64 %15, i64 %13, !dbg !2406 | |
call void @llvm.dbg.value(metadata i64 %16, metadata !2382, metadata !DIExpression()), !dbg !2399 | |
br label %if.done, !dbg !2402 | |
switch.case.body1: ; preds = %if.then | |
call void @llvm.dbg.value(metadata i16 0, metadata !2392, metadata !DIExpression()), !dbg !2403 | |
%17 = trunc i64 %0 to i16, !dbg !2407 | |
call void @llvm.dbg.value(metadata i16 %17, metadata !2392, metadata !DIExpression()), !dbg !2403 | |
%18 = icmp slt i16 %17, 0, !dbg !2408 | |
%19 = zext i1 %18 to i8, !dbg !2408 | |
call void @llvm.dbg.value(metadata i8 %19, metadata !2383, metadata !DIExpression()), !dbg !2399 | |
%20 = sext i16 %17 to i64, !dbg !2409 | |
%21 = icmp slt i64 %20, 0, !dbg !2409 | |
%22 = sub i64 0, %20, !dbg !2409 | |
%23 = select i1 %21, i64 %22, i64 %20, !dbg !2409 | |
call void @llvm.dbg.value(metadata i64 %23, metadata !2382, metadata !DIExpression()), !dbg !2399 | |
br label %if.done, !dbg !2402 | |
switch.case.body2: ; preds = %if.then | |
call void @llvm.dbg.value(metadata i32 0, metadata !2395, metadata !DIExpression()), !dbg !2403 | |
%24 = trunc i64 %0 to i32, !dbg !2410 | |
call void @llvm.dbg.value(metadata i32 %24, metadata !2395, metadata !DIExpression()), !dbg !2403 | |
%25 = icmp slt i32 %24, 0, !dbg !2411 | |
%26 = zext i1 %25 to i8, !dbg !2411 | |
call void @llvm.dbg.value(metadata i8 %26, metadata !2383, metadata !DIExpression()), !dbg !2399 | |
%27 = sext i32 %24 to i64, !dbg !2412 | |
%28 = icmp slt i64 %27, 0, !dbg !2412 | |
%29 = sub i64 0, %27, !dbg !2412 | |
%30 = select i1 %28, i64 %29, i64 %27, !dbg !2412 | |
call void @llvm.dbg.value(metadata i64 %30, metadata !2382, metadata !DIExpression()), !dbg !2399 | |
br label %if.done, !dbg !2402 | |
switch.case.body3: ; preds = %if.then | |
call void @llvm.dbg.value(metadata i64 0, metadata !2396, metadata !DIExpression()), !dbg !2403 | |
call void @llvm.dbg.value(metadata i64 %0, metadata !2396, metadata !DIExpression()), !dbg !2403 | |
%31 = icmp slt i64 %0, 0, !dbg !2413 | |
%32 = zext i1 %31 to i8, !dbg !2413 | |
call void @llvm.dbg.value(metadata i8 %32, metadata !2383, metadata !DIExpression()), !dbg !2399 | |
%33 = sub i64 0, %0, !dbg !2414 | |
%34 = select i1 %31, i64 %33, i64 %0, !dbg !2414 | |
call void @llvm.dbg.value(metadata i64 %34, metadata !2382, metadata !DIExpression()), !dbg !2399 | |
br label %if.done, !dbg !2402 | |
switch.default.body: ; preds = %if.then | |
%35 = bitcast [2 x i64]* %3 to %..string*, !dbg !2397 | |
store %..string { i8* getelementptr inbounds ([42 x i8], [42 x i8]* @"csbs$93", i64 0, i64 0), i64 41 }, %..string* %35, align 8, !dbg !2397 | |
%36 = load [2 x i64], [2 x i64]* %3, align 8, !dbg !2397 | |
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, i32 35, i32 4, %..string { i8* getelementptr inbounds ([20 x i8], [20 x i8]* @"csbs$95", i64 0, i64 0), i64 19 } }, %runtime.Source_Code_Location* %4, align 8, !dbg !2397 | |
call void @runtime.panic([2 x i64] %36, %runtime.Source_Code_Location* %4, i8* %__.context_ptr), !dbg !2397 | |
unreachable, !dbg !2397 | |
if.done: ; preds = %switch.case.body, %switch.case.body1, %switch.case.body2, %switch.case.body3, %decls | |
%.15 = phi i64 [ %0, %decls ], [ %34, %switch.case.body3 ], [ %30, %switch.case.body2 ], [ %23, %switch.case.body1 ], [ %16, %switch.case.body ], !dbg !2415 | |
%.1 = phi i8 [ 0, %decls ], [ %32, %switch.case.body3 ], [ %26, %switch.case.body2 ], [ %19, %switch.case.body1 ], [ %12, %switch.case.body ] | |
call void @llvm.dbg.value(metadata i8 %.1, metadata !2383, metadata !DIExpression()), !dbg !2399 | |
call void @llvm.dbg.value(metadata i64 %.15, metadata !2382, metadata !DIExpression()), !dbg !2399 | |
call void @llvm.dbg.value(metadata i64 %.15, metadata !2382, metadata !DIExpression()), !dbg !2399 | |
call void @llvm.dbg.value(metadata i8 %.1, metadata !2383, metadata !DIExpression()), !dbg !2399 | |
%37 = getelementptr inbounds { i64, i8 }, { i64, i8 }* %5, i32 0, i32 0, !dbg !2398 | |
%38 = getelementptr inbounds { i64, i8 }, { i64, i8 }* %5, i32 0, i32 1, !dbg !2398 | |
store i64 %.15, i64* %37, align 8, !dbg !2398 | |
store i8 %.1, i8* %38, align 1, !dbg !2398 | |
%39 = bitcast { i64, i8 }* %5 to [2 x i64]*, !dbg !2398 | |
%40 = load [2 x i64], [2 x i64]* %39, align 8, !dbg !2398 | |
ret [2 x i64] %40, !dbg !2398 | |
} | |
; Function Attrs: alwaysinline nounwind | |
define dso_local i8 @runtime.__dynamic_map_full(%runtime.Map_Header* %0) #2 !dbg !2194 { | |
decls: | |
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %1, metadata !2192, metadata !DIExpression()), !dbg !2416 | |
%1 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 0, !dbg !2417 | |
%2 = load %runtime.Raw_Map*, %runtime.Raw_Map** %1, align 8, !dbg !2417 | |
%3 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %2, i32 0, i32 0, !dbg !2417 | |
%4 = getelementptr inbounds { i64*, i64 }, { i64*, i64 }* %3, i32 0, i32 1, !dbg !2417 | |
%5 = load i64, i64* %4, align 8, !dbg !2417 | |
%6 = sitofp i64 %5 to double, !dbg !2417 | |
%7 = fmul double 7.500000e-01, %6, !dbg !2417 | |
%8 = fptosi double %7 to i64, !dbg !2417 | |
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %1, metadata !2192, metadata !DIExpression()), !dbg !2416 | |
%9 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %2, i32 0, i32 1, !dbg !2417 | |
%10 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %9, i32 0, i32 1, !dbg !2417 | |
%11 = load i64, i64* %10, align 8, !dbg !2417 | |
%12 = icmp sle i64 %8, %11, !dbg !2417 | |
%13 = zext i1 %12 to i8, !dbg !2417 | |
ret i8 %13, !dbg !2417 | |
} | |
define internal [2 x i64] @strconv.append_bits([2 x i64] %0, i64 %1, i64 %2, i1 zeroext %3, i64 %4, [2 x i64] %5, i8 %6, i8* noalias nocapture nonnull %__.context_ptr) !dbg !2418 { | |
decls: | |
%7 = alloca { i8*, i64 }, align 8 | |
call void @llvm.dbg.declare(metadata { i8*, i64 }* %8, metadata !2427, metadata !DIExpression()), !dbg !2448 | |
%8 = alloca { i8*, i64 }, align 8 | |
%9 = alloca %..string, align 8 | |
call void @llvm.dbg.declare(metadata %..string* %10, metadata !2432, metadata !DIExpression()), !dbg !2449 | |
%10 = alloca %..string, align 8 | |
%11 = alloca [2 x i64], align 8, !dbg !2450 | |
%12 = alloca %runtime.Source_Code_Location, align 8, !dbg !2450 | |
call void @llvm.dbg.declare(metadata [129 x i8]* %13, metadata !2435, metadata !DIExpression()), !dbg !2453 | |
%13 = alloca [129 x i8], align 1, !dbg !2453 | |
%14 = alloca { i64, i8 }, align 8, !dbg !2454 | |
%15 = alloca [2 x i64], align 8, !dbg !2455 | |
%16 = alloca [2 x i64], align 8, !dbg !2455 | |
%17 = alloca [2 x i64], align 8, !dbg !2458 | |
%18 = alloca [2 x i64], align 8, !dbg !2458 | |
%19 = alloca [2 x i64], align 8, !dbg !2459 | |
%20 = alloca [2 x i64], align 8, !dbg !2461 | |
%21 = alloca [2 x i64], align 8, !dbg !2462 | |
%22 = alloca [2 x i64], align 8, !dbg !2463 | |
%23 = alloca [2 x i64], align 8, !dbg !2464 | |
%24 = alloca [2 x i64], align 8, !dbg !2467 | |
%25 = alloca [2 x i64], align 8, !dbg !2469 | |
%26 = alloca [2 x i64], align 8, !dbg !2470 | |
call void @llvm.dbg.declare(metadata { i8*, i64 }* %27, metadata !2447, metadata !DIExpression()), !dbg !2471 | |
%27 = alloca { i8*, i64 }, align 8, !dbg !2471 | |
%28 = alloca [2 x i64], align 8, !dbg !2471 | |
%29 = alloca { i8*, i64 }, align 8, !dbg !2471 | |
%30 = alloca [2 x i64], align 8, !dbg !2472 | |
%31 = alloca { i8*, i64 }, align 8, !dbg !2472 | |
%32 = bitcast { i8*, i64 }* %7 to [2 x i64]* | |
store [2 x i64] %0, [2 x i64]* %32, align 8 | |
%33 = bitcast { i8*, i64 }* %8 to i8* | |
%34 = bitcast { i8*, i64 }* %7 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %33, i8* align 8 %34, i64 16, i1 false) | |
call void @llvm.dbg.value(metadata i64 %1, metadata !2428, metadata !DIExpression()), !dbg !2473 | |
call void @llvm.dbg.value(metadata i64 %2, metadata !2429, metadata !DIExpression()), !dbg !2473 | |
call void @llvm.dbg.value(metadata i8 undef, metadata !2430, metadata !DIExpression()), !dbg !2473 | |
call void @llvm.dbg.value(metadata i64 %4, metadata !2431, metadata !DIExpression()), !dbg !2473 | |
%35 = bitcast %..string* %9 to [2 x i64]* | |
store [2 x i64] %5, [2 x i64]* %35, align 8 | |
%36 = bitcast %..string* %10 to i8* | |
%37 = bitcast %..string* %9 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %36, i8* align 8 %37, i64 16, i1 false) | |
call void @llvm.dbg.value(metadata i8 %6, metadata !2433, metadata !DIExpression()), !dbg !2473 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !2434, metadata !DIExpression()), !dbg !2474 | |
%38 = icmp slt i64 %2, 2, !dbg !2475 | |
br i1 %38, label %if.then, label %cmp.or, !dbg !2475 | |
cmp.or: ; preds = %decls | |
%39 = icmp sgt i64 %2, 32, !dbg !2475 | |
br i1 %39, label %if.then, label %if.done, !dbg !2475 | |
if.then: ; preds = %cmp.or, %decls | |
%40 = bitcast [2 x i64]* %11 to %..string*, !dbg !2450 | |
store %..string { i8* getelementptr inbounds ([44 x i8], [44 x i8]* @"csbs$96", i64 0, i64 0), i64 43 }, %..string* %40, align 8, !dbg !2450 | |
%41 = load [2 x i64], [2 x i64]* %11, align 8, !dbg !2450 | |
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, i32 43, i32 3, %..string { i8* getelementptr inbounds ([12 x i8], [12 x i8]* @"csbs$97", i64 0, i64 0), i64 11 } }, %runtime.Source_Code_Location* %12, align 8, !dbg !2450 | |
call void @runtime.panic([2 x i64] %41, %runtime.Source_Code_Location* %12, i8* %__.context_ptr), !dbg !2450 | |
unreachable, !dbg !2450 | |
if.done: ; preds = %cmp.or | |
%42 = bitcast [129 x i8]* %13 to i8*, !dbg !2453 | |
call void @llvm.memset.p0i8.i64(i8* %42, i8 0, i64 129, i1 false), !dbg !2453 | |
call void @llvm.dbg.value(metadata i64 0, metadata !2440, metadata !DIExpression()), !dbg !2476 | |
call void @llvm.dbg.value(metadata i64 129, metadata !2440, metadata !DIExpression()), !dbg !2476 | |
call void @llvm.dbg.value(metadata i64 0, metadata !2441, metadata !DIExpression()), !dbg !2476 | |
call void @llvm.dbg.value(metadata i8 0, metadata !2442, metadata !DIExpression()), !dbg !2476 | |
%43 = call [2 x i64] @strconv.is_integer_negative(i64 %1, i1 %3, i64 %4, i8* %__.context_ptr), !dbg !2454 | |
%44 = bitcast { i64, i8 }* %14 to [2 x i64]*, !dbg !2454 | |
store [2 x i64] %43, [2 x i64]* %44, align 8, !dbg !2454 | |
%45 = getelementptr inbounds { i64, i8 }, { i64, i8 }* %14, i32 0, i32 0, !dbg !2454 | |
%46 = load i64, i64* %45, align 8, !dbg !2454 | |
%47 = getelementptr inbounds { i64, i8 }, { i64, i8 }* %14, i32 0, i32 1, !dbg !2454 | |
%48 = load i8, i8* %47, align 1, !dbg !2454 | |
call void @llvm.dbg.value(metadata i64 %46, metadata !2441, metadata !DIExpression()), !dbg !2476 | |
call void @llvm.dbg.value(metadata i8 %48, metadata !2442, metadata !DIExpression()), !dbg !2476 | |
call void @llvm.dbg.value(metadata i64 0, metadata !2443, metadata !DIExpression()), !dbg !2476 | |
call void @llvm.dbg.value(metadata i64 %2, metadata !2443, metadata !DIExpression()), !dbg !2476 | |
br label %for.loop, !dbg !2477 | |
for.loop: ; preds = %for.body, %if.done | |
%.015 = phi i64 [ 129, %if.done ], [ %50, %for.body ], !dbg !2476 | |
%.014 = phi i64 [ %46, %if.done ], [ %63, %for.body ], !dbg !2476 | |
call void @llvm.dbg.value(metadata i64 %.014, metadata !2441, metadata !DIExpression()), !dbg !2476 | |
call void @llvm.dbg.value(metadata i64 %.015, metadata !2440, metadata !DIExpression()), !dbg !2476 | |
%49 = icmp uge i64 %.014, %2, !dbg !2477 | |
%50 = sub i64 %.015, 1, !dbg !2476 | |
call void @llvm.dbg.value(metadata i64 %50, metadata !2440, metadata !DIExpression()), !dbg !2476 | |
call void @llvm.dbg.value(metadata i64 %50, metadata !2440, metadata !DIExpression()), !dbg !2476 | |
%51 = getelementptr [129 x i8], [129 x i8]* %13, i64 0, i64 %50, !dbg !2476 | |
br i1 %49, label %for.body, label %for.done, !dbg !2477 | |
for.body: ; preds = %for.loop | |
%52 = bitcast [2 x i64]* %15 to %..string*, !dbg !2455 | |
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %52, align 8, !dbg !2455 | |
%53 = load [2 x i64], [2 x i64]* %15, align 8, !dbg !2455 | |
call void @runtime.bounds_check_error([2 x i64] %53, i32 51, i32 11, i64 %50, i64 129), !dbg !2455 | |
%54 = getelementptr inbounds %..string, %..string* %10, i32 0, i32 0, !dbg !2455 | |
%55 = load i8*, i8** %54, align 8, !dbg !2455 | |
%56 = getelementptr inbounds %..string, %..string* %10, i32 0, i32 1, !dbg !2455 | |
%57 = load i64, i64* %56, align 8, !dbg !2455 | |
%58 = urem i64 %.014, %2, !dbg !2455 | |
%59 = bitcast [2 x i64]* %16 to %..string*, !dbg !2455 | |
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %59, align 8, !dbg !2455 | |
%60 = load [2 x i64], [2 x i64]* %16, align 8, !dbg !2455 | |
call void @runtime.bounds_check_error([2 x i64] %60, i32 51, i32 23, i64 %58, i64 %57), !dbg !2455 | |
%61 = getelementptr i8, i8* %55, i64 %58, !dbg !2455 | |
%62 = load i8, i8* %61, align 1, !dbg !2455 | |
store i8 %62, i8* %51, align 1, !dbg !2455 | |
%63 = udiv i64 %.014, %2, !dbg !2478 | |
call void @llvm.dbg.value(metadata i64 %63, metadata !2441, metadata !DIExpression()), !dbg !2476 | |
br label %for.loop, !dbg !2477 | |
for.done: ; preds = %for.loop | |
%64 = bitcast [2 x i64]* %17 to %..string*, !dbg !2458 | |
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %64, align 8, !dbg !2458 | |
%65 = load [2 x i64], [2 x i64]* %17, align 8, !dbg !2458 | |
call void @runtime.bounds_check_error([2 x i64] %65, i32 54, i32 10, i64 %50, i64 129), !dbg !2458 | |
%66 = getelementptr inbounds %..string, %..string* %10, i32 0, i32 0, !dbg !2458 | |
%67 = load i8*, i8** %66, align 8, !dbg !2458 | |
%68 = getelementptr inbounds %..string, %..string* %10, i32 0, i32 1, !dbg !2458 | |
%69 = load i64, i64* %68, align 8, !dbg !2458 | |
%70 = urem i64 %.014, %2, !dbg !2458 | |
%71 = bitcast [2 x i64]* %18 to %..string*, !dbg !2458 | |
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %71, align 8, !dbg !2458 | |
%72 = load [2 x i64], [2 x i64]* %18, align 8, !dbg !2458 | |
call void @runtime.bounds_check_error([2 x i64] %72, i32 54, i32 22, i64 %70, i64 %69), !dbg !2458 | |
%73 = getelementptr i8, i8* %67, i64 %70, !dbg !2458 | |
%74 = load i8, i8* %73, align 1, !dbg !2458 | |
store i8 %74, i8* %51, align 1, !dbg !2458 | |
%75 = and i8 %6, 1, !dbg !2479 | |
%76 = icmp ne i8 %75, 0, !dbg !2479 | |
br i1 %76, label %if.then1, label %if.done7, !dbg !2479 | |
if.then1: ; preds = %for.done | |
call void @llvm.dbg.value(metadata i8 0, metadata !2444, metadata !DIExpression()), !dbg !2480 | |
call void @llvm.dbg.value(metadata i8 1, metadata !2444, metadata !DIExpression()), !dbg !2480 | |
%77 = sub i64 %2, 2, !dbg !2481 | |
%78 = lshr i64 %77, 1, !dbg !2481 | |
%79 = shl i64 %77, 63, !dbg !2481 | |
%80 = or i64 %78, %79, !dbg !2481 | |
switch i64 %80, label %switch.done [ | |
i64 0, label %switch.case.body | |
i64 3, label %switch.case.body2 | |
i64 5, label %switch.case.body3 | |
i64 7, label %switch.case.body4 | |
], !dbg !2481 | |
switch.case.body: ; preds = %if.then1 | |
%81 = sub i64 %50, 1, !dbg !2482 | |
call void @llvm.dbg.value(metadata i64 %81, metadata !2440, metadata !DIExpression()), !dbg !2476 | |
%82 = getelementptr [129 x i8], [129 x i8]* %13, i64 0, i64 %81, !dbg !2459 | |
%83 = bitcast [2 x i64]* %19 to %..string*, !dbg !2459 | |
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %83, align 8, !dbg !2459 | |
%84 = load [2 x i64], [2 x i64]* %19, align 8, !dbg !2459 | |
call void @runtime.bounds_check_error([2 x i64] %84, i32 59, i32 20, i64 %81, i64 129), !dbg !2459 | |
store i8 98, i8* %82, align 1, !dbg !2459 | |
br label %switch.done, !dbg !2481 | |
switch.case.body2: ; preds = %if.then1 | |
%85 = sub i64 %50, 1, !dbg !2483 | |
call void @llvm.dbg.value(metadata i64 %85, metadata !2440, metadata !DIExpression()), !dbg !2476 | |
%86 = getelementptr [129 x i8], [129 x i8]* %13, i64 0, i64 %85, !dbg !2461 | |
%87 = bitcast [2 x i64]* %20 to %..string*, !dbg !2461 | |
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %87, align 8, !dbg !2461 | |
%88 = load [2 x i64], [2 x i64]* %20, align 8, !dbg !2461 | |
call void @runtime.bounds_check_error([2 x i64] %88, i32 60, i32 20, i64 %85, i64 129), !dbg !2461 | |
store i8 111, i8* %86, align 1, !dbg !2461 | |
br label %switch.done, !dbg !2481 | |
switch.case.body3: ; preds = %if.then1 | |
%89 = sub i64 %50, 1, !dbg !2484 | |
call void @llvm.dbg.value(metadata i64 %89, metadata !2440, metadata !DIExpression()), !dbg !2476 | |
%90 = getelementptr [129 x i8], [129 x i8]* %13, i64 0, i64 %89, !dbg !2462 | |
%91 = bitcast [2 x i64]* %21 to %..string*, !dbg !2462 | |
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %91, align 8, !dbg !2462 | |
%92 = load [2 x i64], [2 x i64]* %21, align 8, !dbg !2462 | |
call void @runtime.bounds_check_error([2 x i64] %92, i32 62, i32 20, i64 %89, i64 129), !dbg !2462 | |
store i8 122, i8* %90, align 1, !dbg !2462 | |
br label %switch.done, !dbg !2481 | |
switch.case.body4: ; preds = %if.then1 | |
%93 = sub i64 %50, 1, !dbg !2485 | |
call void @llvm.dbg.value(metadata i64 %93, metadata !2440, metadata !DIExpression()), !dbg !2476 | |
%94 = getelementptr [129 x i8], [129 x i8]* %13, i64 0, i64 %93, !dbg !2463 | |
%95 = bitcast [2 x i64]* %22 to %..string*, !dbg !2463 | |
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %95, align 8, !dbg !2463 | |
%96 = load [2 x i64], [2 x i64]* %22, align 8, !dbg !2463 | |
call void @runtime.bounds_check_error([2 x i64] %96, i32 63, i32 20, i64 %93, i64 129), !dbg !2463 | |
store i8 120, i8* %94, align 1, !dbg !2463 | |
br label %switch.done, !dbg !2481 | |
switch.done: ; preds = %if.then1, %switch.case.body4, %switch.case.body3, %switch.case.body2, %switch.case.body | |
%.1 = phi i64 [ %93, %switch.case.body4 ], [ %89, %switch.case.body3 ], [ %85, %switch.case.body2 ], [ %81, %switch.case.body ], [ %50, %if.then1 ], !dbg !2476 | |
%.0 = phi i8 [ 1, %switch.case.body4 ], [ 1, %switch.case.body3 ], [ 1, %switch.case.body2 ], [ 1, %switch.case.body ], [ 0, %if.then1 ], !dbg !2480 | |
call void @llvm.dbg.value(metadata i8 %.0, metadata !2444, metadata !DIExpression()), !dbg !2480 | |
call void @llvm.dbg.value(metadata i64 %.1, metadata !2440, metadata !DIExpression()), !dbg !2476 | |
%97 = trunc i8 %.0 to i1, !dbg !2486 | |
br i1 %97, label %if.then5, label %if.done7, !dbg !2486 | |
if.then5: ; preds = %switch.done | |
%98 = sub i64 %.1, 1, !dbg !2487 | |
call void @llvm.dbg.value(metadata i64 %98, metadata !2440, metadata !DIExpression()), !dbg !2476 | |
%99 = getelementptr [129 x i8], [129 x i8]* %13, i64 0, i64 %98, !dbg !2464 | |
%100 = bitcast [2 x i64]* %23 to %..string*, !dbg !2464 | |
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %100, align 8, !dbg !2464 | |
%101 = load [2 x i64], [2 x i64]* %23, align 8, !dbg !2464 | |
call void @runtime.bounds_check_error([2 x i64] %101, i32 67, i32 12, i64 %98, i64 129), !dbg !2464 | |
store i8 48, i8* %99, align 1, !dbg !2464 | |
br label %if.done7, !dbg !2486 | |
if.done7: ; preds = %switch.done, %if.then5, %for.done | |
%.3 = phi i64 [ %50, %for.done ], [ %98, %if.then5 ], [ %.1, %switch.done ], !dbg !2476 | |
call void @llvm.dbg.value(metadata i64 %.3, metadata !2440, metadata !DIExpression()), !dbg !2476 | |
%102 = icmp eq i8 1, %48, !dbg !2488 | |
br i1 %102, label %switch.case.body8, label %switch.case.next, !dbg !2488 | |
switch.case.next: ; preds = %if.done7 | |
%103 = and i8 %6, 2, !dbg !2488 | |
%104 = icmp ne i8 %103, 0, !dbg !2488 | |
br i1 %104, label %switch.case.body10, label %switch.case.next9, !dbg !2488 | |
switch.case.body8: ; preds = %if.done7 | |
%105 = sub i64 %.3, 1, !dbg !2489 | |
call void @llvm.dbg.value(metadata i64 %105, metadata !2440, metadata !DIExpression()), !dbg !2476 | |
%106 = getelementptr [129 x i8], [129 x i8]* %13, i64 0, i64 %105, !dbg !2467 | |
%107 = bitcast [2 x i64]* %24 to %..string*, !dbg !2467 | |
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %107, align 8, !dbg !2467 | |
%108 = load [2 x i64], [2 x i64]* %24, align 8, !dbg !2467 | |
call void @runtime.bounds_check_error([2 x i64] %108, i32 73, i32 11, i64 %105, i64 129), !dbg !2467 | |
store i8 45, i8* %106, align 1, !dbg !2467 | |
br label %switch.done13, !dbg !2488 | |
switch.case.next9: ; preds = %switch.case.next | |
%109 = and i8 %6, 4, !dbg !2488 | |
%110 = icmp ne i8 %109, 0, !dbg !2488 | |
br i1 %110, label %switch.case.body12, label %switch.done13, !dbg !2488 | |
switch.case.body10: ; preds = %switch.case.next | |
%111 = sub i64 %.3, 1, !dbg !2490 | |
call void @llvm.dbg.value(metadata i64 %111, metadata !2440, metadata !DIExpression()), !dbg !2476 | |
%112 = getelementptr [129 x i8], [129 x i8]* %13, i64 0, i64 %111, !dbg !2469 | |
%113 = bitcast [2 x i64]* %25 to %..string*, !dbg !2469 | |
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %113, align 8, !dbg !2469 | |
%114 = load [2 x i64], [2 x i64]* %25, align 8, !dbg !2469 | |
call void @runtime.bounds_check_error([2 x i64] %114, i32 75, i32 11, i64 %111, i64 129), !dbg !2469 | |
store i8 43, i8* %112, align 1, !dbg !2469 | |
br label %switch.done13, !dbg !2488 | |
switch.case.body12: ; preds = %switch.case.next9 | |
%115 = sub i64 %.3, 1, !dbg !2491 | |
call void @llvm.dbg.value(metadata i64 %115, metadata !2440, metadata !DIExpression()), !dbg !2476 | |
%116 = getelementptr [129 x i8], [129 x i8]* %13, i64 0, i64 %115, !dbg !2470 | |
%117 = bitcast [2 x i64]* %26 to %..string*, !dbg !2470 | |
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %117, align 8, !dbg !2470 | |
%118 = load [2 x i64], [2 x i64]* %26, align 8, !dbg !2470 | |
call void @runtime.bounds_check_error([2 x i64] %118, i32 77, i32 11, i64 %115, i64 129), !dbg !2470 | |
store i8 32, i8* %116, align 1, !dbg !2470 | |
br label %switch.done13, !dbg !2488 | |
switch.done13: ; preds = %switch.case.next9, %switch.case.body12, %switch.case.body10, %switch.case.body8 | |
%.4 = phi i64 [ %105, %switch.case.body8 ], [ %111, %switch.case.body10 ], [ %115, %switch.case.body12 ], [ %.3, %switch.case.next9 ], !dbg !2476 | |
call void @llvm.dbg.value(metadata i64 %.4, metadata !2440, metadata !DIExpression()), !dbg !2476 | |
%119 = bitcast { i8*, i64 }* %27 to i8*, !dbg !2471 | |
call void @llvm.memset.p0i8.i64(i8* %119, i8 0, i64 16, i1 false), !dbg !2471 | |
%120 = bitcast [2 x i64]* %28 to %..string*, !dbg !2471 | |
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %120, align 8, !dbg !2471 | |
%121 = load [2 x i64], [2 x i64]* %28, align 8, !dbg !2471 | |
call void @runtime.slice_expr_error_lo_hi([2 x i64] %121, i32 80, i32 10, i64 %.4, i64 129, i64 129), !dbg !2471 | |
%122 = getelementptr [129 x i8], [129 x i8]* %13, i64 0, i64 0, !dbg !2471 | |
%123 = getelementptr i8, i8* %122, i64 %.4, !dbg !2471 | |
%124 = sub i64 129, %.4, !dbg !2471 | |
%125 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %29, i32 0, i32 0, !dbg !2471 | |
store i8* %123, i8** %125, align 8, !dbg !2471 | |
%126 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %29, i32 0, i32 1, !dbg !2471 | |
store i64 %124, i64* %126, align 8, !dbg !2471 | |
%127 = bitcast { i8*, i64 }* %29 to i8*, !dbg !2471 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %119, i8* align 8 %127, i64 16, i1 false), !dbg !2471 | |
%128 = bitcast { i8*, i64 }* %8 to [2 x i64]*, !dbg !2492 | |
%129 = load [2 x i64], [2 x i64]* %128, align 8, !dbg !2492 | |
%130 = bitcast { i8*, i64 }* %27 to [2 x i64]*, !dbg !2492 | |
%131 = load [2 x i64], [2 x i64]* %130, align 8, !dbg !2492 | |
%132 = call i64 @runtime.copy_slice-6928([2 x i64] %129, [2 x i64] %131), !dbg !2492 | |
%133 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %27, i32 0, i32 1, !dbg !2472 | |
%134 = load i64, i64* %133, align 8, !dbg !2472 | |
%135 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %8, i32 0, i32 1, !dbg !2472 | |
%136 = load i64, i64* %135, align 8, !dbg !2472 | |
%137 = bitcast [2 x i64]* %30 to %..string*, !dbg !2472 | |
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %137, align 8, !dbg !2472 | |
%138 = load [2 x i64], [2 x i64]* %30, align 8, !dbg !2472 | |
call void @runtime.slice_expr_error_lo_hi([2 x i64] %138, i32 82, i32 19, i64 0, i64 %134, i64 %136), !dbg !2472 | |
%139 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %8, i32 0, i32 0, !dbg !2472 | |
%140 = load i8*, i8** %139, align 8, !dbg !2472 | |
%141 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %31, i32 0, i32 0, !dbg !2472 | |
store i8* %140, i8** %141, align 8, !dbg !2472 | |
%142 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %31, i32 0, i32 1, !dbg !2472 | |
store i64 %134, i64* %142, align 8, !dbg !2472 | |
%143 = bitcast { i8*, i64 }* %31 to %..string*, !dbg !2472 | |
%144 = bitcast %..string* %143 to [2 x i64]*, !dbg !2472 | |
%145 = load [2 x i64], [2 x i64]* %144, align 8, !dbg !2472 | |
ret [2 x i64] %145, !dbg !2472 | |
} | |
define internal void @strconv.is_integer_negative_128({ i128, i8 }* noalias sret %agg.result, i128 %0, i1 zeroext %1, i64 %2, i8* noalias nocapture nonnull %__.context_ptr) !dbg !2493 { | |
decls: | |
%3 = alloca [2 x i64], align 8, !dbg !2514 | |
%4 = alloca %runtime.Source_Code_Location, align 8, !dbg !2514 | |
call void @llvm.dbg.value(metadata i128 %0, metadata !2501, metadata !DIExpression()), !dbg !2515 | |
call void @llvm.dbg.value(metadata i8 undef, metadata !2502, metadata !DIExpression()), !dbg !2515 | |
call void @llvm.dbg.value(metadata i64 %2, metadata !2503, metadata !DIExpression()), !dbg !2515 | |
%5 = getelementptr inbounds { i128, i8 }, { i128, i8 }* %agg.result, i32 0, i32 0 | |
%6 = getelementptr inbounds { i128, i8 }, { i128, i8 }* %agg.result, i32 0, i32 1 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !2504, metadata !DIExpression()), !dbg !2516 | |
store i128 %0, i128* %5, align 16, !dbg !2517 | |
br i1 %1, label %if.then, label %if.done, !dbg !2518 | |
if.then: ; preds = %decls | |
switch i64 %2, label %switch.default.body [ | |
i64 8, label %switch.case.body | |
i64 16, label %switch.case.body1 | |
i64 32, label %switch.case.body2 | |
i64 64, label %switch.case.body3 | |
i64 128, label %switch.case.body4 | |
], !dbg !2519 | |
switch.case.body: ; preds = %if.then | |
call void @llvm.dbg.value(metadata i8 0, metadata !2505, metadata !DIExpression()), !dbg !2520 | |
%7 = trunc i128 %0 to i8, !dbg !2521 | |
call void @llvm.dbg.value(metadata i8 %7, metadata !2505, metadata !DIExpression()), !dbg !2520 | |
%8 = icmp slt i8 %7, 0, !dbg !2522 | |
%9 = zext i1 %8 to i8, !dbg !2522 | |
store i8 %9, i8* %6, align 1, !dbg !2522 | |
%10 = sext i8 %7 to i128, !dbg !2523 | |
%11 = icmp slt i128 %10, 0, !dbg !2523 | |
%12 = sub i128 0, %10, !dbg !2523 | |
%13 = select i1 %11, i128 %12, i128 %10, !dbg !2523 | |
store i128 %13, i128* %5, align 16, !dbg !2523 | |
br label %if.done, !dbg !2519 | |
switch.case.body1: ; preds = %if.then | |
call void @llvm.dbg.value(metadata i16 0, metadata !2510, metadata !DIExpression()), !dbg !2520 | |
%14 = trunc i128 %0 to i16, !dbg !2524 | |
call void @llvm.dbg.value(metadata i16 %14, metadata !2510, metadata !DIExpression()), !dbg !2520 | |
%15 = icmp slt i16 %14, 0, !dbg !2525 | |
%16 = zext i1 %15 to i8, !dbg !2525 | |
store i8 %16, i8* %6, align 1, !dbg !2525 | |
%17 = sext i16 %14 to i128, !dbg !2526 | |
%18 = icmp slt i128 %17, 0, !dbg !2526 | |
%19 = sub i128 0, %17, !dbg !2526 | |
%20 = select i1 %18, i128 %19, i128 %17, !dbg !2526 | |
store i128 %20, i128* %5, align 16, !dbg !2526 | |
br label %if.done, !dbg !2519 | |
switch.case.body2: ; preds = %if.then | |
call void @llvm.dbg.value(metadata i32 0, metadata !2511, metadata !DIExpression()), !dbg !2520 | |
%21 = trunc i128 %0 to i32, !dbg !2527 | |
call void @llvm.dbg.value(metadata i32 %21, metadata !2511, metadata !DIExpression()), !dbg !2520 | |
%22 = icmp slt i32 %21, 0, !dbg !2528 | |
%23 = zext i1 %22 to i8, !dbg !2528 | |
store i8 %23, i8* %6, align 1, !dbg !2528 | |
%24 = sext i32 %21 to i128, !dbg !2529 | |
%25 = icmp slt i128 %24, 0, !dbg !2529 | |
%26 = sub i128 0, %24, !dbg !2529 | |
%27 = select i1 %25, i128 %26, i128 %24, !dbg !2529 | |
store i128 %27, i128* %5, align 16, !dbg !2529 | |
br label %if.done, !dbg !2519 | |
switch.case.body3: ; preds = %if.then | |
call void @llvm.dbg.value(metadata i64 0, metadata !2512, metadata !DIExpression()), !dbg !2520 | |
%28 = trunc i128 %0 to i64, !dbg !2530 | |
call void @llvm.dbg.value(metadata i64 %28, metadata !2512, metadata !DIExpression()), !dbg !2520 | |
%29 = icmp slt i64 %28, 0, !dbg !2531 | |
%30 = zext i1 %29 to i8, !dbg !2531 | |
store i8 %30, i8* %6, align 1, !dbg !2531 | |
%31 = sext i64 %28 to i128, !dbg !2532 | |
%32 = icmp slt i128 %31, 0, !dbg !2532 | |
%33 = sub i128 0, %31, !dbg !2532 | |
%34 = select i1 %32, i128 %33, i128 %31, !dbg !2532 | |
store i128 %34, i128* %5, align 16, !dbg !2532 | |
br label %if.done, !dbg !2519 | |
switch.case.body4: ; preds = %if.then | |
call void @llvm.dbg.value(metadata i128 0, metadata !2513, metadata !DIExpression()), !dbg !2520 | |
call void @llvm.dbg.value(metadata i128 %0, metadata !2513, metadata !DIExpression()), !dbg !2520 | |
%35 = icmp slt i128 %0, 0, !dbg !2533 | |
%36 = zext i1 %35 to i8, !dbg !2533 | |
store i8 %36, i8* %6, align 1, !dbg !2533 | |
%37 = sub i128 0, %0, !dbg !2534 | |
%38 = select i1 %35, i128 %37, i128 %0, !dbg !2534 | |
store i128 %38, i128* %5, align 16, !dbg !2534 | |
br label %if.done, !dbg !2519 | |
switch.default.body: ; preds = %if.then | |
%39 = bitcast [2 x i64]* %3 to %..string*, !dbg !2514 | |
store %..string { i8* getelementptr inbounds ([42 x i8], [42 x i8]* @"csbs$93", i64 0, i64 0), i64 41 }, %..string* %39, align 8, !dbg !2514 | |
%40 = load [2 x i64], [2 x i64]* %3, align 8, !dbg !2514 | |
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, i32 110, i32 4, %..string { i8* getelementptr inbounds ([24 x i8], [24 x i8]* @"csbs$98", i64 0, i64 0), i64 23 } }, %runtime.Source_Code_Location* %4, align 8, !dbg !2514 | |
call void @runtime.panic([2 x i64] %40, %runtime.Source_Code_Location* %4, i8* %__.context_ptr), !dbg !2514 | |
unreachable, !dbg !2514 | |
if.done: ; preds = %switch.case.body, %switch.case.body1, %switch.case.body2, %switch.case.body3, %switch.case.body4, %decls | |
ret void, !dbg !2535 | |
} | |
define internal [2 x i64] @strconv.append_bits_128([2 x i64] %0, i128 %1, i64 %2, i1 zeroext %3, i64 %4, [2 x i64] %5, i8 %6, i8* noalias nocapture nonnull %__.context_ptr) !dbg !2536 { | |
decls: | |
%7 = alloca { i8*, i64 }, align 8 | |
call void @llvm.dbg.declare(metadata { i8*, i64 }* %8, metadata !2540, metadata !DIExpression()), !dbg !2565 | |
%8 = alloca { i8*, i64 }, align 8 | |
%9 = alloca %..string, align 8 | |
call void @llvm.dbg.declare(metadata %..string* %10, metadata !2545, metadata !DIExpression()), !dbg !2566 | |
%10 = alloca %..string, align 8 | |
%11 = alloca [2 x i64], align 8, !dbg !2567 | |
%12 = alloca %runtime.Source_Code_Location, align 8, !dbg !2567 | |
call void @llvm.dbg.declare(metadata [140 x i8]* %13, metadata !2548, metadata !DIExpression()), !dbg !2570 | |
%13 = alloca [140 x i8], align 1, !dbg !2570 | |
%14 = alloca { i128, i8 }, align 16, !dbg !2571 | |
%15 = alloca [2 x i64], align 8, !dbg !2572 | |
%16 = alloca [2 x i64], align 8, !dbg !2572 | |
%17 = alloca [2 x i64], align 8, !dbg !2573 | |
%18 = alloca [2 x i64], align 8, !dbg !2573 | |
%19 = alloca [2 x i64], align 8, !dbg !2574 | |
%20 = alloca [2 x i64], align 8, !dbg !2576 | |
%21 = alloca [2 x i64], align 8, !dbg !2577 | |
%22 = alloca [2 x i64], align 8, !dbg !2578 | |
%23 = alloca [2 x i64], align 8, !dbg !2579 | |
%24 = alloca [2 x i64], align 8, !dbg !2580 | |
%25 = alloca [2 x i64], align 8, !dbg !2583 | |
%26 = alloca [2 x i64], align 8, !dbg !2585 | |
%27 = alloca [2 x i64], align 8, !dbg !2586 | |
call void @llvm.dbg.declare(metadata { i8*, i64 }* %28, metadata !2564, metadata !DIExpression()), !dbg !2587 | |
%28 = alloca { i8*, i64 }, align 8, !dbg !2587 | |
%29 = alloca [2 x i64], align 8, !dbg !2587 | |
%30 = alloca { i8*, i64 }, align 8, !dbg !2587 | |
%31 = alloca [2 x i64], align 8, !dbg !2588 | |
%32 = alloca { i8*, i64 }, align 8, !dbg !2588 | |
%33 = bitcast { i8*, i64 }* %7 to [2 x i64]* | |
store [2 x i64] %0, [2 x i64]* %33, align 8 | |
%34 = bitcast { i8*, i64 }* %8 to i8* | |
%35 = bitcast { i8*, i64 }* %7 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %34, i8* align 8 %35, i64 16, i1 false) | |
call void @llvm.dbg.value(metadata i128 %1, metadata !2541, metadata !DIExpression()), !dbg !2589 | |
call void @llvm.dbg.value(metadata i64 %2, metadata !2542, metadata !DIExpression()), !dbg !2589 | |
call void @llvm.dbg.value(metadata i8 undef, metadata !2543, metadata !DIExpression()), !dbg !2589 | |
call void @llvm.dbg.value(metadata i64 %4, metadata !2544, metadata !DIExpression()), !dbg !2589 | |
%36 = bitcast %..string* %9 to [2 x i64]* | |
store [2 x i64] %5, [2 x i64]* %36, align 8 | |
%37 = bitcast %..string* %10 to i8* | |
%38 = bitcast %..string* %9 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %37, i8* align 8 %38, i64 16, i1 false) | |
call void @llvm.dbg.value(metadata i8 %6, metadata !2546, metadata !DIExpression()), !dbg !2589 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !2547, metadata !DIExpression()), !dbg !2590 | |
%39 = icmp slt i64 %2, 2, !dbg !2591 | |
br i1 %39, label %if.then, label %cmp.or, !dbg !2591 | |
cmp.or: ; preds = %decls | |
%40 = icmp sgt i64 %2, 32, !dbg !2591 | |
br i1 %40, label %if.then, label %if.done, !dbg !2591 | |
if.then: ; preds = %cmp.or, %decls | |
%41 = bitcast [2 x i64]* %11 to %..string*, !dbg !2567 | |
store %..string { i8* getelementptr inbounds ([44 x i8], [44 x i8]* @"csbs$96", i64 0, i64 0), i64 43 }, %..string* %41, align 8, !dbg !2567 | |
%42 = load [2 x i64], [2 x i64]* %11, align 8, !dbg !2567 | |
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, i32 120, i32 3, %..string { i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"csbs$99", i64 0, i64 0), i64 15 } }, %runtime.Source_Code_Location* %12, align 8, !dbg !2567 | |
call void @runtime.panic([2 x i64] %42, %runtime.Source_Code_Location* %12, i8* %__.context_ptr), !dbg !2567 | |
unreachable, !dbg !2567 | |
if.done: ; preds = %cmp.or | |
%43 = bitcast [140 x i8]* %13 to i8*, !dbg !2570 | |
call void @llvm.memset.p0i8.i64(i8* %43, i8 0, i64 140, i1 false), !dbg !2570 | |
call void @llvm.dbg.value(metadata i64 0, metadata !2553, metadata !DIExpression()), !dbg !2592 | |
call void @llvm.dbg.value(metadata i64 140, metadata !2553, metadata !DIExpression()), !dbg !2592 | |
call void @llvm.dbg.value(metadata i128 0, metadata !2554, metadata !DIExpression()), !dbg !2592 | |
call void @llvm.dbg.value(metadata i8 0, metadata !2555, metadata !DIExpression()), !dbg !2592 | |
%44 = bitcast { i128, i8 }* %14 to i8*, !dbg !2571 | |
call void @llvm.memset.p0i8.i64(i8* %44, i8 0, i64 24, i1 false), !dbg !2571 | |
call void @strconv.is_integer_negative_128({ i128, i8 }* %14, i128 %1, i1 %3, i64 %4, i8* %__.context_ptr), !dbg !2571 | |
%45 = getelementptr inbounds { i128, i8 }, { i128, i8 }* %14, i32 0, i32 0, !dbg !2571 | |
%46 = load i128, i128* %45, align 16, !dbg !2571 | |
%47 = getelementptr inbounds { i128, i8 }, { i128, i8 }* %14, i32 0, i32 1, !dbg !2571 | |
%48 = load i8, i8* %47, align 1, !dbg !2571 | |
call void @llvm.dbg.value(metadata i128 %46, metadata !2554, metadata !DIExpression()), !dbg !2592 | |
call void @llvm.dbg.value(metadata i8 %48, metadata !2555, metadata !DIExpression()), !dbg !2592 | |
call void @llvm.dbg.value(metadata i128 0, metadata !2556, metadata !DIExpression()), !dbg !2592 | |
%49 = sext i64 %2 to i128, !dbg !2593 | |
call void @llvm.dbg.value(metadata i128 %49, metadata !2556, metadata !DIExpression()), !dbg !2592 | |
br label %for.loop, !dbg !2594 | |
for.loop: ; preds = %for.body, %if.done | |
%.016 = phi i64 [ 140, %if.done ], [ %52, %for.body ], !dbg !2592 | |
%.015 = phi i128 [ %46, %if.done ], [ %54, %for.body ], !dbg !2592 | |
call void @llvm.dbg.value(metadata i128 %.015, metadata !2554, metadata !DIExpression()), !dbg !2592 | |
call void @llvm.dbg.value(metadata i64 %.016, metadata !2553, metadata !DIExpression()), !dbg !2592 | |
%50 = icmp uge i128 %.015, %49, !dbg !2594 | |
br i1 %50, label %cmp.and, label %for.done, !dbg !2594 | |
cmp.and: ; preds = %for.loop | |
%51 = icmp sge i64 %.016, 0, !dbg !2594 | |
br i1 %51, label %for.body, label %for.done, !dbg !2594 | |
for.body: ; preds = %cmp.and | |
%52 = sub i64 %.016, 1, !dbg !2595 | |
call void @llvm.dbg.value(metadata i64 %52, metadata !2553, metadata !DIExpression()), !dbg !2592 | |
call void @llvm.dbg.value(metadata i128 0, metadata !2557, metadata !DIExpression()), !dbg !2596 | |
%53 = urem i128 %.015, %49, !dbg !2597 | |
call void @llvm.dbg.value(metadata i128 %53, metadata !2557, metadata !DIExpression()), !dbg !2596 | |
%54 = udiv i128 %.015, %49, !dbg !2598 | |
call void @llvm.dbg.value(metadata i128 %54, metadata !2554, metadata !DIExpression()), !dbg !2592 | |
call void @llvm.dbg.value(metadata i32 0, metadata !2560, metadata !DIExpression()), !dbg !2596 | |
%55 = trunc i128 %53 to i32, !dbg !2599 | |
call void @llvm.dbg.value(metadata i32 %55, metadata !2560, metadata !DIExpression()), !dbg !2596 | |
%56 = getelementptr [140 x i8], [140 x i8]* %13, i64 0, i64 %52, !dbg !2572 | |
%57 = bitcast [2 x i64]* %15 to %..string*, !dbg !2572 | |
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %57, align 8, !dbg !2572 | |
%58 = load [2 x i64], [2 x i64]* %15, align 8, !dbg !2572 | |
call void @runtime.bounds_check_error([2 x i64] %58, i32 136, i32 5, i64 %52, i64 140), !dbg !2572 | |
%59 = getelementptr inbounds %..string, %..string* %10, i32 0, i32 0, !dbg !2572 | |
%60 = load i8*, i8** %59, align 8, !dbg !2572 | |
%61 = getelementptr inbounds %..string, %..string* %10, i32 0, i32 1, !dbg !2572 | |
%62 = load i64, i64* %61, align 8, !dbg !2572 | |
%63 = zext i32 %55 to i64, !dbg !2572 | |
%64 = bitcast [2 x i64]* %16 to %..string*, !dbg !2572 | |
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %64, align 8, !dbg !2572 | |
%65 = load [2 x i64], [2 x i64]* %16, align 8, !dbg !2572 | |
call void @runtime.bounds_check_error([2 x i64] %65, i32 136, i32 17, i64 %63, i64 %62), !dbg !2572 | |
%66 = getelementptr i8, i8* %60, i64 %63, !dbg !2572 | |
%67 = load i8, i8* %66, align 1, !dbg !2572 | |
store i8 %67, i8* %56, align 1, !dbg !2572 | |
br label %for.loop, !dbg !2594 | |
for.done: ; preds = %cmp.and, %for.loop | |
%68 = sub i64 %.016, 1, !dbg !2600 | |
call void @llvm.dbg.value(metadata i64 %68, metadata !2553, metadata !DIExpression()), !dbg !2592 | |
%69 = getelementptr [140 x i8], [140 x i8]* %13, i64 0, i64 %68, !dbg !2573 | |
%70 = bitcast [2 x i64]* %17 to %..string*, !dbg !2573 | |
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %70, align 8, !dbg !2573 | |
%71 = load [2 x i64], [2 x i64]* %17, align 8, !dbg !2573 | |
call void @runtime.bounds_check_error([2 x i64] %71, i32 138, i32 10, i64 %68, i64 140), !dbg !2573 | |
%72 = getelementptr inbounds %..string, %..string* %10, i32 0, i32 0, !dbg !2573 | |
%73 = load i8*, i8** %72, align 8, !dbg !2573 | |
%74 = getelementptr inbounds %..string, %..string* %10, i32 0, i32 1, !dbg !2573 | |
%75 = load i64, i64* %74, align 8, !dbg !2573 | |
%76 = urem i128 %.015, %49, !dbg !2573 | |
%77 = trunc i128 %76 to i64, !dbg !2573 | |
%78 = bitcast [2 x i64]* %18 to %..string*, !dbg !2573 | |
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %78, align 8, !dbg !2573 | |
%79 = load [2 x i64], [2 x i64]* %18, align 8, !dbg !2573 | |
call void @runtime.bounds_check_error([2 x i64] %79, i32 138, i32 22, i64 %77, i64 %75), !dbg !2573 | |
%80 = getelementptr i8, i8* %73, i64 %77, !dbg !2573 | |
%81 = load i8, i8* %80, align 1, !dbg !2573 | |
store i8 %81, i8* %69, align 1, !dbg !2573 | |
%82 = and i8 %6, 1, !dbg !2601 | |
%83 = icmp ne i8 %82, 0, !dbg !2601 | |
br i1 %83, label %if.then1, label %if.done8, !dbg !2601 | |
if.then1: ; preds = %for.done | |
call void @llvm.dbg.value(metadata i8 0, metadata !2561, metadata !DIExpression()), !dbg !2602 | |
call void @llvm.dbg.value(metadata i8 1, metadata !2561, metadata !DIExpression()), !dbg !2602 | |
%84 = sub i64 %2, 2, !dbg !2603 | |
%85 = lshr i64 %84, 1, !dbg !2603 | |
%86 = shl i64 %84, 63, !dbg !2603 | |
%87 = or i64 %85, %86, !dbg !2603 | |
switch i64 %87, label %switch.done [ | |
i64 0, label %switch.case.body | |
i64 3, label %switch.case.body2 | |
i64 4, label %switch.case.body3 | |
i64 5, label %switch.case.body4 | |
i64 7, label %switch.case.body5 | |
], !dbg !2603 | |
switch.case.body: ; preds = %if.then1 | |
%88 = sub i64 %68, 1, !dbg !2604 | |
call void @llvm.dbg.value(metadata i64 %88, metadata !2553, metadata !DIExpression()), !dbg !2592 | |
%89 = getelementptr [140 x i8], [140 x i8]* %13, i64 0, i64 %88, !dbg !2574 | |
%90 = bitcast [2 x i64]* %19 to %..string*, !dbg !2574 | |
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %90, align 8, !dbg !2574 | |
%91 = load [2 x i64], [2 x i64]* %19, align 8, !dbg !2574 | |
call void @runtime.bounds_check_error([2 x i64] %91, i32 143, i32 20, i64 %88, i64 140), !dbg !2574 | |
store i8 98, i8* %89, align 1, !dbg !2574 | |
br label %switch.done, !dbg !2603 | |
switch.case.body2: ; preds = %if.then1 | |
%92 = sub i64 %68, 1, !dbg !2605 | |
call void @llvm.dbg.value(metadata i64 %92, metadata !2553, metadata !DIExpression()), !dbg !2592 | |
%93 = getelementptr [140 x i8], [140 x i8]* %13, i64 0, i64 %92, !dbg !2576 | |
%94 = bitcast [2 x i64]* %20 to %..string*, !dbg !2576 | |
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %94, align 8, !dbg !2576 | |
%95 = load [2 x i64], [2 x i64]* %20, align 8, !dbg !2576 | |
call void @runtime.bounds_check_error([2 x i64] %95, i32 144, i32 20, i64 %92, i64 140), !dbg !2576 | |
store i8 111, i8* %93, align 1, !dbg !2576 | |
br label %switch.done, !dbg !2603 | |
switch.case.body3: ; preds = %if.then1 | |
%96 = sub i64 %68, 1, !dbg !2606 | |
call void @llvm.dbg.value(metadata i64 %96, metadata !2553, metadata !DIExpression()), !dbg !2592 | |
%97 = getelementptr [140 x i8], [140 x i8]* %13, i64 0, i64 %96, !dbg !2577 | |
%98 = bitcast [2 x i64]* %21 to %..string*, !dbg !2577 | |
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %98, align 8, !dbg !2577 | |
%99 = load [2 x i64], [2 x i64]* %21, align 8, !dbg !2577 | |
call void @runtime.bounds_check_error([2 x i64] %99, i32 145, i32 20, i64 %96, i64 140), !dbg !2577 | |
store i8 100, i8* %97, align 1, !dbg !2577 | |
br label %switch.done, !dbg !2603 | |
switch.case.body4: ; preds = %if.then1 | |
%100 = sub i64 %68, 1, !dbg !2607 | |
call void @llvm.dbg.value(metadata i64 %100, metadata !2553, metadata !DIExpression()), !dbg !2592 | |
%101 = getelementptr [140 x i8], [140 x i8]* %13, i64 0, i64 %100, !dbg !2578 | |
%102 = bitcast [2 x i64]* %22 to %..string*, !dbg !2578 | |
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %102, align 8, !dbg !2578 | |
%103 = load [2 x i64], [2 x i64]* %22, align 8, !dbg !2578 | |
call void @runtime.bounds_check_error([2 x i64] %103, i32 146, i32 20, i64 %100, i64 140), !dbg !2578 | |
store i8 122, i8* %101, align 1, !dbg !2578 | |
br label %switch.done, !dbg !2603 | |
switch.case.body5: ; preds = %if.then1 | |
%104 = sub i64 %68, 1, !dbg !2608 | |
call void @llvm.dbg.value(metadata i64 %104, metadata !2553, metadata !DIExpression()), !dbg !2592 | |
%105 = getelementptr [140 x i8], [140 x i8]* %13, i64 0, i64 %104, !dbg !2579 | |
%106 = bitcast [2 x i64]* %23 to %..string*, !dbg !2579 | |
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %106, align 8, !dbg !2579 | |
%107 = load [2 x i64], [2 x i64]* %23, align 8, !dbg !2579 | |
call void @runtime.bounds_check_error([2 x i64] %107, i32 147, i32 20, i64 %104, i64 140), !dbg !2579 | |
store i8 120, i8* %105, align 1, !dbg !2579 | |
br label %switch.done, !dbg !2603 | |
switch.done: ; preds = %if.then1, %switch.case.body5, %switch.case.body4, %switch.case.body3, %switch.case.body2, %switch.case.body | |
%.1 = phi i64 [ %104, %switch.case.body5 ], [ %100, %switch.case.body4 ], [ %96, %switch.case.body3 ], [ %92, %switch.case.body2 ], [ %88, %switch.case.body ], [ %68, %if.then1 ], !dbg !2592 | |
%.0 = phi i8 [ 1, %switch.case.body5 ], [ 1, %switch.case.body4 ], [ 1, %switch.case.body3 ], [ 1, %switch.case.body2 ], [ 1, %switch.case.body ], [ 0, %if.then1 ], !dbg !2602 | |
call void @llvm.dbg.value(metadata i8 %.0, metadata !2561, metadata !DIExpression()), !dbg !2602 | |
call void @llvm.dbg.value(metadata i64 %.1, metadata !2553, metadata !DIExpression()), !dbg !2592 | |
%108 = trunc i8 %.0 to i1, !dbg !2609 | |
br i1 %108, label %if.then6, label %if.done8, !dbg !2609 | |
if.then6: ; preds = %switch.done | |
%109 = sub i64 %.1, 1, !dbg !2610 | |
call void @llvm.dbg.value(metadata i64 %109, metadata !2553, metadata !DIExpression()), !dbg !2592 | |
%110 = getelementptr [140 x i8], [140 x i8]* %13, i64 0, i64 %109, !dbg !2580 | |
%111 = bitcast [2 x i64]* %24 to %..string*, !dbg !2580 | |
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %111, align 8, !dbg !2580 | |
%112 = load [2 x i64], [2 x i64]* %24, align 8, !dbg !2580 | |
call void @runtime.bounds_check_error([2 x i64] %112, i32 151, i32 12, i64 %109, i64 140), !dbg !2580 | |
store i8 48, i8* %110, align 1, !dbg !2580 | |
br label %if.done8, !dbg !2609 | |
if.done8: ; preds = %switch.done, %if.then6, %for.done | |
%.3 = phi i64 [ %68, %for.done ], [ %109, %if.then6 ], [ %.1, %switch.done ], !dbg !2592 | |
call void @llvm.dbg.value(metadata i64 %.3, metadata !2553, metadata !DIExpression()), !dbg !2592 | |
%113 = icmp eq i8 1, %48, !dbg !2611 | |
br i1 %113, label %switch.case.body9, label %switch.case.next, !dbg !2611 | |
switch.case.next: ; preds = %if.done8 | |
%114 = and i8 %6, 2, !dbg !2611 | |
%115 = icmp ne i8 %114, 0, !dbg !2611 | |
br i1 %115, label %switch.case.body11, label %switch.case.next10, !dbg !2611 | |
switch.case.body9: ; preds = %if.done8 | |
%116 = sub i64 %.3, 1, !dbg !2612 | |
call void @llvm.dbg.value(metadata i64 %116, metadata !2553, metadata !DIExpression()), !dbg !2592 | |
%117 = getelementptr [140 x i8], [140 x i8]* %13, i64 0, i64 %116, !dbg !2583 | |
%118 = bitcast [2 x i64]* %25 to %..string*, !dbg !2583 | |
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %118, align 8, !dbg !2583 | |
%119 = load [2 x i64], [2 x i64]* %25, align 8, !dbg !2583 | |
call void @runtime.bounds_check_error([2 x i64] %119, i32 157, i32 11, i64 %116, i64 140), !dbg !2583 | |
store i8 45, i8* %117, align 1, !dbg !2583 | |
br label %switch.done14, !dbg !2611 | |
switch.case.next10: ; preds = %switch.case.next | |
%120 = and i8 %6, 4, !dbg !2611 | |
%121 = icmp ne i8 %120, 0, !dbg !2611 | |
br i1 %121, label %switch.case.body13, label %switch.done14, !dbg !2611 | |
switch.case.body11: ; preds = %switch.case.next | |
%122 = sub i64 %.3, 1, !dbg !2613 | |
call void @llvm.dbg.value(metadata i64 %122, metadata !2553, metadata !DIExpression()), !dbg !2592 | |
%123 = getelementptr [140 x i8], [140 x i8]* %13, i64 0, i64 %122, !dbg !2585 | |
%124 = bitcast [2 x i64]* %26 to %..string*, !dbg !2585 | |
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %124, align 8, !dbg !2585 | |
%125 = load [2 x i64], [2 x i64]* %26, align 8, !dbg !2585 | |
call void @runtime.bounds_check_error([2 x i64] %125, i32 159, i32 11, i64 %122, i64 140), !dbg !2585 | |
store i8 43, i8* %123, align 1, !dbg !2585 | |
br label %switch.done14, !dbg !2611 | |
switch.case.body13: ; preds = %switch.case.next10 | |
%126 = sub i64 %.3, 1, !dbg !2614 | |
call void @llvm.dbg.value(metadata i64 %126, metadata !2553, metadata !DIExpression()), !dbg !2592 | |
%127 = getelementptr [140 x i8], [140 x i8]* %13, i64 0, i64 %126, !dbg !2586 | |
%128 = bitcast [2 x i64]* %27 to %..string*, !dbg !2586 | |
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %128, align 8, !dbg !2586 | |
%129 = load [2 x i64], [2 x i64]* %27, align 8, !dbg !2586 | |
call void @runtime.bounds_check_error([2 x i64] %129, i32 161, i32 11, i64 %126, i64 140), !dbg !2586 | |
store i8 32, i8* %127, align 1, !dbg !2586 | |
br label %switch.done14, !dbg !2611 | |
switch.done14: ; preds = %switch.case.next10, %switch.case.body13, %switch.case.body11, %switch.case.body9 | |
%.4 = phi i64 [ %116, %switch.case.body9 ], [ %122, %switch.case.body11 ], [ %126, %switch.case.body13 ], [ %.3, %switch.case.next10 ], !dbg !2592 | |
call void @llvm.dbg.value(metadata i64 %.4, metadata !2553, metadata !DIExpression()), !dbg !2592 | |
%130 = bitcast { i8*, i64 }* %28 to i8*, !dbg !2587 | |
call void @llvm.memset.p0i8.i64(i8* %130, i8 0, i64 16, i1 false), !dbg !2587 | |
%131 = bitcast [2 x i64]* %29 to %..string*, !dbg !2587 | |
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %131, align 8, !dbg !2587 | |
%132 = load [2 x i64], [2 x i64]* %29, align 8, !dbg !2587 | |
call void @runtime.slice_expr_error_lo_hi([2 x i64] %132, i32 164, i32 10, i64 %.4, i64 140, i64 140), !dbg !2587 | |
%133 = getelementptr [140 x i8], [140 x i8]* %13, i64 0, i64 0, !dbg !2587 | |
%134 = getelementptr i8, i8* %133, i64 %.4, !dbg !2587 | |
%135 = sub i64 140, %.4, !dbg !2587 | |
%136 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %30, i32 0, i32 0, !dbg !2587 | |
store i8* %134, i8** %136, align 8, !dbg !2587 | |
%137 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %30, i32 0, i32 1, !dbg !2587 | |
store i64 %135, i64* %137, align 8, !dbg !2587 | |
%138 = bitcast { i8*, i64 }* %30 to i8*, !dbg !2587 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %130, i8* align 8 %138, i64 16, i1 false), !dbg !2587 | |
%139 = bitcast { i8*, i64 }* %8 to [2 x i64]*, !dbg !2615 | |
%140 = load [2 x i64], [2 x i64]* %139, align 8, !dbg !2615 | |
%141 = bitcast { i8*, i64 }* %28 to [2 x i64]*, !dbg !2615 | |
%142 = load [2 x i64], [2 x i64]* %141, align 8, !dbg !2615 | |
%143 = call i64 @runtime.copy_slice-6928([2 x i64] %140, [2 x i64] %142), !dbg !2615 | |
%144 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %28, i32 0, i32 1, !dbg !2588 | |
%145 = load i64, i64* %144, align 8, !dbg !2588 | |
%146 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %8, i32 0, i32 1, !dbg !2588 | |
%147 = load i64, i64* %146, align 8, !dbg !2588 | |
%148 = bitcast [2 x i64]* %31 to %..string*, !dbg !2588 | |
store %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$94", i64 0, i64 0), i64 54 }, %..string* %148, align 8, !dbg !2588 | |
%149 = load [2 x i64], [2 x i64]* %31, align 8, !dbg !2588 | |
call void @runtime.slice_expr_error_lo_hi([2 x i64] %149, i32 166, i32 19, i64 0, i64 %145, i64 %147), !dbg !2588 | |
%150 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %8, i32 0, i32 0, !dbg !2588 | |
%151 = load i8*, i8** %150, align 8, !dbg !2588 | |
%152 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %32, i32 0, i32 0, !dbg !2588 | |
store i8* %151, i8** %152, align 8, !dbg !2588 | |
%153 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %32, i32 0, i32 1, !dbg !2588 | |
store i64 %145, i64* %153, align 8, !dbg !2588 | |
%154 = bitcast { i8*, i64 }* %32 to %..string*, !dbg !2588 | |
%155 = bitcast %..string* %154 to [2 x i64]*, !dbg !2588 | |
%156 = load [2 x i64], [2 x i64]* %155, align 8, !dbg !2588 | |
ret [2 x i64] %156, !dbg !2588 | |
} | |
define internal [2 x i64] @os.file_size(i32 %0, i8* noalias nocapture nonnull %__.context_ptr) !dbg !2616 { | |
decls: | |
call void @llvm.dbg.declare(metadata %os.OS_Stat* %1, metadata !2622, metadata !DIExpression()), !dbg !2648 | |
%1 = alloca %os.OS_Stat, align 8, !dbg !2648 | |
%2 = alloca { %os.OS_Stat, i32 }, align 8, !dbg !2648 | |
%3 = alloca { i64, i32 }, align 8, !dbg !2649 | |
%4 = alloca { i64, i32 }, align 8, !dbg !2652 | |
call void @llvm.dbg.value(metadata i32 %0, metadata !2620, metadata !DIExpression()), !dbg !2653 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !2621, metadata !DIExpression()), !dbg !2654 | |
%5 = bitcast %os.OS_Stat* %1 to i8*, !dbg !2648 | |
call void @llvm.memset.p0i8.i64(i8* %5, i8 0, i64 144, i1 false), !dbg !2648 | |
call void @llvm.dbg.value(metadata i32 0, metadata !2647, metadata !DIExpression()), !dbg !2655 | |
%6 = bitcast { %os.OS_Stat, i32 }* %2 to i8*, !dbg !2648 | |
call void @llvm.memset.p0i8.i64(i8* %6, i8 0, i64 152, i1 false), !dbg !2648 | |
call void @os._fstat-1332({ %os.OS_Stat, i32 }* %2, i32 %0, i8* %__.context_ptr), !dbg !2648 | |
%7 = getelementptr inbounds { %os.OS_Stat, i32 }, { %os.OS_Stat, i32 }* %2, i32 0, i32 0, !dbg !2648 | |
%8 = getelementptr inbounds { %os.OS_Stat, i32 }, { %os.OS_Stat, i32 }* %2, i32 0, i32 1, !dbg !2648 | |
%9 = load i32, i32* %8, align 4, !dbg !2648 | |
%10 = bitcast %os.OS_Stat* %7 to i8*, !dbg !2648 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %5, i8* align 8 %10, i64 144, i1 false), !dbg !2648 | |
call void @llvm.dbg.value(metadata i32 %9, metadata !2647, metadata !DIExpression()), !dbg !2655 | |
%11 = icmp ne i32 %9, 0, !dbg !2656 | |
br i1 %11, label %if.then, label %if.done, !dbg !2656 | |
if.then: ; preds = %decls | |
%12 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %3, i32 0, i32 0, !dbg !2649 | |
%13 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %3, i32 0, i32 1, !dbg !2649 | |
store i64 0, i64* %12, align 8, !dbg !2649 | |
store i32 %9, i32* %13, align 4, !dbg !2649 | |
%14 = bitcast { i64, i32 }* %3 to [2 x i64]*, !dbg !2649 | |
%15 = load [2 x i64], [2 x i64]* %14, align 8, !dbg !2649 | |
ret [2 x i64] %15, !dbg !2649 | |
if.done: ; preds = %decls | |
%16 = getelementptr inbounds %os.OS_Stat, %os.OS_Stat* %1, i32 0, i32 8, !dbg !2652 | |
%17 = load i64, i64* %16, align 8, !dbg !2652 | |
%18 = icmp sgt i64 %17, 0, !dbg !2652 | |
%19 = select i1 %18, i64 %17, i64 0, !dbg !2652 | |
%20 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %4, i32 0, i32 0, !dbg !2652 | |
%21 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %4, i32 0, i32 1, !dbg !2652 | |
store i64 %19, i64* %20, align 8, !dbg !2652 | |
store i32 0, i32* %21, align 4, !dbg !2652 | |
%22 = bitcast { i64, i32 }* %4 to [2 x i64]*, !dbg !2652 | |
%23 = load [2 x i64], [2 x i64]* %22, align 8, !dbg !2652 | |
ret [2 x i64] %23, !dbg !2652 | |
} | |
define dso_local i8 @runtime.__dynamic_map_hash_equal(%runtime.Map_Header* %0, [2 x i64] %1, [2 x i64] %2) !dbg !2657 { | |
decls: | |
%3 = alloca %runtime.Map_Hash, align 8 | |
call void @llvm.dbg.declare(metadata %runtime.Map_Hash* %4, metadata !2661, metadata !DIExpression()), !dbg !2663 | |
%4 = alloca %runtime.Map_Hash, align 8 | |
%5 = alloca %runtime.Map_Hash, align 8 | |
call void @llvm.dbg.declare(metadata %runtime.Map_Hash* %6, metadata !2662, metadata !DIExpression()), !dbg !2664 | |
%6 = alloca %runtime.Map_Hash, align 8 | |
%7 = bitcast %runtime.Map_Hash* %3 to [2 x i64]* | |
store [2 x i64] %1, [2 x i64]* %7, align 8 | |
%8 = bitcast %runtime.Map_Hash* %4 to i8* | |
%9 = bitcast %runtime.Map_Hash* %3 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %8, i8* align 8 %9, i64 16, i1 false) | |
%10 = bitcast %runtime.Map_Hash* %5 to [2 x i64]* | |
store [2 x i64] %2, [2 x i64]* %10, align 8 | |
%11 = bitcast %runtime.Map_Hash* %6 to i8* | |
%12 = bitcast %runtime.Map_Hash* %5 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %11, i8* align 8 %12, i64 16, i1 false) | |
%13 = getelementptr inbounds %runtime.Map_Hash, %runtime.Map_Hash* %4, i32 0, i32 0, !dbg !2665 | |
%14 = load i64, i64* %13, align 8, !dbg !2665 | |
%15 = getelementptr inbounds %runtime.Map_Hash, %runtime.Map_Hash* %6, i32 0, i32 0, !dbg !2665 | |
%16 = load i64, i64* %15, align 8, !dbg !2665 | |
%17 = icmp eq i64 %14, %16, !dbg !2665 | |
br i1 %17, label %if.then, label %if.done, !dbg !2665 | |
if.then: ; preds = %decls | |
%18 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 1, !dbg !2667 | |
%19 = load i8 (i8*, i8*)*, i8 (i8*, i8*)** %18, align 8, !dbg !2667 | |
%20 = getelementptr inbounds %runtime.Map_Hash, %runtime.Map_Hash* %4, i32 0, i32 1, !dbg !2667 | |
%21 = load i8*, i8** %20, align 8, !dbg !2667 | |
%22 = getelementptr inbounds %runtime.Map_Hash, %runtime.Map_Hash* %6, i32 0, i32 1, !dbg !2667 | |
%23 = load i8*, i8** %22, align 8, !dbg !2667 | |
%24 = call i8 %19(i8* %21, i8* %23), !dbg !2667 | |
ret i8 %24, !dbg !2667 | |
if.done: ; preds = %decls | |
ret i8 0, !dbg !2670 | |
} | |
define dso_local void @runtime.__dynamic_map_find(%runtime.Map_Find_Result* noalias sret %agg.result, %runtime.Map_Header* %0, [2 x i64] %1, i8* noalias nocapture nonnull %__.context_ptr) !dbg !2671 { | |
decls: | |
%2 = alloca %runtime.Map_Hash, align 8 | |
call void @llvm.dbg.declare(metadata %runtime.Map_Hash* %3, metadata !2675, metadata !DIExpression()), !dbg !2688 | |
%3 = alloca %runtime.Map_Hash, align 8 | |
call void @llvm.dbg.declare(metadata %runtime.Map_Find_Result* %4, metadata !2677, metadata !DIExpression()), !dbg !2689 | |
%4 = alloca %runtime.Map_Find_Result, align 8, !dbg !2689 | |
call void @llvm.dbg.declare(metadata %runtime.Map_Hash* %5, metadata !2687, metadata !DIExpression()), !dbg !2690 | |
%5 = alloca %runtime.Map_Hash, align 8, !dbg !2690 | |
%6 = alloca %runtime.Map_Hash, align 8, !dbg !2690 | |
%7 = bitcast %runtime.Map_Hash* %2 to [2 x i64]* | |
store [2 x i64] %1, [2 x i64]* %7, align 8 | |
%8 = bitcast %runtime.Map_Hash* %3 to i8* | |
%9 = bitcast %runtime.Map_Hash* %2 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %8, i8* align 8 %9, i64 16, i1 false) | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !2676, metadata !DIExpression()), !dbg !2691 | |
%10 = bitcast %runtime.Map_Find_Result* %4 to i8*, !dbg !2689 | |
call void @llvm.memset.p0i8.i64(i8* %10, i8 0, i64 24, i1 false), !dbg !2689 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %10, i8 -1, i64 24, i1 false), !dbg !2689 | |
call void @llvm.dbg.value(metadata i64 0, metadata !2679, metadata !DIExpression()), !dbg !2692 | |
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %11, metadata !2681, metadata !DIExpression()), !dbg !2693 | |
%11 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 0, !dbg !2694 | |
%12 = load %runtime.Raw_Map*, %runtime.Raw_Map** %11, align 8, !dbg !2694 | |
%13 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %12, i32 0, i32 0, !dbg !2694 | |
%14 = getelementptr inbounds { i64*, i64 }, { i64*, i64 }* %13, i32 0, i32 1, !dbg !2694 | |
%15 = load i64, i64* %14, align 8, !dbg !2694 | |
call void @llvm.dbg.value(metadata i64 %15, metadata !2679, metadata !DIExpression()), !dbg !2692 | |
%16 = icmp ugt i64 %15, 0, !dbg !2695 | |
br i1 %16, label %if.then, label %if.done2, !dbg !2695 | |
if.then: ; preds = %decls | |
%17 = getelementptr inbounds %runtime.Map_Find_Result, %runtime.Map_Find_Result* %4, i32 0, i32 0, !dbg !2696 | |
%18 = getelementptr inbounds %runtime.Map_Hash, %runtime.Map_Hash* %3, i32 0, i32 0, !dbg !2696 | |
%19 = load i64, i64* %18, align 8, !dbg !2696 | |
%20 = urem i64 %19, %15, !dbg !2696 | |
store i64 %20, i64* %17, align 8, !dbg !2696 | |
%21 = getelementptr inbounds %runtime.Map_Find_Result, %runtime.Map_Find_Result* %4, i32 0, i32 2, !dbg !2697 | |
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %11, metadata !2682, metadata !DIExpression()), !dbg !2698 | |
%22 = load %runtime.Raw_Map*, %runtime.Raw_Map** %11, align 8, !dbg !2697 | |
%23 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %22, i32 0, i32 0, !dbg !2697 | |
%24 = getelementptr inbounds { i64*, i64 }, { i64*, i64 }* %23, i32 0, i32 0, !dbg !2697 | |
%25 = load i64*, i64** %24, align 8, !dbg !2697 | |
%26 = getelementptr i64, i64* %25, i64 %20, !dbg !2697 | |
%27 = load i64, i64* %26, align 8, !dbg !2697 | |
store i64 %27, i64* %21, align 8, !dbg !2697 | |
br label %for.loop, !dbg !2699 | |
for.loop: ; preds = %if.done, %if.then | |
%28 = load i64, i64* %21, align 8, !dbg !2699 | |
%29 = icmp sge i64 %28, 0, !dbg !2699 | |
br i1 %29, label %for.body, label %if.done2, !dbg !2699 | |
for.body: ; preds = %for.loop | |
call void @llvm.dbg.value(metadata %runtime.Map_Entry_Header* null, metadata !2684, metadata !DIExpression()), !dbg !2700 | |
%30 = call %runtime.Map_Entry_Header* @runtime.__dynamic_map_get_entry(%runtime.Map_Header* %0, i64 %28, i8* %__.context_ptr), !dbg !2701 | |
call void @llvm.dbg.value(metadata %runtime.Map_Entry_Header* %30, metadata !2684, metadata !DIExpression()), !dbg !2700 | |
%31 = bitcast %runtime.Map_Hash* %5 to i8*, !dbg !2690 | |
call void @llvm.memset.p0i8.i64(i8* %31, i8 0, i64 16, i1 false), !dbg !2690 | |
%32 = call [2 x i64] @runtime.__get_map_hash_from_entry(%runtime.Map_Header* %0, %runtime.Map_Entry_Header* %30), !dbg !2690 | |
%33 = bitcast %runtime.Map_Hash* %6 to [2 x i64]*, !dbg !2690 | |
store [2 x i64] %32, [2 x i64]* %33, align 8, !dbg !2690 | |
%34 = bitcast %runtime.Map_Hash* %6 to i8*, !dbg !2690 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %31, i8* align 8 %34, i64 16, i1 false), !dbg !2690 | |
%35 = bitcast %runtime.Map_Hash* %5 to [2 x i64]*, !dbg !2702 | |
%36 = load [2 x i64], [2 x i64]* %35, align 8, !dbg !2702 | |
%37 = bitcast %runtime.Map_Hash* %3 to [2 x i64]*, !dbg !2702 | |
%38 = load [2 x i64], [2 x i64]* %37, align 8, !dbg !2702 | |
%39 = call i8 @runtime.__dynamic_map_hash_equal(%runtime.Map_Header* %0, [2 x i64] %36, [2 x i64] %38), !dbg !2702 | |
%40 = trunc i8 %39 to i1, !dbg !2702 | |
br i1 %40, label %if.then1, label %if.done, !dbg !2702 | |
if.then1: ; preds = %for.body | |
%41 = bitcast %runtime.Map_Find_Result* %agg.result to i8*, !dbg !2703 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %41, i8* align 8 %10, i64 24, i1 false), !dbg !2703 | |
ret void, !dbg !2703 | |
if.done: ; preds = %for.body | |
%42 = getelementptr inbounds %runtime.Map_Find_Result, %runtime.Map_Find_Result* %4, i32 0, i32 1, !dbg !2706 | |
%43 = load i64, i64* %21, align 8, !dbg !2706 | |
store i64 %43, i64* %42, align 8, !dbg !2706 | |
%44 = getelementptr inbounds %runtime.Map_Entry_Header, %runtime.Map_Entry_Header* %30, i32 0, i32 1, !dbg !2707 | |
%45 = load i64, i64* %44, align 8, !dbg !2707 | |
store i64 %45, i64* %21, align 8, !dbg !2707 | |
br label %for.loop, !dbg !2699 | |
if.done2: ; preds = %for.loop, %decls | |
%46 = bitcast %runtime.Map_Find_Result* %agg.result to i8*, !dbg !2708 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %46, i8* align 8 %10, i64 24, i1 false), !dbg !2708 | |
ret void, !dbg !2708 | |
} | |
define dso_local i64 @runtime.__dynamic_map_add_entry(%runtime.Map_Header* %0, [2 x i64] %1, %runtime.Source_Code_Location* %2, i8* noalias nocapture nonnull %__.context_ptr) !dbg !2709 { | |
decls: | |
%3 = alloca %runtime.Map_Hash, align 8 | |
call void @llvm.dbg.declare(metadata %runtime.Map_Hash* %4, metadata !2713, metadata !DIExpression()), !dbg !2726 | |
%4 = alloca %runtime.Map_Hash, align 8 | |
%5 = bitcast %runtime.Map_Hash* %3 to [2 x i64]* | |
store [2 x i64] %1, [2 x i64]* %5, align 8 | |
%6 = bitcast %runtime.Map_Hash* %4 to i8* | |
%7 = bitcast %runtime.Map_Hash* %3 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %6, i8* align 8 %7, i64 16, i1 false) | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !2714, metadata !DIExpression()), !dbg !2727 | |
call void @llvm.dbg.value(metadata i64 0, metadata !2715, metadata !DIExpression()), !dbg !2728 | |
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %8, metadata !2717, metadata !DIExpression()), !dbg !2729 | |
%8 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 0, !dbg !2730 | |
%9 = load %runtime.Raw_Map*, %runtime.Raw_Map** %8, align 8, !dbg !2730 | |
%10 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %9, i32 0, i32 1, !dbg !2730 | |
%11 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %10, i32 0, i32 1, !dbg !2730 | |
%12 = load i64, i64* %11, align 8, !dbg !2730 | |
call void @llvm.dbg.value(metadata i64 %12, metadata !2715, metadata !DIExpression()), !dbg !2728 | |
call void @llvm.dbg.value(metadata i64 0, metadata !2718, metadata !DIExpression()), !dbg !2728 | |
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %8, metadata !2717, metadata !DIExpression()), !dbg !2729 | |
call void @llvm.dbg.declare(metadata i64* %13, metadata !2719, metadata !DIExpression()), !dbg !2729 | |
%13 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 2, !dbg !2731 | |
%14 = load i64, i64* %13, align 8, !dbg !2731 | |
call void @llvm.dbg.declare(metadata i64* %15, metadata !2720, metadata !DIExpression()), !dbg !2729 | |
%15 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 3, !dbg !2731 | |
%16 = load i64, i64* %15, align 8, !dbg !2731 | |
%17 = bitcast %runtime.Raw_Dynamic_Array* %10 to i8*, !dbg !2731 | |
%18 = call i64 @runtime.__dynamic_array_append_nothing(i8* %17, i64 %14, i64 %16, %runtime.Source_Code_Location* %2, i8* %__.context_ptr), !dbg !2731 | |
call void @llvm.dbg.value(metadata i64 %18, metadata !2718, metadata !DIExpression()), !dbg !2728 | |
%19 = icmp ne i64 %18, %12, !dbg !2732 | |
br i1 %19, label %if.then, label %if.done, !dbg !2732 | |
if.then: ; preds = %decls | |
call void @llvm.dbg.value(metadata %runtime.Map_Entry_Header* null, metadata !2721, metadata !DIExpression()), !dbg !2733 | |
%20 = sub i64 %18, 1, !dbg !2734 | |
%21 = call %runtime.Map_Entry_Header* @runtime.__dynamic_map_get_entry(%runtime.Map_Header* %0, i64 %20, i8* %__.context_ptr), !dbg !2734 | |
call void @llvm.dbg.value(metadata %runtime.Map_Entry_Header* %21, metadata !2721, metadata !DIExpression()), !dbg !2733 | |
%22 = getelementptr inbounds %runtime.Map_Entry_Header, %runtime.Map_Entry_Header* %21, i32 0, i32 0, !dbg !2735 | |
%23 = getelementptr inbounds %runtime.Map_Hash, %runtime.Map_Hash* %4, i32 0, i32 0, !dbg !2735 | |
%24 = load i64, i64* %23, align 8, !dbg !2735 | |
store i64 %24, i64* %22, align 8, !dbg !2735 | |
%25 = ptrtoint %runtime.Map_Entry_Header* %21 to i64, !dbg !2736 | |
call void @llvm.dbg.declare(metadata i64* %26, metadata !2724, metadata !DIExpression()), !dbg !2737 | |
%26 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 4, !dbg !2736 | |
%27 = load i64, i64* %26, align 8, !dbg !2736 | |
%28 = add i64 %25, %27, !dbg !2736 | |
%29 = inttoptr i64 %28 to i8*, !dbg !2736 | |
%30 = getelementptr inbounds %runtime.Map_Hash, %runtime.Map_Hash* %4, i32 0, i32 1, !dbg !2736 | |
%31 = load i8*, i8** %30, align 8, !dbg !2736 | |
call void @llvm.dbg.declare(metadata i64* %32, metadata !2725, metadata !DIExpression()), !dbg !2737 | |
%32 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 5, !dbg !2736 | |
%33 = load i64, i64* %32, align 8, !dbg !2736 | |
%34 = call i8* @runtime.mem_copy(i8* %29, i8* %31, i64 %33), !dbg !2736 | |
%35 = getelementptr inbounds %runtime.Map_Entry_Header, %runtime.Map_Entry_Header* %21, i32 0, i32 1, !dbg !2738 | |
store i64 -1, i64* %35, align 8, !dbg !2738 | |
br label %if.done, !dbg !2732 | |
if.done: ; preds = %if.then, %decls | |
ret i64 %12, !dbg !2739 | |
} | |
define dso_local %runtime.Map_Entry_Header* @runtime.__dynamic_map_get_entry(%runtime.Map_Header* %0, i64 %1, i8* noalias nocapture nonnull %__.context_ptr) !dbg !2740 { | |
decls: | |
%2 = alloca [2 x i64], align 8, !dbg !2749 | |
%3 = alloca %runtime.Source_Code_Location, align 8, !dbg !2749 | |
call void @llvm.dbg.value(metadata i64 %1, metadata !2744, metadata !DIExpression()), !dbg !2750 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !2745, metadata !DIExpression()), !dbg !2751 | |
%4 = icmp sle i64 0, %1, !dbg !2749 | |
br i1 %4, label %logical.cmp.rhs, label %logical.cmp.done, !dbg !2749 | |
logical.cmp.rhs: ; preds = %decls | |
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %5, metadata !2746, metadata !DIExpression()), !dbg !2752 | |
%5 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 0, !dbg !2749 | |
%6 = load %runtime.Raw_Map*, %runtime.Raw_Map** %5, align 8, !dbg !2749 | |
%7 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %6, i32 0, i32 1, !dbg !2749 | |
%8 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %7, i32 0, i32 1, !dbg !2749 | |
%9 = load i64, i64* %8, align 8, !dbg !2749 | |
%10 = icmp slt i64 %1, %9, !dbg !2749 | |
%11 = zext i1 %10 to i8, !dbg !2749 | |
br label %logical.cmp.done, !dbg !2749 | |
logical.cmp.done: ; preds = %logical.cmp.rhs, %decls | |
%12 = phi i8 [ 0, %decls ], [ %11, %logical.cmp.rhs ], !dbg !2749 | |
%13 = icmp ne i8 %12, 0, !dbg !2749 | |
%14 = bitcast [2 x i64]* %2 to %..string*, !dbg !2749 | |
%15 = bitcast %..string* %14 to i8*, !dbg !2749 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %15, i8 0, i64 16, i1 false), !dbg !2749 | |
%16 = load [2 x i64], [2 x i64]* %2, align 8, !dbg !2749 | |
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([67 x i8], [67 x i8]* @"csbs$90", i64 0, i64 0), i64 66 }, i32 354, i32 2, %..string { i8* getelementptr inbounds ([24 x i8], [24 x i8]* @"csbs$9a", i64 0, i64 0), i64 23 } }, %runtime.Source_Code_Location* %3, align 8, !dbg !2749 | |
call void @runtime.assert(i1 %13, [2 x i64] %16, %runtime.Source_Code_Location* %3, i8* %__.context_ptr), !dbg !2749 | |
call void @llvm.dbg.declare(metadata %runtime.Raw_Map** %17, metadata !2746, metadata !DIExpression()), !dbg !2752 | |
%17 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 0, !dbg !2753 | |
%18 = load %runtime.Raw_Map*, %runtime.Raw_Map** %17, align 8, !dbg !2753 | |
%19 = getelementptr inbounds %runtime.Raw_Map, %runtime.Raw_Map* %18, i32 0, i32 1, !dbg !2753 | |
%20 = getelementptr inbounds %runtime.Raw_Dynamic_Array, %runtime.Raw_Dynamic_Array* %19, i32 0, i32 0, !dbg !2753 | |
%21 = load i8*, i8** %20, align 8, !dbg !2753 | |
%22 = ptrtoint i8* %21 to i64, !dbg !2753 | |
call void @llvm.dbg.declare(metadata i64* %23, metadata !2748, metadata !DIExpression()), !dbg !2752 | |
%23 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 2, !dbg !2753 | |
%24 = load i64, i64* %23, align 8, !dbg !2753 | |
%25 = mul i64 %1, %24, !dbg !2753 | |
%26 = add i64 %22, %25, !dbg !2753 | |
%27 = inttoptr i64 %26 to %runtime.Map_Entry_Header*, !dbg !2753 | |
ret %runtime.Map_Entry_Header* %27, !dbg !2753 | |
} | |
; Function Attrs: nounwind | |
define dso_local void @runtime.__dynamic_map_copy_entry(%runtime.Map_Header* %0, %runtime.Map_Entry_Header* %1, %runtime.Map_Entry_Header* %2) #0 !dbg !2754 { | |
decls: | |
call void @llvm.dbg.value(metadata %runtime.Map_Entry_Header* %1, metadata !2758, metadata !DIExpression()), !dbg !2760 | |
call void @llvm.dbg.value(metadata %runtime.Map_Entry_Header* %2, metadata !2759, metadata !DIExpression()), !dbg !2760 | |
%3 = getelementptr inbounds %runtime.Map_Header, %runtime.Map_Header* %0, i32 0, i32 2, !dbg !2761 | |
%4 = load i64, i64* %3, align 8, !dbg !2761 | |
%5 = bitcast %runtime.Map_Entry_Header* %1 to i8*, !dbg !2761 | |
%6 = bitcast %runtime.Map_Entry_Header* %2 to i8*, !dbg !2761 | |
%7 = call i8* @runtime.mem_copy(i8* %5, i8* %6, i64 %4), !dbg !2761 | |
ret void, !dbg !2763 | |
} | |
define internal void @os._fstat-1332({ %os.OS_Stat, i32 }* noalias sret %agg.result, i32 %0, i8* noalias nocapture nonnull %__.context_ptr) !dbg !2764 { | |
decls: | |
call void @llvm.dbg.declare(metadata %os.OS_Stat* %1, metadata !2774, metadata !DIExpression()), !dbg !2777 | |
%1 = alloca %os.OS_Stat, align 8, !dbg !2777 | |
call void @llvm.dbg.value(metadata i32 %0, metadata !2772, metadata !DIExpression()), !dbg !2778 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !2773, metadata !DIExpression()), !dbg !2779 | |
%2 = bitcast %os.OS_Stat* %1 to i8*, !dbg !2777 | |
call void @llvm.memset.p0i8.i64(i8* %2, i8 0, i64 144, i1 false), !dbg !2777 | |
call void @llvm.dbg.value(metadata i32 0, metadata !2776, metadata !DIExpression()), !dbg !2780 | |
%3 = call i32 @fstat(i32 %0, %os.OS_Stat* %1), !dbg !2781 | |
call void @llvm.dbg.value(metadata i32 %3, metadata !2776, metadata !DIExpression()), !dbg !2780 | |
%4 = icmp eq i32 %3, -1, !dbg !2782 | |
%5 = getelementptr inbounds { %os.OS_Stat, i32 }, { %os.OS_Stat, i32 }* %agg.result, i32 0, i32 0, !dbg !2780 | |
br i1 %4, label %if.then, label %if.done, !dbg !2782 | |
if.then: ; preds = %decls | |
%6 = bitcast %os.OS_Stat* %5 to i8*, !dbg !2783 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %6, i8* align 8 %2, i64 144, i1 false), !dbg !2783 | |
%7 = call i64 @os.get_last_error(i8* %__.context_ptr), !dbg !2783 | |
%8 = trunc i64 %7 to i32, !dbg !2783 | |
%9 = getelementptr inbounds { %os.OS_Stat, i32 }, { %os.OS_Stat, i32 }* %agg.result, i32 0, i32 1, !dbg !2783 | |
store i32 %8, i32* %9, align 4, !dbg !2783 | |
ret void, !dbg !2783 | |
if.done: ; preds = %decls | |
%10 = getelementptr inbounds { %os.OS_Stat, i32 }, { %os.OS_Stat, i32 }* %agg.result, i32 0, i32 1, !dbg !2786 | |
%11 = bitcast %os.OS_Stat* %5 to i8*, !dbg !2786 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %11, i8* align 8 %2, i64 144, i1 false), !dbg !2786 | |
store i32 0, i32* %10, align 4, !dbg !2786 | |
ret void, !dbg !2786 | |
} | |
; Function Attrs: noreturn nounwind | |
define dso_local void @runtime.bounds_trap() #3 !dbg !2787 { | |
decls: | |
call void @llvm.trap(), !dbg !2790 | |
unreachable, !dbg !2792 | |
} | |
; Function Attrs: noreturn nounwind | |
define dso_local void @runtime.type_assertion_trap() #3 !dbg !2793 { | |
decls: | |
call void @llvm.trap(), !dbg !2794 | |
unreachable, !dbg !2796 | |
} | |
define dso_local void @runtime.bounds_check_error([2 x i64] %0, i32 %1, i32 %2, i64 %3, i64 %4) !dbg !2797 { | |
decls: | |
%5 = alloca %..string, align 8 | |
call void @llvm.dbg.declare(metadata %..string* %6, metadata !2801, metadata !DIExpression()), !dbg !2806 | |
%6 = alloca %..string, align 8 | |
%7 = bitcast %..string* %5 to [2 x i64]* | |
store [2 x i64] %0, [2 x i64]* %7, align 8 | |
%8 = bitcast %..string* %6 to i8* | |
%9 = bitcast %..string* %5 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %8, i8* align 8 %9, i64 16, i1 false) | |
call void @llvm.dbg.value(metadata i32 %1, metadata !2802, metadata !DIExpression()), !dbg !2807 | |
call void @llvm.dbg.value(metadata i32 %2, metadata !2803, metadata !DIExpression()), !dbg !2807 | |
call void @llvm.dbg.value(metadata i64 %3, metadata !2804, metadata !DIExpression()), !dbg !2807 | |
call void @llvm.dbg.value(metadata i64 %4, metadata !2805, metadata !DIExpression()), !dbg !2807 | |
%10 = icmp sle i64 0, %3, !dbg !2808 | |
br i1 %10, label %cmp.and, label %if.done, !dbg !2808 | |
cmp.and: ; preds = %decls | |
%11 = icmp slt i64 %3, %4, !dbg !2808 | |
br i1 %11, label %if.then, label %if.done, !dbg !2808 | |
if.then: ; preds = %cmp.and | |
ret void, !dbg !2810 | |
if.done: ; preds = %cmp.and, %decls | |
%12 = bitcast %..string* %6 to [2 x i64]*, !dbg !2813 | |
%13 = load [2 x i64], [2 x i64]* %12, align 8, !dbg !2813 | |
call void @runtime.bounds_check_error.handle_error-0([2 x i64] %13, i32 %1, i32 %2, i64 %3, i64 %4), !dbg !2813 | |
ret void, !dbg !2814 | |
} | |
; Function Attrs: noreturn | |
define dso_local void @runtime.slice_handle_error([2 x i64] %0, i32 %1, i32 %2, i64 %3, i64 %4, i64 %5) #1 !dbg !2815 { | |
decls: | |
%6 = alloca %..string, align 8 | |
call void @llvm.dbg.declare(metadata %..string* undef, metadata !2819, metadata !DIExpression()), !dbg !2825 | |
%7 = alloca %runtime.Source_Code_Location, align 8, !dbg !2826 | |
%8 = alloca [2 x i64], align 8, !dbg !2828 | |
%9 = alloca { i64, i64 }, align 8, !dbg !2828 | |
%10 = alloca [2 x i64], align 8, !dbg !2829 | |
%11 = alloca { i64, i64 }, align 8, !dbg !2829 | |
%12 = alloca [2 x i64], align 8, !dbg !2830 | |
%13 = alloca { i64, i64 }, align 8, !dbg !2830 | |
%14 = alloca { i64, i64 }, align 8, !dbg !2831 | |
%15 = bitcast %..string* %6 to [2 x i64]* | |
store [2 x i64] %0, [2 x i64]* %15, align 8 | |
%16 = bitcast %..string* %6 to i8* | |
%17 = bitcast %runtime.Source_Code_Location* %7 to %..string* | |
%18 = bitcast %..string* %17 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %18, i8* align 8 %16, i64 16, i1 false) | |
call void @llvm.dbg.value(metadata i32 %1, metadata !2820, metadata !DIExpression()), !dbg !2832 | |
call void @llvm.dbg.value(metadata i32 %2, metadata !2821, metadata !DIExpression()), !dbg !2832 | |
call void @llvm.dbg.value(metadata i64 %3, metadata !2822, metadata !DIExpression()), !dbg !2832 | |
call void @llvm.dbg.value(metadata i64 %4, metadata !2823, metadata !DIExpression()), !dbg !2832 | |
call void @llvm.dbg.value(metadata i64 %5, metadata !2824, metadata !DIExpression()), !dbg !2832 | |
%19 = getelementptr inbounds %runtime.Source_Code_Location, %runtime.Source_Code_Location* %7, i32 0, i32 0, !dbg !2826 | |
%20 = bitcast %..string* %19 to i8*, !dbg !2826 | |
%21 = getelementptr i8, i8* %20, i64 16, !dbg !2826 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %21, i8 0, i64 24, i1 false), !dbg !2826 | |
%22 = getelementptr inbounds %runtime.Source_Code_Location, %runtime.Source_Code_Location* %7, i32 0, i32 1, !dbg !2826 | |
store i32 %1, i32* %22, align 4, !dbg !2826 | |
%23 = getelementptr inbounds %runtime.Source_Code_Location, %runtime.Source_Code_Location* %7, i32 0, i32 2, !dbg !2826 | |
store i32 %2, i32* %23, align 4, !dbg !2826 | |
call void @runtime.print_caller_location(%runtime.Source_Code_Location* %7), !dbg !2826 | |
%24 = bitcast [2 x i64]* %8 to %..string*, !dbg !2828 | |
store %..string { i8* getelementptr inbounds ([25 x i8], [25 x i8]* @"csbs$9b", i64 0, i64 0), i64 24 }, %..string* %24, align 8, !dbg !2828 | |
%25 = load [2 x i64], [2 x i64]* %8, align 8, !dbg !2828 | |
%26 = call [2 x i64] @runtime.print_string([2 x i64] %25), !dbg !2828 | |
%27 = bitcast { i64, i64 }* %9 to [2 x i64]*, !dbg !2828 | |
store [2 x i64] %26, [2 x i64]* %27, align 8, !dbg !2828 | |
call void @runtime.print_i64(i64 %3), !dbg !2833 | |
%28 = bitcast [2 x i64]* %10 to %..string*, !dbg !2829 | |
store %..string { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"csbs$9c", i64 0, i64 0), i64 1 }, %..string* %28, align 8, !dbg !2829 | |
%29 = load [2 x i64], [2 x i64]* %10, align 8, !dbg !2829 | |
%30 = call [2 x i64] @runtime.print_string([2 x i64] %29), !dbg !2829 | |
%31 = bitcast { i64, i64 }* %11 to [2 x i64]*, !dbg !2829 | |
store [2 x i64] %30, [2 x i64]* %31, align 8, !dbg !2829 | |
call void @runtime.print_i64(i64 %4), !dbg !2834 | |
%32 = bitcast [2 x i64]* %12 to %..string*, !dbg !2830 | |
store %..string { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"csbs$9c", i64 0, i64 0), i64 1 }, %..string* %32, align 8, !dbg !2830 | |
%33 = load [2 x i64], [2 x i64]* %12, align 8, !dbg !2830 | |
%34 = call [2 x i64] @runtime.print_string([2 x i64] %33), !dbg !2830 | |
%35 = bitcast { i64, i64 }* %13 to [2 x i64]*, !dbg !2830 | |
store [2 x i64] %34, [2 x i64]* %35, align 8, !dbg !2830 | |
call void @runtime.print_i64(i64 %5), !dbg !2835 | |
%36 = call [2 x i64] @runtime.print_byte(i8 10), !dbg !2831 | |
%37 = bitcast { i64, i64 }* %14 to [2 x i64]*, !dbg !2831 | |
store [2 x i64] %36, [2 x i64]* %37, align 8, !dbg !2831 | |
call void @runtime.bounds_trap(), !dbg !2836 | |
unreachable, !dbg !2836 | |
} | |
; Function Attrs: noreturn | |
define dso_local void @runtime.multi_pointer_slice_handle_error([2 x i64] %0, i32 %1, i32 %2, i64 %3, i64 %4) #1 !dbg !2837 { | |
decls: | |
%5 = alloca %..string, align 8 | |
call void @llvm.dbg.declare(metadata %..string* undef, metadata !2840, metadata !DIExpression()), !dbg !2845 | |
%6 = alloca %runtime.Source_Code_Location, align 8, !dbg !2846 | |
%7 = alloca [2 x i64], align 8, !dbg !2848 | |
%8 = alloca { i64, i64 }, align 8, !dbg !2848 | |
%9 = alloca [2 x i64], align 8, !dbg !2849 | |
%10 = alloca { i64, i64 }, align 8, !dbg !2849 | |
%11 = alloca { i64, i64 }, align 8, !dbg !2850 | |
%12 = bitcast %..string* %5 to [2 x i64]* | |
store [2 x i64] %0, [2 x i64]* %12, align 8 | |
%13 = bitcast %..string* %5 to i8* | |
%14 = bitcast %runtime.Source_Code_Location* %6 to %..string* | |
%15 = bitcast %..string* %14 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %15, i8* align 8 %13, i64 16, i1 false) | |
call void @llvm.dbg.value(metadata i32 %1, metadata !2841, metadata !DIExpression()), !dbg !2851 | |
call void @llvm.dbg.value(metadata i32 %2, metadata !2842, metadata !DIExpression()), !dbg !2851 | |
call void @llvm.dbg.value(metadata i64 %3, metadata !2843, metadata !DIExpression()), !dbg !2851 | |
call void @llvm.dbg.value(metadata i64 %4, metadata !2844, metadata !DIExpression()), !dbg !2851 | |
%16 = getelementptr inbounds %runtime.Source_Code_Location, %runtime.Source_Code_Location* %6, i32 0, i32 0, !dbg !2846 | |
%17 = bitcast %..string* %16 to i8*, !dbg !2846 | |
%18 = getelementptr i8, i8* %17, i64 16, !dbg !2846 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %18, i8 0, i64 24, i1 false), !dbg !2846 | |
%19 = getelementptr inbounds %runtime.Source_Code_Location, %runtime.Source_Code_Location* %6, i32 0, i32 1, !dbg !2846 | |
store i32 %1, i32* %19, align 4, !dbg !2846 | |
%20 = getelementptr inbounds %runtime.Source_Code_Location, %runtime.Source_Code_Location* %6, i32 0, i32 2, !dbg !2846 | |
store i32 %2, i32* %20, align 4, !dbg !2846 | |
call void @runtime.print_caller_location(%runtime.Source_Code_Location* %6), !dbg !2846 | |
%21 = bitcast [2 x i64]* %7 to %..string*, !dbg !2848 | |
store %..string { i8* getelementptr inbounds ([25 x i8], [25 x i8]* @"csbs$9b", i64 0, i64 0), i64 24 }, %..string* %21, align 8, !dbg !2848 | |
%22 = load [2 x i64], [2 x i64]* %7, align 8, !dbg !2848 | |
%23 = call [2 x i64] @runtime.print_string([2 x i64] %22), !dbg !2848 | |
%24 = bitcast { i64, i64 }* %8 to [2 x i64]*, !dbg !2848 | |
store [2 x i64] %23, [2 x i64]* %24, align 8, !dbg !2848 | |
call void @runtime.print_i64(i64 %3), !dbg !2852 | |
%25 = bitcast [2 x i64]* %9 to %..string*, !dbg !2849 | |
store %..string { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"csbs$9c", i64 0, i64 0), i64 1 }, %..string* %25, align 8, !dbg !2849 | |
%26 = load [2 x i64], [2 x i64]* %9, align 8, !dbg !2849 | |
%27 = call [2 x i64] @runtime.print_string([2 x i64] %26), !dbg !2849 | |
%28 = bitcast { i64, i64 }* %10 to [2 x i64]*, !dbg !2849 | |
store [2 x i64] %27, [2 x i64]* %28, align 8, !dbg !2849 | |
call void @runtime.print_i64(i64 %4), !dbg !2853 | |
%29 = call [2 x i64] @runtime.print_byte(i8 10), !dbg !2850 | |
%30 = bitcast { i64, i64 }* %11 to [2 x i64]*, !dbg !2850 | |
store [2 x i64] %29, [2 x i64]* %30, align 8, !dbg !2850 | |
call void @runtime.bounds_trap(), !dbg !2854 | |
unreachable, !dbg !2854 | |
} | |
define dso_local void @runtime.multi_pointer_slice_expr_error([2 x i64] %0, i32 %1, i32 %2, i64 %3, i64 %4) !dbg !2855 { | |
decls: | |
%5 = alloca %..string, align 8 | |
call void @llvm.dbg.declare(metadata %..string* %6, metadata !2857, metadata !DIExpression()), !dbg !2862 | |
%6 = alloca %..string, align 8 | |
%7 = bitcast %..string* %5 to [2 x i64]* | |
store [2 x i64] %0, [2 x i64]* %7, align 8 | |
%8 = bitcast %..string* %6 to i8* | |
%9 = bitcast %..string* %5 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %8, i8* align 8 %9, i64 16, i1 false) | |
call void @llvm.dbg.value(metadata i32 %1, metadata !2858, metadata !DIExpression()), !dbg !2863 | |
call void @llvm.dbg.value(metadata i32 %2, metadata !2859, metadata !DIExpression()), !dbg !2863 | |
call void @llvm.dbg.value(metadata i64 %3, metadata !2860, metadata !DIExpression()), !dbg !2863 | |
call void @llvm.dbg.value(metadata i64 %4, metadata !2861, metadata !DIExpression()), !dbg !2863 | |
%10 = icmp sle i64 %3, %4, !dbg !2864 | |
br i1 %10, label %if.then, label %if.done, !dbg !2864 | |
if.then: ; preds = %decls | |
ret void, !dbg !2866 | |
if.done: ; preds = %decls | |
%11 = bitcast %..string* %6 to [2 x i64]*, !dbg !2869 | |
%12 = load [2 x i64], [2 x i64]* %11, align 8, !dbg !2869 | |
call void @runtime.multi_pointer_slice_handle_error([2 x i64] %12, i32 %1, i32 %2, i64 %3, i64 %4), !dbg !2869 | |
unreachable, !dbg !2869 | |
} | |
define dso_local void @runtime.slice_expr_error_hi([2 x i64] %0, i32 %1, i32 %2, i64 %3, i64 %4) !dbg !2870 { | |
decls: | |
%5 = alloca %..string, align 8 | |
call void @llvm.dbg.declare(metadata %..string* %6, metadata !2872, metadata !DIExpression()), !dbg !2877 | |
%6 = alloca %..string, align 8 | |
%7 = bitcast %..string* %5 to [2 x i64]* | |
store [2 x i64] %0, [2 x i64]* %7, align 8 | |
%8 = bitcast %..string* %6 to i8* | |
%9 = bitcast %..string* %5 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %8, i8* align 8 %9, i64 16, i1 false) | |
call void @llvm.dbg.value(metadata i32 %1, metadata !2873, metadata !DIExpression()), !dbg !2878 | |
call void @llvm.dbg.value(metadata i32 %2, metadata !2874, metadata !DIExpression()), !dbg !2878 | |
call void @llvm.dbg.value(metadata i64 %3, metadata !2875, metadata !DIExpression()), !dbg !2878 | |
call void @llvm.dbg.value(metadata i64 %4, metadata !2876, metadata !DIExpression()), !dbg !2878 | |
%10 = icmp sle i64 0, %3, !dbg !2879 | |
br i1 %10, label %cmp.and, label %if.done, !dbg !2879 | |
cmp.and: ; preds = %decls | |
%11 = icmp sle i64 %3, %4, !dbg !2879 | |
br i1 %11, label %if.then, label %if.done, !dbg !2879 | |
if.then: ; preds = %cmp.and | |
ret void, !dbg !2881 | |
if.done: ; preds = %cmp.and, %decls | |
%12 = bitcast %..string* %6 to [2 x i64]*, !dbg !2884 | |
%13 = load [2 x i64], [2 x i64]* %12, align 8, !dbg !2884 | |
call void @runtime.slice_handle_error([2 x i64] %13, i32 %1, i32 %2, i64 0, i64 %3, i64 %4), !dbg !2884 | |
unreachable, !dbg !2884 | |
} | |
define dso_local void @runtime.slice_expr_error_lo_hi([2 x i64] %0, i32 %1, i32 %2, i64 %3, i64 %4, i64 %5) !dbg !2885 { | |
decls: | |
%6 = alloca %..string, align 8 | |
call void @llvm.dbg.declare(metadata %..string* %7, metadata !2888, metadata !DIExpression()), !dbg !2894 | |
%7 = alloca %..string, align 8 | |
%8 = bitcast %..string* %6 to [2 x i64]* | |
store [2 x i64] %0, [2 x i64]* %8, align 8 | |
%9 = bitcast %..string* %7 to i8* | |
%10 = bitcast %..string* %6 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %9, i8* align 8 %10, i64 16, i1 false) | |
call void @llvm.dbg.value(metadata i32 %1, metadata !2889, metadata !DIExpression()), !dbg !2895 | |
call void @llvm.dbg.value(metadata i32 %2, metadata !2890, metadata !DIExpression()), !dbg !2895 | |
call void @llvm.dbg.value(metadata i64 %3, metadata !2891, metadata !DIExpression()), !dbg !2895 | |
call void @llvm.dbg.value(metadata i64 %4, metadata !2892, metadata !DIExpression()), !dbg !2895 | |
call void @llvm.dbg.value(metadata i64 %5, metadata !2893, metadata !DIExpression()), !dbg !2895 | |
%11 = icmp sle i64 0, %3, !dbg !2896 | |
br i1 %11, label %cmp.and, label %if.done, !dbg !2896 | |
cmp.and: ; preds = %decls | |
%12 = icmp sle i64 %3, %5, !dbg !2896 | |
br i1 %12, label %cmp.and1, label %if.done, !dbg !2896 | |
cmp.and1: ; preds = %cmp.and | |
%13 = icmp sle i64 %3, %4, !dbg !2896 | |
br i1 %13, label %cmp.and2, label %if.done, !dbg !2896 | |
cmp.and2: ; preds = %cmp.and1 | |
%14 = icmp sle i64 %4, %5, !dbg !2896 | |
br i1 %14, label %if.then, label %if.done, !dbg !2896 | |
if.then: ; preds = %cmp.and2 | |
ret void, !dbg !2898 | |
if.done: ; preds = %cmp.and2, %cmp.and1, %cmp.and, %decls | |
%15 = bitcast %..string* %7 to [2 x i64]*, !dbg !2901 | |
%16 = load [2 x i64], [2 x i64]* %15, align 8, !dbg !2901 | |
call void @runtime.slice_handle_error([2 x i64] %16, i32 %1, i32 %2, i64 %3, i64 %4, i64 %5), !dbg !2901 | |
unreachable, !dbg !2901 | |
} | |
define internal i8* @os.heap_alloc(i64 %0, i8* noalias nocapture nonnull %__.context_ptr) !dbg !2902 { | |
decls: | |
%1 = alloca [2 x i64], align 8, !dbg !2908 | |
%2 = alloca %runtime.Source_Code_Location, align 8, !dbg !2908 | |
call void @llvm.dbg.value(metadata i64 %0, metadata !2906, metadata !DIExpression()), !dbg !2910 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !2907, metadata !DIExpression()), !dbg !2911 | |
%3 = icmp sge i64 %0, 0, !dbg !2908 | |
%4 = bitcast [2 x i64]* %1 to %..string*, !dbg !2908 | |
%5 = bitcast %..string* %4 to i8*, !dbg !2908 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %5, i8 0, i64 16, i1 false), !dbg !2908 | |
%6 = load [2 x i64], [2 x i64]* %1, align 8, !dbg !2908 | |
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([50 x i8], [50 x i8]* @"csbs$91", i64 0, i64 0), i64 49 }, i32 542, i32 2, %..string { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"csbs$9d", i64 0, i64 0), i64 10 } }, %runtime.Source_Code_Location* %2, align 8, !dbg !2908 | |
call void @runtime.assert(i1 %3, [2 x i64] %6, %runtime.Source_Code_Location* %2, i8* %__.context_ptr), !dbg !2908 | |
%7 = call i8* @calloc(i64 1, i64 %0), !dbg !2912 | |
ret i8* %7, !dbg !2912 | |
} | |
define internal [2 x i64] @strconv.append_float([2 x i64] %0, double %1, i8 %2, i64 %3, i64 %4, i8* noalias nocapture nonnull %__.context_ptr) !dbg !2913 { | |
decls: | |
%5 = alloca { i8*, i64 }, align 8 | |
call void @llvm.dbg.declare(metadata { i8*, i64 }* %6, metadata !2918, metadata !DIExpression()), !dbg !2924 | |
%6 = alloca { i8*, i64 }, align 8 | |
%7 = alloca { i8*, i64 }, align 8, !dbg !2925 | |
%8 = bitcast { i8*, i64 }* %5 to [2 x i64]* | |
store [2 x i64] %0, [2 x i64]* %8, align 8 | |
%9 = bitcast { i8*, i64 }* %6 to i8* | |
%10 = bitcast { i8*, i64 }* %5 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %9, i8* align 8 %10, i64 16, i1 false) | |
call void @llvm.dbg.value(metadata double %1, metadata !2919, metadata !DIExpression()), !dbg !2927 | |
call void @llvm.dbg.value(metadata i8 %2, metadata !2920, metadata !DIExpression()), !dbg !2927 | |
call void @llvm.dbg.value(metadata i64 %3, metadata !2921, metadata !DIExpression()), !dbg !2927 | |
call void @llvm.dbg.value(metadata i64 %4, metadata !2922, metadata !DIExpression()), !dbg !2927 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !2923, metadata !DIExpression()), !dbg !2928 | |
%11 = bitcast { i8*, i64 }* %6 to [2 x i64]*, !dbg !2925 | |
%12 = load [2 x i64], [2 x i64]* %11, align 8, !dbg !2925 | |
%13 = call [2 x i64] @strconv.generic_ftoa([2 x i64] %12, double %1, i8 %2, i64 %3, i64 %4, i8* %__.context_ptr), !dbg !2925 | |
%14 = bitcast { i8*, i64 }* %7 to [2 x i64]*, !dbg !2925 | |
store [2 x i64] %13, [2 x i64]* %14, align 8, !dbg !2925 | |
%15 = bitcast { i8*, i64 }* %7 to %..string*, !dbg !2925 | |
%16 = bitcast %..string* %15 to [2 x i64]*, !dbg !2925 | |
%17 = load [2 x i64], [2 x i64]* %16, align 8, !dbg !2925 | |
ret [2 x i64] %17, !dbg !2925 | |
} | |
define dso_local void @runtime.type_assertion_check(i1 zeroext %0, [2 x i64] %1, i32 %2, i32 %3, i64 %4, i64 %5) !dbg !2929 { | |
decls: | |
%6 = alloca %..string, align 8 | |
call void @llvm.dbg.declare(metadata %..string* %7, metadata !2934, metadata !DIExpression()), !dbg !2939 | |
%7 = alloca %..string, align 8 | |
call void @llvm.dbg.value(metadata i8 undef, metadata !2933, metadata !DIExpression()), !dbg !2940 | |
%8 = bitcast %..string* %6 to [2 x i64]* | |
store [2 x i64] %1, [2 x i64]* %8, align 8 | |
%9 = bitcast %..string* %7 to i8* | |
%10 = bitcast %..string* %6 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %9, i8* align 8 %10, i64 16, i1 false) | |
call void @llvm.dbg.value(metadata i32 %2, metadata !2935, metadata !DIExpression()), !dbg !2940 | |
call void @llvm.dbg.value(metadata i32 %3, metadata !2936, metadata !DIExpression()), !dbg !2940 | |
call void @llvm.dbg.value(metadata i64 %4, metadata !2937, metadata !DIExpression()), !dbg !2940 | |
call void @llvm.dbg.value(metadata i64 %5, metadata !2938, metadata !DIExpression()), !dbg !2940 | |
br i1 %0, label %if.then, label %if.done, !dbg !2941 | |
if.then: ; preds = %decls | |
ret void, !dbg !2943 | |
if.done: ; preds = %decls | |
%11 = bitcast %..string* %7 to [2 x i64]*, !dbg !2946 | |
%12 = load [2 x i64], [2 x i64]* %11, align 8, !dbg !2946 | |
call void @runtime.type_assertion_check.handle_error-0([2 x i64] %12, i32 %2, i32 %3, i64 %4, i64 %5), !dbg !2946 | |
unreachable | |
} | |
define dso_local void @runtime.type_assertion_check2(i1 zeroext %0, [2 x i64] %1, i32 %2, i32 %3, i64 %4, i64 %5, i8* %6) !dbg !2947 { | |
decls: | |
%7 = alloca %..string, align 8 | |
call void @llvm.dbg.declare(metadata %..string* %8, metadata !2952, metadata !DIExpression()), !dbg !2958 | |
%8 = alloca %..string, align 8 | |
call void @llvm.dbg.value(metadata i8 undef, metadata !2951, metadata !DIExpression()), !dbg !2959 | |
%9 = bitcast %..string* %7 to [2 x i64]* | |
store [2 x i64] %1, [2 x i64]* %9, align 8 | |
%10 = bitcast %..string* %8 to i8* | |
%11 = bitcast %..string* %7 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %10, i8* align 8 %11, i64 16, i1 false) | |
call void @llvm.dbg.value(metadata i32 %2, metadata !2953, metadata !DIExpression()), !dbg !2959 | |
call void @llvm.dbg.value(metadata i32 %3, metadata !2954, metadata !DIExpression()), !dbg !2959 | |
call void @llvm.dbg.value(metadata i64 %4, metadata !2955, metadata !DIExpression()), !dbg !2959 | |
call void @llvm.dbg.value(metadata i64 %5, metadata !2956, metadata !DIExpression()), !dbg !2959 | |
call void @llvm.dbg.value(metadata i8* %6, metadata !2957, metadata !DIExpression()), !dbg !2959 | |
br i1 %0, label %if.then, label %if.done, !dbg !2960 | |
if.then: ; preds = %decls | |
ret void, !dbg !2962 | |
if.done: ; preds = %decls | |
%12 = bitcast %..string* %8 to [2 x i64]*, !dbg !2965 | |
%13 = load [2 x i64], [2 x i64]* %12, align 8, !dbg !2965 | |
call void @runtime.type_assertion_check2.handle_error-1([2 x i64] %13, i32 %2, i32 %3, i64 %4, i64 %5, i8* %6), !dbg !2965 | |
ret void, !dbg !2966 | |
} | |
define internal i8* @os.heap_resize(i8* %0, i64 %1, i8* noalias nocapture nonnull %__.context_ptr) !dbg !2967 { | |
decls: | |
call void @llvm.dbg.value(metadata i8* %0, metadata !2971, metadata !DIExpression()), !dbg !2974 | |
call void @llvm.dbg.value(metadata i64 %1, metadata !2972, metadata !DIExpression()), !dbg !2974 | |
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !2973, metadata !DIExpression()), !dbg !2975 | |
%2 = call i8* @realloc(i8* %0, i64 %1), !dbg !2976 | |
ret i8* %2, !dbg !2976 | |
} | |
define internal void @os.heap_free(i8* %0, i8* noalias nocapture nonnull %__.context_ptr) !dbg !2978 { | |
decls: | |
call void @llvm.dbg.value(metadata i8* %0, metadata !2982, metadata !DIExpression()), !dbg !2984 | |
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !2983, metadata !DIExpression()), !dbg !2985 | |
call void @free(i8* %0), !dbg !2986 | |
ret void, !dbg !2985 | |
} | |
; Function Attrs: alwaysinline | |
define dso_local void @runtime.make_slice_error_loc(%runtime.Source_Code_Location* %0, i64 %1) #4 !dbg !2988 { | |
decls: | |
%2 = alloca [2 x i64], align 8, !dbg !2993 | |
%3 = alloca { i64, i64 }, align 8, !dbg !2993 | |
%4 = alloca { i64, i64 }, align 8, !dbg !3000 | |
call void @llvm.dbg.value(metadata i64 %1, metadata !2992, metadata !DIExpression()), !dbg !3001 | |
%5 = icmp sle i64 0, %1, !dbg !3002 | |
br i1 %5, label %if.then, label %if.done, !dbg !3002 | |
if.then: ; preds = %decls | |
ret void, !dbg !3003 | |
if.done: ; preds = %decls | |
%6 = bitcast [2 x i64]* %2 to i8*, !dbg !3006 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %6), !dbg !3006 | |
%7 = bitcast { i64, i64 }* %3 to i8*, !dbg !3006 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %7), !dbg !3006 | |
%8 = bitcast { i64, i64 }* %4 to i8*, !dbg !3006 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %8), !dbg !3006 | |
call void @llvm.dbg.value(metadata i64 %1, metadata !2997, metadata !DIExpression()), !dbg !3006 | |
call void @runtime.print_caller_location(%runtime.Source_Code_Location* %0), !dbg !3007 | |
%9 = bitcast [2 x i64]* %2 to %..string*, !dbg !2993 | |
store %..string { i8* getelementptr inbounds ([33 x i8], [33 x i8]* @"csbs$111", i64 0, i64 0), i64 32 }, %..string* %9, align 8, !dbg !2993 | |
%10 = load [2 x i64], [2 x i64]* %2, align 8, !dbg !2993 | |
%11 = call [2 x i64] @runtime.print_string([2 x i64] %10), !dbg !2993 | |
%12 = bitcast { i64, i64 }* %3 to [2 x i64]*, !dbg !2993 | |
store [2 x i64] %11, [2 x i64]* %12, align 8, !dbg !2993 | |
call void @runtime.print_i64(i64 %1), !dbg !3008 | |
%13 = call [2 x i64] @runtime.print_byte(i8 10), !dbg !3000 | |
%14 = bitcast { i64, i64 }* %4 to [2 x i64]*, !dbg !3000 | |
store [2 x i64] %13, [2 x i64]* %14, align 8, !dbg !3000 | |
call void @runtime.bounds_trap(), !dbg !3009 | |
unreachable, !dbg !3009 | |
runtime.make_slice_error_loc.handle_error-0.exit: ; No predecessors! | |
ret void, !dbg !3010 | |
} | |
; Function Attrs: alwaysinline | |
define dso_local void @runtime.make_dynamic_array_error_loc(%runtime.Source_Code_Location* %0, i64 %1, i64 %2) #4 !dbg !3011 { | |
decls: | |
%3 = alloca [2 x i64], align 8, !dbg !3017 | |
%4 = alloca { i64, i64 }, align 8, !dbg !3017 | |
%5 = alloca { i64, i64 }, align 8, !dbg !3025 | |
%6 = alloca { i64, i64 }, align 8, !dbg !3026 | |
call void @llvm.dbg.value(metadata i64 %1, metadata !3015, metadata !DIExpression()), !dbg !3027 | |
call void @llvm.dbg.value(metadata i64 %2, metadata !3016, metadata !DIExpression()), !dbg !3027 | |
%7 = icmp sle i64 0, %1, !dbg !3028 | |
br i1 %7, label %cmp.and, label %if.done, !dbg !3028 | |
cmp.and: ; preds = %decls | |
%8 = icmp sle i64 %1, %2, !dbg !3028 | |
br i1 %8, label %if.then, label %if.done, !dbg !3028 | |
if.then: ; preds = %cmp.and | |
ret void, !dbg !3029 | |
if.done: ; preds = %cmp.and, %decls | |
%9 = bitcast [2 x i64]* %3 to i8*, !dbg !3032 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %9), !dbg !3032 | |
%10 = bitcast { i64, i64 }* %4 to i8*, !dbg !3032 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %10), !dbg !3032 | |
%11 = bitcast { i64, i64 }* %5 to i8*, !dbg !3032 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %11), !dbg !3032 | |
%12 = bitcast { i64, i64 }* %6 to i8*, !dbg !3032 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %12), !dbg !3032 | |
call void @llvm.dbg.value(metadata i64 %1, metadata !3021, metadata !DIExpression()), !dbg !3032 | |
call void @llvm.dbg.value(metadata i64 %2, metadata !3022, metadata !DIExpression()), !dbg !3032 | |
call void @runtime.print_caller_location(%runtime.Source_Code_Location* %0), !dbg !3033 | |
%13 = bitcast [2 x i64]* %3 to %..string*, !dbg !3017 | |
store %..string { i8* getelementptr inbounds ([45 x i8], [45 x i8]* @"csbs$112", i64 0, i64 0), i64 44 }, %..string* %13, align 8, !dbg !3017 | |
%14 = load [2 x i64], [2 x i64]* %3, align 8, !dbg !3017 | |
%15 = call [2 x i64] @runtime.print_string([2 x i64] %14), !dbg !3017 | |
%16 = bitcast { i64, i64 }* %4 to [2 x i64]*, !dbg !3017 | |
store [2 x i64] %15, [2 x i64]* %16, align 8, !dbg !3017 | |
call void @runtime.print_i64(i64 %1), !dbg !3034 | |
%17 = call [2 x i64] @runtime.print_byte(i8 58), !dbg !3025 | |
%18 = bitcast { i64, i64 }* %5 to [2 x i64]*, !dbg !3025 | |
store [2 x i64] %17, [2 x i64]* %18, align 8, !dbg !3025 | |
call void @runtime.print_i64(i64 %2), !dbg !3035 | |
%19 = call [2 x i64] @runtime.print_byte(i8 10), !dbg !3026 | |
%20 = bitcast { i64, i64 }* %6 to [2 x i64]*, !dbg !3026 | |
store [2 x i64] %19, [2 x i64]* %20, align 8, !dbg !3026 | |
call void @runtime.bounds_trap(), !dbg !3036 | |
unreachable, !dbg !3036 | |
runtime.make_dynamic_array_error_loc.handle_error-0.exit: ; No predecessors! | |
ret void, !dbg !3037 | |
} | |
; Function Attrs: alwaysinline | |
define dso_local void @runtime.bounds_check_error_loc(%runtime.Source_Code_Location* %0, i64 %1, i64 %2) #4 !dbg !3038 { | |
decls: | |
%3 = alloca %..string, align 8 | |
%4 = alloca %..string, align 8 | |
call void @llvm.dbg.value(metadata i64 %1, metadata !3040, metadata !DIExpression()), !dbg !3046 | |
call void @llvm.dbg.value(metadata i64 %2, metadata !3041, metadata !DIExpression()), !dbg !3046 | |
call void @llvm.dbg.declare(metadata %..string* %5, metadata !3042, metadata !DIExpression()), !dbg !3047 | |
%5 = getelementptr inbounds %runtime.Source_Code_Location, %runtime.Source_Code_Location* %0, i32 0, i32 0, !dbg !3048 | |
call void @llvm.dbg.declare(metadata i32* %6, metadata !3044, metadata !DIExpression()), !dbg !3047 | |
%6 = getelementptr inbounds %runtime.Source_Code_Location, %runtime.Source_Code_Location* %0, i32 0, i32 1, !dbg !3048 | |
%7 = load i32, i32* %6, align 4, !dbg !3048 | |
call void @llvm.dbg.declare(metadata i32* %8, metadata !3045, metadata !DIExpression()), !dbg !3047 | |
%8 = getelementptr inbounds %runtime.Source_Code_Location, %runtime.Source_Code_Location* %0, i32 0, i32 2, !dbg !3048 | |
%9 = load i32, i32* %8, align 4, !dbg !3048 | |
%10 = bitcast %..string* %5 to [2 x i64]*, !dbg !3048 | |
%11 = load [2 x i64], [2 x i64]* %10, align 8, !dbg !3048 | |
%12 = bitcast %..string* %3 to i8*, !dbg !3049 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %12), !dbg !3049 | |
%13 = bitcast %..string* %4 to i8*, !dbg !3049 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %13), !dbg !3049 | |
call void @llvm.dbg.declare(metadata !112, metadata !2801, metadata !DIExpression()), !dbg !3049 | |
%14 = bitcast %..string* %3 to [2 x i64]* | |
store [2 x i64] %11, [2 x i64]* %14, align 8 | |
%15 = bitcast %..string* %4 to i8* | |
%16 = bitcast %..string* %3 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %15, i8* align 8 %16, i64 16, i1 false) | |
call void @llvm.dbg.value(metadata i32 %7, metadata !2802, metadata !DIExpression()), !dbg !3051 | |
call void @llvm.dbg.value(metadata i32 %9, metadata !2803, metadata !DIExpression()), !dbg !3051 | |
call void @llvm.dbg.value(metadata i64 %1, metadata !2804, metadata !DIExpression()), !dbg !3051 | |
call void @llvm.dbg.value(metadata i64 %2, metadata !2805, metadata !DIExpression()), !dbg !3051 | |
%17 = icmp sle i64 0, %1, !dbg !3052 | |
br i1 %17, label %cmp.and.i, label %if.done.i, !dbg !3052 | |
cmp.and.i: ; preds = %decls | |
%18 = icmp slt i64 %1, %2, !dbg !3052 | |
br i1 %18, label %if.then.i, label %if.done.i, !dbg !3052 | |
if.then.i: ; preds = %cmp.and.i | |
%19 = bitcast %..string* %3 to i8*, !dbg !3053 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %19), !dbg !3053 | |
%20 = bitcast %..string* %4 to i8*, !dbg !3053 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %20), !dbg !3053 | |
br label %runtime.bounds_check_error.exit, !dbg !3053 | |
if.done.i: ; preds = %cmp.and.i, %decls | |
%21 = bitcast %..string* %4 to [2 x i64]*, !dbg !3054 | |
%22 = load [2 x i64], [2 x i64]* %21, align 8, !dbg !3054 | |
call void @runtime.bounds_check_error.handle_error-0([2 x i64] %22, i32 %7, i32 %9, i64 %1, i64 %2), !dbg !3054 | |
%23 = bitcast %..string* %3 to i8*, !dbg !3055 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %23), !dbg !3055 | |
%24 = bitcast %..string* %4 to i8*, !dbg !3055 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %24), !dbg !3055 | |
br label %runtime.bounds_check_error.exit, !dbg !3055 | |
runtime.bounds_check_error.exit: ; preds = %if.done.i, %if.then.i | |
ret void, !dbg !3056 | |
} | |
; Function Attrs: nounwind | |
define internal %runtime.Type_Info* @reflect.type_info_base(%runtime.Type_Info* %0, i8* noalias nocapture nonnull %__.context_ptr) #0 !dbg !3057 { | |
decls: | |
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Named* %1, metadata !3064, metadata !DIExpression()), !dbg !3068 | |
%1 = alloca %runtime.Type_Info_Named, align 8, !dbg !3069 | |
call void @llvm.dbg.value(metadata %runtime.Type_Info* %0, metadata !3060, metadata !DIExpression()), !dbg !3070 | |
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !3061, metadata !DIExpression()), !dbg !3071 | |
%2 = icmp eq %runtime.Type_Info* %0, null, !dbg !3072 | |
br i1 %2, label %if.then, label %for.body, !dbg !3072 | |
if.then: ; preds = %for.body, %decls | |
%merge = phi %runtime.Type_Info* [ null, %decls ], [ %.0, %for.body ] | |
ret %runtime.Type_Info* %merge, !dbg !3073 | |
for.body: ; preds = %decls, %typeswitch.body | |
%.0 = phi %runtime.Type_Info* [ %9, %typeswitch.body ], [ %0, %decls ], !dbg !3076 | |
call void @llvm.dbg.value(metadata %runtime.Type_Info* %.0, metadata !3062, metadata !DIExpression()), !dbg !3076 | |
%3 = getelementptr inbounds %runtime.Type_Info, %runtime.Type_Info* %.0, i32 0, i32 4, !dbg !3069 | |
%4 = bitcast { [0 x i64], [120 x i8], i64 }* %3 to i8*, !dbg !3069 | |
%5 = getelementptr inbounds { [0 x i64], [120 x i8], i64 }, { [0 x i64], [120 x i8], i64 }* %3, i32 0, i32 2, !dbg !3069 | |
%6 = load i64, i64* %5, align 8, !dbg !3069 | |
%cond = icmp eq i64 %6, 1, !dbg !3069 | |
br i1 %cond, label %typeswitch.body, label %if.then, !dbg !3069 | |
typeswitch.body: ; preds = %for.body | |
%7 = bitcast %runtime.Type_Info_Named* %1 to i8*, !dbg !3069 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %7, i8* align 8 %4, i64 80, i1 false), !dbg !3069 | |
%8 = getelementptr inbounds %runtime.Type_Info_Named, %runtime.Type_Info_Named* %1, i32 0, i32 1, !dbg !3077 | |
%9 = load %runtime.Type_Info*, %runtime.Type_Info** %8, align 8, !dbg !3077 | |
call void @llvm.dbg.value(metadata %runtime.Type_Info* %9, metadata !3062, metadata !DIExpression()), !dbg !3076 | |
br label %for.body, !dbg !3078 | |
} | |
; Function Attrs: alwaysinline nounwind | |
define dso_local i8 @runtime.is_power_of_two_int(i64 %0, i8* noalias nocapture nonnull %__.context_ptr) #2 !dbg !1269 { | |
decls: | |
call void @llvm.dbg.value(metadata i64 %0, metadata !1268, metadata !DIExpression()), !dbg !3079 | |
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !1271, metadata !DIExpression()), !dbg !3080 | |
%1 = icmp sle i64 %0, 0, !dbg !3081 | |
br i1 %1, label %if.then, label %if.done, !dbg !3081 | |
if.then: ; preds = %decls | |
ret i8 0, !dbg !3082 | |
if.done: ; preds = %decls | |
%2 = sub i64 %0, 1, !dbg !3083 | |
%3 = and i64 %0, %2, !dbg !3083 | |
%4 = icmp eq i64 %3, 0, !dbg !3083 | |
%5 = zext i1 %4 to i8, !dbg !3083 | |
ret i8 %5, !dbg !3083 | |
} | |
; Function Attrs: alwaysinline | |
define dso_local i64 @runtime.align_forward_int(i64 %0, i64 %1, i8* noalias nocapture nonnull %__.context_ptr) #4 !dbg !1240 { | |
decls: | |
%2 = alloca %..string, align 8 | |
%3 = alloca %..string, align 8 | |
%4 = alloca [2 x i64], align 8, !dbg !3084 | |
%5 = alloca %runtime.Source_Code_Location, align 8, !dbg !3084 | |
call void @llvm.dbg.value(metadata i64 %0, metadata !1244, metadata !DIExpression()), !dbg !3085 | |
call void @llvm.dbg.value(metadata i64 %1, metadata !1245, metadata !DIExpression()), !dbg !3085 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1246, metadata !DIExpression()), !dbg !3086 | |
call void @llvm.dbg.value(metadata i64 %1, metadata !1268, metadata !DIExpression()), !dbg !3087 | |
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !1271, metadata !DIExpression()), !dbg !3089 | |
%6 = icmp sle i64 %1, 0, !dbg !3090 | |
br i1 %6, label %if.then.i, label %if.done.i, !dbg !3090 | |
if.then.i: ; preds = %decls | |
br label %runtime.is_power_of_two_int.exit, !dbg !3091 | |
if.done.i: ; preds = %decls | |
%7 = sub i64 %1, 1, !dbg !3092 | |
%8 = and i64 %1, %7, !dbg !3092 | |
%9 = icmp eq i64 %8, 0, !dbg !3092 | |
%10 = zext i1 %9 to i8, !dbg !3092 | |
br label %runtime.is_power_of_two_int.exit, !dbg !3092 | |
runtime.is_power_of_two_int.exit: ; preds = %if.done.i, %if.then.i | |
%11 = phi i8 [ 0, %if.then.i ], [ %10, %if.done.i ] | |
%12 = icmp ne i8 %11, 0, !dbg !3084 | |
%13 = bitcast [2 x i64]* %4 to %..string*, !dbg !3084 | |
%14 = bitcast %..string* %13 to i8*, !dbg !3084 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %14, i8 0, i64 16, i1 false), !dbg !3084 | |
%15 = load [2 x i64], [2 x i64]* %4, align 8, !dbg !3084 | |
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$9e", i64 0, i64 0), i64 54 }, i32 65, i32 2, %..string { i8* getelementptr inbounds ([18 x i8], [18 x i8]* @"csbs$9f", i64 0, i64 0), i64 17 } }, %runtime.Source_Code_Location* %5, align 8, !dbg !3084 | |
%16 = bitcast %..string* %2 to i8*, !dbg !3093 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %16), !dbg !3093 | |
%17 = bitcast %..string* %3 to i8*, !dbg !3093 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %17), !dbg !3093 | |
call void @llvm.dbg.declare(metadata !112, metadata !1135, metadata !DIExpression()), !dbg !3093 | |
call void @llvm.dbg.value(metadata i8 undef, metadata !1134, metadata !DIExpression()), !dbg !3095 | |
%18 = bitcast %..string* %2 to [2 x i64]* | |
store [2 x i64] %15, [2 x i64]* %18, align 8, !noalias !3096 | |
%19 = bitcast %..string* %3 to i8* | |
%20 = bitcast %..string* %2 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %19, i8* align 8 %20, i64 16, i1 false), !noalias !3096 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1136, metadata !DIExpression()), !dbg !3099 | |
br i1 %12, label %runtime.assert.exit, label %if.then.i1, !dbg !3100 | |
if.then.i1: ; preds = %runtime.is_power_of_two_int.exit | |
%21 = bitcast %..string* %3 to [2 x i64]*, !dbg !3101 | |
%22 = load [2 x i64], [2 x i64]* %21, align 8, !dbg !3101, !noalias !3096 | |
call void @"runtime.assert$anon-8"([2 x i64] %22, %runtime.Source_Code_Location* %5, i8* %__.context_ptr), !dbg !3101 | |
unreachable | |
runtime.assert.exit: ; preds = %runtime.is_power_of_two_int.exit | |
%23 = bitcast %..string* %2 to i8*, !dbg !3099 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %23), !dbg !3099 | |
%24 = bitcast %..string* %3 to i8*, !dbg !3099 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %24), !dbg !3099 | |
call void @llvm.dbg.value(metadata i64 %0, metadata !1247, metadata !DIExpression()), !dbg !3102 | |
call void @llvm.dbg.value(metadata i64 0, metadata !1248, metadata !DIExpression()), !dbg !3102 | |
%25 = sub i64 %1, 1, !dbg !3103 | |
%26 = and i64 %0, %25, !dbg !3103 | |
call void @llvm.dbg.value(metadata i64 %26, metadata !1248, metadata !DIExpression()), !dbg !3102 | |
%27 = icmp ne i64 %26, 0, !dbg !3104 | |
%28 = sub i64 %1, %26, !dbg !3104 | |
%29 = add i64 %0, %28, !dbg !3104 | |
%.0 = select i1 %27, i64 %29, i64 %0, !dbg !3104 | |
call void @llvm.dbg.value(metadata i64 %.0, metadata !1247, metadata !DIExpression()), !dbg !3102 | |
ret i64 %.0, !dbg !3105 | |
} | |
; Function Attrs: alwaysinline nounwind | |
define dso_local i8 @runtime.is_power_of_two_uintptr(i64 %0, i8* noalias nocapture nonnull %__.context_ptr) #2 !dbg !1304 { | |
decls: | |
call void @llvm.dbg.value(metadata i64 %0, metadata !1303, metadata !DIExpression()), !dbg !3106 | |
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !1308, metadata !DIExpression()), !dbg !3107 | |
%1 = icmp ule i64 %0, 0, !dbg !3108 | |
br i1 %1, label %if.then, label %if.done, !dbg !3108 | |
if.then: ; preds = %decls | |
ret i8 0, !dbg !3109 | |
if.done: ; preds = %decls | |
%2 = sub i64 %0, 1, !dbg !3110 | |
%3 = and i64 %0, %2, !dbg !3110 | |
%4 = icmp eq i64 %3, 0, !dbg !3110 | |
%5 = zext i1 %4 to i8, !dbg !3110 | |
ret i8 %5, !dbg !3110 | |
} | |
; Function Attrs: alwaysinline | |
define dso_local i64 @runtime.align_forward_uintptr(i64 %0, i64 %1, i8* noalias nocapture nonnull %__.context_ptr) #4 !dbg !1224 { | |
decls: | |
%2 = alloca %..string, align 8 | |
%3 = alloca %..string, align 8 | |
%4 = alloca [2 x i64], align 8, !dbg !3111 | |
%5 = alloca %runtime.Source_Code_Location, align 8, !dbg !3111 | |
call void @llvm.dbg.value(metadata i64 %0, metadata !1228, metadata !DIExpression()), !dbg !3112 | |
call void @llvm.dbg.value(metadata i64 %1, metadata !1229, metadata !DIExpression()), !dbg !3112 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1230, metadata !DIExpression()), !dbg !3113 | |
call void @llvm.dbg.value(metadata i64 %1, metadata !1303, metadata !DIExpression()), !dbg !3114 | |
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !1308, metadata !DIExpression()), !dbg !3116 | |
%6 = icmp ule i64 %1, 0, !dbg !3117 | |
br i1 %6, label %if.then.i, label %if.done.i, !dbg !3117 | |
if.then.i: ; preds = %decls | |
br label %runtime.is_power_of_two_uintptr.exit, !dbg !3118 | |
if.done.i: ; preds = %decls | |
%7 = sub i64 %1, 1, !dbg !3119 | |
%8 = and i64 %1, %7, !dbg !3119 | |
%9 = icmp eq i64 %8, 0, !dbg !3119 | |
%10 = zext i1 %9 to i8, !dbg !3119 | |
br label %runtime.is_power_of_two_uintptr.exit, !dbg !3119 | |
runtime.is_power_of_two_uintptr.exit: ; preds = %if.done.i, %if.then.i | |
%11 = phi i8 [ 0, %if.then.i ], [ %10, %if.done.i ] | |
%12 = icmp ne i8 %11, 0, !dbg !3111 | |
%13 = bitcast [2 x i64]* %4 to %..string*, !dbg !3111 | |
%14 = bitcast %..string* %13 to i8*, !dbg !3111 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %14, i8 0, i64 16, i1 false), !dbg !3111 | |
%15 = load [2 x i64], [2 x i64]* %4, align 8, !dbg !3111 | |
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([55 x i8], [55 x i8]* @"csbs$9e", i64 0, i64 0), i64 54 }, i32 83, i32 2, %..string { i8* getelementptr inbounds ([22 x i8], [22 x i8]* @"csbs$a0", i64 0, i64 0), i64 21 } }, %runtime.Source_Code_Location* %5, align 8, !dbg !3111 | |
%16 = bitcast %..string* %2 to i8*, !dbg !3120 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %16), !dbg !3120 | |
%17 = bitcast %..string* %3 to i8*, !dbg !3120 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %17), !dbg !3120 | |
call void @llvm.dbg.declare(metadata !112, metadata !1135, metadata !DIExpression()), !dbg !3120 | |
call void @llvm.dbg.value(metadata i8 undef, metadata !1134, metadata !DIExpression()), !dbg !3122 | |
%18 = bitcast %..string* %2 to [2 x i64]* | |
store [2 x i64] %15, [2 x i64]* %18, align 8, !noalias !3123 | |
%19 = bitcast %..string* %3 to i8* | |
%20 = bitcast %..string* %2 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %19, i8* align 8 %20, i64 16, i1 false), !noalias !3123 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1136, metadata !DIExpression()), !dbg !3126 | |
br i1 %12, label %runtime.assert.exit, label %if.then.i1, !dbg !3127 | |
if.then.i1: ; preds = %runtime.is_power_of_two_uintptr.exit | |
%21 = bitcast %..string* %3 to [2 x i64]*, !dbg !3128 | |
%22 = load [2 x i64], [2 x i64]* %21, align 8, !dbg !3128, !noalias !3123 | |
call void @"runtime.assert$anon-8"([2 x i64] %22, %runtime.Source_Code_Location* %5, i8* %__.context_ptr), !dbg !3128 | |
unreachable | |
runtime.assert.exit: ; preds = %runtime.is_power_of_two_uintptr.exit | |
%23 = bitcast %..string* %2 to i8*, !dbg !3126 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %23), !dbg !3126 | |
%24 = bitcast %..string* %3 to i8*, !dbg !3126 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %24), !dbg !3126 | |
call void @llvm.dbg.value(metadata i64 %0, metadata !1231, metadata !DIExpression()), !dbg !3129 | |
call void @llvm.dbg.value(metadata i64 0, metadata !1232, metadata !DIExpression()), !dbg !3129 | |
%25 = sub i64 %1, 1, !dbg !3130 | |
%26 = and i64 %0, %25, !dbg !3130 | |
call void @llvm.dbg.value(metadata i64 %26, metadata !1232, metadata !DIExpression()), !dbg !3129 | |
%27 = icmp ne i64 %26, 0, !dbg !3131 | |
%28 = sub i64 %1, %26, !dbg !3131 | |
%29 = add i64 %0, %28, !dbg !3131 | |
%.0 = select i1 %27, i64 %29, i64 %0, !dbg !3131 | |
call void @llvm.dbg.value(metadata i64 %.0, metadata !1231, metadata !DIExpression()), !dbg !3129 | |
ret i64 %.0, !dbg !3132 | |
} | |
; Function Attrs: nounwind | |
define dso_local i8* @runtime.mem_zero(i8* %0, i64 %1) #0 !dbg !3133 { | |
decls: | |
call void @llvm.dbg.value(metadata i8* %0, metadata !3135, metadata !DIExpression()), !dbg !3137 | |
call void @llvm.dbg.value(metadata i64 %1, metadata !3136, metadata !DIExpression()), !dbg !3137 | |
%2 = icmp eq i8* %0, null, !dbg !3138 | |
br i1 %2, label %if.then, label %if.done, !dbg !3138 | |
if.then: ; preds = %if.done, %decls | |
%merge = phi i8* [ null, %decls ], [ %0, %if.done ] | |
ret i8* %merge, !dbg !3140 | |
if.done: ; preds = %decls | |
%3 = icmp slt i64 %1, 0, !dbg !3143 | |
br i1 %3, label %if.then, label %if.done2, !dbg !3143 | |
if.done2: ; preds = %if.done | |
call void @llvm.memset.p0i8.i64(i8* %0, i8 0, i64 %1, i1 false), !dbg !3144 | |
ret i8* %0, !dbg !3145 | |
} | |
; Function Attrs: nounwind | |
define dso_local i8* @runtime.mem_copy(i8* %0, i8* %1, i64 %2) #0 !dbg !3146 { | |
decls: | |
call void @llvm.dbg.value(metadata i8* %0, metadata !3150, metadata !DIExpression()), !dbg !3153 | |
call void @llvm.dbg.value(metadata i8* %1, metadata !3151, metadata !DIExpression()), !dbg !3153 | |
call void @llvm.dbg.value(metadata i64 %2, metadata !3152, metadata !DIExpression()), !dbg !3153 | |
%3 = icmp eq i8* %1, null, !dbg !3154 | |
br i1 %3, label %if.then, label %if.done, !dbg !3154 | |
if.then: ; preds = %decls | |
ret i8* %0, !dbg !3156 | |
if.done: ; preds = %decls | |
call void @llvm.memmove.p0i8.p0i8.i64(i8* %0, i8* %1, i64 %2, i1 false), !dbg !3159 | |
ret i8* %0, !dbg !3160 | |
} | |
; Function Attrs: alwaysinline | |
define dso_local void @runtime.mem_alloc_bytes({ { i8*, i64 }, i8 }* noalias sret %agg.result, i64 %0, i64 %1, [2 x i64] %2, %runtime.Source_Code_Location* %3, i8* noalias nocapture nonnull %__.context_ptr) #4 !dbg !1211 { | |
decls: | |
%4 = alloca %runtime.Allocator, align 8 | |
call void @llvm.dbg.declare(metadata %runtime.Allocator* %5, metadata !1217, metadata !DIExpression()), !dbg !3161 | |
%5 = alloca %runtime.Allocator, align 8 | |
%6 = alloca { { i8*, i64 }, i8 }, align 8, !dbg !3162 | |
call void @llvm.dbg.value(metadata i64 %0, metadata !1215, metadata !DIExpression()), !dbg !3163 | |
call void @llvm.dbg.value(metadata i64 %1, metadata !1216, metadata !DIExpression()), !dbg !3163 | |
%7 = bitcast %runtime.Allocator* %4 to [2 x i64]* | |
store [2 x i64] %2, [2 x i64]* %7, align 8 | |
%8 = bitcast %runtime.Allocator* %5 to i8* | |
%9 = bitcast %runtime.Allocator* %4 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %8, i8* align 8 %9, i64 16, i1 false) | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1218, metadata !DIExpression()), !dbg !3164 | |
%10 = icmp eq i64 %0, 0, !dbg !3165 | |
br i1 %10, label %if.then, label %if.done, !dbg !3165 | |
if.then: ; preds = %decls | |
%11 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 0, !dbg !3166 | |
%12 = bitcast { i8*, i64 }* %11 to i8*, !dbg !3166 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %12, i8 0, i64 17, i1 false), !dbg !3166 | |
ret void, !dbg !3166 | |
if.done: ; preds = %decls | |
%13 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %5, i32 0, i32 0, !dbg !3167 | |
%14 = load i8*, i8** %13, align 8, !dbg !3167 | |
%15 = icmp eq i8* %14, null, !dbg !3167 | |
br i1 %15, label %if.then1, label %if.done2, !dbg !3167 | |
if.then1: ; preds = %if.done | |
%16 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 0, !dbg !3168 | |
%17 = bitcast { i8*, i64 }* %16 to i8*, !dbg !3168 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %17, i8 0, i64 17, i1 false), !dbg !3168 | |
ret void, !dbg !3168 | |
if.done2: ; preds = %if.done | |
%18 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %5, i32 0, i32 1, !dbg !3162 | |
%19 = load i8*, i8** %18, align 8, !dbg !3162 | |
%20 = bitcast { { i8*, i64 }, i8 }* %6 to i8*, !dbg !3162 | |
call void @llvm.memset.p0i8.i64(i8* %20, i8 0, i64 24, i1 false), !dbg !3162 | |
%21 = bitcast i8* %14 to void ({ { i8*, i64 }, i8 }*, i8*, i8, i64, i64, i8*, i64, %runtime.Source_Code_Location*, i8*)*, !dbg !3162 | |
call void %21({ { i8*, i64 }, i8 }* %6, i8* %19, i8 0, i64 %0, i64 %1, i8* null, i64 0, %runtime.Source_Code_Location* %3, i8* %__.context_ptr) #4, !dbg !3162 | |
%22 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %6, i32 0, i32 0, !dbg !3162 | |
%23 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %6, i32 0, i32 1, !dbg !3162 | |
%24 = load i8, i8* %23, align 1, !dbg !3162 | |
%25 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 0, !dbg !3162 | |
%26 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %agg.result, i32 0, i32 1, !dbg !3162 | |
%27 = bitcast { i8*, i64 }* %25 to i8*, !dbg !3162 | |
%28 = bitcast { i8*, i64 }* %22 to i8*, !dbg !3162 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %27, i8* align 8 %28, i64 16, i1 false), !dbg !3162 | |
store i8 %24, i8* %26, align 1, !dbg !3162 | |
ret void, !dbg !3162 | |
} | |
; Function Attrs: alwaysinline | |
define dso_local i8 @runtime.mem_free(i8* %0, [2 x i64] %1, %runtime.Source_Code_Location* %2, i8* noalias nocapture nonnull %__.context_ptr) #4 !dbg !1419 { | |
decls: | |
%3 = alloca %runtime.Allocator, align 8 | |
call void @llvm.dbg.declare(metadata %runtime.Allocator* %4, metadata !1424, metadata !DIExpression()), !dbg !3169 | |
%4 = alloca %runtime.Allocator, align 8 | |
%5 = alloca { { i8*, i64 }, i8 }, align 8, !dbg !3170 | |
call void @llvm.dbg.value(metadata i8* %0, metadata !1423, metadata !DIExpression()), !dbg !3171 | |
%6 = bitcast %runtime.Allocator* %3 to [2 x i64]* | |
store [2 x i64] %1, [2 x i64]* %6, align 8 | |
%7 = bitcast %runtime.Allocator* %4 to i8* | |
%8 = bitcast %runtime.Allocator* %3 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %7, i8* align 8 %8, i64 16, i1 false) | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !1425, metadata !DIExpression()), !dbg !3172 | |
%9 = icmp eq i8* %0, null, !dbg !3173 | |
br i1 %9, label %if.then, label %if.done, !dbg !3173 | |
if.then: ; preds = %if.done, %decls | |
ret i8 0, !dbg !3174 | |
if.done: ; preds = %decls | |
%10 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %4, i32 0, i32 0, !dbg !3175 | |
%11 = load i8*, i8** %10, align 8, !dbg !3175 | |
%12 = icmp eq i8* %11, null, !dbg !3175 | |
br i1 %12, label %if.then, label %if.done2, !dbg !3175 | |
if.done2: ; preds = %if.done | |
call void @llvm.dbg.value(metadata i8 0, metadata !1426, metadata !DIExpression()), !dbg !3176 | |
%13 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %4, i32 0, i32 1, !dbg !3170 | |
%14 = load i8*, i8** %13, align 8, !dbg !3170 | |
%15 = bitcast { { i8*, i64 }, i8 }* %5 to i8*, !dbg !3170 | |
call void @llvm.memset.p0i8.i64(i8* %15, i8 0, i64 24, i1 false), !dbg !3170 | |
%16 = bitcast i8* %11 to void ({ { i8*, i64 }, i8 }*, i8*, i8, i64, i64, i8*, i64, %runtime.Source_Code_Location*, i8*)*, !dbg !3170 | |
call void %16({ { i8*, i64 }, i8 }* %5, i8* %14, i8 1, i64 0, i64 0, i8* %0, i64 0, %runtime.Source_Code_Location* %2, i8* %__.context_ptr) #4, !dbg !3170 | |
%17 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %5, i32 0, i32 1, !dbg !3170 | |
%18 = load i8, i8* %17, align 1, !dbg !3170 | |
call void @llvm.dbg.value(metadata i8 %18, metadata !1426, metadata !DIExpression()), !dbg !3176 | |
ret i8 %18, !dbg !3177 | |
} | |
; Function Attrs: alwaysinline | |
define dso_local [2 x i64] @runtime.mem_resize(i8* %0, i64 %1, i64 %2, i64 %3, [2 x i64] %4, %runtime.Source_Code_Location* %5, i8* noalias nocapture nonnull %__.context_ptr) #4 !dbg !3178 { | |
decls: | |
%6 = alloca { i8*, i64 }, align 8 | |
%7 = alloca { i8*, i64 }, align 8 | |
%8 = alloca %runtime.Raw_Slice, align 8, !dbg !3196 | |
%9 = alloca %runtime.Allocator, align 8 | |
call void @llvm.dbg.declare(metadata %runtime.Allocator* %10, metadata !3190, metadata !DIExpression()), !dbg !3205 | |
%10 = alloca %runtime.Allocator, align 8 | |
call void @llvm.dbg.declare(metadata { i8*, i64 }* %11, metadata !3194, metadata !DIExpression()), !dbg !3206 | |
%11 = alloca { i8*, i64 }, align 8, !dbg !3206 | |
%12 = alloca { i8*, i8 }, align 8, !dbg !3207 | |
%13 = alloca { { i8*, i64 }, i8 }, align 8, !dbg !3209 | |
%14 = alloca { { i8*, i64 }, i8 }, align 8, !dbg !3210 | |
%15 = alloca { { i8*, i64 }, i8 }, align 8, !dbg !3211 | |
%16 = alloca { i8*, i8 }, align 8, !dbg !3212 | |
call void @llvm.dbg.value(metadata i8* %0, metadata !3186, metadata !DIExpression()), !dbg !3213 | |
call void @llvm.dbg.value(metadata i64 %1, metadata !3187, metadata !DIExpression()), !dbg !3213 | |
call void @llvm.dbg.value(metadata i64 %2, metadata !3188, metadata !DIExpression()), !dbg !3213 | |
call void @llvm.dbg.value(metadata i64 %3, metadata !3189, metadata !DIExpression()), !dbg !3213 | |
%17 = bitcast %runtime.Allocator* %9 to [2 x i64]* | |
store [2 x i64] %4, [2 x i64]* %17, align 8 | |
%18 = bitcast %runtime.Allocator* %10 to i8* | |
%19 = bitcast %runtime.Allocator* %9 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %18, i8* align 8 %19, i64 16, i1 false) | |
call void @llvm.dbg.value(metadata i8* null, metadata !3191, metadata !DIExpression()), !dbg !3213 | |
call void @llvm.dbg.value(metadata i8 0, metadata !3192, metadata !DIExpression()), !dbg !3213 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !3193, metadata !DIExpression()), !dbg !3214 | |
%20 = bitcast { i8*, i64 }* %11 to i8*, !dbg !3206 | |
call void @llvm.memset.p0i8.i64(i8* %20, i8 0, i64 16, i1 false), !dbg !3206 | |
%21 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %10, i32 0, i32 0, !dbg !3215 | |
%22 = load i8*, i8** %21, align 8, !dbg !3215 | |
%23 = icmp eq i8* %22, null, !dbg !3215 | |
br i1 %23, label %switch.case.body, label %switch.case.next, !dbg !3215 | |
switch.case.next: ; preds = %decls | |
%24 = icmp eq i64 %2, 0, !dbg !3215 | |
br i1 %24, label %switch.case.body2, label %switch.case.next1, !dbg !3215 | |
switch.case.body: ; preds = %decls | |
call void @llvm.dbg.value(metadata i8* null, metadata !3191, metadata !DIExpression()), !dbg !3213 | |
call void @llvm.dbg.value(metadata i8 0, metadata !3192, metadata !DIExpression()), !dbg !3213 | |
%25 = getelementptr inbounds { i8*, i8 }, { i8*, i8 }* %12, i32 0, i32 0, !dbg !3207 | |
%26 = getelementptr inbounds { i8*, i8 }, { i8*, i8 }* %12, i32 0, i32 1, !dbg !3207 | |
store i8* null, i8** %25, align 8, !dbg !3207 | |
store i8 0, i8* %26, align 1, !dbg !3207 | |
%27 = bitcast { i8*, i8 }* %12 to [2 x i64]*, !dbg !3207 | |
%28 = load [2 x i64], [2 x i64]* %27, align 8, !dbg !3207 | |
ret [2 x i64] %28, !dbg !3207 | |
switch.case.next1: ; preds = %switch.case.next | |
%29 = icmp eq i8* %0, null, !dbg !3215 | |
%30 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %10, i32 0, i32 1, !dbg !3216 | |
%31 = load i8*, i8** %30, align 8, !dbg !3216 | |
br i1 %29, label %switch.case.body4, label %switch.default.body, !dbg !3215 | |
switch.case.body2: ; preds = %switch.case.next | |
%32 = getelementptr inbounds %runtime.Allocator, %runtime.Allocator* %10, i32 0, i32 1, !dbg !3209 | |
%33 = load i8*, i8** %32, align 8, !dbg !3209 | |
%34 = bitcast { { i8*, i64 }, i8 }* %13 to i8*, !dbg !3209 | |
call void @llvm.memset.p0i8.i64(i8* %34, i8 0, i64 24, i1 false), !dbg !3209 | |
%35 = bitcast i8* %22 to void ({ { i8*, i64 }, i8 }*, i8*, i8, i64, i64, i8*, i64, %runtime.Source_Code_Location*, i8*)*, !dbg !3209 | |
call void %35({ { i8*, i64 }, i8 }* %13, i8* %33, i8 1, i64 0, i64 0, i8* %0, i64 0, %runtime.Source_Code_Location* %5, i8* %__.context_ptr) #4, !dbg !3209 | |
%36 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %13, i32 0, i32 0, !dbg !3209 | |
%37 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %13, i32 0, i32 1, !dbg !3209 | |
%38 = load i8, i8* %37, align 1, !dbg !3209 | |
%39 = bitcast { i8*, i64 }* %36 to i8*, !dbg !3209 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %20, i8* align 8 %39, i64 16, i1 false), !dbg !3209 | |
call void @llvm.dbg.value(metadata i8 %38, metadata !3192, metadata !DIExpression()), !dbg !3213 | |
br label %switch.done, !dbg !3215 | |
switch.case.body4: ; preds = %switch.case.next1 | |
%40 = bitcast { { i8*, i64 }, i8 }* %14 to i8*, !dbg !3210 | |
call void @llvm.memset.p0i8.i64(i8* %40, i8 0, i64 24, i1 false), !dbg !3210 | |
%41 = bitcast i8* %22 to void ({ { i8*, i64 }, i8 }*, i8*, i8, i64, i64, i8*, i64, %runtime.Source_Code_Location*, i8*)*, !dbg !3210 | |
call void %41({ { i8*, i64 }, i8 }* %14, i8* %31, i8 0, i64 %2, i64 %3, i8* null, i64 0, %runtime.Source_Code_Location* %5, i8* %__.context_ptr) #4, !dbg !3210 | |
%42 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %14, i32 0, i32 0, !dbg !3210 | |
%43 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %14, i32 0, i32 1, !dbg !3210 | |
%44 = load i8, i8* %43, align 1, !dbg !3210 | |
%45 = bitcast { i8*, i64 }* %42 to i8*, !dbg !3210 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %20, i8* align 8 %45, i64 16, i1 false), !dbg !3210 | |
call void @llvm.dbg.value(metadata i8 %44, metadata !3192, metadata !DIExpression()), !dbg !3213 | |
br label %switch.done, !dbg !3215 | |
switch.default.body: ; preds = %switch.case.next1 | |
%46 = bitcast { { i8*, i64 }, i8 }* %15 to i8*, !dbg !3211 | |
call void @llvm.memset.p0i8.i64(i8* %46, i8 0, i64 24, i1 false), !dbg !3211 | |
%47 = bitcast i8* %22 to void ({ { i8*, i64 }, i8 }*, i8*, i8, i64, i64, i8*, i64, %runtime.Source_Code_Location*, i8*)*, !dbg !3211 | |
call void %47({ { i8*, i64 }, i8 }* %15, i8* %31, i8 3, i64 %2, i64 %3, i8* %0, i64 %1, %runtime.Source_Code_Location* %5, i8* %__.context_ptr) #4, !dbg !3211 | |
%48 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %15, i32 0, i32 0, !dbg !3211 | |
%49 = getelementptr inbounds { { i8*, i64 }, i8 }, { { i8*, i64 }, i8 }* %15, i32 0, i32 1, !dbg !3211 | |
%50 = load i8, i8* %49, align 1, !dbg !3211 | |
%51 = bitcast { i8*, i64 }* %48 to i8*, !dbg !3211 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %20, i8* align 8 %51, i64 16, i1 false), !dbg !3211 | |
call void @llvm.dbg.value(metadata i8 %50, metadata !3192, metadata !DIExpression()), !dbg !3213 | |
br label %switch.done, !dbg !3215 | |
switch.done: ; preds = %switch.default.body, %switch.case.body4, %switch.case.body2 | |
%.0 = phi i8 [ %38, %switch.case.body2 ], [ %44, %switch.case.body4 ], [ %50, %switch.default.body ], !dbg !3216 | |
call void @llvm.dbg.value(metadata i8 %.0, metadata !3192, metadata !DIExpression()), !dbg !3213 | |
%52 = bitcast { i8*, i64 }* %11 to [2 x i64]*, !dbg !3217 | |
%53 = load [2 x i64], [2 x i64]* %52, align 8, !dbg !3217 | |
%54 = bitcast { i8*, i64 }* %6 to i8*, !dbg !3218 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %54), !dbg !3218 | |
%55 = bitcast { i8*, i64 }* %7 to i8*, !dbg !3218 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %55), !dbg !3218 | |
%56 = bitcast %runtime.Raw_Slice* %8 to i8*, !dbg !3218 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %56), !dbg !3218 | |
call void @llvm.dbg.declare(metadata !112, metadata !3202, metadata !DIExpression()), !dbg !3218 | |
%57 = bitcast { i8*, i64 }* %6 to [2 x i64]* | |
store [2 x i64] %53, [2 x i64]* %57, align 8 | |
%58 = bitcast { i8*, i64 }* %7 to i8* | |
%59 = bitcast { i8*, i64 }* %6 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %58, i8* align 8 %59, i64 16, i1 false) | |
call void @llvm.dbg.value(metadata i8* null, metadata !3203, metadata !DIExpression()), !dbg !3219 | |
%60 = bitcast { i8*, i64 }* %7 to %runtime.Raw_Slice*, !dbg !3196 | |
%61 = bitcast %runtime.Raw_Slice* %8 to i8*, !dbg !3196 | |
%62 = bitcast %runtime.Raw_Slice* %60 to i8*, !dbg !3196 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %61, i8* align 8 %62, i64 16, i1 false), !dbg !3196 | |
%63 = getelementptr inbounds %runtime.Raw_Slice, %runtime.Raw_Slice* %8, i32 0, i32 0, !dbg !3196 | |
%64 = load i8*, i8** %63, align 8, !dbg !3196 | |
call void @llvm.dbg.value(metadata i8* %64, metadata !3203, metadata !DIExpression()), !dbg !3219 | |
%65 = bitcast { i8*, i64 }* %6 to i8*, !dbg !3220 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %65), !dbg !3220 | |
%66 = bitcast { i8*, i64 }* %7 to i8*, !dbg !3220 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %66), !dbg !3220 | |
%67 = bitcast %runtime.Raw_Slice* %8 to i8*, !dbg !3220 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %67), !dbg !3220 | |
call void @llvm.dbg.value(metadata i8* %64, metadata !3191, metadata !DIExpression()), !dbg !3213 | |
call void @llvm.dbg.value(metadata i8* %64, metadata !3191, metadata !DIExpression()), !dbg !3213 | |
call void @llvm.dbg.value(metadata i8 %.0, metadata !3192, metadata !DIExpression()), !dbg !3213 | |
%68 = getelementptr inbounds { i8*, i8 }, { i8*, i8 }* %16, i32 0, i32 0, !dbg !3212 | |
%69 = getelementptr inbounds { i8*, i8 }, { i8*, i8 }* %16, i32 0, i32 1, !dbg !3212 | |
store i8* %64, i8** %68, align 8, !dbg !3212 | |
store i8 %.0, i8* %69, align 1, !dbg !3212 | |
%70 = bitcast { i8*, i8 }* %16 to [2 x i64]*, !dbg !3212 | |
%71 = load [2 x i64], [2 x i64]* %70, align 8, !dbg !3212 | |
ret [2 x i64] %71, !dbg !3212 | |
} | |
; Function Attrs: nounwind | |
define dso_local i8 @runtime.memory_equal(i8* %0, i8* %1, i64 %2) #0 !dbg !3221 { | |
decls: | |
call void @llvm.dbg.value(metadata i8* %0, metadata !3225, metadata !DIExpression()), !dbg !3228 | |
call void @llvm.dbg.value(metadata i8* %1, metadata !3226, metadata !DIExpression()), !dbg !3228 | |
call void @llvm.dbg.value(metadata i64 %2, metadata !3227, metadata !DIExpression()), !dbg !3228 | |
%3 = call i64 @runtime.memory_compare(i8* %0, i8* %1, i64 %2), !dbg !3229 | |
%4 = icmp eq i64 %3, 0, !dbg !3229 | |
%5 = zext i1 %4 to i8, !dbg !3229 | |
ret i8 %5, !dbg !3229 | |
} | |
; Function Attrs: nounwind | |
define dso_local i64 @runtime.memory_compare(i8* %0, i8* %1, i64 %2) #0 !dbg !3231 { | |
decls: | |
call void @llvm.dbg.value(metadata i8* %0, metadata !3235, metadata !DIExpression()), !dbg !3260 | |
call void @llvm.dbg.value(metadata i8* %1, metadata !3236, metadata !DIExpression()), !dbg !3260 | |
call void @llvm.dbg.value(metadata i64 %2, metadata !3237, metadata !DIExpression()), !dbg !3260 | |
%3 = icmp eq i8* %0, %1, !dbg !3261 | |
br i1 %3, label %switch.case.body, label %switch.case.next, !dbg !3261 | |
switch.case.next: ; preds = %decls | |
%4 = icmp eq i8* %0, null, !dbg !3261 | |
br i1 %4, label %switch.case.body, label %switch.case.next1, !dbg !3261 | |
switch.case.body: ; preds = %for.loop15, %switch.case.next1, %switch.case.next, %if.then17, %if.then8, %decls | |
%merge = phi i64 [ 0, %decls ], [ %., %if.then8 ], [ %.27, %if.then17 ], [ -1, %switch.case.next ], [ 1, %switch.case.next1 ], [ 0, %for.loop15 ] | |
ret i64 %merge, !dbg !3262 | |
switch.case.next1: ; preds = %switch.case.next | |
%5 = icmp eq i8* %1, null, !dbg !3261 | |
br i1 %5, label %switch.case.body, label %switch.done, !dbg !3261 | |
switch.done: ; preds = %switch.case.next1 | |
call void @llvm.dbg.value(metadata i64 0, metadata !3238, metadata !DIExpression()), !dbg !3264 | |
%6 = ptrtoint i8* %0 to i64, !dbg !3265 | |
call void @llvm.dbg.value(metadata i64 %6, metadata !3238, metadata !DIExpression()), !dbg !3264 | |
call void @llvm.dbg.value(metadata i64 0, metadata !3240, metadata !DIExpression()), !dbg !3264 | |
%7 = ptrtoint i8* %1 to i64, !dbg !3266 | |
call void @llvm.dbg.value(metadata i64 %7, metadata !3240, metadata !DIExpression()), !dbg !3264 | |
call void @llvm.dbg.value(metadata i64 %2, metadata !3241, metadata !DIExpression()), !dbg !3264 | |
call void @llvm.dbg.value(metadata i64 0, metadata !3242, metadata !DIExpression()), !dbg !3264 | |
%8 = udiv i64 %2, 8, !dbg !3267 | |
%9 = add i64 %8, 1, !dbg !3267 | |
call void @llvm.dbg.value(metadata i64 %9, metadata !3242, metadata !DIExpression()), !dbg !3264 | |
call void @llvm.dbg.value(metadata i64 0, metadata !3243, metadata !DIExpression()), !dbg !3264 | |
%10 = mul i64 %8, 8, !dbg !3268 | |
call void @llvm.dbg.value(metadata i64 %10, metadata !3243, metadata !DIExpression()), !dbg !3264 | |
call void @llvm.dbg.value(metadata i64 0, metadata !3244, metadata !DIExpression()), !dbg !3264 | |
%11 = icmp ult i64 %2, 8, !dbg !3269 | |
%spec.select = select i1 %11, i64 0, i64 %9, !dbg !3269 | |
call void @llvm.dbg.value(metadata i64 %spec.select, metadata !3242, metadata !DIExpression()), !dbg !3264 | |
br label %for.loop, !dbg !3270 | |
for.loop: ; preds = %for.post13, %switch.done | |
%.025 = phi i64 [ 0, %switch.done ], [ %36, %for.post13 ], !dbg !3264 | |
call void @llvm.dbg.value(metadata i64 %.025, metadata !3244, metadata !DIExpression()), !dbg !3264 | |
%12 = icmp ult i64 %.025, %spec.select, !dbg !3270 | |
br i1 %12, label %for.body, label %for.loop15, !dbg !3270 | |
for.body: ; preds = %for.loop | |
call void @llvm.dbg.value(metadata i64 0, metadata !3245, metadata !DIExpression()), !dbg !3271 | |
%13 = mul i64 %.025, 8, !dbg !3272 | |
%14 = add i64 %6, %13, !dbg !3272 | |
%15 = inttoptr i64 %14 to i64*, !dbg !3272 | |
%16 = load i64, i64* %15, align 8, !dbg !3272 | |
call void @llvm.dbg.value(metadata i64 %16, metadata !3245, metadata !DIExpression()), !dbg !3271 | |
call void @llvm.dbg.value(metadata i64 0, metadata !3248, metadata !DIExpression()), !dbg !3271 | |
%17 = add i64 %7, %13, !dbg !3273 | |
%18 = inttoptr i64 %17 to i64*, !dbg !3273 | |
%19 = load i64, i64* %18, align 8, !dbg !3273 | |
call void @llvm.dbg.value(metadata i64 %19, metadata !3248, metadata !DIExpression()), !dbg !3271 | |
%20 = xor i64 %16, %19, !dbg !3274 | |
%21 = icmp ne i64 %20, 0, !dbg !3274 | |
br i1 %21, label %for.loop6, label %for.post13, !dbg !3274 | |
for.loop6: ; preds = %for.body, %for.post | |
%.026 = phi i64 [ %35, %for.post ], [ %13, %for.body ], !dbg !3275 | |
call void @llvm.dbg.value(metadata i64 %.026, metadata !3249, metadata !DIExpression()), !dbg !3276 | |
%22 = icmp ult i64 %.026, %2, !dbg !3277 | |
br i1 %22, label %for.body7, label %for.post13, !dbg !3277 | |
for.body7: ; preds = %for.loop6 | |
call void @llvm.dbg.value(metadata i8 0, metadata !3253, metadata !DIExpression()), !dbg !3278 | |
%23 = add i64 %6, %.026, !dbg !3279 | |
%24 = inttoptr i64 %23 to i8*, !dbg !3279 | |
%25 = load i8, i8* %24, align 1, !dbg !3279 | |
call void @llvm.dbg.value(metadata i8 %25, metadata !3253, metadata !DIExpression()), !dbg !3278 | |
call void @llvm.dbg.value(metadata i8 0, metadata !3255, metadata !DIExpression()), !dbg !3278 | |
%26 = add i64 %7, %.026, !dbg !3280 | |
%27 = inttoptr i64 %26 to i8*, !dbg !3280 | |
%28 = load i8, i8* %27, align 1, !dbg !3280 | |
call void @llvm.dbg.value(metadata i8 %28, metadata !3255, metadata !DIExpression()), !dbg !3278 | |
%29 = xor i8 %25, %28, !dbg !3281 | |
%30 = icmp ne i8 %29, 0, !dbg !3281 | |
br i1 %30, label %if.then8, label %for.post, !dbg !3281 | |
if.then8: ; preds = %for.body7 | |
%31 = zext i8 %25 to i64, !dbg !3282 | |
%32 = zext i8 %28 to i64, !dbg !3282 | |
%33 = sub i64 %31, %32, !dbg !3282 | |
%34 = icmp slt i64 %33, 0, !dbg !3282 | |
%. = select i1 %34, i64 -1, i64 1, !dbg !3282 | |
br label %switch.case.body | |
for.post: ; preds = %for.body7 | |
%35 = add i64 %.026, 1, !dbg !3285 | |
call void @llvm.dbg.value(metadata i64 %35, metadata !3249, metadata !DIExpression()), !dbg !3276 | |
br label %for.loop6, !dbg !3277 | |
for.post13: ; preds = %for.body, %for.loop6 | |
%36 = add i64 %.025, 1, !dbg !3286 | |
call void @llvm.dbg.value(metadata i64 %36, metadata !3244, metadata !DIExpression()), !dbg !3264 | |
br label %for.loop, !dbg !3270 | |
for.loop15: ; preds = %for.loop, %for.post22 | |
%.024 = phi i64 [ %50, %for.post22 ], [ %10, %for.loop ], !dbg !3264 | |
call void @llvm.dbg.value(metadata i64 %.024, metadata !3243, metadata !DIExpression()), !dbg !3264 | |
%37 = icmp ult i64 %.024, %2, !dbg !3287 | |
br i1 %37, label %for.body16, label %switch.case.body, !dbg !3287 | |
for.body16: ; preds = %for.loop15 | |
call void @llvm.dbg.value(metadata i8 0, metadata !3256, metadata !DIExpression()), !dbg !3288 | |
%38 = add i64 %6, %.024, !dbg !3289 | |
%39 = inttoptr i64 %38 to i8*, !dbg !3289 | |
%40 = load i8, i8* %39, align 1, !dbg !3289 | |
call void @llvm.dbg.value(metadata i8 %40, metadata !3256, metadata !DIExpression()), !dbg !3288 | |
call void @llvm.dbg.value(metadata i8 0, metadata !3259, metadata !DIExpression()), !dbg !3288 | |
%41 = add i64 %7, %.024, !dbg !3290 | |
%42 = inttoptr i64 %41 to i8*, !dbg !3290 | |
%43 = load i8, i8* %42, align 1, !dbg !3290 | |
call void @llvm.dbg.value(metadata i8 %43, metadata !3259, metadata !DIExpression()), !dbg !3288 | |
%44 = xor i8 %40, %43, !dbg !3291 | |
%45 = icmp ne i8 %44, 0, !dbg !3291 | |
br i1 %45, label %if.then17, label %for.post22, !dbg !3291 | |
if.then17: ; preds = %for.body16 | |
%46 = zext i8 %40 to i64, !dbg !3292 | |
%47 = zext i8 %43 to i64, !dbg !3292 | |
%48 = sub i64 %46, %47, !dbg !3292 | |
%49 = icmp slt i64 %48, 0, !dbg !3292 | |
%.27 = select i1 %49, i64 -1, i64 1, !dbg !3292 | |
br label %switch.case.body | |
for.post22: ; preds = %for.body16 | |
%50 = add i64 %.024, 1, !dbg !3295 | |
call void @llvm.dbg.value(metadata i64 %50, metadata !3243, metadata !DIExpression()), !dbg !3264 | |
br label %for.loop15, !dbg !3287 | |
} | |
; Function Attrs: nounwind | |
define dso_local i64 @runtime.memory_compare_zero(i8* %0, i64 %1) #0 !dbg !3296 { | |
decls: | |
call void @llvm.dbg.value(metadata i8* %0, metadata !3300, metadata !DIExpression()), !dbg !3320 | |
call void @llvm.dbg.value(metadata i64 %1, metadata !3301, metadata !DIExpression()), !dbg !3320 | |
call void @llvm.dbg.value(metadata i64 0, metadata !3302, metadata !DIExpression()), !dbg !3321 | |
%2 = ptrtoint i8* %0 to i64, !dbg !3322 | |
call void @llvm.dbg.value(metadata i64 %2, metadata !3302, metadata !DIExpression()), !dbg !3321 | |
call void @llvm.dbg.value(metadata i64 %1, metadata !3304, metadata !DIExpression()), !dbg !3321 | |
call void @llvm.dbg.value(metadata i64 0, metadata !3305, metadata !DIExpression()), !dbg !3321 | |
%3 = udiv i64 %1, 8, !dbg !3323 | |
%4 = add i64 %3, 1, !dbg !3323 | |
call void @llvm.dbg.value(metadata i64 %4, metadata !3305, metadata !DIExpression()), !dbg !3321 | |
call void @llvm.dbg.value(metadata i64 0, metadata !3306, metadata !DIExpression()), !dbg !3321 | |
%5 = mul i64 %3, 8, !dbg !3324 | |
call void @llvm.dbg.value(metadata i64 %5, metadata !3306, metadata !DIExpression()), !dbg !3321 | |
call void @llvm.dbg.value(metadata i64 0, metadata !3307, metadata !DIExpression()), !dbg !3321 | |
%6 = icmp ult i64 %1, 8, !dbg !3325 | |
%.0 = select i1 %6, i64 0, i64 %4, !dbg !3325 | |
call void @llvm.dbg.value(metadata i64 %.0, metadata !3305, metadata !DIExpression()), !dbg !3321 | |
br label %for.loop, !dbg !3326 | |
for.loop: ; preds = %for.post9, %decls | |
%.021 = phi i64 [ 0, %decls ], [ %19, %for.post9 ], !dbg !3321 | |
call void @llvm.dbg.value(metadata i64 %.021, metadata !3307, metadata !DIExpression()), !dbg !3321 | |
%7 = icmp ult i64 %.021, %.0, !dbg !3326 | |
br i1 %7, label %for.body, label %for.loop11, !dbg !3326 | |
for.body: ; preds = %for.loop | |
call void @llvm.dbg.value(metadata i64 0, metadata !3308, metadata !DIExpression()), !dbg !3327 | |
%8 = mul i64 %.021, 8, !dbg !3328 | |
%9 = add i64 %2, %8, !dbg !3328 | |
%10 = inttoptr i64 %9 to i64*, !dbg !3328 | |
%11 = load i64, i64* %10, align 8, !dbg !3328 | |
call void @llvm.dbg.value(metadata i64 %11, metadata !3308, metadata !DIExpression()), !dbg !3327 | |
%12 = icmp ne i64 %11, 0, !dbg !3329 | |
br i1 %12, label %for.loop2, label %for.post9, !dbg !3329 | |
for.loop2: ; preds = %for.body, %for.post | |
%.022 = phi i64 [ %18, %for.post ], [ %8, %for.body ], !dbg !3330 | |
call void @llvm.dbg.value(metadata i64 %.022, metadata !3311, metadata !DIExpression()), !dbg !3331 | |
%13 = icmp ult i64 %.022, %1, !dbg !3332 | |
br i1 %13, label %for.body3, label %for.post9, !dbg !3332 | |
for.body3: ; preds = %for.loop2 | |
call void @llvm.dbg.value(metadata i8 0, metadata !3315, metadata !DIExpression()), !dbg !3333 | |
%14 = add i64 %2, %.022, !dbg !3334 | |
%15 = inttoptr i64 %14 to i8*, !dbg !3334 | |
%16 = load i8, i8* %15, align 1, !dbg !3334 | |
call void @llvm.dbg.value(metadata i8 %16, metadata !3315, metadata !DIExpression()), !dbg !3333 | |
%17 = icmp ne i8 %16, 0, !dbg !3335 | |
br i1 %17, label %if.then4, label %for.post, !dbg !3335 | |
if.then4: ; preds = %for.body3 | |
br label %if.done6, !dbg !3336 | |
if.done6: ; preds = %for.loop11, %if.then13, %if.then4 | |
%merge = phi i64 [ 1, %if.then13 ], [ 1, %if.then4 ], [ 0, %for.loop11 ] | |
ret i64 %merge, !dbg !3336 | |
for.post: ; preds = %for.body3 | |
%18 = add i64 %.022, 1, !dbg !3339 | |
call void @llvm.dbg.value(metadata i64 %18, metadata !3311, metadata !DIExpression()), !dbg !3331 | |
br label %for.loop2, !dbg !3332 | |
for.post9: ; preds = %for.body, %for.loop2 | |
%19 = add i64 %.021, 1, !dbg !3340 | |
call void @llvm.dbg.value(metadata i64 %19, metadata !3307, metadata !DIExpression()), !dbg !3321 | |
br label %for.loop, !dbg !3326 | |
for.loop11: ; preds = %for.loop, %for.post18 | |
%.020 = phi i64 [ %25, %for.post18 ], [ %5, %for.loop ], !dbg !3321 | |
call void @llvm.dbg.value(metadata i64 %.020, metadata !3306, metadata !DIExpression()), !dbg !3321 | |
%20 = icmp ult i64 %.020, %1, !dbg !3341 | |
br i1 %20, label %for.body12, label %if.done6, !dbg !3341 | |
for.body12: ; preds = %for.loop11 | |
call void @llvm.dbg.value(metadata i8 0, metadata !3317, metadata !DIExpression()), !dbg !3342 | |
%21 = add i64 %2, %.020, !dbg !3343 | |
%22 = inttoptr i64 %21 to i8*, !dbg !3343 | |
%23 = load i8, i8* %22, align 1, !dbg !3343 | |
call void @llvm.dbg.value(metadata i8 %23, metadata !3317, metadata !DIExpression()), !dbg !3342 | |
%24 = icmp ne i8 %23, 0, !dbg !3344 | |
br i1 %24, label %if.then13, label %for.post18, !dbg !3344 | |
if.then13: ; preds = %for.body12 | |
br label %if.done6, !dbg !3345 | |
for.post18: ; preds = %for.body12 | |
%25 = add i64 %.020, 1, !dbg !3348 | |
call void @llvm.dbg.value(metadata i64 %25, metadata !3306, metadata !DIExpression()), !dbg !3321 | |
br label %for.loop11, !dbg !3341 | |
} | |
; Function Attrs: nounwind | |
define dso_local i8 @runtime.string_eq([2 x i64] %0, [2 x i64] %1) #0 !dbg !3349 { | |
decls: | |
%2 = alloca %..string, align 8 | |
call void @llvm.dbg.declare(metadata %..string* %3, metadata !3353, metadata !DIExpression()), !dbg !3361 | |
%3 = alloca %..string, align 8 | |
%4 = alloca %..string, align 8 | |
call void @llvm.dbg.declare(metadata %..string* %5, metadata !3354, metadata !DIExpression()), !dbg !3362 | |
%5 = alloca %..string, align 8 | |
call void @llvm.dbg.declare(metadata %runtime.Raw_String* %6, metadata !3355, metadata !DIExpression()), !dbg !3363 | |
%6 = alloca %runtime.Raw_String, align 8, !dbg !3363 | |
call void @llvm.dbg.declare(metadata %runtime.Raw_String* %7, metadata !3360, metadata !DIExpression()), !dbg !3364 | |
%7 = alloca %runtime.Raw_String, align 8, !dbg !3364 | |
%8 = bitcast %..string* %2 to [2 x i64]* | |
store [2 x i64] %0, [2 x i64]* %8, align 8 | |
%9 = bitcast %..string* %3 to i8* | |
%10 = bitcast %..string* %2 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %9, i8* align 8 %10, i64 16, i1 false) | |
%11 = bitcast %..string* %4 to [2 x i64]* | |
store [2 x i64] %1, [2 x i64]* %11, align 8 | |
%12 = bitcast %..string* %5 to i8* | |
%13 = bitcast %..string* %4 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %12, i8* align 8 %13, i64 16, i1 false) | |
%14 = bitcast %runtime.Raw_String* %6 to i8*, !dbg !3363 | |
call void @llvm.memset.p0i8.i64(i8* %14, i8 0, i64 16, i1 false), !dbg !3363 | |
%15 = bitcast %..string* %3 to %runtime.Raw_String*, !dbg !3363 | |
%16 = bitcast %runtime.Raw_String* %15 to i8*, !dbg !3363 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %14, i8* align 8 %16, i64 16, i1 false), !dbg !3363 | |
%17 = bitcast %runtime.Raw_String* %7 to i8*, !dbg !3364 | |
call void @llvm.memset.p0i8.i64(i8* %17, i8 0, i64 16, i1 false), !dbg !3364 | |
%18 = bitcast %..string* %5 to %runtime.Raw_String*, !dbg !3364 | |
%19 = bitcast %runtime.Raw_String* %18 to i8*, !dbg !3364 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %17, i8* align 8 %19, i64 16, i1 false), !dbg !3364 | |
%20 = getelementptr inbounds %runtime.Raw_String, %runtime.Raw_String* %6, i32 0, i32 1, !dbg !3365 | |
%21 = load i64, i64* %20, align 8, !dbg !3365 | |
%22 = getelementptr inbounds %runtime.Raw_String, %runtime.Raw_String* %7, i32 0, i32 1, !dbg !3365 | |
%23 = load i64, i64* %22, align 8, !dbg !3365 | |
%24 = icmp ne i64 %21, %23, !dbg !3365 | |
br i1 %24, label %switch.case.body, label %switch.case.next, !dbg !3365 | |
switch.case.next: ; preds = %decls | |
%25 = icmp eq i64 %21, 0, !dbg !3365 | |
br i1 %25, label %switch.case.body, label %switch.case.next1, !dbg !3365 | |
switch.case.body: ; preds = %switch.case.next1, %switch.case.next, %decls | |
%merge = phi i8 [ 0, %decls ], [ 1, %switch.case.next ], [ 1, %switch.case.next1 ] | |
ret i8 %merge, !dbg !3366 | |
switch.case.next1: ; preds = %switch.case.next | |
%26 = getelementptr inbounds %runtime.Raw_String, %runtime.Raw_String* %6, i32 0, i32 0, !dbg !3365 | |
%27 = load i8*, i8** %26, align 8, !dbg !3365 | |
%28 = getelementptr inbounds %runtime.Raw_String, %runtime.Raw_String* %7, i32 0, i32 0, !dbg !3365 | |
%29 = load i8*, i8** %28, align 8, !dbg !3365 | |
%30 = icmp eq i8* %27, %29, !dbg !3365 | |
br i1 %30, label %switch.case.body, label %switch.done, !dbg !3365 | |
switch.done: ; preds = %switch.case.next1 | |
%31 = bitcast %..string* %3 to [2 x i64]*, !dbg !3368 | |
%32 = load [2 x i64], [2 x i64]* %31, align 8, !dbg !3368 | |
%33 = bitcast %..string* %5 to [2 x i64]*, !dbg !3368 | |
%34 = load [2 x i64], [2 x i64]* %33, align 8, !dbg !3368 | |
%35 = call i64 @runtime.string_cmp([2 x i64] %32, [2 x i64] %34), !dbg !3368 | |
%36 = icmp eq i64 %35, 0, !dbg !3368 | |
%37 = zext i1 %36 to i8, !dbg !3368 | |
ret i8 %37, !dbg !3368 | |
} | |
; Function Attrs: nounwind | |
define dso_local i64 @runtime.string_cmp([2 x i64] %0, [2 x i64] %1) #0 !dbg !3369 { | |
decls: | |
%2 = alloca %..string, align 8 | |
call void @llvm.dbg.declare(metadata %..string* %3, metadata !3373, metadata !DIExpression()), !dbg !3378 | |
%3 = alloca %..string, align 8 | |
%4 = alloca %..string, align 8 | |
call void @llvm.dbg.declare(metadata %..string* %5, metadata !3374, metadata !DIExpression()), !dbg !3379 | |
%5 = alloca %..string, align 8 | |
call void @llvm.dbg.declare(metadata %runtime.Raw_String* %6, metadata !3375, metadata !DIExpression()), !dbg !3380 | |
%6 = alloca %runtime.Raw_String, align 8, !dbg !3380 | |
call void @llvm.dbg.declare(metadata %runtime.Raw_String* %7, metadata !3377, metadata !DIExpression()), !dbg !3381 | |
%7 = alloca %runtime.Raw_String, align 8, !dbg !3381 | |
%8 = bitcast %..string* %2 to [2 x i64]* | |
store [2 x i64] %0, [2 x i64]* %8, align 8 | |
%9 = bitcast %..string* %3 to i8* | |
%10 = bitcast %..string* %2 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %9, i8* align 8 %10, i64 16, i1 false) | |
%11 = bitcast %..string* %4 to [2 x i64]* | |
store [2 x i64] %1, [2 x i64]* %11, align 8 | |
%12 = bitcast %..string* %5 to i8* | |
%13 = bitcast %..string* %4 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %12, i8* align 8 %13, i64 16, i1 false) | |
%14 = bitcast %runtime.Raw_String* %6 to i8*, !dbg !3380 | |
call void @llvm.memset.p0i8.i64(i8* %14, i8 0, i64 16, i1 false), !dbg !3380 | |
%15 = bitcast %..string* %3 to %runtime.Raw_String*, !dbg !3380 | |
%16 = bitcast %runtime.Raw_String* %15 to i8*, !dbg !3380 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %14, i8* align 8 %16, i64 16, i1 false), !dbg !3380 | |
%17 = bitcast %runtime.Raw_String* %7 to i8*, !dbg !3381 | |
call void @llvm.memset.p0i8.i64(i8* %17, i8 0, i64 16, i1 false), !dbg !3381 | |
%18 = bitcast %..string* %5 to %runtime.Raw_String*, !dbg !3381 | |
%19 = bitcast %runtime.Raw_String* %18 to i8*, !dbg !3381 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %17, i8* align 8 %19, i64 16, i1 false), !dbg !3381 | |
%20 = getelementptr inbounds %runtime.Raw_String, %runtime.Raw_String* %6, i32 0, i32 0, !dbg !3382 | |
%21 = load i8*, i8** %20, align 8, !dbg !3382 | |
%22 = getelementptr inbounds %runtime.Raw_String, %runtime.Raw_String* %7, i32 0, i32 0, !dbg !3382 | |
%23 = load i8*, i8** %22, align 8, !dbg !3382 | |
%24 = getelementptr inbounds %runtime.Raw_String, %runtime.Raw_String* %6, i32 0, i32 1, !dbg !3382 | |
%25 = load i64, i64* %24, align 8, !dbg !3382 | |
%26 = getelementptr inbounds %runtime.Raw_String, %runtime.Raw_String* %7, i32 0, i32 1, !dbg !3382 | |
%27 = load i64, i64* %26, align 8, !dbg !3382 | |
%28 = icmp slt i64 %25, %27, !dbg !3382 | |
%29 = select i1 %28, i64 %25, i64 %27, !dbg !3382 | |
%30 = call i64 @runtime.memory_compare(i8* %21, i8* %23, i64 %29), !dbg !3382 | |
ret i64 %30, !dbg !3382 | |
} | |
; Function Attrs: alwaysinline nounwind | |
define dso_local i8 @runtime.string_ne([2 x i64] %0, [2 x i64] %1) #2 !dbg !3383 { | |
decls: | |
%2 = alloca %..string, align 8 | |
%3 = alloca %..string, align 8 | |
%4 = alloca %..string, align 8 | |
%5 = alloca %..string, align 8 | |
%6 = alloca %runtime.Raw_String, align 8, !dbg !3387 | |
%7 = alloca %runtime.Raw_String, align 8, !dbg !3390 | |
%8 = alloca %..string, align 8 | |
call void @llvm.dbg.declare(metadata %..string* %9, metadata !3385, metadata !DIExpression()), !dbg !3391 | |
%9 = alloca %..string, align 8 | |
%10 = alloca %..string, align 8 | |
call void @llvm.dbg.declare(metadata %..string* %11, metadata !3386, metadata !DIExpression()), !dbg !3392 | |
%11 = alloca %..string, align 8 | |
%12 = bitcast %..string* %8 to [2 x i64]* | |
store [2 x i64] %0, [2 x i64]* %12, align 8 | |
%13 = bitcast %..string* %9 to i8* | |
%14 = bitcast %..string* %8 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %13, i8* align 8 %14, i64 16, i1 false) | |
%15 = bitcast %..string* %10 to [2 x i64]* | |
store [2 x i64] %1, [2 x i64]* %15, align 8 | |
%16 = bitcast %..string* %11 to i8* | |
%17 = bitcast %..string* %10 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %16, i8* align 8 %17, i64 16, i1 false) | |
%18 = bitcast %..string* %9 to [2 x i64]*, !dbg !3393 | |
%19 = load [2 x i64], [2 x i64]* %18, align 8, !dbg !3393 | |
%20 = bitcast %..string* %11 to [2 x i64]*, !dbg !3393 | |
%21 = load [2 x i64], [2 x i64]* %20, align 8, !dbg !3393 | |
%22 = bitcast %..string* %2 to i8*, !dbg !3394 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %22), !dbg !3394 | |
%23 = bitcast %..string* %3 to i8*, !dbg !3394 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %23), !dbg !3394 | |
%24 = bitcast %..string* %4 to i8*, !dbg !3394 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %24), !dbg !3394 | |
%25 = bitcast %..string* %5 to i8*, !dbg !3394 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %25), !dbg !3394 | |
%26 = bitcast %runtime.Raw_String* %6 to i8*, !dbg !3394 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %26), !dbg !3394 | |
%27 = bitcast %runtime.Raw_String* %7 to i8*, !dbg !3394 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %27), !dbg !3394 | |
call void @llvm.dbg.declare(metadata !112, metadata !3353, metadata !DIExpression()), !dbg !3394 | |
call void @llvm.dbg.declare(metadata !112, metadata !3354, metadata !DIExpression()), !dbg !3395 | |
call void @llvm.dbg.declare(metadata !112, metadata !3355, metadata !DIExpression()), !dbg !3387 | |
call void @llvm.dbg.declare(metadata !112, metadata !3360, metadata !DIExpression()), !dbg !3390 | |
%28 = bitcast %..string* %2 to [2 x i64]* | |
store [2 x i64] %19, [2 x i64]* %28, align 8 | |
%29 = bitcast %..string* %3 to i8* | |
%30 = bitcast %..string* %2 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %29, i8* align 8 %30, i64 16, i1 false) | |
%31 = bitcast %..string* %4 to [2 x i64]* | |
store [2 x i64] %21, [2 x i64]* %31, align 8 | |
%32 = bitcast %..string* %5 to i8* | |
%33 = bitcast %..string* %4 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %32, i8* align 8 %33, i64 16, i1 false) | |
%34 = bitcast %runtime.Raw_String* %6 to i8*, !dbg !3387 | |
call void @llvm.memset.p0i8.i64(i8* %34, i8 0, i64 16, i1 false), !dbg !3387 | |
%35 = bitcast %..string* %3 to %runtime.Raw_String*, !dbg !3387 | |
%36 = bitcast %runtime.Raw_String* %35 to i8*, !dbg !3387 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %34, i8* align 8 %36, i64 16, i1 false), !dbg !3387 | |
%37 = bitcast %runtime.Raw_String* %7 to i8*, !dbg !3390 | |
call void @llvm.memset.p0i8.i64(i8* %37, i8 0, i64 16, i1 false), !dbg !3390 | |
%38 = bitcast %..string* %5 to %runtime.Raw_String*, !dbg !3390 | |
%39 = bitcast %runtime.Raw_String* %38 to i8*, !dbg !3390 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %37, i8* align 8 %39, i64 16, i1 false), !dbg !3390 | |
%40 = getelementptr inbounds %runtime.Raw_String, %runtime.Raw_String* %6, i32 0, i32 1, !dbg !3396 | |
%41 = load i64, i64* %40, align 8, !dbg !3396 | |
%42 = getelementptr inbounds %runtime.Raw_String, %runtime.Raw_String* %7, i32 0, i32 1, !dbg !3396 | |
%43 = load i64, i64* %42, align 8, !dbg !3396 | |
%44 = icmp ne i64 %41, %43, !dbg !3396 | |
br i1 %44, label %switch.case.body.i, label %switch.case.next.i, !dbg !3396 | |
switch.case.next.i: ; preds = %decls | |
%45 = icmp eq i64 %41, 0, !dbg !3396 | |
br i1 %45, label %switch.case.body.i, label %switch.case.next1.i, !dbg !3396 | |
switch.case.body.i: ; preds = %switch.case.next1.i, %switch.case.next.i, %decls | |
%merge.i = phi i8 [ 0, %decls ], [ 1, %switch.case.next.i ], [ 1, %switch.case.next1.i ] | |
%46 = bitcast %..string* %2 to i8*, !dbg !3397 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %46), !dbg !3397 | |
%47 = bitcast %..string* %3 to i8*, !dbg !3397 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %47), !dbg !3397 | |
%48 = bitcast %..string* %4 to i8*, !dbg !3397 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %48), !dbg !3397 | |
%49 = bitcast %..string* %5 to i8*, !dbg !3397 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %49), !dbg !3397 | |
%50 = bitcast %runtime.Raw_String* %6 to i8*, !dbg !3397 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %50), !dbg !3397 | |
%51 = bitcast %runtime.Raw_String* %7 to i8*, !dbg !3397 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %51), !dbg !3397 | |
br label %runtime.string_eq.exit, !dbg !3397 | |
switch.case.next1.i: ; preds = %switch.case.next.i | |
%52 = getelementptr inbounds %runtime.Raw_String, %runtime.Raw_String* %6, i32 0, i32 0, !dbg !3396 | |
%53 = load i8*, i8** %52, align 8, !dbg !3396 | |
%54 = getelementptr inbounds %runtime.Raw_String, %runtime.Raw_String* %7, i32 0, i32 0, !dbg !3396 | |
%55 = load i8*, i8** %54, align 8, !dbg !3396 | |
%56 = icmp eq i8* %53, %55, !dbg !3396 | |
br i1 %56, label %switch.case.body.i, label %switch.done.i, !dbg !3396 | |
switch.done.i: ; preds = %switch.case.next1.i | |
%57 = bitcast %..string* %3 to [2 x i64]*, !dbg !3398 | |
%58 = load [2 x i64], [2 x i64]* %57, align 8, !dbg !3398 | |
%59 = bitcast %..string* %5 to [2 x i64]*, !dbg !3398 | |
%60 = load [2 x i64], [2 x i64]* %59, align 8, !dbg !3398 | |
%61 = call i64 @runtime.string_cmp([2 x i64] %58, [2 x i64] %60), !dbg !3398 | |
%62 = icmp eq i64 %61, 0, !dbg !3398 | |
%63 = zext i1 %62 to i8, !dbg !3398 | |
%64 = bitcast %..string* %2 to i8*, !dbg !3398 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %64), !dbg !3398 | |
%65 = bitcast %..string* %3 to i8*, !dbg !3398 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %65), !dbg !3398 | |
%66 = bitcast %..string* %4 to i8*, !dbg !3398 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %66), !dbg !3398 | |
%67 = bitcast %..string* %5 to i8*, !dbg !3398 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %67), !dbg !3398 | |
%68 = bitcast %runtime.Raw_String* %6 to i8*, !dbg !3398 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %68), !dbg !3398 | |
%69 = bitcast %runtime.Raw_String* %7 to i8*, !dbg !3398 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %69), !dbg !3398 | |
br label %runtime.string_eq.exit, !dbg !3398 | |
runtime.string_eq.exit: ; preds = %switch.done.i, %switch.case.body.i | |
%70 = phi i8 [ %merge.i, %switch.case.body.i ], [ %63, %switch.done.i ] | |
%71 = icmp eq i8 %70, 0, !dbg !3393 | |
%72 = zext i1 %71 to i8, !dbg !3393 | |
ret i8 %72, !dbg !3393 | |
} | |
; Function Attrs: nounwind | |
define internal [2 x i64] @os.stream_from_handle(i32 %0, i8* noalias nocapture nonnull %__.context_ptr) #0 !dbg !3399 { | |
decls: | |
call void @llvm.dbg.declare(metadata %io.Stream* %1, metadata !3405, metadata !DIExpression()), !dbg !3407 | |
%1 = alloca %io.Stream, align 8, !dbg !3407 | |
call void @llvm.dbg.value(metadata i32 %0, metadata !3403, metadata !DIExpression()), !dbg !3408 | |
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !3404, metadata !DIExpression()), !dbg !3409 | |
%2 = bitcast %io.Stream* %1 to i8*, !dbg !3407 | |
call void @llvm.memset.p0i8.i64(i8* %2, i8 0, i64 16, i1 false), !dbg !3407 | |
%3 = getelementptr inbounds %io.Stream, %io.Stream* %1, i32 0, i32 1, !dbg !3410 | |
%4 = sext i32 %0 to i64, !dbg !3410 | |
%5 = inttoptr i64 %4 to i8*, !dbg !3410 | |
store i8* %5, i8** %3, align 8, !dbg !3410 | |
%6 = getelementptr inbounds %io.Stream, %io.Stream* %1, i32 0, i32 0, !dbg !3411 | |
%7 = load %io.Stream_VTable*, %io.Stream_VTable** @os._file_stream_vtable-1513, align 8, !dbg !3411 | |
store %io.Stream_VTable* %7, %io.Stream_VTable** %6, align 8, !dbg !3411 | |
%8 = bitcast %io.Stream* %1 to [2 x i64]*, !dbg !3412 | |
%9 = load [2 x i64], [2 x i64]* %8, align 8, !dbg !3412 | |
ret [2 x i64] %9, !dbg !3412 | |
} | |
define internal i64 @strings._write_byte-1512([2 x i64] %0, i8 %1, i8* noalias nocapture nonnull %__.context_ptr) !dbg !3413 { | |
decls: | |
%2 = alloca %io.Writer, align 8 | |
call void @llvm.dbg.declare(metadata %io.Writer* %3, metadata !3417, metadata !DIExpression()), !dbg !3422 | |
%3 = alloca %io.Writer, align 8 | |
%4 = bitcast %io.Writer* %2 to [2 x i64]* | |
store [2 x i64] %0, [2 x i64]* %4, align 8 | |
%5 = bitcast %io.Writer* %3 to i8* | |
%6 = bitcast %io.Writer* %2 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %5, i8* align 8 %6, i64 16, i1 false) | |
call void @llvm.dbg.value(metadata i8 %1, metadata !3418, metadata !DIExpression()), !dbg !3423 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !3419, metadata !DIExpression()), !dbg !3424 | |
call void @llvm.dbg.value(metadata i32 0, metadata !3420, metadata !DIExpression()), !dbg !3425 | |
%7 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !3426 | |
%8 = load [2 x i64], [2 x i64]* %7, align 8, !dbg !3426 | |
%9 = call i32 @io.write_byte_to_writer([2 x i64] %8, i8 %1, i8* %__.context_ptr), !dbg !3426 | |
call void @llvm.dbg.value(metadata i32 %9, metadata !3420, metadata !DIExpression()), !dbg !3425 | |
%10 = icmp eq i32 %9, 0, !dbg !3427 | |
%11 = select i1 %10, i64 1, i64 0, !dbg !3427 | |
ret i64 %11, !dbg !3427 | |
} | |
define internal i64 @strings.write_quoted_rune([2 x i64] %0, i32 %1, i8* noalias nocapture nonnull %__.context_ptr) !dbg !3428 { | |
decls: | |
%2 = alloca %io.Writer, align 8 | |
call void @llvm.dbg.declare(metadata %io.Writer* %3, metadata !3432, metadata !DIExpression()), !dbg !3440 | |
%3 = alloca %io.Writer, align 8 | |
call void @llvm.dbg.declare(metadata [4 x i8]* %4, metadata !3438, metadata !DIExpression()), !dbg !3441 | |
%4 = alloca [4 x i8], align 1, !dbg !3441 | |
%5 = alloca { [4 x i8], i64 }, align 8, !dbg !3441 | |
%6 = alloca [2 x i64], align 8, !dbg !3442 | |
%7 = alloca [2 x i64], align 8, !dbg !3445 | |
%8 = bitcast %io.Writer* %2 to [2 x i64]* | |
store [2 x i64] %0, [2 x i64]* %8, align 8 | |
%9 = bitcast %io.Writer* %3 to i8* | |
%10 = bitcast %io.Writer* %2 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %9, i8* align 8 %10, i64 16, i1 false) | |
call void @llvm.dbg.value(metadata i32 %1, metadata !3433, metadata !DIExpression()), !dbg !3446 | |
call void @llvm.dbg.value(metadata i64 0, metadata !3434, metadata !DIExpression()), !dbg !3446 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !3435, metadata !DIExpression()), !dbg !3447 | |
call void @llvm.dbg.value(metadata i8 39, metadata !3436, metadata !DIExpression()), !dbg !3448 | |
%11 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !3449 | |
%12 = load [2 x i64], [2 x i64]* %11, align 8, !dbg !3449 | |
%13 = call i64 @strings._write_byte-1512([2 x i64] %12, i8 39, i8* %__.context_ptr), !dbg !3449 | |
call void @llvm.dbg.value(metadata i64 %13, metadata !3434, metadata !DIExpression()), !dbg !3446 | |
%14 = bitcast [4 x i8]* %4 to i8*, !dbg !3441 | |
call void @llvm.memset.p0i8.i64(i8* %14, i8 0, i64 4, i1 false), !dbg !3441 | |
call void @llvm.dbg.value(metadata i64 0, metadata !3439, metadata !DIExpression()), !dbg !3448 | |
%15 = call [2 x i64] @utf8.encode_rune(i32 %1, i8* %__.context_ptr), !dbg !3441 | |
%16 = bitcast { [4 x i8], i64 }* %5 to [2 x i64]*, !dbg !3441 | |
store [2 x i64] %15, [2 x i64]* %16, align 8, !dbg !3441 | |
%17 = getelementptr inbounds { [4 x i8], i64 }, { [4 x i8], i64 }* %5, i32 0, i32 0, !dbg !3441 | |
%18 = getelementptr inbounds { [4 x i8], i64 }, { [4 x i8], i64 }* %5, i32 0, i32 1, !dbg !3441 | |
%19 = load i64, i64* %18, align 8, !dbg !3441 | |
%20 = bitcast [4 x i8]* %17 to i8*, !dbg !3441 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %14, i8* align 1 %20, i64 4, i1 false), !dbg !3441 | |
call void @llvm.dbg.value(metadata i64 %19, metadata !3439, metadata !DIExpression()), !dbg !3448 | |
%21 = icmp eq i64 %19, 1, !dbg !3450 | |
br i1 %21, label %cmp.and, label %if.else, !dbg !3450 | |
cmp.and: ; preds = %decls | |
%22 = icmp eq i32 %1, 65533, !dbg !3450 | |
br i1 %22, label %if.then, label %if.else, !dbg !3450 | |
if.then: ; preds = %cmp.and | |
%23 = load [2 x i64], [2 x i64]* %11, align 8, !dbg !3451 | |
%24 = call i64 @strings._write_byte-1512([2 x i64] %23, i8 92, i8* %__.context_ptr), !dbg !3451 | |
%25 = add i64 %13, %24, !dbg !3451 | |
call void @llvm.dbg.value(metadata i64 %25, metadata !3434, metadata !DIExpression()), !dbg !3446 | |
%26 = load [2 x i64], [2 x i64]* %11, align 8, !dbg !3452 | |
%27 = call i64 @strings._write_byte-1512([2 x i64] %26, i8 120, i8* %__.context_ptr), !dbg !3452 | |
%28 = add i64 %25, %27, !dbg !3452 | |
call void @llvm.dbg.value(metadata i64 %28, metadata !3434, metadata !DIExpression()), !dbg !3446 | |
%29 = load i8*, i8** getelementptr inbounds (%..string, %..string* @strings.DIGITS_LOWER-1532, i64 0, i32 0), align 8, !dbg !3442 | |
%30 = load i64, i64* getelementptr inbounds (%..string, %..string* @strings.DIGITS_LOWER-1532, i64 0, i32 1), align 8, !dbg !3442 | |
%31 = getelementptr [4 x i8], [4 x i8]* %4, i64 0, i64 0, !dbg !3442 | |
%32 = load i8, i8* %31, align 1, !dbg !3442 | |
%33 = lshr i8 %32, 4, !dbg !3442 | |
%34 = zext i8 %33 to i64, !dbg !3442 | |
%35 = bitcast [2 x i64]* %6 to %..string*, !dbg !3442 | |
store %..string { i8* getelementptr inbounds ([54 x i8], [54 x i8]* @"csbs$a1", i64 0, i64 0), i64 53 }, %..string* %35, align 8, !dbg !3442 | |
%36 = load [2 x i64], [2 x i64]* %6, align 8, !dbg !3442 | |
call void @runtime.bounds_check_error([2 x i64] %36, i32 179, i32 39, i64 %34, i64 %30), !dbg !3442 | |
%37 = getelementptr i8, i8* %29, i64 %34, !dbg !3442 | |
%38 = load i8, i8* %37, align 1, !dbg !3442 | |
%39 = load [2 x i64], [2 x i64]* %11, align 8, !dbg !3442 | |
%40 = call i64 @strings._write_byte-1512([2 x i64] %39, i8 %38, i8* %__.context_ptr), !dbg !3442 | |
%41 = add i64 %28, %40, !dbg !3442 | |
call void @llvm.dbg.value(metadata i64 %41, metadata !3434, metadata !DIExpression()), !dbg !3446 | |
%42 = load i8*, i8** getelementptr inbounds (%..string, %..string* @strings.DIGITS_LOWER-1532, i64 0, i32 0), align 8, !dbg !3445 | |
%43 = load i64, i64* getelementptr inbounds (%..string, %..string* @strings.DIGITS_LOWER-1532, i64 0, i32 1), align 8, !dbg !3445 | |
%44 = load i8, i8* %31, align 1, !dbg !3445 | |
%45 = and i8 %44, 15, !dbg !3445 | |
%46 = zext i8 %45 to i64, !dbg !3445 | |
%47 = bitcast [2 x i64]* %7 to %..string*, !dbg !3445 | |
store %..string { i8* getelementptr inbounds ([54 x i8], [54 x i8]* @"csbs$a1", i64 0, i64 0), i64 53 }, %..string* %47, align 8, !dbg !3445 | |
%48 = load [2 x i64], [2 x i64]* %7, align 8, !dbg !3445 | |
call void @runtime.bounds_check_error([2 x i64] %48, i32 180, i32 39, i64 %46, i64 %43), !dbg !3445 | |
%49 = getelementptr i8, i8* %42, i64 %46, !dbg !3445 | |
%50 = load i8, i8* %49, align 1, !dbg !3445 | |
%51 = load [2 x i64], [2 x i64]* %11, align 8, !dbg !3445 | |
%52 = call i64 @strings._write_byte-1512([2 x i64] %51, i8 %50, i8* %__.context_ptr), !dbg !3445 | |
%53 = add i64 %41, %52, !dbg !3445 | |
call void @llvm.dbg.value(metadata i64 %53, metadata !3434, metadata !DIExpression()), !dbg !3446 | |
br label %if.done, !dbg !3450 | |
if.else: ; preds = %cmp.and, %decls | |
%54 = load [2 x i64], [2 x i64]* %11, align 8, !dbg !3453 | |
%55 = call i64 @strings.write_escaped_rune_writer([2 x i64] %54, i32 %1, i8 39, i1 false, i8* %__.context_ptr), !dbg !3453 | |
%56 = add i64 %13, %55, !dbg !3453 | |
call void @llvm.dbg.value(metadata i64 %56, metadata !3434, metadata !DIExpression()), !dbg !3446 | |
br label %if.done, !dbg !3450 | |
if.done: ; preds = %if.else, %if.then | |
%.0 = phi i64 [ %53, %if.then ], [ %56, %if.else ], !dbg !3455 | |
call void @llvm.dbg.value(metadata i64 %.0, metadata !3434, metadata !DIExpression()), !dbg !3446 | |
%57 = load [2 x i64], [2 x i64]* %11, align 8, !dbg !3456 | |
%58 = call i64 @strings._write_byte-1512([2 x i64] %57, i8 39, i8* %__.context_ptr), !dbg !3456 | |
%59 = add i64 %.0, %58, !dbg !3456 | |
call void @llvm.dbg.value(metadata i64 %59, metadata !3434, metadata !DIExpression()), !dbg !3446 | |
call void @llvm.dbg.value(metadata i64 %59, metadata !3434, metadata !DIExpression()), !dbg !3446 | |
ret i64 %59, !dbg !3457 | |
} | |
define internal i64 @strings.write_string_writer([2 x i64] %0, [2 x i64] %1, i8* noalias nocapture nonnull %__.context_ptr) !dbg !3458 { | |
decls: | |
%2 = alloca %io.Writer, align 8 | |
call void @llvm.dbg.declare(metadata %io.Writer* %3, metadata !3462, metadata !DIExpression()), !dbg !3466 | |
%3 = alloca %io.Writer, align 8 | |
%4 = alloca %..string, align 8 | |
call void @llvm.dbg.declare(metadata %..string* %5, metadata !3463, metadata !DIExpression()), !dbg !3467 | |
%5 = alloca %..string, align 8 | |
%6 = alloca { i64, i32 }, align 8, !dbg !3468 | |
%7 = bitcast %io.Writer* %2 to [2 x i64]* | |
store [2 x i64] %0, [2 x i64]* %7, align 8 | |
%8 = bitcast %io.Writer* %3 to i8* | |
%9 = bitcast %io.Writer* %2 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %8, i8* align 8 %9, i64 16, i1 false) | |
%10 = bitcast %..string* %4 to [2 x i64]* | |
store [2 x i64] %1, [2 x i64]* %10, align 8 | |
%11 = bitcast %..string* %5 to i8* | |
%12 = bitcast %..string* %4 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %11, i8* align 8 %12, i64 16, i1 false) | |
call void @llvm.dbg.value(metadata i64 0, metadata !3464, metadata !DIExpression()), !dbg !3470 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !3465, metadata !DIExpression()), !dbg !3471 | |
%13 = bitcast %..string* %5 to { i8*, i64 }*, !dbg !3468 | |
%14 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !3468 | |
%15 = load [2 x i64], [2 x i64]* %14, align 8, !dbg !3468 | |
%16 = bitcast { i8*, i64 }* %13 to [2 x i64]*, !dbg !3468 | |
%17 = load [2 x i64], [2 x i64]* %16, align 8, !dbg !3468 | |
%18 = call [2 x i64] @io.write([2 x i64] %15, [2 x i64] %17, i8* %__.context_ptr), !dbg !3468 | |
%19 = bitcast { i64, i32 }* %6 to [2 x i64]*, !dbg !3468 | |
store [2 x i64] %18, [2 x i64]* %19, align 8, !dbg !3468 | |
%20 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %6, i32 0, i32 0, !dbg !3468 | |
%21 = load i64, i64* %20, align 8, !dbg !3468 | |
call void @llvm.dbg.value(metadata i64 %21, metadata !3464, metadata !DIExpression()), !dbg !3470 | |
ret i64 %21, !dbg !3472 | |
} | |
; Function Attrs: nounwind | |
define dso_local i64 @runtime.cstring_len(i8* %0) #0 !dbg !3473 { | |
decls: | |
call void @llvm.dbg.value(metadata i8* %0, metadata !3477, metadata !DIExpression()), !dbg !3481 | |
call void @llvm.dbg.value(metadata i64 0, metadata !3478, metadata !DIExpression()), !dbg !3482 | |
%1 = ptrtoint i8* %0 to i64, !dbg !3483 | |
call void @llvm.dbg.value(metadata i64 %1, metadata !3478, metadata !DIExpression()), !dbg !3482 | |
call void @llvm.dbg.value(metadata i64 %1, metadata !3480, metadata !DIExpression()), !dbg !3482 | |
br label %for.loop, !dbg !3484 | |
for.loop: ; preds = %for.body, %decls | |
%.0 = phi i64 [ %1, %decls ], [ %6, %for.body ], !dbg !3482 | |
call void @llvm.dbg.value(metadata i64 %.0, metadata !3480, metadata !DIExpression()), !dbg !3482 | |
%2 = icmp ne i64 %.0, 0, !dbg !3484 | |
br i1 %2, label %cmp.and, label %for.done, !dbg !3484 | |
cmp.and: ; preds = %for.loop | |
%3 = inttoptr i64 %.0 to i8*, !dbg !3484 | |
%4 = load i8, i8* %3, align 1, !dbg !3484 | |
%5 = icmp ne i8 %4, 0, !dbg !3484 | |
br i1 %5, label %for.body, label %for.done, !dbg !3484 | |
for.body: ; preds = %cmp.and | |
%6 = add i64 %.0, 1, !dbg !3485 | |
call void @llvm.dbg.value(metadata i64 %6, metadata !3480, metadata !DIExpression()), !dbg !3482 | |
br label %for.loop, !dbg !3484 | |
for.done: ; preds = %cmp.and, %for.loop | |
%7 = sub i64 %.0, %1, !dbg !3488 | |
ret i64 %7, !dbg !3488 | |
} | |
; Function Attrs: nounwind | |
define dso_local [2 x i64] @runtime.cstring_to_string(i8* %0) #0 !dbg !3489 { | |
decls: | |
%1 = alloca [2 x i64], align 8, !dbg !3497 | |
%2 = alloca %runtime.Raw_String, align 8, !dbg !3500 | |
call void @llvm.dbg.value(metadata i8* %0, metadata !3493, metadata !DIExpression()), !dbg !3501 | |
%3 = icmp eq i8* %0, null, !dbg !3502 | |
br i1 %3, label %if.then, label %if.done, !dbg !3502 | |
if.then: ; preds = %decls | |
%4 = bitcast [2 x i64]* %1 to %..string*, !dbg !3497 | |
%5 = bitcast %..string* %4 to i8*, !dbg !3497 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %5, i8 0, i64 16, i1 false), !dbg !3497 | |
%6 = load [2 x i64], [2 x i64]* %1, align 8, !dbg !3497 | |
ret [2 x i64] %6, !dbg !3497 | |
if.done: ; preds = %decls | |
call void @llvm.dbg.value(metadata i8* null, metadata !3494, metadata !DIExpression()), !dbg !3503 | |
call void @llvm.dbg.value(metadata i8* %0, metadata !3494, metadata !DIExpression()), !dbg !3503 | |
call void @llvm.dbg.value(metadata i64 0, metadata !3496, metadata !DIExpression()), !dbg !3503 | |
%7 = call i64 @runtime.cstring_len(i8* %0), !dbg !3504 | |
call void @llvm.dbg.value(metadata i64 %7, metadata !3496, metadata !DIExpression()), !dbg !3503 | |
%8 = bitcast %runtime.Raw_String* %2 to i8*, !dbg !3500 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %8, i8 0, i64 16, i1 false), !dbg !3500 | |
%9 = getelementptr inbounds %runtime.Raw_String, %runtime.Raw_String* %2, i32 0, i32 0, !dbg !3500 | |
store i8* %0, i8** %9, align 8, !dbg !3500 | |
%10 = getelementptr inbounds %runtime.Raw_String, %runtime.Raw_String* %2, i32 0, i32 1, !dbg !3500 | |
store i64 %7, i64* %10, align 8, !dbg !3500 | |
%11 = bitcast %runtime.Raw_String* %2 to %..string*, !dbg !3500 | |
%12 = bitcast %..string* %11 to [2 x i64]*, !dbg !3500 | |
%13 = load [2 x i64], [2 x i64]* %12, align 8, !dbg !3500 | |
ret [2 x i64] %13, !dbg !3500 | |
} | |
define internal i64 @strings.write_quoted_string_writer([2 x i64] %0, [2 x i64] %1, i8 %2, i8* noalias nocapture nonnull %__.context_ptr) !dbg !3505 { | |
decls: | |
%3 = alloca { i8*, i64 }, align 8 | |
%4 = alloca { i8*, i64 }, align 8 | |
%5 = alloca { i32, i64 }, align 8, !dbg !3520 | |
%6 = alloca [2 x i64], align 8, !dbg !3555 | |
%7 = alloca [2 x i64], align 8, !dbg !3556 | |
%8 = alloca [2 x i64], align 8, !dbg !3557 | |
%9 = alloca { i32, i64 }, align 8, !dbg !3557 | |
%10 = alloca %utf8.Accept_Range, align 1, !dbg !3558 | |
%11 = alloca [2 x i64], align 8, !dbg !3558 | |
%12 = alloca { i32, i64 }, align 8, !dbg !3559 | |
%13 = alloca [2 x i64], align 8, !dbg !3562 | |
%14 = alloca { i32, i64 }, align 8, !dbg !3563 | |
%15 = alloca { i32, i64 }, align 8, !dbg !3566 | |
%16 = alloca [2 x i64], align 8, !dbg !3569 | |
%17 = alloca { i32, i64 }, align 8, !dbg !3570 | |
%18 = alloca { i32, i64 }, align 8, !dbg !3573 | |
%19 = alloca [2 x i64], align 8, !dbg !3576 | |
%20 = alloca { i32, i64 }, align 8, !dbg !3577 | |
%21 = alloca { i32, i64 }, align 8, !dbg !3580 | |
%22 = alloca %..string, align 8 | |
%23 = alloca %..string, align 8 | |
%24 = alloca { i32, i64 }, align 8, !dbg !3581 | |
%25 = alloca { i32, i64 }, align 8, !dbg !3581 | |
%26 = alloca %io.Writer, align 8 | |
call void @llvm.dbg.declare(metadata %io.Writer* %27, metadata !3509, metadata !DIExpression()), !dbg !3582 | |
%27 = alloca %io.Writer, align 8 | |
%28 = alloca %..string, align 8 | |
call void @llvm.dbg.declare(metadata %..string* %29, metadata !3510, metadata !DIExpression()), !dbg !3583 | |
%29 = alloca %..string, align 8 | |
call void @llvm.dbg.declare(metadata %..string* %30, metadata !3517, metadata !DIExpression()), !dbg !3584 | |
%30 = alloca %..string, align 8, !dbg !3585 | |
%31 = alloca [2 x i64], align 8, !dbg !3586 | |
%32 = alloca { i32, i64 }, align 8, !dbg !3587 | |
%33 = alloca [2 x i64], align 8, !dbg !3588 | |
%34 = alloca [2 x i64], align 8, !dbg !3588 | |
%35 = alloca [2 x i64], align 8, !dbg !3591 | |
%36 = alloca [2 x i64], align 8, !dbg !3591 | |
%37 = alloca [2 x i64], align 8, !dbg !3592 | |
%38 = alloca %..string, align 8, !dbg !3592 | |
%39 = bitcast %io.Writer* %26 to [2 x i64]* | |
store [2 x i64] %0, [2 x i64]* %39, align 8 | |
%40 = bitcast %io.Writer* %27 to i8* | |
%41 = bitcast %io.Writer* %26 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %40, i8* align 8 %41, i64 16, i1 false) | |
%42 = bitcast %..string* %28 to [2 x i64]* | |
store [2 x i64] %1, [2 x i64]* %42, align 8 | |
%43 = bitcast %..string* %29 to i8* | |
%44 = bitcast %..string* %28 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %43, i8* align 8 %44, i64 16, i1 false) | |
call void @llvm.dbg.value(metadata i8 %2, metadata !3511, metadata !DIExpression()), !dbg !3593 | |
call void @llvm.dbg.value(metadata i64 0, metadata !3512, metadata !DIExpression()), !dbg !3593 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !3513, metadata !DIExpression()), !dbg !3594 | |
%45 = bitcast %io.Writer* %27 to [2 x i64]*, !dbg !3595 | |
%46 = load [2 x i64], [2 x i64]* %45, align 8, !dbg !3595 | |
%47 = call i64 @strings._write_byte-1512([2 x i64] %46, i8 %2, i8* %__.context_ptr), !dbg !3595 | |
call void @llvm.dbg.value(metadata i64 %47, metadata !3512, metadata !DIExpression()), !dbg !3593 | |
call void @llvm.dbg.value(metadata i64 0, metadata !3514, metadata !DIExpression()), !dbg !3596 | |
%48 = bitcast %..string* %30 to i8*, !dbg !3585 | |
%49 = getelementptr i8, i8* %48, i64 16, !dbg !3585 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %49, i8 0, i64 0, i1 false), !dbg !3585 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %48, i8* align 8 %43, i64 16, i1 false), !dbg !3585 | |
br label %for.loop, !dbg !3597 | |
for.loop: ; preds = %for.post, %decls | |
%.03 = phi i64 [ %47, %decls ], [ %.1, %for.post ], !dbg !3598 | |
call void @llvm.dbg.value(metadata i64 %.03, metadata !3512, metadata !DIExpression()), !dbg !3593 | |
%50 = getelementptr inbounds %..string, %..string* %30, i32 0, i32 1, !dbg !3597 | |
%51 = load i64, i64* %50, align 8, !dbg !3597 | |
%52 = icmp sgt i64 %51, 0, !dbg !3597 | |
br i1 %52, label %for.body, label %for.done, !dbg !3597 | |
for.body: ; preds = %for.loop | |
call void @llvm.dbg.value(metadata i32 0, metadata !3518, metadata !DIExpression()), !dbg !3599 | |
%53 = getelementptr inbounds %..string, %..string* %30, i32 0, i32 0, !dbg !3586 | |
%54 = load i8*, i8** %53, align 8, !dbg !3586 | |
%55 = bitcast [2 x i64]* %31 to %..string*, !dbg !3586 | |
store %..string { i8* getelementptr inbounds ([54 x i8], [54 x i8]* @"csbs$a1", i64 0, i64 0), i64 53 }, %..string* %55, align 8, !dbg !3586 | |
%56 = load [2 x i64], [2 x i64]* %31, align 8, !dbg !3586 | |
call void @runtime.bounds_check_error([2 x i64] %56, i32 239, i32 15, i64 0, i64 %51), !dbg !3586 | |
%57 = load i8, i8* %54, align 1, !dbg !3586 | |
%58 = zext i8 %57 to i32, !dbg !3586 | |
call void @llvm.dbg.value(metadata i32 %58, metadata !3518, metadata !DIExpression()), !dbg !3599 | |
call void @llvm.dbg.value(metadata i64 1, metadata !3514, metadata !DIExpression()), !dbg !3596 | |
%59 = icmp sge i32 %58, 128, !dbg !3600 | |
br i1 %59, label %if.then, label %if.done, !dbg !3600 | |
if.then: ; preds = %for.body | |
%60 = bitcast %..string* %30 to [2 x i64]*, !dbg !3587 | |
%61 = load [2 x i64], [2 x i64]* %60, align 8, !dbg !3587 | |
%62 = bitcast %..string* %22 to i8*, !dbg !3601 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %62), !dbg !3601 | |
%63 = bitcast %..string* %23 to i8*, !dbg !3601 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %63), !dbg !3601 | |
%64 = bitcast { i32, i64 }* %24 to i8*, !dbg !3601 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %64), !dbg !3601 | |
%65 = bitcast { i32, i64 }* %25 to i8*, !dbg !3601 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %65), !dbg !3601 | |
call void @llvm.dbg.declare(metadata !112, metadata !3550, metadata !DIExpression()), !dbg !3601 | |
%66 = bitcast %..string* %22 to [2 x i64]* | |
store [2 x i64] %61, [2 x i64]* %66, align 8 | |
%67 = bitcast %..string* %23 to i8* | |
%68 = bitcast %..string* %22 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %67, i8* align 8 %68, i64 16, i1 false) | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !3551, metadata !DIExpression()), !dbg !3602 | |
%69 = bitcast %..string* %23 to { i8*, i64 }*, !dbg !3581 | |
%70 = bitcast { i8*, i64 }* %69 to [2 x i64]*, !dbg !3581 | |
%71 = load [2 x i64], [2 x i64]* %70, align 8, !dbg !3581 | |
%72 = bitcast { i8*, i64 }* %3 to i8*, !dbg !3603 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %72), !dbg !3603 | |
%73 = bitcast { i8*, i64 }* %4 to i8*, !dbg !3603 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %73), !dbg !3603 | |
%74 = bitcast { i32, i64 }* %5 to i8*, !dbg !3603 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %74), !dbg !3603 | |
%75 = bitcast [2 x i64]* %6 to i8*, !dbg !3603 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %75), !dbg !3603 | |
%76 = bitcast [2 x i64]* %7 to i8*, !dbg !3603 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %76), !dbg !3603 | |
%77 = bitcast [2 x i64]* %8 to i8*, !dbg !3603 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %77), !dbg !3603 | |
%78 = bitcast { i32, i64 }* %9 to i8*, !dbg !3603 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %78), !dbg !3603 | |
%79 = bitcast %utf8.Accept_Range* %10 to i8*, !dbg !3603 | |
call void @llvm.lifetime.start.p0i8(i64 2, i8* %79), !dbg !3603 | |
%80 = bitcast [2 x i64]* %11 to i8*, !dbg !3603 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %80), !dbg !3603 | |
%81 = bitcast { i32, i64 }* %12 to i8*, !dbg !3603 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %81), !dbg !3603 | |
%82 = bitcast [2 x i64]* %13 to i8*, !dbg !3603 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %82), !dbg !3603 | |
%83 = bitcast { i32, i64 }* %14 to i8*, !dbg !3603 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %83), !dbg !3603 | |
%84 = bitcast { i32, i64 }* %15 to i8*, !dbg !3603 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %84), !dbg !3603 | |
%85 = bitcast [2 x i64]* %16 to i8*, !dbg !3603 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %85), !dbg !3603 | |
%86 = bitcast { i32, i64 }* %17 to i8*, !dbg !3603 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %86), !dbg !3603 | |
%87 = bitcast { i32, i64 }* %18 to i8*, !dbg !3603 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %87), !dbg !3603 | |
%88 = bitcast [2 x i64]* %19 to i8*, !dbg !3603 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %88), !dbg !3603 | |
%89 = bitcast { i32, i64 }* %20 to i8*, !dbg !3603 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %89), !dbg !3603 | |
%90 = bitcast { i32, i64 }* %21 to i8*, !dbg !3603 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %90), !dbg !3603 | |
call void @llvm.dbg.declare(metadata !112, metadata !3531, metadata !DIExpression()), !dbg !3603 | |
call void @llvm.dbg.declare(metadata !112, metadata !3540, metadata !DIExpression()), !dbg !3558 | |
%91 = bitcast { i8*, i64 }* %3 to [2 x i64]* | |
store [2 x i64] %71, [2 x i64]* %91, align 8 | |
%92 = bitcast { i8*, i64 }* %4 to i8* | |
%93 = bitcast { i8*, i64 }* %3 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %92, i8* align 8 %93, i64 16, i1 false) | |
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !3532, metadata !DIExpression()), !dbg !3604 | |
call void @llvm.dbg.value(metadata i64 0, metadata !3533, metadata !DIExpression()), !dbg !3605 | |
%94 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %4, i32 0, i32 1, !dbg !3606 | |
%95 = load i64, i64* %94, align 8, !dbg !3606 | |
call void @llvm.dbg.value(metadata i64 %95, metadata !3533, metadata !DIExpression()), !dbg !3605 | |
%96 = icmp slt i64 %95, 1, !dbg !3607 | |
br i1 %96, label %if.then.i.i, label %if.done.i.i, !dbg !3607 | |
if.then.i.i: ; preds = %if.then | |
%97 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %5, i32 0, i32 0, !dbg !3520 | |
%98 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %5, i32 0, i32 1, !dbg !3520 | |
store i32 65533, i32* %97, align 4, !dbg !3520 | |
store i64 0, i64* %98, align 8, !dbg !3520 | |
%99 = bitcast { i32, i64 }* %5 to [2 x i64]*, !dbg !3520 | |
%100 = load [2 x i64], [2 x i64]* %99, align 8, !dbg !3520 | |
%101 = bitcast { i8*, i64 }* %3 to i8*, !dbg !3520 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %101), !dbg !3520 | |
%102 = bitcast { i8*, i64 }* %4 to i8*, !dbg !3520 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %102), !dbg !3520 | |
%103 = bitcast { i32, i64 }* %5 to i8*, !dbg !3520 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %103), !dbg !3520 | |
%104 = bitcast [2 x i64]* %6 to i8*, !dbg !3520 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %104), !dbg !3520 | |
%105 = bitcast [2 x i64]* %7 to i8*, !dbg !3520 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %105), !dbg !3520 | |
%106 = bitcast [2 x i64]* %8 to i8*, !dbg !3520 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %106), !dbg !3520 | |
%107 = bitcast { i32, i64 }* %9 to i8*, !dbg !3520 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %107), !dbg !3520 | |
%108 = bitcast %utf8.Accept_Range* %10 to i8*, !dbg !3520 | |
call void @llvm.lifetime.end.p0i8(i64 2, i8* %108), !dbg !3520 | |
%109 = bitcast [2 x i64]* %11 to i8*, !dbg !3520 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %109), !dbg !3520 | |
%110 = bitcast { i32, i64 }* %12 to i8*, !dbg !3520 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %110), !dbg !3520 | |
%111 = bitcast [2 x i64]* %13 to i8*, !dbg !3520 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %111), !dbg !3520 | |
%112 = bitcast { i32, i64 }* %14 to i8*, !dbg !3520 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %112), !dbg !3520 | |
%113 = bitcast { i32, i64 }* %15 to i8*, !dbg !3520 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %113), !dbg !3520 | |
%114 = bitcast [2 x i64]* %16 to i8*, !dbg !3520 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %114), !dbg !3520 | |
%115 = bitcast { i32, i64 }* %17 to i8*, !dbg !3520 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %115), !dbg !3520 | |
%116 = bitcast { i32, i64 }* %18 to i8*, !dbg !3520 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %116), !dbg !3520 | |
%117 = bitcast [2 x i64]* %19 to i8*, !dbg !3520 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %117), !dbg !3520 | |
%118 = bitcast { i32, i64 }* %20 to i8*, !dbg !3520 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %118), !dbg !3520 | |
%119 = bitcast { i32, i64 }* %21 to i8*, !dbg !3520 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %119), !dbg !3520 | |
br label %utf8.decode_rune_in_string.exit, !dbg !3520 | |
if.done.i.i: ; preds = %if.then | |
call void @llvm.dbg.value(metadata i8 0, metadata !3534, metadata !DIExpression()), !dbg !3605 | |
%120 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %4, i32 0, i32 0, !dbg !3555 | |
%121 = load i8*, i8** %120, align 8, !dbg !3555 | |
%122 = bitcast [2 x i64]* %6 to %..string*, !dbg !3555 | |
store %..string { i8* getelementptr inbounds ([56 x i8], [56 x i8]* @"csbs$7c", i64 0, i64 0), i64 55 }, %..string* %122, align 8, !dbg !3555 | |
%123 = load [2 x i64], [2 x i64]* %6, align 8, !dbg !3555 | |
call void @runtime.bounds_check_error([2 x i64] %123, i32 101, i32 10, i64 0, i64 %95), !dbg !3555 | |
%124 = load i8, i8* %121, align 1, !dbg !3555 | |
call void @llvm.dbg.value(metadata i8 %124, metadata !3534, metadata !DIExpression()), !dbg !3605 | |
call void @llvm.dbg.value(metadata i8 0, metadata !3535, metadata !DIExpression()), !dbg !3605 | |
%125 = zext i8 %124 to i64, !dbg !3556 | |
%126 = getelementptr [256 x i8], [256 x i8]* @utf8.accept_sizes, i64 0, i64 %125, !dbg !3556 | |
%127 = bitcast [2 x i64]* %7 to %..string*, !dbg !3556 | |
store %..string { i8* getelementptr inbounds ([56 x i8], [56 x i8]* @"csbs$7c", i64 0, i64 0), i64 55 }, %..string* %127, align 8, !dbg !3556 | |
%128 = load [2 x i64], [2 x i64]* %7, align 8, !dbg !3556 | |
call void @runtime.bounds_check_error([2 x i64] %128, i32 102, i32 20, i64 %125, i64 256), !dbg !3556 | |
%129 = load i8, i8* %126, align 1, !dbg !3556 | |
call void @llvm.dbg.value(metadata i8 %129, metadata !3535, metadata !DIExpression()), !dbg !3605 | |
%130 = icmp uge i8 %129, -16, !dbg !3608 | |
br i1 %130, label %if.then1.i.i, label %if.done2.i.i, !dbg !3608 | |
if.then1.i.i: ; preds = %if.done.i.i | |
call void @llvm.dbg.value(metadata i32 0, metadata !3536, metadata !DIExpression()), !dbg !3609 | |
%131 = zext i8 %129 to i32, !dbg !3610 | |
%132 = shl i32 %131, 31, !dbg !3610 | |
%133 = ashr i32 %132, 31, !dbg !3610 | |
call void @llvm.dbg.value(metadata i32 %133, metadata !3536, metadata !DIExpression()), !dbg !3609 | |
%134 = load i8*, i8** %120, align 8, !dbg !3557 | |
%135 = load i64, i64* %94, align 8, !dbg !3557 | |
%136 = bitcast [2 x i64]* %8 to %..string*, !dbg !3557 | |
store %..string { i8* getelementptr inbounds ([56 x i8], [56 x i8]* @"csbs$7c", i64 0, i64 0), i64 55 }, %..string* %136, align 8, !dbg !3557 | |
%137 = load [2 x i64], [2 x i64]* %8, align 8, !dbg !3557 | |
call void @runtime.bounds_check_error([2 x i64] %137, i32 105, i32 17, i64 0, i64 %135), !dbg !3557 | |
%138 = load i8, i8* %134, align 1, !dbg !3557 | |
%139 = zext i8 %138 to i32, !dbg !3557 | |
%140 = xor i32 %133, -1, !dbg !3557 | |
%141 = and i32 %139, %140, !dbg !3557 | |
%142 = and i32 65533, %133, !dbg !3557 | |
%143 = or i32 %141, %142, !dbg !3557 | |
%144 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %9, i32 0, i32 0, !dbg !3557 | |
%145 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %9, i32 0, i32 1, !dbg !3557 | |
store i32 %143, i32* %144, align 4, !dbg !3557 | |
store i64 1, i64* %145, align 8, !dbg !3557 | |
%146 = bitcast { i32, i64 }* %9 to [2 x i64]*, !dbg !3557 | |
%147 = load [2 x i64], [2 x i64]* %146, align 8, !dbg !3557 | |
%148 = bitcast { i8*, i64 }* %3 to i8*, !dbg !3557 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %148), !dbg !3557 | |
%149 = bitcast { i8*, i64 }* %4 to i8*, !dbg !3557 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %149), !dbg !3557 | |
%150 = bitcast { i32, i64 }* %5 to i8*, !dbg !3557 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %150), !dbg !3557 | |
%151 = bitcast [2 x i64]* %6 to i8*, !dbg !3557 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %151), !dbg !3557 | |
%152 = bitcast [2 x i64]* %7 to i8*, !dbg !3557 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %152), !dbg !3557 | |
%153 = bitcast [2 x i64]* %8 to i8*, !dbg !3557 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %153), !dbg !3557 | |
%154 = bitcast { i32, i64 }* %9 to i8*, !dbg !3557 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %154), !dbg !3557 | |
%155 = bitcast %utf8.Accept_Range* %10 to i8*, !dbg !3557 | |
call void @llvm.lifetime.end.p0i8(i64 2, i8* %155), !dbg !3557 | |
%156 = bitcast [2 x i64]* %11 to i8*, !dbg !3557 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %156), !dbg !3557 | |
%157 = bitcast { i32, i64 }* %12 to i8*, !dbg !3557 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %157), !dbg !3557 | |
%158 = bitcast [2 x i64]* %13 to i8*, !dbg !3557 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %158), !dbg !3557 | |
%159 = bitcast { i32, i64 }* %14 to i8*, !dbg !3557 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %159), !dbg !3557 | |
%160 = bitcast { i32, i64 }* %15 to i8*, !dbg !3557 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %160), !dbg !3557 | |
%161 = bitcast [2 x i64]* %16 to i8*, !dbg !3557 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %161), !dbg !3557 | |
%162 = bitcast { i32, i64 }* %17 to i8*, !dbg !3557 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %162), !dbg !3557 | |
%163 = bitcast { i32, i64 }* %18 to i8*, !dbg !3557 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %163), !dbg !3557 | |
%164 = bitcast [2 x i64]* %19 to i8*, !dbg !3557 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %164), !dbg !3557 | |
%165 = bitcast { i32, i64 }* %20 to i8*, !dbg !3557 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %165), !dbg !3557 | |
%166 = bitcast { i32, i64 }* %21 to i8*, !dbg !3557 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %166), !dbg !3557 | |
br label %utf8.decode_rune_in_string.exit, !dbg !3557 | |
if.done2.i.i: ; preds = %if.done.i.i | |
call void @llvm.dbg.value(metadata i8 0, metadata !3539, metadata !DIExpression()), !dbg !3605 | |
%167 = and i8 %129, 7, !dbg !3611 | |
call void @llvm.dbg.value(metadata i8 %167, metadata !3539, metadata !DIExpression()), !dbg !3605 | |
%168 = bitcast %utf8.Accept_Range* %10 to i8*, !dbg !3558 | |
call void @llvm.memset.p0i8.i64(i8* %168, i8 0, i64 2, i1 false), !dbg !3558 | |
%169 = lshr i8 %129, 4, !dbg !3558 | |
%170 = zext i8 %169 to i64, !dbg !3558 | |
%171 = getelementptr [5 x %utf8.Accept_Range], [5 x %utf8.Accept_Range]* @utf8.accept_ranges, i64 0, i64 %170, !dbg !3558 | |
%172 = bitcast [2 x i64]* %11 to %..string*, !dbg !3558 | |
store %..string { i8* getelementptr inbounds ([56 x i8], [56 x i8]* @"csbs$7c", i64 0, i64 0), i64 55 }, %..string* %172, align 8, !dbg !3558 | |
%173 = load [2 x i64], [2 x i64]* %11, align 8, !dbg !3558 | |
call void @runtime.bounds_check_error([2 x i64] %173, i32 108, i32 26, i64 %170, i64 5), !dbg !3558 | |
%174 = bitcast %utf8.Accept_Range* %171 to i8*, !dbg !3558 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %168, i8* align 1 %174, i64 2, i1 false), !dbg !3558 | |
%175 = zext i8 %167 to i64, !dbg !3612 | |
%176 = icmp slt i64 %95, %175, !dbg !3612 | |
br i1 %176, label %if.then3.i.i, label %if.done4.i.i, !dbg !3612 | |
if.then3.i.i: ; preds = %if.done2.i.i | |
%177 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %12, i32 0, i32 0, !dbg !3559 | |
%178 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %12, i32 0, i32 1, !dbg !3559 | |
store i32 65533, i32* %177, align 4, !dbg !3559 | |
store i64 1, i64* %178, align 8, !dbg !3559 | |
%179 = bitcast { i32, i64 }* %12 to [2 x i64]*, !dbg !3559 | |
%180 = load [2 x i64], [2 x i64]* %179, align 8, !dbg !3559 | |
%181 = bitcast { i8*, i64 }* %3 to i8*, !dbg !3559 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %181), !dbg !3559 | |
%182 = bitcast { i8*, i64 }* %4 to i8*, !dbg !3559 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %182), !dbg !3559 | |
%183 = bitcast { i32, i64 }* %5 to i8*, !dbg !3559 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %183), !dbg !3559 | |
%184 = bitcast [2 x i64]* %6 to i8*, !dbg !3559 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %184), !dbg !3559 | |
%185 = bitcast [2 x i64]* %7 to i8*, !dbg !3559 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %185), !dbg !3559 | |
%186 = bitcast [2 x i64]* %8 to i8*, !dbg !3559 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %186), !dbg !3559 | |
%187 = bitcast { i32, i64 }* %9 to i8*, !dbg !3559 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %187), !dbg !3559 | |
%188 = bitcast %utf8.Accept_Range* %10 to i8*, !dbg !3559 | |
call void @llvm.lifetime.end.p0i8(i64 2, i8* %188), !dbg !3559 | |
%189 = bitcast [2 x i64]* %11 to i8*, !dbg !3559 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %189), !dbg !3559 | |
%190 = bitcast { i32, i64 }* %12 to i8*, !dbg !3559 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %190), !dbg !3559 | |
%191 = bitcast [2 x i64]* %13 to i8*, !dbg !3559 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %191), !dbg !3559 | |
%192 = bitcast { i32, i64 }* %14 to i8*, !dbg !3559 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %192), !dbg !3559 | |
%193 = bitcast { i32, i64 }* %15 to i8*, !dbg !3559 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %193), !dbg !3559 | |
%194 = bitcast [2 x i64]* %16 to i8*, !dbg !3559 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %194), !dbg !3559 | |
%195 = bitcast { i32, i64 }* %17 to i8*, !dbg !3559 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %195), !dbg !3559 | |
%196 = bitcast { i32, i64 }* %18 to i8*, !dbg !3559 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %196), !dbg !3559 | |
%197 = bitcast [2 x i64]* %19 to i8*, !dbg !3559 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %197), !dbg !3559 | |
%198 = bitcast { i32, i64 }* %20 to i8*, !dbg !3559 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %198), !dbg !3559 | |
%199 = bitcast { i32, i64 }* %21 to i8*, !dbg !3559 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %199), !dbg !3559 | |
br label %utf8.decode_rune_in_string.exit, !dbg !3559 | |
if.done4.i.i: ; preds = %if.done2.i.i | |
call void @llvm.dbg.value(metadata i8 0, metadata !3541, metadata !DIExpression()), !dbg !3605 | |
%200 = load i8*, i8** %120, align 8, !dbg !3562 | |
%201 = load i64, i64* %94, align 8, !dbg !3562 | |
%202 = bitcast [2 x i64]* %13 to %..string*, !dbg !3562 | |
store %..string { i8* getelementptr inbounds ([56 x i8], [56 x i8]* @"csbs$7c", i64 0, i64 0), i64 55 }, %..string* %202, align 8, !dbg !3562 | |
%203 = load [2 x i64], [2 x i64]* %13, align 8, !dbg !3562 | |
call void @runtime.bounds_check_error([2 x i64] %203, i32 112, i32 10, i64 1, i64 %201), !dbg !3562 | |
%204 = getelementptr i8, i8* %200, i64 1, !dbg !3562 | |
%205 = load i8, i8* %204, align 1, !dbg !3562 | |
call void @llvm.dbg.value(metadata i8 %205, metadata !3541, metadata !DIExpression()), !dbg !3605 | |
%206 = getelementptr inbounds %utf8.Accept_Range, %utf8.Accept_Range* %10, i32 0, i32 0, !dbg !3613 | |
%207 = load i8, i8* %206, align 1, !dbg !3613 | |
%208 = icmp ult i8 %205, %207, !dbg !3613 | |
br i1 %208, label %if.then5.i.i, label %cmp.or.i.i, !dbg !3613 | |
cmp.or.i.i: ; preds = %if.done4.i.i | |
%209 = getelementptr inbounds %utf8.Accept_Range, %utf8.Accept_Range* %10, i32 0, i32 1, !dbg !3613 | |
%210 = load i8, i8* %209, align 1, !dbg !3613 | |
%211 = icmp ult i8 %210, %205, !dbg !3613 | |
br i1 %211, label %if.then5.i.i, label %if.done6.i.i, !dbg !3613 | |
if.then5.i.i: ; preds = %cmp.or.i.i, %if.done4.i.i | |
%212 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %14, i32 0, i32 0, !dbg !3563 | |
%213 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %14, i32 0, i32 1, !dbg !3563 | |
store i32 65533, i32* %212, align 4, !dbg !3563 | |
store i64 1, i64* %213, align 8, !dbg !3563 | |
%214 = bitcast { i32, i64 }* %14 to [2 x i64]*, !dbg !3563 | |
%215 = load [2 x i64], [2 x i64]* %214, align 8, !dbg !3563 | |
%216 = bitcast { i8*, i64 }* %3 to i8*, !dbg !3563 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %216), !dbg !3563 | |
%217 = bitcast { i8*, i64 }* %4 to i8*, !dbg !3563 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %217), !dbg !3563 | |
%218 = bitcast { i32, i64 }* %5 to i8*, !dbg !3563 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %218), !dbg !3563 | |
%219 = bitcast [2 x i64]* %6 to i8*, !dbg !3563 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %219), !dbg !3563 | |
%220 = bitcast [2 x i64]* %7 to i8*, !dbg !3563 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %220), !dbg !3563 | |
%221 = bitcast [2 x i64]* %8 to i8*, !dbg !3563 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %221), !dbg !3563 | |
%222 = bitcast { i32, i64 }* %9 to i8*, !dbg !3563 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %222), !dbg !3563 | |
%223 = bitcast %utf8.Accept_Range* %10 to i8*, !dbg !3563 | |
call void @llvm.lifetime.end.p0i8(i64 2, i8* %223), !dbg !3563 | |
%224 = bitcast [2 x i64]* %11 to i8*, !dbg !3563 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %224), !dbg !3563 | |
%225 = bitcast { i32, i64 }* %12 to i8*, !dbg !3563 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %225), !dbg !3563 | |
%226 = bitcast [2 x i64]* %13 to i8*, !dbg !3563 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %226), !dbg !3563 | |
%227 = bitcast { i32, i64 }* %14 to i8*, !dbg !3563 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %227), !dbg !3563 | |
%228 = bitcast { i32, i64 }* %15 to i8*, !dbg !3563 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %228), !dbg !3563 | |
%229 = bitcast [2 x i64]* %16 to i8*, !dbg !3563 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %229), !dbg !3563 | |
%230 = bitcast { i32, i64 }* %17 to i8*, !dbg !3563 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %230), !dbg !3563 | |
%231 = bitcast { i32, i64 }* %18 to i8*, !dbg !3563 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %231), !dbg !3563 | |
%232 = bitcast [2 x i64]* %19 to i8*, !dbg !3563 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %232), !dbg !3563 | |
%233 = bitcast { i32, i64 }* %20 to i8*, !dbg !3563 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %233), !dbg !3563 | |
%234 = bitcast { i32, i64 }* %21 to i8*, !dbg !3563 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %234), !dbg !3563 | |
br label %utf8.decode_rune_in_string.exit, !dbg !3563 | |
if.done6.i.i: ; preds = %cmp.or.i.i | |
%235 = icmp eq i8 %167, 2, !dbg !3614 | |
br i1 %235, label %if.then7.i.i, label %if.done8.i.i, !dbg !3614 | |
if.then7.i.i: ; preds = %if.done6.i.i | |
%236 = and i8 %124, 31, !dbg !3566 | |
%237 = zext i8 %236 to i32, !dbg !3566 | |
%238 = shl i32 %237, 6, !dbg !3566 | |
%239 = and i8 %205, 63, !dbg !3566 | |
%240 = zext i8 %239 to i32, !dbg !3566 | |
%241 = or i32 %238, %240, !dbg !3566 | |
%242 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %15, i32 0, i32 0, !dbg !3566 | |
%243 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %15, i32 0, i32 1, !dbg !3566 | |
store i32 %241, i32* %242, align 4, !dbg !3566 | |
store i64 2, i64* %243, align 8, !dbg !3566 | |
%244 = bitcast { i32, i64 }* %15 to [2 x i64]*, !dbg !3566 | |
%245 = load [2 x i64], [2 x i64]* %244, align 8, !dbg !3566 | |
%246 = bitcast { i8*, i64 }* %3 to i8*, !dbg !3566 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %246), !dbg !3566 | |
%247 = bitcast { i8*, i64 }* %4 to i8*, !dbg !3566 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %247), !dbg !3566 | |
%248 = bitcast { i32, i64 }* %5 to i8*, !dbg !3566 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %248), !dbg !3566 | |
%249 = bitcast [2 x i64]* %6 to i8*, !dbg !3566 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %249), !dbg !3566 | |
%250 = bitcast [2 x i64]* %7 to i8*, !dbg !3566 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %250), !dbg !3566 | |
%251 = bitcast [2 x i64]* %8 to i8*, !dbg !3566 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %251), !dbg !3566 | |
%252 = bitcast { i32, i64 }* %9 to i8*, !dbg !3566 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %252), !dbg !3566 | |
%253 = bitcast %utf8.Accept_Range* %10 to i8*, !dbg !3566 | |
call void @llvm.lifetime.end.p0i8(i64 2, i8* %253), !dbg !3566 | |
%254 = bitcast [2 x i64]* %11 to i8*, !dbg !3566 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %254), !dbg !3566 | |
%255 = bitcast { i32, i64 }* %12 to i8*, !dbg !3566 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %255), !dbg !3566 | |
%256 = bitcast [2 x i64]* %13 to i8*, !dbg !3566 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %256), !dbg !3566 | |
%257 = bitcast { i32, i64 }* %14 to i8*, !dbg !3566 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %257), !dbg !3566 | |
%258 = bitcast { i32, i64 }* %15 to i8*, !dbg !3566 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %258), !dbg !3566 | |
%259 = bitcast [2 x i64]* %16 to i8*, !dbg !3566 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %259), !dbg !3566 | |
%260 = bitcast { i32, i64 }* %17 to i8*, !dbg !3566 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %260), !dbg !3566 | |
%261 = bitcast { i32, i64 }* %18 to i8*, !dbg !3566 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %261), !dbg !3566 | |
%262 = bitcast [2 x i64]* %19 to i8*, !dbg !3566 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %262), !dbg !3566 | |
%263 = bitcast { i32, i64 }* %20 to i8*, !dbg !3566 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %263), !dbg !3566 | |
%264 = bitcast { i32, i64 }* %21 to i8*, !dbg !3566 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %264), !dbg !3566 | |
br label %utf8.decode_rune_in_string.exit, !dbg !3566 | |
if.done8.i.i: ; preds = %if.done6.i.i | |
call void @llvm.dbg.value(metadata i8 0, metadata !3542, metadata !DIExpression()), !dbg !3605 | |
%265 = load i8*, i8** %120, align 8, !dbg !3569 | |
%266 = load i64, i64* %94, align 8, !dbg !3569 | |
%267 = bitcast [2 x i64]* %16 to %..string*, !dbg !3569 | |
store %..string { i8* getelementptr inbounds ([56 x i8], [56 x i8]* @"csbs$7c", i64 0, i64 0), i64 55 }, %..string* %267, align 8, !dbg !3569 | |
%268 = load [2 x i64], [2 x i64]* %16, align 8, !dbg !3569 | |
call void @runtime.bounds_check_error([2 x i64] %268, i32 119, i32 10, i64 2, i64 %266), !dbg !3569 | |
%269 = getelementptr i8, i8* %265, i64 2, !dbg !3569 | |
%270 = load i8, i8* %269, align 1, !dbg !3569 | |
call void @llvm.dbg.value(metadata i8 %270, metadata !3542, metadata !DIExpression()), !dbg !3605 | |
%271 = icmp ult i8 %270, -128, !dbg !3615 | |
br i1 %271, label %if.then10.i.i, label %cmp.or9.i.i, !dbg !3615 | |
cmp.or9.i.i: ; preds = %if.done8.i.i | |
%272 = icmp ult i8 -65, %270, !dbg !3615 | |
br i1 %272, label %if.then10.i.i, label %if.done11.i.i, !dbg !3615 | |
if.then10.i.i: ; preds = %cmp.or9.i.i, %if.done8.i.i | |
%273 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %17, i32 0, i32 0, !dbg !3570 | |
%274 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %17, i32 0, i32 1, !dbg !3570 | |
store i32 65533, i32* %273, align 4, !dbg !3570 | |
store i64 1, i64* %274, align 8, !dbg !3570 | |
%275 = bitcast { i32, i64 }* %17 to [2 x i64]*, !dbg !3570 | |
%276 = load [2 x i64], [2 x i64]* %275, align 8, !dbg !3570 | |
%277 = bitcast { i8*, i64 }* %3 to i8*, !dbg !3570 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %277), !dbg !3570 | |
%278 = bitcast { i8*, i64 }* %4 to i8*, !dbg !3570 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %278), !dbg !3570 | |
%279 = bitcast { i32, i64 }* %5 to i8*, !dbg !3570 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %279), !dbg !3570 | |
%280 = bitcast [2 x i64]* %6 to i8*, !dbg !3570 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %280), !dbg !3570 | |
%281 = bitcast [2 x i64]* %7 to i8*, !dbg !3570 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %281), !dbg !3570 | |
%282 = bitcast [2 x i64]* %8 to i8*, !dbg !3570 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %282), !dbg !3570 | |
%283 = bitcast { i32, i64 }* %9 to i8*, !dbg !3570 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %283), !dbg !3570 | |
%284 = bitcast %utf8.Accept_Range* %10 to i8*, !dbg !3570 | |
call void @llvm.lifetime.end.p0i8(i64 2, i8* %284), !dbg !3570 | |
%285 = bitcast [2 x i64]* %11 to i8*, !dbg !3570 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %285), !dbg !3570 | |
%286 = bitcast { i32, i64 }* %12 to i8*, !dbg !3570 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %286), !dbg !3570 | |
%287 = bitcast [2 x i64]* %13 to i8*, !dbg !3570 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %287), !dbg !3570 | |
%288 = bitcast { i32, i64 }* %14 to i8*, !dbg !3570 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %288), !dbg !3570 | |
%289 = bitcast { i32, i64 }* %15 to i8*, !dbg !3570 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %289), !dbg !3570 | |
%290 = bitcast [2 x i64]* %16 to i8*, !dbg !3570 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %290), !dbg !3570 | |
%291 = bitcast { i32, i64 }* %17 to i8*, !dbg !3570 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %291), !dbg !3570 | |
%292 = bitcast { i32, i64 }* %18 to i8*, !dbg !3570 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %292), !dbg !3570 | |
%293 = bitcast [2 x i64]* %19 to i8*, !dbg !3570 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %293), !dbg !3570 | |
%294 = bitcast { i32, i64 }* %20 to i8*, !dbg !3570 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %294), !dbg !3570 | |
%295 = bitcast { i32, i64 }* %21 to i8*, !dbg !3570 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %295), !dbg !3570 | |
br label %utf8.decode_rune_in_string.exit, !dbg !3570 | |
if.done11.i.i: ; preds = %cmp.or9.i.i | |
%296 = icmp eq i8 %167, 3, !dbg !3616 | |
br i1 %296, label %if.then12.i.i, label %if.done13.i.i, !dbg !3616 | |
if.then12.i.i: ; preds = %if.done11.i.i | |
%297 = and i8 %124, 15, !dbg !3573 | |
%298 = zext i8 %297 to i32, !dbg !3573 | |
%299 = shl i32 %298, 12, !dbg !3573 | |
%300 = and i8 %205, 63, !dbg !3573 | |
%301 = zext i8 %300 to i32, !dbg !3573 | |
%302 = shl i32 %301, 6, !dbg !3573 | |
%303 = or i32 %299, %302, !dbg !3573 | |
%304 = and i8 %270, 63, !dbg !3573 | |
%305 = zext i8 %304 to i32, !dbg !3573 | |
%306 = or i32 %303, %305, !dbg !3573 | |
%307 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %18, i32 0, i32 0, !dbg !3573 | |
%308 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %18, i32 0, i32 1, !dbg !3573 | |
store i32 %306, i32* %307, align 4, !dbg !3573 | |
store i64 3, i64* %308, align 8, !dbg !3573 | |
%309 = bitcast { i32, i64 }* %18 to [2 x i64]*, !dbg !3573 | |
%310 = load [2 x i64], [2 x i64]* %309, align 8, !dbg !3573 | |
%311 = bitcast { i8*, i64 }* %3 to i8*, !dbg !3573 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %311), !dbg !3573 | |
%312 = bitcast { i8*, i64 }* %4 to i8*, !dbg !3573 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %312), !dbg !3573 | |
%313 = bitcast { i32, i64 }* %5 to i8*, !dbg !3573 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %313), !dbg !3573 | |
%314 = bitcast [2 x i64]* %6 to i8*, !dbg !3573 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %314), !dbg !3573 | |
%315 = bitcast [2 x i64]* %7 to i8*, !dbg !3573 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %315), !dbg !3573 | |
%316 = bitcast [2 x i64]* %8 to i8*, !dbg !3573 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %316), !dbg !3573 | |
%317 = bitcast { i32, i64 }* %9 to i8*, !dbg !3573 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %317), !dbg !3573 | |
%318 = bitcast %utf8.Accept_Range* %10 to i8*, !dbg !3573 | |
call void @llvm.lifetime.end.p0i8(i64 2, i8* %318), !dbg !3573 | |
%319 = bitcast [2 x i64]* %11 to i8*, !dbg !3573 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %319), !dbg !3573 | |
%320 = bitcast { i32, i64 }* %12 to i8*, !dbg !3573 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %320), !dbg !3573 | |
%321 = bitcast [2 x i64]* %13 to i8*, !dbg !3573 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %321), !dbg !3573 | |
%322 = bitcast { i32, i64 }* %14 to i8*, !dbg !3573 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %322), !dbg !3573 | |
%323 = bitcast { i32, i64 }* %15 to i8*, !dbg !3573 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %323), !dbg !3573 | |
%324 = bitcast [2 x i64]* %16 to i8*, !dbg !3573 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %324), !dbg !3573 | |
%325 = bitcast { i32, i64 }* %17 to i8*, !dbg !3573 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %325), !dbg !3573 | |
%326 = bitcast { i32, i64 }* %18 to i8*, !dbg !3573 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %326), !dbg !3573 | |
%327 = bitcast [2 x i64]* %19 to i8*, !dbg !3573 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %327), !dbg !3573 | |
%328 = bitcast { i32, i64 }* %20 to i8*, !dbg !3573 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %328), !dbg !3573 | |
%329 = bitcast { i32, i64 }* %21 to i8*, !dbg !3573 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %329), !dbg !3573 | |
br label %utf8.decode_rune_in_string.exit, !dbg !3573 | |
if.done13.i.i: ; preds = %if.done11.i.i | |
call void @llvm.dbg.value(metadata i8 0, metadata !3543, metadata !DIExpression()), !dbg !3605 | |
%330 = load i8*, i8** %120, align 8, !dbg !3576 | |
%331 = load i64, i64* %94, align 8, !dbg !3576 | |
%332 = bitcast [2 x i64]* %19 to %..string*, !dbg !3576 | |
store %..string { i8* getelementptr inbounds ([56 x i8], [56 x i8]* @"csbs$7c", i64 0, i64 0), i64 55 }, %..string* %332, align 8, !dbg !3576 | |
%333 = load [2 x i64], [2 x i64]* %19, align 8, !dbg !3576 | |
call void @runtime.bounds_check_error([2 x i64] %333, i32 126, i32 10, i64 3, i64 %331), !dbg !3576 | |
%334 = getelementptr i8, i8* %330, i64 3, !dbg !3576 | |
%335 = load i8, i8* %334, align 1, !dbg !3576 | |
call void @llvm.dbg.value(metadata i8 %335, metadata !3543, metadata !DIExpression()), !dbg !3605 | |
%336 = icmp ult i8 %335, -128, !dbg !3617 | |
br i1 %336, label %if.then15.i.i, label %cmp.or14.i.i, !dbg !3617 | |
cmp.or14.i.i: ; preds = %if.done13.i.i | |
%337 = icmp ult i8 -65, %335, !dbg !3617 | |
br i1 %337, label %if.then15.i.i, label %if.done16.i.i, !dbg !3617 | |
if.then15.i.i: ; preds = %cmp.or14.i.i, %if.done13.i.i | |
%338 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %20, i32 0, i32 0, !dbg !3577 | |
%339 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %20, i32 0, i32 1, !dbg !3577 | |
store i32 65533, i32* %338, align 4, !dbg !3577 | |
store i64 1, i64* %339, align 8, !dbg !3577 | |
%340 = bitcast { i32, i64 }* %20 to [2 x i64]*, !dbg !3577 | |
%341 = load [2 x i64], [2 x i64]* %340, align 8, !dbg !3577 | |
%342 = bitcast { i8*, i64 }* %3 to i8*, !dbg !3577 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %342), !dbg !3577 | |
%343 = bitcast { i8*, i64 }* %4 to i8*, !dbg !3577 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %343), !dbg !3577 | |
%344 = bitcast { i32, i64 }* %5 to i8*, !dbg !3577 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %344), !dbg !3577 | |
%345 = bitcast [2 x i64]* %6 to i8*, !dbg !3577 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %345), !dbg !3577 | |
%346 = bitcast [2 x i64]* %7 to i8*, !dbg !3577 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %346), !dbg !3577 | |
%347 = bitcast [2 x i64]* %8 to i8*, !dbg !3577 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %347), !dbg !3577 | |
%348 = bitcast { i32, i64 }* %9 to i8*, !dbg !3577 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %348), !dbg !3577 | |
%349 = bitcast %utf8.Accept_Range* %10 to i8*, !dbg !3577 | |
call void @llvm.lifetime.end.p0i8(i64 2, i8* %349), !dbg !3577 | |
%350 = bitcast [2 x i64]* %11 to i8*, !dbg !3577 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %350), !dbg !3577 | |
%351 = bitcast { i32, i64 }* %12 to i8*, !dbg !3577 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %351), !dbg !3577 | |
%352 = bitcast [2 x i64]* %13 to i8*, !dbg !3577 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %352), !dbg !3577 | |
%353 = bitcast { i32, i64 }* %14 to i8*, !dbg !3577 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %353), !dbg !3577 | |
%354 = bitcast { i32, i64 }* %15 to i8*, !dbg !3577 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %354), !dbg !3577 | |
%355 = bitcast [2 x i64]* %16 to i8*, !dbg !3577 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %355), !dbg !3577 | |
%356 = bitcast { i32, i64 }* %17 to i8*, !dbg !3577 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %356), !dbg !3577 | |
%357 = bitcast { i32, i64 }* %18 to i8*, !dbg !3577 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %357), !dbg !3577 | |
%358 = bitcast [2 x i64]* %19 to i8*, !dbg !3577 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %358), !dbg !3577 | |
%359 = bitcast { i32, i64 }* %20 to i8*, !dbg !3577 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %359), !dbg !3577 | |
%360 = bitcast { i32, i64 }* %21 to i8*, !dbg !3577 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %360), !dbg !3577 | |
br label %utf8.decode_rune_in_string.exit, !dbg !3577 | |
if.done16.i.i: ; preds = %cmp.or14.i.i | |
%361 = and i8 %124, 7, !dbg !3580 | |
%362 = zext i8 %361 to i32, !dbg !3580 | |
%363 = shl i32 %362, 18, !dbg !3580 | |
%364 = and i8 %205, 63, !dbg !3580 | |
%365 = zext i8 %364 to i32, !dbg !3580 | |
%366 = shl i32 %365, 12, !dbg !3580 | |
%367 = or i32 %363, %366, !dbg !3580 | |
%368 = and i8 %270, 63, !dbg !3580 | |
%369 = zext i8 %368 to i32, !dbg !3580 | |
%370 = shl i32 %369, 6, !dbg !3580 | |
%371 = or i32 %367, %370, !dbg !3580 | |
%372 = and i8 %335, 63, !dbg !3580 | |
%373 = zext i8 %372 to i32, !dbg !3580 | |
%374 = or i32 %371, %373, !dbg !3580 | |
%375 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %21, i32 0, i32 0, !dbg !3580 | |
%376 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %21, i32 0, i32 1, !dbg !3580 | |
store i32 %374, i32* %375, align 4, !dbg !3580 | |
store i64 4, i64* %376, align 8, !dbg !3580 | |
%377 = bitcast { i32, i64 }* %21 to [2 x i64]*, !dbg !3580 | |
%378 = load [2 x i64], [2 x i64]* %377, align 8, !dbg !3580 | |
%379 = bitcast { i8*, i64 }* %3 to i8*, !dbg !3580 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %379), !dbg !3580 | |
%380 = bitcast { i8*, i64 }* %4 to i8*, !dbg !3580 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %380), !dbg !3580 | |
%381 = bitcast { i32, i64 }* %5 to i8*, !dbg !3580 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %381), !dbg !3580 | |
%382 = bitcast [2 x i64]* %6 to i8*, !dbg !3580 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %382), !dbg !3580 | |
%383 = bitcast [2 x i64]* %7 to i8*, !dbg !3580 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %383), !dbg !3580 | |
%384 = bitcast [2 x i64]* %8 to i8*, !dbg !3580 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %384), !dbg !3580 | |
%385 = bitcast { i32, i64 }* %9 to i8*, !dbg !3580 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %385), !dbg !3580 | |
%386 = bitcast %utf8.Accept_Range* %10 to i8*, !dbg !3580 | |
call void @llvm.lifetime.end.p0i8(i64 2, i8* %386), !dbg !3580 | |
%387 = bitcast [2 x i64]* %11 to i8*, !dbg !3580 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %387), !dbg !3580 | |
%388 = bitcast { i32, i64 }* %12 to i8*, !dbg !3580 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %388), !dbg !3580 | |
%389 = bitcast [2 x i64]* %13 to i8*, !dbg !3580 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %389), !dbg !3580 | |
%390 = bitcast { i32, i64 }* %14 to i8*, !dbg !3580 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %390), !dbg !3580 | |
%391 = bitcast { i32, i64 }* %15 to i8*, !dbg !3580 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %391), !dbg !3580 | |
%392 = bitcast [2 x i64]* %16 to i8*, !dbg !3580 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %392), !dbg !3580 | |
%393 = bitcast { i32, i64 }* %17 to i8*, !dbg !3580 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %393), !dbg !3580 | |
%394 = bitcast { i32, i64 }* %18 to i8*, !dbg !3580 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %394), !dbg !3580 | |
%395 = bitcast [2 x i64]* %19 to i8*, !dbg !3580 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %395), !dbg !3580 | |
%396 = bitcast { i32, i64 }* %20 to i8*, !dbg !3580 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %396), !dbg !3580 | |
%397 = bitcast { i32, i64 }* %21 to i8*, !dbg !3580 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %397), !dbg !3580 | |
br label %utf8.decode_rune_in_string.exit, !dbg !3580 | |
utf8.decode_rune_in_string.exit: ; preds = %if.then.i.i, %if.then1.i.i, %if.then3.i.i, %if.then5.i.i, %if.then7.i.i, %if.then10.i.i, %if.then12.i.i, %if.then15.i.i, %if.done16.i.i | |
%398 = phi [2 x i64] [ %100, %if.then.i.i ], [ %147, %if.then1.i.i ], [ %180, %if.then3.i.i ], [ %215, %if.then5.i.i ], [ %245, %if.then7.i.i ], [ %276, %if.then10.i.i ], [ %310, %if.then12.i.i ], [ %341, %if.then15.i.i ], [ %378, %if.done16.i.i ] | |
%399 = bitcast { i32, i64 }* %24 to [2 x i64]*, !dbg !3581 | |
store [2 x i64] %398, [2 x i64]* %399, align 8, !dbg !3581 | |
%400 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %24, i32 0, i32 0, !dbg !3581 | |
%401 = load i32, i32* %400, align 4, !dbg !3581 | |
%402 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %24, i32 0, i32 1, !dbg !3581 | |
%403 = load i64, i64* %402, align 8, !dbg !3581 | |
%404 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %25, i32 0, i32 0, !dbg !3581 | |
%405 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %25, i32 0, i32 1, !dbg !3581 | |
store i32 %401, i32* %404, align 4, !dbg !3581 | |
store i64 %403, i64* %405, align 8, !dbg !3581 | |
%406 = bitcast { i32, i64 }* %25 to [2 x i64]*, !dbg !3581 | |
%407 = load [2 x i64], [2 x i64]* %406, align 8, !dbg !3581 | |
%408 = bitcast %..string* %22 to i8*, !dbg !3581 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %408), !dbg !3581 | |
%409 = bitcast %..string* %23 to i8*, !dbg !3581 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %409), !dbg !3581 | |
%410 = bitcast { i32, i64 }* %24 to i8*, !dbg !3581 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %410), !dbg !3581 | |
%411 = bitcast { i32, i64 }* %25 to i8*, !dbg !3581 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %411), !dbg !3581 | |
%412 = bitcast { i32, i64 }* %32 to [2 x i64]*, !dbg !3587 | |
store [2 x i64] %407, [2 x i64]* %412, align 8, !dbg !3587 | |
%413 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %32, i32 0, i32 0, !dbg !3587 | |
%414 = load i32, i32* %413, align 4, !dbg !3587 | |
%415 = getelementptr inbounds { i32, i64 }, { i32, i64 }* %32, i32 0, i32 1, !dbg !3587 | |
%416 = load i64, i64* %415, align 8, !dbg !3587 | |
call void @llvm.dbg.value(metadata i32 %414, metadata !3518, metadata !DIExpression()), !dbg !3599 | |
call void @llvm.dbg.value(metadata i64 %416, metadata !3514, metadata !DIExpression()), !dbg !3596 | |
br label %if.done, !dbg !3600 | |
if.done: ; preds = %utf8.decode_rune_in_string.exit, %for.body | |
%.04 = phi i64 [ %416, %utf8.decode_rune_in_string.exit ], [ 1, %for.body ], !dbg !3599 | |
%.0 = phi i32 [ %414, %utf8.decode_rune_in_string.exit ], [ %58, %for.body ], !dbg !3599 | |
call void @llvm.dbg.value(metadata i32 %.0, metadata !3518, metadata !DIExpression()), !dbg !3599 | |
call void @llvm.dbg.value(metadata i64 %.04, metadata !3514, metadata !DIExpression()), !dbg !3596 | |
%417 = icmp eq i64 %.04, 1, !dbg !3618 | |
br i1 %417, label %cmp.and, label %if.done2, !dbg !3618 | |
cmp.and: ; preds = %if.done | |
%418 = icmp eq i32 %.0, 65533, !dbg !3618 | |
br i1 %418, label %if.then1, label %if.done2, !dbg !3618 | |
if.then1: ; preds = %cmp.and | |
%419 = load [2 x i64], [2 x i64]* %45, align 8, !dbg !3619 | |
%420 = call i64 @strings._write_byte-1512([2 x i64] %419, i8 92, i8* %__.context_ptr), !dbg !3619 | |
%421 = add i64 %.03, %420, !dbg !3619 | |
call void @llvm.dbg.value(metadata i64 %421, metadata !3512, metadata !DIExpression()), !dbg !3593 | |
%422 = load [2 x i64], [2 x i64]* %45, align 8, !dbg !3620 | |
%423 = call i64 @strings._write_byte-1512([2 x i64] %422, i8 120, i8* %__.context_ptr), !dbg !3620 | |
%424 = add i64 %421, %423, !dbg !3620 | |
call void @llvm.dbg.value(metadata i64 %424, metadata !3512, metadata !DIExpression()), !dbg !3593 | |
%425 = load i8*, i8** getelementptr inbounds (%..string, %..string* @strings.DIGITS_LOWER-1532, i64 0, i32 0), align 8, !dbg !3588 | |
%426 = load i64, i64* getelementptr inbounds (%..string, %..string* @strings.DIGITS_LOWER-1532, i64 0, i32 1), align 8, !dbg !3588 | |
%427 = load i8*, i8** %53, align 8, !dbg !3588 | |
%428 = load i64, i64* %50, align 8, !dbg !3588 | |
%429 = bitcast [2 x i64]* %33 to %..string*, !dbg !3588 | |
store %..string { i8* getelementptr inbounds ([54 x i8], [54 x i8]* @"csbs$a1", i64 0, i64 0), i64 53 }, %..string* %429, align 8, !dbg !3588 | |
%430 = load [2 x i64], [2 x i64]* %33, align 8, !dbg !3588 | |
call void @runtime.bounds_check_error([2 x i64] %430, i32 247, i32 39, i64 0, i64 %428), !dbg !3588 | |
%431 = load i8, i8* %427, align 1, !dbg !3588 | |
%432 = lshr i8 %431, 4, !dbg !3588 | |
%433 = zext i8 %432 to i64, !dbg !3588 | |
%434 = bitcast [2 x i64]* %34 to %..string*, !dbg !3588 | |
store %..string { i8* getelementptr inbounds ([54 x i8], [54 x i8]* @"csbs$a1", i64 0, i64 0), i64 53 }, %..string* %434, align 8, !dbg !3588 | |
%435 = load [2 x i64], [2 x i64]* %34, align 8, !dbg !3588 | |
call void @runtime.bounds_check_error([2 x i64] %435, i32 247, i32 38, i64 %433, i64 %426), !dbg !3588 | |
%436 = getelementptr i8, i8* %425, i64 %433, !dbg !3588 | |
%437 = load i8, i8* %436, align 1, !dbg !3588 | |
%438 = load [2 x i64], [2 x i64]* %45, align 8, !dbg !3588 | |
%439 = call i64 @strings._write_byte-1512([2 x i64] %438, i8 %437, i8* %__.context_ptr), !dbg !3588 | |
%440 = add i64 %424, %439, !dbg !3588 | |
call void @llvm.dbg.value(metadata i64 %440, metadata !3512, metadata !DIExpression()), !dbg !3593 | |
%441 = load i8*, i8** getelementptr inbounds (%..string, %..string* @strings.DIGITS_LOWER-1532, i64 0, i32 0), align 8, !dbg !3591 | |
%442 = load i64, i64* getelementptr inbounds (%..string, %..string* @strings.DIGITS_LOWER-1532, i64 0, i32 1), align 8, !dbg !3591 | |
%443 = load i8*, i8** %53, align 8, !dbg !3591 | |
%444 = load i64, i64* %50, align 8, !dbg !3591 | |
%445 = bitcast [2 x i64]* %35 to %..string*, !dbg !3591 | |
store %..string { i8* getelementptr inbounds ([54 x i8], [54 x i8]* @"csbs$a1", i64 0, i64 0), i64 53 }, %..string* %445, align 8, !dbg !3591 | |
%446 = load [2 x i64], [2 x i64]* %35, align 8, !dbg !3591 | |
call void @runtime.bounds_check_error([2 x i64] %446, i32 248, i32 39, i64 0, i64 %444), !dbg !3591 | |
%447 = load i8, i8* %443, align 1, !dbg !3591 | |
%448 = and i8 %447, 15, !dbg !3591 | |
%449 = zext i8 %448 to i64, !dbg !3591 | |
%450 = bitcast [2 x i64]* %36 to %..string*, !dbg !3591 | |
store %..string { i8* getelementptr inbounds ([54 x i8], [54 x i8]* @"csbs$a1", i64 0, i64 0), i64 53 }, %..string* %450, align 8, !dbg !3591 | |
%451 = load [2 x i64], [2 x i64]* %36, align 8, !dbg !3591 | |
call void @runtime.bounds_check_error([2 x i64] %451, i32 248, i32 38, i64 %449, i64 %442), !dbg !3591 | |
%452 = getelementptr i8, i8* %441, i64 %449, !dbg !3591 | |
%453 = load i8, i8* %452, align 1, !dbg !3591 | |
%454 = load [2 x i64], [2 x i64]* %45, align 8, !dbg !3591 | |
%455 = call i64 @strings._write_byte-1512([2 x i64] %454, i8 %453, i8* %__.context_ptr), !dbg !3591 | |
%456 = add i64 %440, %455, !dbg !3591 | |
call void @llvm.dbg.value(metadata i64 %456, metadata !3512, metadata !DIExpression()), !dbg !3593 | |
br label %for.post, !dbg !3621 | |
if.done2: ; preds = %cmp.and, %if.done | |
%457 = load [2 x i64], [2 x i64]* %45, align 8, !dbg !3622 | |
%458 = call i64 @strings.write_escaped_rune_writer([2 x i64] %457, i32 %.0, i8 %2, i1 false, i8* %__.context_ptr), !dbg !3622 | |
%459 = add i64 %.03, %458, !dbg !3622 | |
call void @llvm.dbg.value(metadata i64 %459, metadata !3512, metadata !DIExpression()), !dbg !3593 | |
br label %for.post, !dbg !3597 | |
for.post: ; preds = %if.done2, %if.then1 | |
%.1 = phi i64 [ %456, %if.then1 ], [ %459, %if.done2 ], !dbg !3599 | |
call void @llvm.dbg.value(metadata i64 %.1, metadata !3512, metadata !DIExpression()), !dbg !3593 | |
%460 = load i64, i64* %50, align 8, !dbg !3592 | |
%461 = bitcast [2 x i64]* %37 to %..string*, !dbg !3592 | |
store %..string { i8* getelementptr inbounds ([54 x i8], [54 x i8]* @"csbs$a1", i64 0, i64 0), i64 53 }, %..string* %461, align 8, !dbg !3592 | |
%462 = load [2 x i64], [2 x i64]* %37, align 8, !dbg !3592 | |
call void @runtime.slice_expr_error_lo_hi([2 x i64] %462, i32 238, i32 43, i64 %.04, i64 %460, i64 %460), !dbg !3592 | |
%463 = load i8*, i8** %53, align 8, !dbg !3592 | |
%464 = getelementptr i8, i8* %463, i64 %.04, !dbg !3592 | |
%465 = sub i64 %460, %.04, !dbg !3592 | |
%466 = getelementptr inbounds %..string, %..string* %38, i32 0, i32 0, !dbg !3592 | |
store i8* %464, i8** %466, align 8, !dbg !3592 | |
%467 = getelementptr inbounds %..string, %..string* %38, i32 0, i32 1, !dbg !3592 | |
store i64 %465, i64* %467, align 8, !dbg !3592 | |
%468 = bitcast %..string* %38 to i8*, !dbg !3592 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %48, i8* align 8 %468, i64 16, i1 false), !dbg !3592 | |
br label %for.loop, !dbg !3597 | |
for.done: ; preds = %for.loop | |
%469 = load [2 x i64], [2 x i64]* %45, align 8, !dbg !3623 | |
%470 = call i64 @strings._write_byte-1512([2 x i64] %469, i8 %2, i8* %__.context_ptr), !dbg !3623 | |
%471 = add i64 %.03, %470, !dbg !3623 | |
call void @llvm.dbg.value(metadata i64 %471, metadata !3512, metadata !DIExpression()), !dbg !3593 | |
call void @llvm.dbg.value(metadata i64 %471, metadata !3512, metadata !DIExpression()), !dbg !3593 | |
ret i64 %471, !dbg !3624 | |
} | |
define internal i8 @reflect.type_info_union_is_pure_maybe(%runtime.Type_Info_Union* %0, i8* noalias nocapture nonnull %__.context_ptr) !dbg !3625 { | |
decls: | |
%1 = alloca [2 x i64], align 8, !dbg !3630 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !3629, metadata !DIExpression()), !dbg !3632 | |
%2 = getelementptr inbounds %runtime.Type_Info_Union, %runtime.Type_Info_Union* %0, i32 0, i32 6, !dbg !3630 | |
%3 = load i8, i8* %2, align 1, !dbg !3630 | |
%4 = trunc i8 %3 to i1, !dbg !3630 | |
br i1 %4, label %cmp.and, label %logical.cmp.done, !dbg !3630 | |
cmp.and: ; preds = %decls | |
%5 = getelementptr inbounds %runtime.Type_Info_Union, %runtime.Type_Info_Union* %0, i32 0, i32 0, !dbg !3630 | |
%6 = getelementptr inbounds { %runtime.Type_Info**, i64 }, { %runtime.Type_Info**, i64 }* %5, i32 0, i32 1, !dbg !3630 | |
%7 = load i64, i64* %6, align 8, !dbg !3630 | |
%8 = icmp eq i64 %7, 1, !dbg !3630 | |
br i1 %8, label %logical.cmp.rhs, label %logical.cmp.done, !dbg !3630 | |
logical.cmp.rhs: ; preds = %cmp.and | |
%9 = getelementptr inbounds { %runtime.Type_Info**, i64 }, { %runtime.Type_Info**, i64 }* %5, i32 0, i32 0, !dbg !3630 | |
%10 = load %runtime.Type_Info**, %runtime.Type_Info*** %9, align 8, !dbg !3630 | |
%11 = bitcast [2 x i64]* %1 to %..string*, !dbg !3630 | |
store %..string { i8* getelementptr inbounds ([54 x i8], [54 x i8]* @"csbs$a2", i64 0, i64 0), i64 53 }, %..string* %11, align 8, !dbg !3630 | |
%12 = load [2 x i64], [2 x i64]* %1, align 8, !dbg !3630 | |
call void @runtime.bounds_check_error([2 x i64] %12, i32 626, i32 75, i64 0, i64 %7), !dbg !3630 | |
%13 = load %runtime.Type_Info*, %runtime.Type_Info** %10, align 8, !dbg !3630 | |
%14 = call i8 @reflect.is_pointer(%runtime.Type_Info* %13, i8* %__.context_ptr), !dbg !3630 | |
br label %logical.cmp.done, !dbg !3630 | |
logical.cmp.done: ; preds = %logical.cmp.rhs, %cmp.and, %decls | |
%15 = phi i8 [ 0, %decls ], [ 0, %cmp.and ], [ %14, %logical.cmp.rhs ], !dbg !3630 | |
ret i8 %15, !dbg !3630 | |
} | |
define internal i64 @fmt.fprintln(i32 %0, [2 x i64] %1, [2 x i64] %2, i8* noalias nocapture nonnull %__.context_ptr) !dbg !3633 { | |
decls: | |
%3 = alloca { %..any*, i64 }, align 8 | |
call void @llvm.dbg.declare(metadata { %..any*, i64 }* %4, metadata !3642, metadata !DIExpression()), !dbg !3647 | |
%4 = alloca { %..any*, i64 }, align 8 | |
%5 = alloca %..string, align 8 | |
call void @llvm.dbg.declare(metadata %..string* %6, metadata !3643, metadata !DIExpression()), !dbg !3648 | |
%6 = alloca %..string, align 8 | |
call void @llvm.dbg.declare(metadata %io.Writer* %7, metadata !3645, metadata !DIExpression()), !dbg !3649 | |
%7 = alloca %io.Writer, align 8, !dbg !3649 | |
%8 = alloca %io.Stream, align 8, !dbg !3649 | |
%9 = alloca { %io.Writer, i8 }, align 8, !dbg !3649 | |
call void @llvm.dbg.value(metadata i32 %0, metadata !3641, metadata !DIExpression()), !dbg !3650 | |
%10 = bitcast { %..any*, i64 }* %3 to [2 x i64]* | |
store [2 x i64] %1, [2 x i64]* %10, align 8 | |
%11 = bitcast { %..any*, i64 }* %4 to i8* | |
%12 = bitcast { %..any*, i64 }* %3 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %11, i8* align 8 %12, i64 16, i1 false) | |
%13 = bitcast %..string* %5 to [2 x i64]* | |
store [2 x i64] %2, [2 x i64]* %13, align 8 | |
%14 = bitcast %..string* %6 to i8* | |
%15 = bitcast %..string* %5 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %14, i8* align 8 %15, i64 16, i1 false) | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !3644, metadata !DIExpression()), !dbg !3651 | |
%16 = bitcast %io.Writer* %7 to i8*, !dbg !3649 | |
call void @llvm.memset.p0i8.i64(i8* %16, i8 0, i64 16, i1 false), !dbg !3649 | |
%17 = call [2 x i64] @os.stream_from_handle(i32 %0, i8* %__.context_ptr), !dbg !3649 | |
%18 = bitcast %io.Stream* %8 to [2 x i64]*, !dbg !3649 | |
store [2 x i64] %17, [2 x i64]* %18, align 8, !dbg !3649 | |
%19 = bitcast { %io.Writer, i8 }* %9 to i8*, !dbg !3649 | |
call void @llvm.memset.p0i8.i64(i8* %19, i8 0, i64 24, i1 false), !dbg !3649 | |
call void @io.to_writer({ %io.Writer, i8 }* %9, [2 x i64] %17, i8* %__.context_ptr), !dbg !3649 | |
%20 = getelementptr inbounds { %io.Writer, i8 }, { %io.Writer, i8 }* %9, i32 0, i32 0, !dbg !3649 | |
%21 = bitcast %io.Writer* %20 to i8*, !dbg !3649 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %16, i8* align 8 %21, i64 16, i1 false), !dbg !3649 | |
%22 = bitcast %io.Writer* %7 to [2 x i64]*, !dbg !3652 | |
%23 = load [2 x i64], [2 x i64]* %22, align 8, !dbg !3652 | |
%24 = bitcast { %..any*, i64 }* %4 to [2 x i64]*, !dbg !3652 | |
%25 = load [2 x i64], [2 x i64]* %24, align 8, !dbg !3652 | |
%26 = bitcast %..string* %6 to [2 x i64]*, !dbg !3652 | |
%27 = load [2 x i64], [2 x i64]* %26, align 8, !dbg !3652 | |
%28 = call i64 @fmt.wprintln([2 x i64] %23, [2 x i64] %25, [2 x i64] %27, i8* %__.context_ptr), !dbg !3652 | |
ret i64 %28, !dbg !3652 | |
} | |
define internal i64 @strings.write_encoded_rune_writer([2 x i64] %0, i32 %1, i1 zeroext %2, i8* noalias nocapture nonnull %__.context_ptr) !dbg !3653 { | |
decls: | |
%3 = alloca %io.Writer, align 8 | |
call void @llvm.dbg.declare(metadata %io.Writer* %4, metadata !3657, metadata !DIExpression()), !dbg !3669 | |
%4 = alloca %io.Writer, align 8 | |
%5 = alloca [2 x i64], align 8, !dbg !3670 | |
%6 = alloca [2 x i64], align 8, !dbg !3673 | |
%7 = alloca [2 x i64], align 8, !dbg !3674 | |
%8 = alloca [2 x i64], align 8, !dbg !3675 | |
%9 = alloca [2 x i64], align 8, !dbg !3676 | |
%10 = alloca [2 x i64], align 8, !dbg !3677 | |
%11 = alloca [2 x i64], align 8, !dbg !3678 | |
%12 = alloca [2 x i64], align 8, !dbg !3679 | |
%13 = alloca [2 x i64], align 8, !dbg !3680 | |
call void @llvm.dbg.declare(metadata [2 x i8]* %14, metadata !3662, metadata !DIExpression()), !dbg !3681 | |
%14 = alloca [2 x i8], align 1, !dbg !3681 | |
call void @llvm.dbg.declare(metadata %..string* %15, metadata !3666, metadata !DIExpression()), !dbg !3682 | |
%15 = alloca %..string, align 8, !dbg !3682 | |
%16 = alloca { i8*, i64 }, align 8, !dbg !3682 | |
%17 = alloca %..string, align 8, !dbg !3682 | |
%18 = alloca [2 x i64], align 8, !dbg !3683 | |
%19 = alloca { i64, i32 }, align 8, !dbg !3685 | |
%20 = bitcast %io.Writer* %3 to [2 x i64]* | |
store [2 x i64] %0, [2 x i64]* %20, align 8 | |
%21 = bitcast %io.Writer* %4 to i8* | |
%22 = bitcast %io.Writer* %3 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %21, i8* align 8 %22, i64 16, i1 false) | |
call void @llvm.dbg.value(metadata i32 %1, metadata !3658, metadata !DIExpression()), !dbg !3686 | |
call void @llvm.dbg.value(metadata i8 undef, metadata !3659, metadata !DIExpression()), !dbg !3686 | |
call void @llvm.dbg.value(metadata i64 0, metadata !3660, metadata !DIExpression()), !dbg !3686 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !3661, metadata !DIExpression()), !dbg !3687 | |
br i1 %2, label %if.then, label %if.done, !dbg !3688 | |
if.then: ; preds = %decls | |
%23 = bitcast %io.Writer* %4 to [2 x i64]*, !dbg !3689 | |
%24 = load [2 x i64], [2 x i64]* %23, align 8, !dbg !3689 | |
%25 = call i64 @strings._write_byte-1512([2 x i64] %24, i8 39, i8* %__.context_ptr), !dbg !3689 | |
call void @llvm.dbg.value(metadata i64 %25, metadata !3660, metadata !DIExpression()), !dbg !3686 | |
br label %if.done, !dbg !3688 | |
if.done: ; preds = %if.then, %decls | |
%.0 = phi i64 [ %25, %if.then ], [ 0, %decls ] | |
call void @llvm.dbg.value(metadata i64 %.0, metadata !3660, metadata !DIExpression()), !dbg !3686 | |
switch i32 %1, label %switch.default.body [ | |
i32 7, label %switch.case.body | |
i32 8, label %switch.case.body1 | |
i32 27, label %switch.case.body2 | |
i32 12, label %switch.case.body3 | |
i32 10, label %switch.case.body4 | |
i32 13, label %switch.case.body5 | |
i32 9, label %switch.case.body6 | |
i32 11, label %switch.case.body7 | |
], !dbg !3692 | |
switch.case.body: ; preds = %if.done | |
%26 = bitcast %io.Writer* %4 to [2 x i64]*, !dbg !3670 | |
%27 = load [2 x i64], [2 x i64]* %26, align 8, !dbg !3670 | |
%28 = bitcast [2 x i64]* %5 to %..string*, !dbg !3670 | |
store %..string { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"csbs$a3", i64 0, i64 0), i64 3 }, %..string* %28, align 8, !dbg !3670 | |
%29 = load [2 x i64], [2 x i64]* %5, align 8, !dbg !3670 | |
%30 = call i64 @strings.write_string_writer([2 x i64] %27, [2 x i64] %29, i8* %__.context_ptr), !dbg !3670 | |
%31 = add i64 %.0, %30, !dbg !3670 | |
call void @llvm.dbg.value(metadata i64 %31, metadata !3660, metadata !DIExpression()), !dbg !3686 | |
br label %switch.done13, !dbg !3692 | |
switch.case.body1: ; preds = %if.done | |
%32 = bitcast %io.Writer* %4 to [2 x i64]*, !dbg !3673 | |
%33 = load [2 x i64], [2 x i64]* %32, align 8, !dbg !3673 | |
%34 = bitcast [2 x i64]* %6 to %..string*, !dbg !3673 | |
store %..string { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"csbs$a4", i64 0, i64 0), i64 3 }, %..string* %34, align 8, !dbg !3673 | |
%35 = load [2 x i64], [2 x i64]* %6, align 8, !dbg !3673 | |
%36 = call i64 @strings.write_string_writer([2 x i64] %33, [2 x i64] %35, i8* %__.context_ptr), !dbg !3673 | |
%37 = add i64 %.0, %36, !dbg !3673 | |
call void @llvm.dbg.value(metadata i64 %37, metadata !3660, metadata !DIExpression()), !dbg !3686 | |
br label %switch.done13, !dbg !3692 | |
switch.case.body2: ; preds = %if.done | |
%38 = bitcast %io.Writer* %4 to [2 x i64]*, !dbg !3674 | |
%39 = load [2 x i64], [2 x i64]* %38, align 8, !dbg !3674 | |
%40 = bitcast [2 x i64]* %7 to %..string*, !dbg !3674 | |
store %..string { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"csbs$a5", i64 0, i64 0), i64 3 }, %..string* %40, align 8, !dbg !3674 | |
%41 = load [2 x i64], [2 x i64]* %7, align 8, !dbg !3674 | |
%42 = call i64 @strings.write_string_writer([2 x i64] %39, [2 x i64] %41, i8* %__.context_ptr), !dbg !3674 | |
%43 = add i64 %.0, %42, !dbg !3674 | |
call void @llvm.dbg.value(metadata i64 %43, metadata !3660, metadata !DIExpression()), !dbg !3686 | |
br label %switch.done13, !dbg !3692 | |
switch.case.body3: ; preds = %if.done | |
%44 = bitcast %io.Writer* %4 to [2 x i64]*, !dbg !3675 | |
%45 = load [2 x i64], [2 x i64]* %44, align 8, !dbg !3675 | |
%46 = bitcast [2 x i64]* %8 to %..string*, !dbg !3675 | |
store %..string { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"csbs$a6", i64 0, i64 0), i64 3 }, %..string* %46, align 8, !dbg !3675 | |
%47 = load [2 x i64], [2 x i64]* %8, align 8, !dbg !3675 | |
%48 = call i64 @strings.write_string_writer([2 x i64] %45, [2 x i64] %47, i8* %__.context_ptr), !dbg !3675 | |
%49 = add i64 %.0, %48, !dbg !3675 | |
call void @llvm.dbg.value(metadata i64 %49, metadata !3660, metadata !DIExpression()), !dbg !3686 | |
br label %switch.done13, !dbg !3692 | |
switch.case.body4: ; preds = %if.done | |
%50 = bitcast %io.Writer* %4 to [2 x i64]*, !dbg !3676 | |
%51 = load [2 x i64], [2 x i64]* %50, align 8, !dbg !3676 | |
%52 = bitcast [2 x i64]* %9 to %..string*, !dbg !3676 | |
store %..string { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"csbs$a7", i64 0, i64 0), i64 3 }, %..string* %52, align 8, !dbg !3676 | |
%53 = load [2 x i64], [2 x i64]* %9, align 8, !dbg !3676 | |
%54 = call i64 @strings.write_string_writer([2 x i64] %51, [2 x i64] %53, i8* %__.context_ptr), !dbg !3676 | |
%55 = add i64 %.0, %54, !dbg !3676 | |
call void @llvm.dbg.value(metadata i64 %55, metadata !3660, metadata !DIExpression()), !dbg !3686 | |
br label %switch.done13, !dbg !3692 | |
switch.case.body5: ; preds = %if.done | |
%56 = bitcast %io.Writer* %4 to [2 x i64]*, !dbg !3677 | |
%57 = load [2 x i64], [2 x i64]* %56, align 8, !dbg !3677 | |
%58 = bitcast [2 x i64]* %10 to %..string*, !dbg !3677 | |
store %..string { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"csbs$a8", i64 0, i64 0), i64 3 }, %..string* %58, align 8, !dbg !3677 | |
%59 = load [2 x i64], [2 x i64]* %10, align 8, !dbg !3677 | |
%60 = call i64 @strings.write_string_writer([2 x i64] %57, [2 x i64] %59, i8* %__.context_ptr), !dbg !3677 | |
%61 = add i64 %.0, %60, !dbg !3677 | |
call void @llvm.dbg.value(metadata i64 %61, metadata !3660, metadata !DIExpression()), !dbg !3686 | |
br label %switch.done13, !dbg !3692 | |
switch.case.body6: ; preds = %if.done | |
%62 = bitcast %io.Writer* %4 to [2 x i64]*, !dbg !3678 | |
%63 = load [2 x i64], [2 x i64]* %62, align 8, !dbg !3678 | |
%64 = bitcast [2 x i64]* %11 to %..string*, !dbg !3678 | |
store %..string { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"csbs$a9", i64 0, i64 0), i64 3 }, %..string* %64, align 8, !dbg !3678 | |
%65 = load [2 x i64], [2 x i64]* %11, align 8, !dbg !3678 | |
%66 = call i64 @strings.write_string_writer([2 x i64] %63, [2 x i64] %65, i8* %__.context_ptr), !dbg !3678 | |
%67 = add i64 %.0, %66, !dbg !3678 | |
call void @llvm.dbg.value(metadata i64 %67, metadata !3660, metadata !DIExpression()), !dbg !3686 | |
br label %switch.done13, !dbg !3692 | |
switch.case.body7: ; preds = %if.done | |
%68 = bitcast %io.Writer* %4 to [2 x i64]*, !dbg !3679 | |
%69 = load [2 x i64], [2 x i64]* %68, align 8, !dbg !3679 | |
%70 = bitcast [2 x i64]* %12 to %..string*, !dbg !3679 | |
store %..string { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"csbs$aa", i64 0, i64 0), i64 3 }, %..string* %70, align 8, !dbg !3679 | |
%71 = load [2 x i64], [2 x i64]* %12, align 8, !dbg !3679 | |
%72 = call i64 @strings.write_string_writer([2 x i64] %69, [2 x i64] %71, i8* %__.context_ptr), !dbg !3679 | |
%73 = add i64 %.0, %72, !dbg !3679 | |
call void @llvm.dbg.value(metadata i64 %73, metadata !3660, metadata !DIExpression()), !dbg !3686 | |
br label %switch.done13, !dbg !3692 | |
switch.default.body: ; preds = %if.done | |
%74 = icmp slt i32 %1, 32, !dbg !3693 | |
%75 = bitcast %io.Writer* %4 to [2 x i64]*, !dbg !3694 | |
%76 = load [2 x i64], [2 x i64]* %75, align 8, !dbg !3694 | |
br i1 %74, label %if.then8, label %if.else, !dbg !3693 | |
if.then8: ; preds = %switch.default.body | |
%77 = bitcast [2 x i64]* %13 to %..string*, !dbg !3680 | |
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$ab", i64 0, i64 0), i64 2 }, %..string* %77, align 8, !dbg !3680 | |
%78 = load [2 x i64], [2 x i64]* %13, align 8, !dbg !3680 | |
%79 = call i64 @strings.write_string_writer([2 x i64] %76, [2 x i64] %78, i8* %__.context_ptr), !dbg !3680 | |
%80 = add i64 %.0, %79, !dbg !3680 | |
call void @llvm.dbg.value(metadata i64 %80, metadata !3660, metadata !DIExpression()), !dbg !3686 | |
%81 = bitcast [2 x i8]* %14 to i8*, !dbg !3681 | |
call void @llvm.memset.p0i8.i64(i8* %81, i8 0, i64 2, i1 false), !dbg !3681 | |
%82 = bitcast %..string* %15 to i8*, !dbg !3682 | |
call void @llvm.memset.p0i8.i64(i8* %82, i8 0, i64 16, i1 false), !dbg !3682 | |
%83 = getelementptr [2 x i8], [2 x i8]* %14, i64 0, i64 0, !dbg !3682 | |
%84 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %16, i32 0, i32 0, !dbg !3682 | |
store i8* %83, i8** %84, align 8, !dbg !3682 | |
%85 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %16, i32 0, i32 1, !dbg !3682 | |
store i64 2, i64* %85, align 8, !dbg !3682 | |
%86 = sext i32 %1 to i64, !dbg !3682 | |
%87 = bitcast { i8*, i64 }* %16 to [2 x i64]*, !dbg !3682 | |
%88 = load [2 x i64], [2 x i64]* %87, align 8, !dbg !3682 | |
%89 = load [2 x i64], [2 x i64]* bitcast (%..string* @strconv.digits to [2 x i64]*), align 8, !dbg !3682 | |
%90 = call [2 x i64] @strconv.append_bits([2 x i64] %88, i64 %86, i64 16, i1 true, i64 64, [2 x i64] %89, i8 0, i8* %__.context_ptr), !dbg !3682 | |
%91 = bitcast %..string* %17 to [2 x i64]*, !dbg !3682 | |
store [2 x i64] %90, [2 x i64]* %91, align 8, !dbg !3682 | |
%92 = bitcast %..string* %17 to i8*, !dbg !3682 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %82, i8* align 8 %92, i64 16, i1 false), !dbg !3682 | |
%93 = getelementptr inbounds %..string, %..string* %15, i32 0, i32 1, !dbg !3695 | |
%94 = load i64, i64* %93, align 8, !dbg !3695 | |
switch i64 %94, label %switch.done13 [ | |
i64 0, label %switch.case.body9 | |
i64 1, label %switch.case.body10 | |
i64 2, label %switch.case.body11 | |
], !dbg !3695 | |
switch.case.body9: ; preds = %if.then8 | |
%95 = load [2 x i64], [2 x i64]* %75, align 8, !dbg !3683 | |
%96 = bitcast [2 x i64]* %18 to %..string*, !dbg !3683 | |
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$ac", i64 0, i64 0), i64 2 }, %..string* %96, align 8, !dbg !3683 | |
%97 = load [2 x i64], [2 x i64]* %18, align 8, !dbg !3683 | |
%98 = call i64 @strings.write_string_writer([2 x i64] %95, [2 x i64] %97, i8* %__.context_ptr), !dbg !3683 | |
%99 = add i64 %80, %98, !dbg !3683 | |
call void @llvm.dbg.value(metadata i64 %99, metadata !3660, metadata !DIExpression()), !dbg !3686 | |
br label %switch.done13, !dbg !3695 | |
switch.case.body10: ; preds = %if.then8 | |
%100 = load [2 x i64], [2 x i64]* %75, align 8, !dbg !3696 | |
%101 = call i64 @strings._write_byte-1512([2 x i64] %100, i8 48, i8* %__.context_ptr), !dbg !3696 | |
%102 = add i64 %80, %101, !dbg !3696 | |
call void @llvm.dbg.value(metadata i64 %102, metadata !3660, metadata !DIExpression()), !dbg !3686 | |
br label %switch.done13, !dbg !3695 | |
switch.case.body11: ; preds = %if.then8 | |
%103 = load [2 x i64], [2 x i64]* %75, align 8, !dbg !3697 | |
%104 = bitcast %..string* %15 to [2 x i64]*, !dbg !3697 | |
%105 = load [2 x i64], [2 x i64]* %104, align 8, !dbg !3697 | |
%106 = call i64 @strings.write_string_writer([2 x i64] %103, [2 x i64] %105, i8* %__.context_ptr), !dbg !3697 | |
%107 = add i64 %80, %106, !dbg !3697 | |
call void @llvm.dbg.value(metadata i64 %107, metadata !3660, metadata !DIExpression()), !dbg !3686 | |
br label %switch.done13, !dbg !3695 | |
if.else: ; preds = %switch.default.body | |
call void @llvm.dbg.value(metadata i64 0, metadata !3667, metadata !DIExpression()), !dbg !3698 | |
%108 = call [2 x i64] @io.write_rune([2 x i64] %76, i32 %1, i8* %__.context_ptr), !dbg !3685 | |
%109 = bitcast { i64, i32 }* %19 to [2 x i64]*, !dbg !3685 | |
store [2 x i64] %108, [2 x i64]* %109, align 8, !dbg !3685 | |
%110 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %19, i32 0, i32 0, !dbg !3685 | |
%111 = load i64, i64* %110, align 8, !dbg !3685 | |
call void @llvm.dbg.value(metadata i64 %111, metadata !3667, metadata !DIExpression()), !dbg !3698 | |
%112 = add i64 %.0, %111, !dbg !3699 | |
call void @llvm.dbg.value(metadata i64 %112, metadata !3660, metadata !DIExpression()), !dbg !3686 | |
br label %switch.done13, !dbg !3693 | |
switch.done13: ; preds = %if.else, %switch.case.body11, %switch.case.body10, %switch.case.body9, %if.then8, %switch.case.body7, %switch.case.body6, %switch.case.body5, %switch.case.body4, %switch.case.body3, %switch.case.body2, %switch.case.body1, %switch.case.body | |
%.3 = phi i64 [ %73, %switch.case.body7 ], [ %67, %switch.case.body6 ], [ %61, %switch.case.body5 ], [ %55, %switch.case.body4 ], [ %49, %switch.case.body3 ], [ %43, %switch.case.body2 ], [ %37, %switch.case.body1 ], [ %31, %switch.case.body ], [ %112, %if.else ], [ %80, %if.then8 ], [ %107, %switch.case.body11 ], [ %102, %switch.case.body10 ], [ %99, %switch.case.body9 ], !dbg !3686 | |
call void @llvm.dbg.value(metadata i64 %.3, metadata !3660, metadata !DIExpression()), !dbg !3686 | |
br i1 %2, label %if.then14, label %if.done15, !dbg !3700 | |
if.then14: ; preds = %switch.done13 | |
%113 = bitcast %io.Writer* %4 to [2 x i64]*, !dbg !3701 | |
%114 = load [2 x i64], [2 x i64]* %113, align 8, !dbg !3701 | |
%115 = call i64 @strings._write_byte-1512([2 x i64] %114, i8 39, i8* %__.context_ptr), !dbg !3701 | |
%116 = add i64 %.3, %115, !dbg !3701 | |
call void @llvm.dbg.value(metadata i64 %116, metadata !3660, metadata !DIExpression()), !dbg !3686 | |
br label %if.done15, !dbg !3700 | |
if.done15: ; preds = %if.then14, %switch.done13 | |
%.4 = phi i64 [ %116, %if.then14 ], [ %.3, %switch.done13 ], !dbg !3686 | |
call void @llvm.dbg.value(metadata i64 %.4, metadata !3660, metadata !DIExpression()), !dbg !3686 | |
call void @llvm.dbg.value(metadata i64 %.4, metadata !3660, metadata !DIExpression()), !dbg !3686 | |
ret i64 %.4, !dbg !3704 | |
} | |
define internal i64 @strings.write_escaped_rune_writer([2 x i64] %0, i32 %1, i8 %2, i1 zeroext %3, i8* noalias nocapture nonnull %__.context_ptr) !dbg !3705 { | |
decls: | |
%4 = alloca %io.Writer, align 8 | |
call void @llvm.dbg.declare(metadata %io.Writer* %5, metadata !3709, metadata !DIExpression()), !dbg !3723 | |
%5 = alloca %io.Writer, align 8 | |
%6 = alloca [2 x i64], align 8, !dbg !3724 | |
%7 = alloca [2 x i64], align 8, !dbg !3726 | |
%8 = alloca [2 x i64], align 8, !dbg !3729 | |
%9 = alloca [2 x i64], align 8, !dbg !3730 | |
%10 = alloca [2 x i64], align 8, !dbg !3731 | |
%11 = alloca [2 x i64], align 8, !dbg !3732 | |
%12 = alloca [2 x i64], align 8, !dbg !3733 | |
%13 = alloca [2 x i64], align 8, !dbg !3734 | |
%14 = alloca [2 x i64], align 8, !dbg !3735 | |
%15 = alloca [2 x i64], align 8, !dbg !3736 | |
%16 = alloca [2 x i64], align 8, !dbg !3737 | |
%17 = alloca [2 x i64], align 8, !dbg !3738 | |
%18 = alloca [2 x i64], align 8, !dbg !3740 | |
%19 = bitcast %io.Writer* %4 to [2 x i64]* | |
store [2 x i64] %0, [2 x i64]* %19, align 8 | |
%20 = bitcast %io.Writer* %5 to i8* | |
%21 = bitcast %io.Writer* %4 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %20, i8* align 8 %21, i64 16, i1 false) | |
call void @llvm.dbg.value(metadata i32 %1, metadata !3710, metadata !DIExpression()), !dbg !3742 | |
call void @llvm.dbg.value(metadata i8 %2, metadata !3711, metadata !DIExpression()), !dbg !3742 | |
call void @llvm.dbg.value(metadata i8 undef, metadata !3712, metadata !DIExpression()), !dbg !3742 | |
call void @llvm.dbg.value(metadata i64 0, metadata !3713, metadata !DIExpression()), !dbg !3742 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !3714, metadata !DIExpression()), !dbg !3743 | |
br i1 %3, label %if.then, label %if.done, !dbg !3744 | |
if.then: ; preds = %decls | |
switch i32 %1, label %if.done [ | |
i32 60, label %switch.case.body | |
i32 62, label %switch.case.body | |
i32 38, label %switch.case.body | |
], !dbg !3745 | |
switch.case.body: ; preds = %if.then, %if.then, %if.then | |
%22 = bitcast %io.Writer* %5 to [2 x i64]*, !dbg !3748 | |
%23 = load [2 x i64], [2 x i64]* %22, align 8, !dbg !3748 | |
%24 = call i64 @strings._write_byte-1512([2 x i64] %23, i8 92, i8* %__.context_ptr), !dbg !3748 | |
call void @llvm.dbg.value(metadata i64 %24, metadata !3713, metadata !DIExpression()), !dbg !3742 | |
%25 = load [2 x i64], [2 x i64]* %22, align 8, !dbg !3750 | |
%26 = call i64 @strings._write_byte-1512([2 x i64] %25, i8 117, i8* %__.context_ptr), !dbg !3750 | |
%27 = add i64 %24, %26, !dbg !3750 | |
call void @llvm.dbg.value(metadata i64 %27, metadata !3713, metadata !DIExpression()), !dbg !3742 | |
call void @llvm.dbg.value(metadata i64 12, metadata !3715, metadata !DIExpression()), !dbg !3751 | |
br label %for.loop, !dbg !3752 | |
for.loop: ; preds = %for.body, %switch.case.body | |
%.034 = phi i64 [ 12, %switch.case.body ], [ %44, %for.body ], !dbg !3742 | |
%.033 = phi i64 [ %27, %switch.case.body ], [ %43, %for.body ], !dbg !3742 | |
call void @llvm.dbg.value(metadata i64 %.033, metadata !3713, metadata !DIExpression()), !dbg !3742 | |
call void @llvm.dbg.value(metadata i64 %.034, metadata !3715, metadata !DIExpression()), !dbg !3751 | |
%28 = icmp sge i64 %.034, 0, !dbg !3752 | |
br i1 %28, label %for.body, label %for.done, !dbg !3752 | |
for.body: ; preds = %for.loop | |
%29 = load i8*, i8** getelementptr inbounds (%..string, %..string* @strings.DIGITS_LOWER-1532, i64 0, i32 0), align 8, !dbg !3724 | |
%30 = load i64, i64* getelementptr inbounds (%..string, %..string* @strings.DIGITS_LOWER-1532, i64 0, i32 1), align 8, !dbg !3724 | |
%31 = trunc i64 %.034 to i32, !dbg !3724 | |
%32 = icmp ult i32 %31, 32, !dbg !3724 | |
%33 = ashr i32 %1, %31, !dbg !3724 | |
%34 = select i1 %32, i32 %33, i32 0, !dbg !3724 | |
%35 = and i32 %34, 15, !dbg !3724 | |
%36 = sext i32 %35 to i64, !dbg !3724 | |
%37 = bitcast [2 x i64]* %6 to %..string*, !dbg !3724 | |
store %..string { i8* getelementptr inbounds ([54 x i8], [54 x i8]* @"csbs$a1", i64 0, i64 0), i64 53 }, %..string* %37, align 8, !dbg !3724 | |
%38 = load [2 x i64], [2 x i64]* %6, align 8, !dbg !3724 | |
call void @runtime.bounds_check_error([2 x i64] %38, i32 334, i32 38, i64 %36, i64 %30), !dbg !3724 | |
%39 = getelementptr i8, i8* %29, i64 %36, !dbg !3724 | |
%40 = load i8, i8* %39, align 1, !dbg !3724 | |
%41 = load [2 x i64], [2 x i64]* %22, align 8, !dbg !3724 | |
%42 = call i64 @strings._write_byte-1512([2 x i64] %41, i8 %40, i8* %__.context_ptr), !dbg !3724 | |
%43 = add i64 %.033, %42, !dbg !3724 | |
call void @llvm.dbg.value(metadata i64 %43, metadata !3713, metadata !DIExpression()), !dbg !3742 | |
%44 = sub i64 %.034, 4, !dbg !3753 | |
call void @llvm.dbg.value(metadata i64 %44, metadata !3715, metadata !DIExpression()), !dbg !3751 | |
br label %for.loop, !dbg !3752 | |
for.done: ; preds = %switch.case.body5, %switch.case.body6, %switch.case.body7, %switch.case.body8, %switch.case.body9, %switch.case.body10, %switch.case.body11, %switch.case.body12, %for.loop25, %for.loop19, %switch.case.body13, %for.loop | |
%merge = phi i64 [ %.033, %for.loop ], [ %99, %switch.case.body12 ], [ %94, %switch.case.body11 ], [ %89, %switch.case.body10 ], [ %84, %switch.case.body9 ], [ %79, %switch.case.body8 ], [ %74, %switch.case.body7 ], [ %69, %switch.case.body6 ], [ %64, %switch.case.body5 ], [ %130, %switch.case.body13 ], [ %.1, %for.loop19 ], [ %.2, %for.loop25 ] | |
call void @llvm.dbg.value(metadata i64 %.033, metadata !3713, metadata !DIExpression()), !dbg !3742 | |
ret i64 %merge, !dbg !3754 | |
if.done: ; preds = %if.then, %decls | |
%45 = zext i8 %2 to i32, !dbg !3755 | |
%46 = icmp eq i32 %1, %45, !dbg !3755 | |
br i1 %46, label %if.then1, label %cmp.or, !dbg !3755 | |
cmp.or: ; preds = %if.done | |
%47 = icmp eq i32 %1, 92, !dbg !3755 | |
br i1 %47, label %if.then1, label %if.else, !dbg !3755 | |
if.then1: ; preds = %cmp.or, %if.done | |
%48 = bitcast %io.Writer* %5 to [2 x i64]*, !dbg !3756 | |
%49 = load [2 x i64], [2 x i64]* %48, align 8, !dbg !3756 | |
%50 = call i64 @strings._write_byte-1512([2 x i64] %49, i8 92, i8* %__.context_ptr), !dbg !3756 | |
call void @llvm.dbg.value(metadata i64 %50, metadata !3713, metadata !DIExpression()), !dbg !3742 | |
%51 = trunc i32 %1 to i8, !dbg !3759 | |
%52 = load [2 x i64], [2 x i64]* %48, align 8, !dbg !3759 | |
%53 = call i64 @strings._write_byte-1512([2 x i64] %52, i8 %51, i8* %__.context_ptr), !dbg !3759 | |
%54 = add i64 %50, %53, !dbg !3759 | |
call void @llvm.dbg.value(metadata i64 %54, metadata !3713, metadata !DIExpression()), !dbg !3742 | |
call void @llvm.dbg.value(metadata i64 %54, metadata !3713, metadata !DIExpression()), !dbg !3742 | |
ret i64 %54, !dbg !3760 | |
if.else: ; preds = %cmp.or | |
%55 = call i8 @strings.write_escaped_rune_writer.is_printable-0(i32 %1, i8* %__.context_ptr), !dbg !3761 | |
%56 = trunc i8 %55 to i1, !dbg !3761 | |
br i1 %56, label %if.then2, label %if.done4, !dbg !3761 | |
if.then2: ; preds = %if.else | |
%57 = bitcast %io.Writer* %5 to [2 x i64]*, !dbg !3763 | |
%58 = load [2 x i64], [2 x i64]* %57, align 8, !dbg !3763 | |
%59 = call i64 @strings.write_encoded_rune_writer([2 x i64] %58, i32 %1, i1 false, i8* %__.context_ptr), !dbg !3763 | |
call void @llvm.dbg.value(metadata i64 %59, metadata !3713, metadata !DIExpression()), !dbg !3742 | |
call void @llvm.dbg.value(metadata i64 %59, metadata !3713, metadata !DIExpression()), !dbg !3742 | |
ret i64 %59, !dbg !3765 | |
if.done4: ; preds = %if.else | |
switch i32 %1, label %switch.default.body [ | |
i32 7, label %switch.case.body5 | |
i32 8, label %switch.case.body6 | |
i32 27, label %switch.case.body7 | |
i32 12, label %switch.case.body8 | |
i32 10, label %switch.case.body9 | |
i32 13, label %switch.case.body10 | |
i32 9, label %switch.case.body11 | |
i32 11, label %switch.case.body12 | |
], !dbg !3766 | |
switch.case.body5: ; preds = %if.done4 | |
%60 = bitcast %io.Writer* %5 to [2 x i64]*, !dbg !3726 | |
%61 = load [2 x i64], [2 x i64]* %60, align 8, !dbg !3726 | |
%62 = bitcast [2 x i64]* %7 to %..string*, !dbg !3726 | |
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$ad", i64 0, i64 0), i64 2 }, %..string* %62, align 8, !dbg !3726 | |
%63 = load [2 x i64], [2 x i64]* %7, align 8, !dbg !3726 | |
%64 = call i64 @strings.write_string_writer([2 x i64] %61, [2 x i64] %63, i8* %__.context_ptr), !dbg !3726 | |
call void @llvm.dbg.value(metadata i64 %64, metadata !3713, metadata !DIExpression()), !dbg !3742 | |
br label %for.done, !dbg !3766 | |
switch.case.body6: ; preds = %if.done4 | |
%65 = bitcast %io.Writer* %5 to [2 x i64]*, !dbg !3729 | |
%66 = load [2 x i64], [2 x i64]* %65, align 8, !dbg !3729 | |
%67 = bitcast [2 x i64]* %8 to %..string*, !dbg !3729 | |
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$ae", i64 0, i64 0), i64 2 }, %..string* %67, align 8, !dbg !3729 | |
%68 = load [2 x i64], [2 x i64]* %8, align 8, !dbg !3729 | |
%69 = call i64 @strings.write_string_writer([2 x i64] %66, [2 x i64] %68, i8* %__.context_ptr), !dbg !3729 | |
call void @llvm.dbg.value(metadata i64 %69, metadata !3713, metadata !DIExpression()), !dbg !3742 | |
br label %for.done, !dbg !3766 | |
switch.case.body7: ; preds = %if.done4 | |
%70 = bitcast %io.Writer* %5 to [2 x i64]*, !dbg !3730 | |
%71 = load [2 x i64], [2 x i64]* %70, align 8, !dbg !3730 | |
%72 = bitcast [2 x i64]* %9 to %..string*, !dbg !3730 | |
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$af", i64 0, i64 0), i64 2 }, %..string* %72, align 8, !dbg !3730 | |
%73 = load [2 x i64], [2 x i64]* %9, align 8, !dbg !3730 | |
%74 = call i64 @strings.write_string_writer([2 x i64] %71, [2 x i64] %73, i8* %__.context_ptr), !dbg !3730 | |
call void @llvm.dbg.value(metadata i64 %74, metadata !3713, metadata !DIExpression()), !dbg !3742 | |
br label %for.done, !dbg !3766 | |
switch.case.body8: ; preds = %if.done4 | |
%75 = bitcast %io.Writer* %5 to [2 x i64]*, !dbg !3731 | |
%76 = load [2 x i64], [2 x i64]* %75, align 8, !dbg !3731 | |
%77 = bitcast [2 x i64]* %10 to %..string*, !dbg !3731 | |
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$b0", i64 0, i64 0), i64 2 }, %..string* %77, align 8, !dbg !3731 | |
%78 = load [2 x i64], [2 x i64]* %10, align 8, !dbg !3731 | |
%79 = call i64 @strings.write_string_writer([2 x i64] %76, [2 x i64] %78, i8* %__.context_ptr), !dbg !3731 | |
call void @llvm.dbg.value(metadata i64 %79, metadata !3713, metadata !DIExpression()), !dbg !3742 | |
br label %for.done, !dbg !3766 | |
switch.case.body9: ; preds = %if.done4 | |
%80 = bitcast %io.Writer* %5 to [2 x i64]*, !dbg !3732 | |
%81 = load [2 x i64], [2 x i64]* %80, align 8, !dbg !3732 | |
%82 = bitcast [2 x i64]* %11 to %..string*, !dbg !3732 | |
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$b1", i64 0, i64 0), i64 2 }, %..string* %82, align 8, !dbg !3732 | |
%83 = load [2 x i64], [2 x i64]* %11, align 8, !dbg !3732 | |
%84 = call i64 @strings.write_string_writer([2 x i64] %81, [2 x i64] %83, i8* %__.context_ptr), !dbg !3732 | |
call void @llvm.dbg.value(metadata i64 %84, metadata !3713, metadata !DIExpression()), !dbg !3742 | |
br label %for.done, !dbg !3766 | |
switch.case.body10: ; preds = %if.done4 | |
%85 = bitcast %io.Writer* %5 to [2 x i64]*, !dbg !3733 | |
%86 = load [2 x i64], [2 x i64]* %85, align 8, !dbg !3733 | |
%87 = bitcast [2 x i64]* %12 to %..string*, !dbg !3733 | |
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$b2", i64 0, i64 0), i64 2 }, %..string* %87, align 8, !dbg !3733 | |
%88 = load [2 x i64], [2 x i64]* %12, align 8, !dbg !3733 | |
%89 = call i64 @strings.write_string_writer([2 x i64] %86, [2 x i64] %88, i8* %__.context_ptr), !dbg !3733 | |
call void @llvm.dbg.value(metadata i64 %89, metadata !3713, metadata !DIExpression()), !dbg !3742 | |
br label %for.done, !dbg !3766 | |
switch.case.body11: ; preds = %if.done4 | |
%90 = bitcast %io.Writer* %5 to [2 x i64]*, !dbg !3734 | |
%91 = load [2 x i64], [2 x i64]* %90, align 8, !dbg !3734 | |
%92 = bitcast [2 x i64]* %13 to %..string*, !dbg !3734 | |
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$b3", i64 0, i64 0), i64 2 }, %..string* %92, align 8, !dbg !3734 | |
%93 = load [2 x i64], [2 x i64]* %13, align 8, !dbg !3734 | |
%94 = call i64 @strings.write_string_writer([2 x i64] %91, [2 x i64] %93, i8* %__.context_ptr), !dbg !3734 | |
call void @llvm.dbg.value(metadata i64 %94, metadata !3713, metadata !DIExpression()), !dbg !3742 | |
br label %for.done, !dbg !3766 | |
switch.case.body12: ; preds = %if.done4 | |
%95 = bitcast %io.Writer* %5 to [2 x i64]*, !dbg !3735 | |
%96 = load [2 x i64], [2 x i64]* %95, align 8, !dbg !3735 | |
%97 = bitcast [2 x i64]* %14 to %..string*, !dbg !3735 | |
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$b4", i64 0, i64 0), i64 2 }, %..string* %97, align 8, !dbg !3735 | |
%98 = load [2 x i64], [2 x i64]* %14, align 8, !dbg !3735 | |
%99 = call i64 @strings.write_string_writer([2 x i64] %96, [2 x i64] %98, i8* %__.context_ptr), !dbg !3735 | |
call void @llvm.dbg.value(metadata i64 %99, metadata !3713, metadata !DIExpression()), !dbg !3742 | |
br label %for.done, !dbg !3766 | |
switch.default.body: ; preds = %if.done4 | |
call void @llvm.dbg.value(metadata i32 0, metadata !3717, metadata !DIExpression()), !dbg !3767 | |
call void @llvm.dbg.value(metadata i32 %1, metadata !3717, metadata !DIExpression()), !dbg !3767 | |
%100 = icmp slt i32 %1, 32, !dbg !3768 | |
br i1 %100, label %switch.case.body13, label %switch.case.next, !dbg !3768 | |
switch.case.next: ; preds = %switch.default.body | |
%101 = icmp sgt i32 %1, 1114111, !dbg !3768 | |
br i1 %101, label %switch.case.body17, label %switch.case.next14, !dbg !3768 | |
switch.case.body13: ; preds = %switch.default.body | |
%102 = bitcast %io.Writer* %5 to [2 x i64]*, !dbg !3769 | |
%103 = load [2 x i64], [2 x i64]* %102, align 8, !dbg !3769 | |
%104 = call i64 @strings._write_byte-1512([2 x i64] %103, i8 92, i8* %__.context_ptr), !dbg !3769 | |
call void @llvm.dbg.value(metadata i64 %104, metadata !3713, metadata !DIExpression()), !dbg !3742 | |
%105 = load [2 x i64], [2 x i64]* %102, align 8, !dbg !3770 | |
%106 = call i64 @strings._write_byte-1512([2 x i64] %105, i8 120, i8* %__.context_ptr), !dbg !3770 | |
%107 = add i64 %104, %106, !dbg !3770 | |
call void @llvm.dbg.value(metadata i64 %107, metadata !3713, metadata !DIExpression()), !dbg !3742 | |
%108 = load i8*, i8** getelementptr inbounds (%..string, %..string* @strings.DIGITS_LOWER-1532, i64 0, i32 0), align 8, !dbg !3736 | |
%109 = load i64, i64* getelementptr inbounds (%..string, %..string* @strings.DIGITS_LOWER-1532, i64 0, i32 1), align 8, !dbg !3736 | |
%110 = trunc i32 %1 to i8, !dbg !3736 | |
%111 = lshr i8 %110, 4, !dbg !3736 | |
%112 = zext i8 %111 to i64, !dbg !3736 | |
%113 = bitcast [2 x i64]* %15 to %..string*, !dbg !3736 | |
store %..string { i8* getelementptr inbounds ([54 x i8], [54 x i8]* @"csbs$a1", i64 0, i64 0), i64 53 }, %..string* %113, align 8, !dbg !3736 | |
%114 = load [2 x i64], [2 x i64]* %15, align 8, !dbg !3736 | |
call void @runtime.bounds_check_error([2 x i64] %114, i32 362, i32 37, i64 %112, i64 %109), !dbg !3736 | |
%115 = getelementptr i8, i8* %108, i64 %112, !dbg !3736 | |
%116 = load i8, i8* %115, align 1, !dbg !3736 | |
%117 = load [2 x i64], [2 x i64]* %102, align 8, !dbg !3736 | |
%118 = call i64 @strings._write_byte-1512([2 x i64] %117, i8 %116, i8* %__.context_ptr), !dbg !3736 | |
%119 = add i64 %107, %118, !dbg !3736 | |
call void @llvm.dbg.value(metadata i64 %119, metadata !3713, metadata !DIExpression()), !dbg !3742 | |
%120 = load i8*, i8** getelementptr inbounds (%..string, %..string* @strings.DIGITS_LOWER-1532, i64 0, i32 0), align 8, !dbg !3737 | |
%121 = load i64, i64* getelementptr inbounds (%..string, %..string* @strings.DIGITS_LOWER-1532, i64 0, i32 1), align 8, !dbg !3737 | |
%122 = and i8 %110, 15, !dbg !3737 | |
%123 = zext i8 %122 to i64, !dbg !3737 | |
%124 = bitcast [2 x i64]* %16 to %..string*, !dbg !3737 | |
store %..string { i8* getelementptr inbounds ([54 x i8], [54 x i8]* @"csbs$a1", i64 0, i64 0), i64 53 }, %..string* %124, align 8, !dbg !3737 | |
%125 = load [2 x i64], [2 x i64]* %16, align 8, !dbg !3737 | |
call void @runtime.bounds_check_error([2 x i64] %125, i32 363, i32 37, i64 %123, i64 %121), !dbg !3737 | |
%126 = getelementptr i8, i8* %120, i64 %123, !dbg !3737 | |
%127 = load i8, i8* %126, align 1, !dbg !3737 | |
%128 = load [2 x i64], [2 x i64]* %102, align 8, !dbg !3737 | |
%129 = call i64 @strings._write_byte-1512([2 x i64] %128, i8 %127, i8* %__.context_ptr), !dbg !3737 | |
%130 = add i64 %119, %129, !dbg !3737 | |
call void @llvm.dbg.value(metadata i64 %130, metadata !3713, metadata !DIExpression()), !dbg !3742 | |
br label %for.done, !dbg !3768 | |
switch.case.next14: ; preds = %switch.case.next | |
%131 = icmp slt i32 %1, 65536, !dbg !3768 | |
br i1 %131, label %switch.case.body17, label %switch.default.body23, !dbg !3768 | |
switch.case.body17: ; preds = %switch.case.next, %switch.case.next14 | |
%.032 = phi i32 [ %1, %switch.case.next14 ], [ 65533, %switch.case.next ], !dbg !3767 | |
call void @llvm.dbg.value(metadata i32 %.032, metadata !3717, metadata !DIExpression()), !dbg !3767 | |
%132 = bitcast %io.Writer* %5 to [2 x i64]*, !dbg !3771 | |
%133 = load [2 x i64], [2 x i64]* %132, align 8, !dbg !3771 | |
%134 = call i64 @strings._write_byte-1512([2 x i64] %133, i8 92, i8* %__.context_ptr), !dbg !3771 | |
call void @llvm.dbg.value(metadata i64 %134, metadata !3713, metadata !DIExpression()), !dbg !3742 | |
%135 = load [2 x i64], [2 x i64]* %132, align 8, !dbg !3772 | |
%136 = call i64 @strings._write_byte-1512([2 x i64] %135, i8 117, i8* %__.context_ptr), !dbg !3772 | |
%137 = add i64 %134, %136, !dbg !3772 | |
call void @llvm.dbg.value(metadata i64 %137, metadata !3713, metadata !DIExpression()), !dbg !3742 | |
call void @llvm.dbg.value(metadata i64 12, metadata !3719, metadata !DIExpression()), !dbg !3773 | |
br label %for.loop19, !dbg !3774 | |
for.loop19: ; preds = %for.body20, %switch.case.body17 | |
%.1 = phi i64 [ %137, %switch.case.body17 ], [ %153, %for.body20 ], !dbg !3742 | |
%.031 = phi i64 [ 12, %switch.case.body17 ], [ %154, %for.body20 ], !dbg !3742 | |
call void @llvm.dbg.value(metadata i64 %.031, metadata !3719, metadata !DIExpression()), !dbg !3773 | |
call void @llvm.dbg.value(metadata i64 %.1, metadata !3713, metadata !DIExpression()), !dbg !3742 | |
%138 = icmp sge i64 %.031, 0, !dbg !3774 | |
br i1 %138, label %for.body20, label %for.done, !dbg !3774 | |
for.body20: ; preds = %for.loop19 | |
%139 = load i8*, i8** getelementptr inbounds (%..string, %..string* @strings.DIGITS_LOWER-1532, i64 0, i32 0), align 8, !dbg !3738 | |
%140 = load i64, i64* getelementptr inbounds (%..string, %..string* @strings.DIGITS_LOWER-1532, i64 0, i32 1), align 8, !dbg !3738 | |
%141 = trunc i64 %.031 to i32, !dbg !3738 | |
%142 = icmp ult i32 %141, 32, !dbg !3738 | |
%143 = ashr i32 %.032, %141, !dbg !3738 | |
%144 = select i1 %142, i32 %143, i32 0, !dbg !3738 | |
%145 = and i32 %144, 15, !dbg !3738 | |
%146 = sext i32 %145 to i64, !dbg !3738 | |
%147 = bitcast [2 x i64]* %17 to %..string*, !dbg !3738 | |
store %..string { i8* getelementptr inbounds ([54 x i8], [54 x i8]* @"csbs$a1", i64 0, i64 0), i64 53 }, %..string* %147, align 8, !dbg !3738 | |
%148 = load [2 x i64], [2 x i64]* %17, align 8, !dbg !3738 | |
call void @runtime.bounds_check_error([2 x i64] %148, i32 372, i32 38, i64 %146, i64 %140), !dbg !3738 | |
%149 = getelementptr i8, i8* %139, i64 %146, !dbg !3738 | |
%150 = load i8, i8* %149, align 1, !dbg !3738 | |
%151 = load [2 x i64], [2 x i64]* %132, align 8, !dbg !3738 | |
%152 = call i64 @strings._write_byte-1512([2 x i64] %151, i8 %150, i8* %__.context_ptr), !dbg !3738 | |
%153 = add i64 %.1, %152, !dbg !3738 | |
call void @llvm.dbg.value(metadata i64 %153, metadata !3713, metadata !DIExpression()), !dbg !3742 | |
%154 = sub i64 %.031, 4, !dbg !3775 | |
call void @llvm.dbg.value(metadata i64 %154, metadata !3719, metadata !DIExpression()), !dbg !3773 | |
br label %for.loop19, !dbg !3774 | |
switch.default.body23: ; preds = %switch.case.next14 | |
%155 = bitcast %io.Writer* %5 to [2 x i64]*, !dbg !3776 | |
%156 = load [2 x i64], [2 x i64]* %155, align 8, !dbg !3776 | |
%157 = call i64 @strings._write_byte-1512([2 x i64] %156, i8 92, i8* %__.context_ptr), !dbg !3776 | |
call void @llvm.dbg.value(metadata i64 %157, metadata !3713, metadata !DIExpression()), !dbg !3742 | |
%158 = load [2 x i64], [2 x i64]* %155, align 8, !dbg !3777 | |
%159 = call i64 @strings._write_byte-1512([2 x i64] %158, i8 85, i8* %__.context_ptr), !dbg !3777 | |
%160 = add i64 %157, %159, !dbg !3777 | |
call void @llvm.dbg.value(metadata i64 %160, metadata !3713, metadata !DIExpression()), !dbg !3742 | |
call void @llvm.dbg.value(metadata i64 28, metadata !3721, metadata !DIExpression()), !dbg !3778 | |
br label %for.loop25, !dbg !3779 | |
for.loop25: ; preds = %for.body26, %switch.default.body23 | |
%.2 = phi i64 [ %160, %switch.default.body23 ], [ %176, %for.body26 ], !dbg !3742 | |
%.0 = phi i64 [ 28, %switch.default.body23 ], [ %177, %for.body26 ], !dbg !3742 | |
call void @llvm.dbg.value(metadata i64 %.0, metadata !3721, metadata !DIExpression()), !dbg !3778 | |
call void @llvm.dbg.value(metadata i64 %.2, metadata !3713, metadata !DIExpression()), !dbg !3742 | |
%161 = icmp sge i64 %.0, 0, !dbg !3779 | |
br i1 %161, label %for.body26, label %for.done, !dbg !3779 | |
for.body26: ; preds = %for.loop25 | |
%162 = load i8*, i8** getelementptr inbounds (%..string, %..string* @strings.DIGITS_LOWER-1532, i64 0, i32 0), align 8, !dbg !3740 | |
%163 = load i64, i64* getelementptr inbounds (%..string, %..string* @strings.DIGITS_LOWER-1532, i64 0, i32 1), align 8, !dbg !3740 | |
%164 = trunc i64 %.0 to i32, !dbg !3740 | |
%165 = icmp ult i32 %164, 32, !dbg !3740 | |
%166 = ashr i32 %1, %164, !dbg !3740 | |
%167 = select i1 %165, i32 %166, i32 0, !dbg !3740 | |
%168 = and i32 %167, 15, !dbg !3740 | |
%169 = sext i32 %168 to i64, !dbg !3740 | |
%170 = bitcast [2 x i64]* %18 to %..string*, !dbg !3740 | |
store %..string { i8* getelementptr inbounds ([54 x i8], [54 x i8]* @"csbs$a1", i64 0, i64 0), i64 53 }, %..string* %170, align 8, !dbg !3740 | |
%171 = load [2 x i64], [2 x i64]* %18, align 8, !dbg !3740 | |
call void @runtime.bounds_check_error([2 x i64] %171, i32 378, i32 38, i64 %169, i64 %163), !dbg !3740 | |
%172 = getelementptr i8, i8* %162, i64 %169, !dbg !3740 | |
%173 = load i8, i8* %172, align 1, !dbg !3740 | |
%174 = load [2 x i64], [2 x i64]* %155, align 8, !dbg !3740 | |
%175 = call i64 @strings._write_byte-1512([2 x i64] %174, i8 %173, i8* %__.context_ptr), !dbg !3740 | |
%176 = add i64 %.2, %175, !dbg !3740 | |
call void @llvm.dbg.value(metadata i64 %176, metadata !3713, metadata !DIExpression()), !dbg !3742 | |
%177 = sub i64 %.0, 4, !dbg !3780 | |
call void @llvm.dbg.value(metadata i64 %177, metadata !3721, metadata !DIExpression()), !dbg !3778 | |
br label %for.loop25, !dbg !3779 | |
} | |
define internal i64 @fmt.println([2 x i64] %0, [2 x i64] %1, i8* noalias nocapture nonnull %__.context_ptr) !dbg !3781 { | |
decls: | |
%2 = alloca { %..any*, i64 }, align 8 | |
call void @llvm.dbg.declare(metadata { %..any*, i64 }* %3, metadata !3785, metadata !DIExpression()), !dbg !3788 | |
%3 = alloca { %..any*, i64 }, align 8 | |
%4 = alloca %..string, align 8 | |
call void @llvm.dbg.declare(metadata %..string* %5, metadata !3786, metadata !DIExpression()), !dbg !3789 | |
%5 = alloca %..string, align 8 | |
%6 = bitcast { %..any*, i64 }* %2 to [2 x i64]* | |
store [2 x i64] %0, [2 x i64]* %6, align 8 | |
%7 = bitcast { %..any*, i64 }* %3 to i8* | |
%8 = bitcast { %..any*, i64 }* %2 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %7, i8* align 8 %8, i64 16, i1 false) | |
%9 = bitcast %..string* %4 to [2 x i64]* | |
store [2 x i64] %1, [2 x i64]* %9, align 8 | |
%10 = bitcast %..string* %5 to i8* | |
%11 = bitcast %..string* %4 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %10, i8* align 8 %11, i64 16, i1 false) | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !3787, metadata !DIExpression()), !dbg !3790 | |
%12 = load i32, i32* @os.stdout, align 4, !dbg !3791 | |
%13 = bitcast { %..any*, i64 }* %3 to [2 x i64]*, !dbg !3791 | |
%14 = load [2 x i64], [2 x i64]* %13, align 8, !dbg !3791 | |
%15 = bitcast %..string* %5 to [2 x i64]*, !dbg !3791 | |
%16 = load [2 x i64], [2 x i64]* %15, align 8, !dbg !3791 | |
%17 = call i64 @fmt.fprintln(i32 %12, [2 x i64] %14, [2 x i64] %16, i8* %__.context_ptr), !dbg !3791 | |
ret i64 %17, !dbg !3791 | |
} | |
define internal [2 x i64] @reflect.as_int([2 x i64] %0, i8* noalias nocapture nonnull %__.context_ptr) !dbg !3793 { | |
decls: | |
%1 = alloca %..any, align 8 | |
call void @llvm.dbg.declare(metadata %..any* %2, metadata !3801, metadata !DIExpression()), !dbg !3807 | |
%2 = alloca %..any, align 8 | |
%3 = alloca { i64, i8 }, align 8, !dbg !3808 | |
%4 = alloca { i64, i8 }, align 8, !dbg !3809 | |
%5 = bitcast %..any* %1 to [2 x i64]* | |
store [2 x i64] %0, [2 x i64]* %5, align 8 | |
%6 = bitcast %..any* %2 to i8* | |
%7 = bitcast %..any* %1 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %6, i8* align 8 %7, i64 16, i1 false) | |
call void @llvm.dbg.value(metadata i64 0, metadata !3802, metadata !DIExpression()), !dbg !3810 | |
call void @llvm.dbg.value(metadata i8 0, metadata !3803, metadata !DIExpression()), !dbg !3810 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !3804, metadata !DIExpression()), !dbg !3811 | |
call void @llvm.dbg.value(metadata i64 0, metadata !3805, metadata !DIExpression()), !dbg !3812 | |
%8 = bitcast %..any* %2 to [2 x i64]*, !dbg !3808 | |
%9 = load [2 x i64], [2 x i64]* %8, align 8, !dbg !3808 | |
%10 = call [2 x i64] @reflect.as_i64([2 x i64] %9, i8* %__.context_ptr), !dbg !3808 | |
%11 = bitcast { i64, i8 }* %3 to [2 x i64]*, !dbg !3808 | |
store [2 x i64] %10, [2 x i64]* %11, align 8, !dbg !3808 | |
%12 = getelementptr inbounds { i64, i8 }, { i64, i8 }* %3, i32 0, i32 0, !dbg !3808 | |
%13 = load i64, i64* %12, align 8, !dbg !3808 | |
%14 = getelementptr inbounds { i64, i8 }, { i64, i8 }* %3, i32 0, i32 1, !dbg !3808 | |
%15 = load i8, i8* %14, align 1, !dbg !3808 | |
call void @llvm.dbg.value(metadata i64 %13, metadata !3805, metadata !DIExpression()), !dbg !3812 | |
call void @llvm.dbg.value(metadata i64 %13, metadata !3802, metadata !DIExpression()), !dbg !3810 | |
call void @llvm.dbg.value(metadata i8 %15, metadata !3803, metadata !DIExpression()), !dbg !3810 | |
%16 = getelementptr inbounds { i64, i8 }, { i64, i8 }* %4, i32 0, i32 0, !dbg !3809 | |
%17 = getelementptr inbounds { i64, i8 }, { i64, i8 }* %4, i32 0, i32 1, !dbg !3809 | |
store i64 %13, i64* %16, align 8, !dbg !3809 | |
store i8 %15, i8* %17, align 1, !dbg !3809 | |
%18 = bitcast { i64, i8 }* %4 to [2 x i64]*, !dbg !3809 | |
%19 = load [2 x i64], [2 x i64]* %18, align 8, !dbg !3809 | |
ret [2 x i64] %19, !dbg !3809 | |
} | |
define internal [2 x i64] @reflect.as_i64([2 x i64] %0, i8* noalias nocapture nonnull %__.context_ptr) !dbg !3813 { | |
decls: | |
%1 = alloca %..any, align 8 | |
call void @llvm.dbg.declare(metadata %..any* %2, metadata !3820, metadata !DIExpression()), !dbg !3953 | |
%2 = alloca %..any, align 8 | |
%3 = alloca { i64, i8 }, align 8, !dbg !3954 | |
call void @llvm.dbg.declare(metadata %..any* %4, metadata !3824, metadata !DIExpression()), !dbg !3957 | |
%4 = alloca %..any, align 8, !dbg !3957 | |
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Integer* %5, metadata !3827, metadata !DIExpression()), !dbg !3958 | |
%5 = alloca %runtime.Type_Info_Integer, align 1, !dbg !3959 | |
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Rune* %6, metadata !3892, metadata !DIExpression()), !dbg !3958 | |
%6 = alloca %runtime.Type_Info_Rune, align 1, !dbg !3959 | |
%7 = alloca { i32, i8 }, align 4, !dbg !3960 | |
%8 = alloca [2 x i64], align 8, !dbg !3960 | |
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Float* %9, metadata !3894, metadata !DIExpression()), !dbg !3958 | |
%9 = alloca %runtime.Type_Info_Float, align 1, !dbg !3959 | |
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Boolean* %10, metadata !3912, metadata !DIExpression()), !dbg !3958 | |
%10 = alloca %runtime.Type_Info_Boolean, align 1, !dbg !3959 | |
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Complex* %11, metadata !3927, metadata !DIExpression()), !dbg !3958 | |
%11 = alloca %runtime.Type_Info_Complex, align 1, !dbg !3959 | |
call void @llvm.dbg.declare(metadata %..complex64* %12, metadata !3928, metadata !DIExpression()), !dbg !3961 | |
%12 = alloca %..complex64, align 4, !dbg !3962 | |
call void @llvm.dbg.declare(metadata %..complex128* %13, metadata !3933, metadata !DIExpression()), !dbg !3961 | |
%13 = alloca %..complex128, align 8, !dbg !3962 | |
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Quaternion* %14, metadata !3938, metadata !DIExpression()), !dbg !3958 | |
%14 = alloca %runtime.Type_Info_Quaternion, align 1, !dbg !3959 | |
call void @llvm.dbg.declare(metadata %..quaternion128* %15, metadata !3939, metadata !DIExpression()), !dbg !3963 | |
%15 = alloca %..quaternion128, align 4, !dbg !3964 | |
call void @llvm.dbg.declare(metadata %..quaternion256* %16, metadata !3946, metadata !DIExpression()), !dbg !3963 | |
%16 = alloca %..quaternion256, align 8, !dbg !3964 | |
%17 = alloca { i64, i8 }, align 8, !dbg !3965 | |
%18 = bitcast %..any* %1 to [2 x i64]* | |
store [2 x i64] %0, [2 x i64]* %18, align 8 | |
%19 = bitcast %..any* %2 to i8* | |
%20 = bitcast %..any* %1 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %19, i8* align 8 %20, i64 16, i1 false) | |
call void @llvm.dbg.value(metadata i64 0, metadata !3821, metadata !DIExpression()), !dbg !3966 | |
call void @llvm.dbg.value(metadata i8 0, metadata !3822, metadata !DIExpression()), !dbg !3966 | |
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !3823, metadata !DIExpression()), !dbg !3967 | |
%21 = getelementptr inbounds %..any, %..any* %2, i32 0, i32 0, !dbg !3968 | |
%22 = load i8*, i8** %21, align 8, !dbg !3968 | |
%23 = getelementptr inbounds %..any, %..any* %2, i32 0, i32 1, !dbg !3968 | |
%24 = load i64, i64* %23, align 8, !dbg !3968 | |
%25 = icmp eq i8* %22, null, !dbg !3968 | |
%26 = icmp eq i64 %24, 0, !dbg !3968 | |
%27 = or i1 %25, %26, !dbg !3968 | |
br i1 %27, label %if.then, label %if.done, !dbg !3968 | |
if.then: ; preds = %decls | |
call void @llvm.dbg.value(metadata i64 0, metadata !3821, metadata !DIExpression()), !dbg !3966 | |
call void @llvm.dbg.value(metadata i8 0, metadata !3822, metadata !DIExpression()), !dbg !3966 | |
%28 = getelementptr inbounds { i64, i8 }, { i64, i8 }* %3, i32 0, i32 0, !dbg !3954 | |
%29 = getelementptr inbounds { i64, i8 }, { i64, i8 }* %3, i32 0, i32 1, !dbg !3954 | |
store i64 0, i64* %28, align 8, !dbg !3954 | |
store i8 0, i8* %29, align 1, !dbg !3954 | |
%30 = bitcast { i64, i8 }* %3 to [2 x i64]*, !dbg !3954 | |
%31 = load [2 x i64], [2 x i64]* %30, align 8, !dbg !3954 | |
ret [2 x i64] %31, !dbg !3954 | |
if.done: ; preds = %decls | |
%32 = bitcast %..any* %4 to i8*, !dbg !3957 | |
%33 = getelementptr i8, i8* %32, i64 16, !dbg !3957 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %33, i8 0, i64 0, i1 false), !dbg !3957 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %32, i8* align 8 %19, i64 16, i1 false), !dbg !3957 | |
call void @llvm.dbg.value(metadata %runtime.Type_Info* null, metadata !3826, metadata !DIExpression()), !dbg !3969 | |
%34 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 1, !dbg !3970 | |
%35 = load i64, i64* %34, align 8, !dbg !3970 | |
%36 = call %runtime.Type_Info* @runtime.__type_info_of(i64 %35), !dbg !3970 | |
%37 = call %runtime.Type_Info* @runtime.type_info_core(%runtime.Type_Info* %36), !dbg !3970 | |
call void @llvm.dbg.value(metadata %runtime.Type_Info* %37, metadata !3826, metadata !DIExpression()), !dbg !3969 | |
%38 = getelementptr inbounds %runtime.Type_Info, %runtime.Type_Info* %37, i32 0, i32 3, !dbg !3971 | |
%39 = load i64, i64* %38, align 8, !dbg !3971 | |
store i64 %39, i64* %34, align 8, !dbg !3971 | |
%40 = getelementptr inbounds %runtime.Type_Info, %runtime.Type_Info* %37, i32 0, i32 4, !dbg !3959 | |
%41 = bitcast { [0 x i64], [120 x i8], i64 }* %40 to i8*, !dbg !3959 | |
%42 = getelementptr inbounds { [0 x i64], [120 x i8], i64 }, { [0 x i64], [120 x i8], i64 }* %40, i32 0, i32 2, !dbg !3959 | |
%43 = load i64, i64* %42, align 8, !dbg !3959 | |
switch i64 %43, label %typeswitch.done67 [ | |
i64 2, label %typeswitch.body | |
i64 3, label %typeswitch.body30 | |
i64 4, label %typeswitch.body31 | |
i64 8, label %typeswitch.body40 | |
i64 5, label %typeswitch.body48 | |
i64 6, label %typeswitch.body56 | |
], !dbg !3959 | |
typeswitch.body: ; preds = %if.done | |
%44 = bitcast %runtime.Type_Info_Integer* %5 to i8*, !dbg !3959 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %44, i8* align 1 %41, i64 2, i1 false), !dbg !3959 | |
call void @llvm.dbg.value(metadata i8 1, metadata !3822, metadata !DIExpression()), !dbg !3966 | |
%45 = load i64, i64* %34, align 8, !dbg !3972 | |
switch i64 %45, label %typeswitch.done67 [ | |
i64 4683743612465315936, label %typeswitch.body1 | |
i64 4683743612465315938, label %typeswitch.body2 | |
i64 4683743612465315860, label %typeswitch.body3 | |
i64 4683743612465315889, label %typeswitch.body4 | |
i64 4683743612465315971, label %typeswitch.body5 | |
i64 4683743612465315841, label %typeswitch.body6 | |
i64 72057594037927945, label %typeswitch.body7 | |
i64 72057594037928033, label %typeswitch.body8 | |
i64 72057594037927953, label %typeswitch.body9 | |
i64 72057594037927940, label %typeswitch.body10 | |
i64 72057594037928068, label %typeswitch.body11 | |
i64 72057594037928035, label %typeswitch.body12 | |
i64 72057594037927998, label %typeswitch.body13 | |
i64 72057594037928056, label %typeswitch.body14 | |
i64 72057594037928058, label %typeswitch.body15 | |
i64 72057594037928060, label %typeswitch.body16 | |
i64 72057594037928070, label %typeswitch.body17 | |
i64 4683743612465315959, label %typeswitch.body18 | |
i64 4683743612465315961, label %typeswitch.body19 | |
i64 4683743612465315963, label %typeswitch.body20 | |
i64 4683743612465315973, label %typeswitch.body21 | |
i64 72057594037928062, label %typeswitch.body22 | |
i64 72057594037928064, label %typeswitch.body23 | |
i64 72057594037928066, label %typeswitch.body24 | |
i64 72057594037928072, label %typeswitch.body25 | |
i64 4683743612465315965, label %typeswitch.body26 | |
i64 4683743612465315967, label %typeswitch.body27 | |
i64 4683743612465315969, label %typeswitch.body28 | |
i64 4683743612465315975, label %typeswitch.body29 | |
], !dbg !3972 | |
typeswitch.body1: ; preds = %typeswitch.body | |
%46 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972 | |
%47 = load i8*, i8** %46, align 8, !dbg !3972 | |
%48 = load i8, i8* %47, align 1, !dbg !3972 | |
call void @llvm.dbg.value(metadata i8 %48, metadata !3828, metadata !DIExpression()), !dbg !3969 | |
%49 = sext i8 %48 to i64, !dbg !3973 | |
call void @llvm.dbg.value(metadata i64 %49, metadata !3821, metadata !DIExpression()), !dbg !3966 | |
br label %typeswitch.done67, !dbg !3972 | |
typeswitch.body2: ; preds = %typeswitch.body | |
%50 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972 | |
%51 = load i8*, i8** %50, align 8, !dbg !3972 | |
%52 = bitcast i8* %51 to i16*, !dbg !3972 | |
%53 = load i16, i16* %52, align 2, !dbg !3972 | |
call void @llvm.dbg.value(metadata i16 %53, metadata !3829, metadata !DIExpression()), !dbg !3969 | |
%54 = sext i16 %53 to i64, !dbg !3974 | |
call void @llvm.dbg.value(metadata i64 %54, metadata !3821, metadata !DIExpression()), !dbg !3966 | |
br label %typeswitch.done67, !dbg !3972 | |
typeswitch.body3: ; preds = %typeswitch.body | |
%55 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972 | |
%56 = load i8*, i8** %55, align 8, !dbg !3972 | |
%57 = bitcast i8* %56 to i32*, !dbg !3972 | |
%58 = load i32, i32* %57, align 4, !dbg !3972 | |
call void @llvm.dbg.value(metadata i32 %58, metadata !3830, metadata !DIExpression()), !dbg !3969 | |
%59 = sext i32 %58 to i64, !dbg !3975 | |
call void @llvm.dbg.value(metadata i64 %59, metadata !3821, metadata !DIExpression()), !dbg !3966 | |
br label %typeswitch.done67, !dbg !3972 | |
typeswitch.body4: ; preds = %typeswitch.body | |
%60 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972 | |
%61 = load i8*, i8** %60, align 8, !dbg !3972 | |
%62 = bitcast i8* %61 to i64*, !dbg !3972 | |
%63 = load i64, i64* %62, align 8, !dbg !3972 | |
call void @llvm.dbg.value(metadata i64 %63, metadata !3831, metadata !DIExpression()), !dbg !3969 | |
call void @llvm.dbg.value(metadata i64 %63, metadata !3821, metadata !DIExpression()), !dbg !3966 | |
br label %typeswitch.done67, !dbg !3972 | |
typeswitch.body5: ; preds = %typeswitch.body | |
%64 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972 | |
%65 = load i8*, i8** %64, align 8, !dbg !3972 | |
%66 = bitcast i8* %65 to i128*, !dbg !3972 | |
%67 = load i128, i128* %66, align 16, !dbg !3972 | |
call void @llvm.dbg.value(metadata i128 %67, metadata !3832, metadata !DIExpression()), !dbg !3969 | |
%68 = trunc i128 %67 to i64, !dbg !3976 | |
call void @llvm.dbg.value(metadata i64 %68, metadata !3821, metadata !DIExpression()), !dbg !3966 | |
br label %typeswitch.done67, !dbg !3972 | |
typeswitch.body6: ; preds = %typeswitch.body | |
%69 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972 | |
%70 = load i8*, i8** %69, align 8, !dbg !3972 | |
%71 = bitcast i8* %70 to i64*, !dbg !3972 | |
%72 = load i64, i64* %71, align 8, !dbg !3972 | |
call void @llvm.dbg.value(metadata i64 %72, metadata !3833, metadata !DIExpression()), !dbg !3969 | |
call void @llvm.dbg.value(metadata i64 %72, metadata !3821, metadata !DIExpression()), !dbg !3966 | |
br label %typeswitch.done67, !dbg !3972 | |
typeswitch.body7: ; preds = %typeswitch.body | |
%73 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972 | |
%74 = load i8*, i8** %73, align 8, !dbg !3972 | |
%75 = load i8, i8* %74, align 1, !dbg !3972 | |
call void @llvm.dbg.value(metadata i8 %75, metadata !3834, metadata !DIExpression()), !dbg !3969 | |
%76 = zext i8 %75 to i64, !dbg !3977 | |
call void @llvm.dbg.value(metadata i64 %76, metadata !3821, metadata !DIExpression()), !dbg !3966 | |
br label %typeswitch.done67, !dbg !3972 | |
typeswitch.body8: ; preds = %typeswitch.body | |
%77 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972 | |
%78 = load i8*, i8** %77, align 8, !dbg !3972 | |
%79 = bitcast i8* %78 to i16*, !dbg !3972 | |
%80 = load i16, i16* %79, align 2, !dbg !3972 | |
call void @llvm.dbg.value(metadata i16 %80, metadata !3835, metadata !DIExpression()), !dbg !3969 | |
%81 = zext i16 %80 to i64, !dbg !3978 | |
call void @llvm.dbg.value(metadata i64 %81, metadata !3821, metadata !DIExpression()), !dbg !3966 | |
br label %typeswitch.done67, !dbg !3972 | |
typeswitch.body9: ; preds = %typeswitch.body | |
%82 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972 | |
%83 = load i8*, i8** %82, align 8, !dbg !3972 | |
%84 = bitcast i8* %83 to i32*, !dbg !3972 | |
%85 = load i32, i32* %84, align 4, !dbg !3972 | |
call void @llvm.dbg.value(metadata i32 %85, metadata !3838, metadata !DIExpression()), !dbg !3969 | |
%86 = zext i32 %85 to i64, !dbg !3979 | |
call void @llvm.dbg.value(metadata i64 %86, metadata !3821, metadata !DIExpression()), !dbg !3966 | |
br label %typeswitch.done67, !dbg !3972 | |
typeswitch.body10: ; preds = %typeswitch.body | |
%87 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972 | |
%88 = load i8*, i8** %87, align 8, !dbg !3972 | |
%89 = bitcast i8* %88 to i64*, !dbg !3972 | |
%90 = load i64, i64* %89, align 8, !dbg !3972 | |
call void @llvm.dbg.value(metadata i64 %90, metadata !3839, metadata !DIExpression()), !dbg !3969 | |
call void @llvm.dbg.value(metadata i64 %90, metadata !3821, metadata !DIExpression()), !dbg !3966 | |
br label %typeswitch.done67, !dbg !3972 | |
typeswitch.body11: ; preds = %typeswitch.body | |
%91 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972 | |
%92 = load i8*, i8** %91, align 8, !dbg !3972 | |
%93 = bitcast i8* %92 to i128*, !dbg !3972 | |
%94 = load i128, i128* %93, align 16, !dbg !3972 | |
call void @llvm.dbg.value(metadata i128 %94, metadata !3840, metadata !DIExpression()), !dbg !3969 | |
%95 = trunc i128 %94 to i64, !dbg !3980 | |
call void @llvm.dbg.value(metadata i64 %95, metadata !3821, metadata !DIExpression()), !dbg !3966 | |
br label %typeswitch.done67, !dbg !3972 | |
typeswitch.body12: ; preds = %typeswitch.body | |
%96 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972 | |
%97 = load i8*, i8** %96, align 8, !dbg !3972 | |
%98 = bitcast i8* %97 to i64*, !dbg !3972 | |
%99 = load i64, i64* %98, align 8, !dbg !3972 | |
call void @llvm.dbg.value(metadata i64 %99, metadata !3841, metadata !DIExpression()), !dbg !3969 | |
call void @llvm.dbg.value(metadata i64 %99, metadata !3821, metadata !DIExpression()), !dbg !3966 | |
br label %typeswitch.done67, !dbg !3972 | |
typeswitch.body13: ; preds = %typeswitch.body | |
%100 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972 | |
%101 = load i8*, i8** %100, align 8, !dbg !3972 | |
%102 = bitcast i8* %101 to i64*, !dbg !3972 | |
%103 = load i64, i64* %102, align 8, !dbg !3972 | |
call void @llvm.dbg.value(metadata i64 %103, metadata !3842, metadata !DIExpression()), !dbg !3969 | |
call void @llvm.dbg.value(metadata i64 %103, metadata !3821, metadata !DIExpression()), !dbg !3966 | |
br label %typeswitch.done67, !dbg !3972 | |
typeswitch.body14: ; preds = %typeswitch.body | |
%104 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972 | |
%105 = load i8*, i8** %104, align 8, !dbg !3972 | |
%106 = bitcast i8* %105 to i16*, !dbg !3972 | |
%107 = load i16, i16* %106, align 2, !dbg !3972 | |
call void @llvm.dbg.value(metadata i16 %107, metadata !3843, metadata !DIExpression()), !dbg !3969 | |
%108 = zext i16 %107 to i64, !dbg !3981 | |
call void @llvm.dbg.value(metadata i64 %108, metadata !3821, metadata !DIExpression()), !dbg !3966 | |
br label %typeswitch.done67, !dbg !3972 | |
typeswitch.body15: ; preds = %typeswitch.body | |
%109 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972 | |
%110 = load i8*, i8** %109, align 8, !dbg !3972 | |
%111 = bitcast i8* %110 to i32*, !dbg !3972 | |
%112 = load i32, i32* %111, align 4, !dbg !3972 | |
call void @llvm.dbg.value(metadata i32 %112, metadata !3846, metadata !DIExpression()), !dbg !3969 | |
%113 = zext i32 %112 to i64, !dbg !3982 | |
call void @llvm.dbg.value(metadata i64 %113, metadata !3821, metadata !DIExpression()), !dbg !3966 | |
br label %typeswitch.done67, !dbg !3972 | |
typeswitch.body16: ; preds = %typeswitch.body | |
%114 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972 | |
%115 = load i8*, i8** %114, align 8, !dbg !3972 | |
%116 = bitcast i8* %115 to i64*, !dbg !3972 | |
%117 = load i64, i64* %116, align 8, !dbg !3972 | |
call void @llvm.dbg.value(metadata i64 %117, metadata !3849, metadata !DIExpression()), !dbg !3969 | |
call void @llvm.dbg.value(metadata i64 %117, metadata !3821, metadata !DIExpression()), !dbg !3966 | |
br label %typeswitch.done67, !dbg !3972 | |
typeswitch.body17: ; preds = %typeswitch.body | |
%118 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972 | |
%119 = load i8*, i8** %118, align 8, !dbg !3972 | |
%120 = bitcast i8* %119 to i128*, !dbg !3972 | |
%121 = load i128, i128* %120, align 16, !dbg !3972 | |
call void @llvm.dbg.value(metadata i128 %121, metadata !3852, metadata !DIExpression()), !dbg !3969 | |
%122 = trunc i128 %121 to i64, !dbg !3983 | |
call void @llvm.dbg.value(metadata i64 %122, metadata !3821, metadata !DIExpression()), !dbg !3966 | |
br label %typeswitch.done67, !dbg !3972 | |
typeswitch.body18: ; preds = %typeswitch.body | |
%123 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972 | |
%124 = load i8*, i8** %123, align 8, !dbg !3972 | |
%125 = bitcast i8* %124 to i16*, !dbg !3972 | |
%126 = load i16, i16* %125, align 2, !dbg !3972 | |
call void @llvm.dbg.value(metadata i16 %126, metadata !3855, metadata !DIExpression()), !dbg !3969 | |
%127 = sext i16 %126 to i64, !dbg !3984 | |
call void @llvm.dbg.value(metadata i64 %127, metadata !3821, metadata !DIExpression()), !dbg !3966 | |
br label %typeswitch.done67, !dbg !3972 | |
typeswitch.body19: ; preds = %typeswitch.body | |
%128 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972 | |
%129 = load i8*, i8** %128, align 8, !dbg !3972 | |
%130 = bitcast i8* %129 to i32*, !dbg !3972 | |
%131 = load i32, i32* %130, align 4, !dbg !3972 | |
call void @llvm.dbg.value(metadata i32 %131, metadata !3858, metadata !DIExpression()), !dbg !3969 | |
%132 = sext i32 %131 to i64, !dbg !3985 | |
call void @llvm.dbg.value(metadata i64 %132, metadata !3821, metadata !DIExpression()), !dbg !3966 | |
br label %typeswitch.done67, !dbg !3972 | |
typeswitch.body20: ; preds = %typeswitch.body | |
%133 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972 | |
%134 = load i8*, i8** %133, align 8, !dbg !3972 | |
%135 = bitcast i8* %134 to i64*, !dbg !3972 | |
%136 = load i64, i64* %135, align 8, !dbg !3972 | |
call void @llvm.dbg.value(metadata i64 %136, metadata !3861, metadata !DIExpression()), !dbg !3969 | |
call void @llvm.dbg.value(metadata i64 %136, metadata !3821, metadata !DIExpression()), !dbg !3966 | |
br label %typeswitch.done67, !dbg !3972 | |
typeswitch.body21: ; preds = %typeswitch.body | |
%137 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972 | |
%138 = load i8*, i8** %137, align 8, !dbg !3972 | |
%139 = bitcast i8* %138 to i128*, !dbg !3972 | |
%140 = load i128, i128* %139, align 16, !dbg !3972 | |
call void @llvm.dbg.value(metadata i128 %140, metadata !3864, metadata !DIExpression()), !dbg !3969 | |
%141 = trunc i128 %140 to i64, !dbg !3986 | |
call void @llvm.dbg.value(metadata i64 %141, metadata !3821, metadata !DIExpression()), !dbg !3966 | |
br label %typeswitch.done67, !dbg !3972 | |
typeswitch.body22: ; preds = %typeswitch.body | |
%142 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972 | |
%143 = load i8*, i8** %142, align 8, !dbg !3972 | |
%144 = bitcast i8* %143 to i16*, !dbg !3972 | |
%145 = load i16, i16* %144, align 2, !dbg !3972 | |
call void @llvm.dbg.value(metadata i16 %145, metadata !3867, metadata !DIExpression()), !dbg !3969 | |
%146 = call i16 @llvm.bswap.i16(i16 %145), !dbg !3987 | |
%147 = zext i16 %146 to i64, !dbg !3987 | |
call void @llvm.dbg.value(metadata i64 %147, metadata !3821, metadata !DIExpression()), !dbg !3966 | |
br label %typeswitch.done67, !dbg !3972 | |
typeswitch.body23: ; preds = %typeswitch.body | |
%148 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972 | |
%149 = load i8*, i8** %148, align 8, !dbg !3972 | |
%150 = bitcast i8* %149 to i32*, !dbg !3972 | |
%151 = load i32, i32* %150, align 4, !dbg !3972 | |
call void @llvm.dbg.value(metadata i32 %151, metadata !3870, metadata !DIExpression()), !dbg !3969 | |
%152 = call i32 @llvm.bswap.i32(i32 %151), !dbg !3988 | |
%153 = zext i32 %152 to i64, !dbg !3988 | |
call void @llvm.dbg.value(metadata i64 %153, metadata !3821, metadata !DIExpression()), !dbg !3966 | |
br label %typeswitch.done67, !dbg !3972 | |
typeswitch.body24: ; preds = %typeswitch.body | |
%154 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972 | |
%155 = load i8*, i8** %154, align 8, !dbg !3972 | |
%156 = bitcast i8* %155 to i64*, !dbg !3972 | |
%157 = load i64, i64* %156, align 8, !dbg !3972 | |
call void @llvm.dbg.value(metadata i64 %157, metadata !3873, metadata !DIExpression()), !dbg !3969 | |
%158 = call i64 @llvm.bswap.i64(i64 %157), !dbg !3989 | |
call void @llvm.dbg.value(metadata i64 %158, metadata !3821, metadata !DIExpression()), !dbg !3966 | |
br label %typeswitch.done67, !dbg !3972 | |
typeswitch.body25: ; preds = %typeswitch.body | |
%159 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972 | |
%160 = load i8*, i8** %159, align 8, !dbg !3972 | |
%161 = bitcast i8* %160 to i128*, !dbg !3972 | |
%162 = load i128, i128* %161, align 16, !dbg !3972 | |
call void @llvm.dbg.value(metadata i128 %162, metadata !3876, metadata !DIExpression()), !dbg !3969 | |
%163 = call i128 @llvm.bswap.i128(i128 %162), !dbg !3990 | |
%164 = trunc i128 %163 to i64, !dbg !3990 | |
call void @llvm.dbg.value(metadata i64 %164, metadata !3821, metadata !DIExpression()), !dbg !3966 | |
br label %typeswitch.done67, !dbg !3972 | |
typeswitch.body26: ; preds = %typeswitch.body | |
%165 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972 | |
%166 = load i8*, i8** %165, align 8, !dbg !3972 | |
%167 = bitcast i8* %166 to i16*, !dbg !3972 | |
%168 = load i16, i16* %167, align 2, !dbg !3972 | |
call void @llvm.dbg.value(metadata i16 %168, metadata !3879, metadata !DIExpression()), !dbg !3969 | |
%169 = call i16 @llvm.bswap.i16(i16 %168), !dbg !3991 | |
%170 = sext i16 %169 to i64, !dbg !3991 | |
call void @llvm.dbg.value(metadata i64 %170, metadata !3821, metadata !DIExpression()), !dbg !3966 | |
br label %typeswitch.done67, !dbg !3972 | |
typeswitch.body27: ; preds = %typeswitch.body | |
%171 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972 | |
%172 = load i8*, i8** %171, align 8, !dbg !3972 | |
%173 = bitcast i8* %172 to i32*, !dbg !3972 | |
%174 = load i32, i32* %173, align 4, !dbg !3972 | |
call void @llvm.dbg.value(metadata i32 %174, metadata !3882, metadata !DIExpression()), !dbg !3969 | |
%175 = call i32 @llvm.bswap.i32(i32 %174), !dbg !3992 | |
%176 = sext i32 %175 to i64, !dbg !3992 | |
call void @llvm.dbg.value(metadata i64 %176, metadata !3821, metadata !DIExpression()), !dbg !3966 | |
br label %typeswitch.done67, !dbg !3972 | |
typeswitch.body28: ; preds = %typeswitch.body | |
%177 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972 | |
%178 = load i8*, i8** %177, align 8, !dbg !3972 | |
%179 = bitcast i8* %178 to i64*, !dbg !3972 | |
%180 = load i64, i64* %179, align 8, !dbg !3972 | |
call void @llvm.dbg.value(metadata i64 %180, metadata !3885, metadata !DIExpression()), !dbg !3969 | |
%181 = call i64 @llvm.bswap.i64(i64 %180), !dbg !3993 | |
call void @llvm.dbg.value(metadata i64 %181, metadata !3821, metadata !DIExpression()), !dbg !3966 | |
br label %typeswitch.done67, !dbg !3972 | |
typeswitch.body29: ; preds = %typeswitch.body | |
%182 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3972 | |
%183 = load i8*, i8** %182, align 8, !dbg !3972 | |
%184 = bitcast i8* %183 to i128*, !dbg !3972 | |
%185 = load i128, i128* %184, align 16, !dbg !3972 | |
call void @llvm.dbg.value(metadata i128 %185, metadata !3888, metadata !DIExpression()), !dbg !3969 | |
%186 = call i128 @llvm.bswap.i128(i128 %185), !dbg !3994 | |
%187 = trunc i128 %186 to i64, !dbg !3994 | |
call void @llvm.dbg.value(metadata i64 %187, metadata !3821, metadata !DIExpression()), !dbg !3966 | |
br label %typeswitch.done67, !dbg !3972 | |
typeswitch.body30: ; preds = %if.done | |
%188 = bitcast %runtime.Type_Info_Rune* %6 to i8*, !dbg !3959 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %188, i8* align 1 %41, i64 0, i1 false), !dbg !3959 | |
call void @llvm.dbg.value(metadata i32 0, metadata !3893, metadata !DIExpression()), !dbg !3969 | |
%189 = bitcast { i32, i8 }* %7 to i8*, !dbg !3960 | |
call void @llvm.memset.p0i8.i64(i8* %189, i8 0, i64 8, i1 false), !dbg !3960 | |
%190 = load i64, i64* %34, align 8, !dbg !3960 | |
%191 = icmp eq i64 %190, 4755801206503243880, !dbg !3960 | |
br i1 %191, label %any_cast.ok, label %any_cast.end, !dbg !3960 | |
any_cast.ok: ; preds = %typeswitch.body30 | |
%192 = getelementptr inbounds { i32, i8 }, { i32, i8 }* %7, i32 0, i32 0, !dbg !3960 | |
%193 = getelementptr inbounds { i32, i8 }, { i32, i8 }* %7, i32 0, i32 1, !dbg !3960 | |
%194 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3960 | |
%195 = load i8*, i8** %194, align 8, !dbg !3960 | |
%196 = bitcast i8* %195 to i32*, !dbg !3960 | |
%197 = load i32, i32* %196, align 4, !dbg !3960 | |
store i32 %197, i32* %192, align 4, !dbg !3960 | |
store i8 1, i8* %193, align 1, !dbg !3960 | |
br label %any_cast.end, !dbg !3960 | |
any_cast.end: ; preds = %any_cast.ok, %typeswitch.body30 | |
%198 = getelementptr inbounds { i32, i8 }, { i32, i8 }* %7, i32 0, i32 1, !dbg !3960 | |
%199 = load i8, i8* %198, align 1, !dbg !3960 | |
%200 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3960 | |
%201 = load i8*, i8** %200, align 8, !dbg !3960 | |
%202 = icmp ne i8 %199, 0, !dbg !3960 | |
%203 = bitcast [2 x i64]* %8 to %..string*, !dbg !3960 | |
store %..string { i8* getelementptr inbounds ([54 x i8], [54 x i8]* @"csbs$a2", i64 0, i64 0), i64 53 }, %..string* %203, align 8, !dbg !3960 | |
%204 = load [2 x i64], [2 x i64]* %8, align 8, !dbg !3960 | |
call void @runtime.type_assertion_check2(i1 %202, [2 x i64] %204, i32 874, i32 8, i64 %190, i64 4755801206503243880, i8* %201), !dbg !3960 | |
%205 = getelementptr inbounds { i32, i8 }, { i32, i8 }* %7, i32 0, i32 0, !dbg !3960 | |
%206 = load i32, i32* %205, align 4, !dbg !3960 | |
call void @llvm.dbg.value(metadata i32 %206, metadata !3893, metadata !DIExpression()), !dbg !3969 | |
%207 = sext i32 %206 to i64, !dbg !3995 | |
call void @llvm.dbg.value(metadata i64 %207, metadata !3821, metadata !DIExpression()), !dbg !3966 | |
call void @llvm.dbg.value(metadata i8 1, metadata !3822, metadata !DIExpression()), !dbg !3966 | |
br label %typeswitch.done67, !dbg !3959 | |
typeswitch.body31: ; preds = %if.done | |
%208 = bitcast %runtime.Type_Info_Float* %9 to i8*, !dbg !3959 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %208, i8* align 1 %41, i64 1, i1 false), !dbg !3959 | |
call void @llvm.dbg.value(metadata i8 1, metadata !3822, metadata !DIExpression()), !dbg !3966 | |
%209 = load i64, i64* %34, align 8, !dbg !3996 | |
switch i64 %209, label %typeswitch.done67 [ | |
i64 216172782113783914, label %typeswitch.body32 | |
i64 216172782113783915, label %typeswitch.body33 | |
i64 216172782113783917, label %typeswitch.body34 | |
i64 216172782113783918, label %typeswitch.body35 | |
i64 216172782113783920, label %typeswitch.body36 | |
i64 216172782113783921, label %typeswitch.body37 | |
], !dbg !3996 | |
typeswitch.body32: ; preds = %typeswitch.body31 | |
%210 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3996 | |
%211 = load i8*, i8** %210, align 8, !dbg !3996 | |
%212 = bitcast i8* %211 to float*, !dbg !3996 | |
%213 = load float, float* %212, align 4, !dbg !3996 | |
call void @llvm.dbg.value(metadata float %213, metadata !3895, metadata !DIExpression()), !dbg !3969 | |
%214 = fptosi float %213 to i64, !dbg !3997 | |
call void @llvm.dbg.value(metadata i64 %214, metadata !3821, metadata !DIExpression()), !dbg !3966 | |
br label %typeswitch.done67, !dbg !3996 | |
typeswitch.body33: ; preds = %typeswitch.body31 | |
%215 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3996 | |
%216 = load i8*, i8** %215, align 8, !dbg !3996 | |
%217 = bitcast i8* %216 to double*, !dbg !3996 | |
%218 = load double, double* %217, align 8, !dbg !3996 | |
call void @llvm.dbg.value(metadata double %218, metadata !3898, metadata !DIExpression()), !dbg !3969 | |
%219 = fptosi double %218 to i64, !dbg !3998 | |
call void @llvm.dbg.value(metadata i64 %219, metadata !3821, metadata !DIExpression()), !dbg !3966 | |
br label %typeswitch.done67, !dbg !3996 | |
typeswitch.body34: ; preds = %typeswitch.body31 | |
%220 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3996 | |
%221 = load i8*, i8** %220, align 8, !dbg !3996 | |
%222 = bitcast i8* %221 to float*, !dbg !3996 | |
%223 = load float, float* %222, align 4, !dbg !3996 | |
call void @llvm.dbg.value(metadata float %223, metadata !3899, metadata !DIExpression()), !dbg !3969 | |
%224 = fptosi float %223 to i64, !dbg !3999 | |
call void @llvm.dbg.value(metadata i64 %224, metadata !3821, metadata !DIExpression()), !dbg !3966 | |
br label %typeswitch.done67, !dbg !3996 | |
typeswitch.body35: ; preds = %typeswitch.body31 | |
%225 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3996 | |
%226 = load i8*, i8** %225, align 8, !dbg !3996 | |
%227 = bitcast i8* %226 to double*, !dbg !3996 | |
%228 = load double, double* %227, align 8, !dbg !3996 | |
call void @llvm.dbg.value(metadata double %228, metadata !3902, metadata !DIExpression()), !dbg !3969 | |
%229 = fptosi double %228 to i64, !dbg !4000 | |
call void @llvm.dbg.value(metadata i64 %229, metadata !3821, metadata !DIExpression()), !dbg !3966 | |
br label %typeswitch.done67, !dbg !3996 | |
typeswitch.body36: ; preds = %typeswitch.body31 | |
%230 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3996 | |
%231 = load i8*, i8** %230, align 8, !dbg !3996 | |
%232 = bitcast i8* %231 to float*, !dbg !3996 | |
%233 = load float, float* %232, align 4, !dbg !3996 | |
call void @llvm.dbg.value(metadata float %233, metadata !3905, metadata !DIExpression()), !dbg !3969 | |
%234 = bitcast float %233 to i32, !dbg !4001 | |
%235 = call i32 @llvm.bswap.i32(i32 %234), !dbg !4001 | |
%236 = bitcast i32 %235 to float, !dbg !4001 | |
%237 = fptosi float %236 to i64, !dbg !4001 | |
call void @llvm.dbg.value(metadata i64 %237, metadata !3821, metadata !DIExpression()), !dbg !3966 | |
br label %typeswitch.done67, !dbg !3996 | |
typeswitch.body37: ; preds = %typeswitch.body31 | |
%238 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3996 | |
%239 = load i8*, i8** %238, align 8, !dbg !3996 | |
%240 = bitcast i8* %239 to double*, !dbg !3996 | |
%241 = load double, double* %240, align 8, !dbg !3996 | |
call void @llvm.dbg.value(metadata double %241, metadata !3908, metadata !DIExpression()), !dbg !3969 | |
%242 = bitcast double %241 to i64, !dbg !4002 | |
%243 = call i64 @llvm.bswap.i64(i64 %242), !dbg !4002 | |
%244 = bitcast i64 %243 to double, !dbg !4002 | |
%245 = fptosi double %244 to i64, !dbg !4002 | |
call void @llvm.dbg.value(metadata i64 %245, metadata !3821, metadata !DIExpression()), !dbg !3966 | |
br label %typeswitch.done67, !dbg !3996 | |
typeswitch.body40: ; preds = %if.done | |
%246 = bitcast %runtime.Type_Info_Boolean* %10 to i8*, !dbg !3959 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %246, i8* align 1 %41, i64 0, i1 false), !dbg !3959 | |
call void @llvm.dbg.value(metadata i8 1, metadata !3822, metadata !DIExpression()), !dbg !3966 | |
%247 = load i64, i64* %34, align 8, !dbg !4003 | |
switch i64 %247, label %typeswitch.done67 [ | |
i64 504403158265495575, label %typeswitch.body41 | |
i64 504403158265495652, label %typeswitch.body42 | |
i64 504403158265495653, label %typeswitch.body43 | |
i64 504403158265495654, label %typeswitch.body44 | |
i64 504403158265495655, label %typeswitch.body45 | |
], !dbg !4003 | |
typeswitch.body41: ; preds = %typeswitch.body40 | |
%248 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !4003 | |
%249 = load i8*, i8** %248, align 8, !dbg !4003 | |
%250 = load i8, i8* %249, align 1, !dbg !4003 | |
call void @llvm.dbg.value(metadata i8 %250, metadata !3913, metadata !DIExpression()), !dbg !3969 | |
%251 = icmp ne i8 %250, 0, !dbg !4004 | |
%252 = zext i1 %251 to i64, !dbg !4004 | |
call void @llvm.dbg.value(metadata i64 %252, metadata !3821, metadata !DIExpression()), !dbg !3966 | |
br label %typeswitch.done67, !dbg !4003 | |
typeswitch.body42: ; preds = %typeswitch.body40 | |
%253 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !4003 | |
%254 = load i8*, i8** %253, align 8, !dbg !4003 | |
%255 = load i8, i8* %254, align 1, !dbg !4003 | |
call void @llvm.dbg.value(metadata i8 %255, metadata !3914, metadata !DIExpression()), !dbg !3969 | |
%256 = icmp ne i8 %255, 0, !dbg !4005 | |
%257 = zext i1 %256 to i64, !dbg !4005 | |
call void @llvm.dbg.value(metadata i64 %257, metadata !3821, metadata !DIExpression()), !dbg !3966 | |
br label %typeswitch.done67, !dbg !4003 | |
typeswitch.body43: ; preds = %typeswitch.body40 | |
%258 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !4003 | |
%259 = load i8*, i8** %258, align 8, !dbg !4003 | |
%260 = bitcast i8* %259 to i16*, !dbg !4003 | |
%261 = load i16, i16* %260, align 2, !dbg !4003 | |
call void @llvm.dbg.value(metadata i16 %261, metadata !3917, metadata !DIExpression()), !dbg !3969 | |
%262 = icmp ne i16 %261, 0, !dbg !4006 | |
%263 = zext i1 %262 to i64, !dbg !4006 | |
call void @llvm.dbg.value(metadata i64 %263, metadata !3821, metadata !DIExpression()), !dbg !3966 | |
br label %typeswitch.done67, !dbg !4003 | |
typeswitch.body44: ; preds = %typeswitch.body40 | |
%264 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !4003 | |
%265 = load i8*, i8** %264, align 8, !dbg !4003 | |
%266 = bitcast i8* %265 to i32*, !dbg !4003 | |
%267 = load i32, i32* %266, align 4, !dbg !4003 | |
call void @llvm.dbg.value(metadata i32 %267, metadata !3920, metadata !DIExpression()), !dbg !3969 | |
%268 = icmp ne i32 %267, 0, !dbg !4007 | |
%269 = zext i1 %268 to i64, !dbg !4007 | |
call void @llvm.dbg.value(metadata i64 %269, metadata !3821, metadata !DIExpression()), !dbg !3966 | |
br label %typeswitch.done67, !dbg !4003 | |
typeswitch.body45: ; preds = %typeswitch.body40 | |
%270 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !4003 | |
%271 = load i8*, i8** %270, align 8, !dbg !4003 | |
%272 = bitcast i8* %271 to i64*, !dbg !4003 | |
%273 = load i64, i64* %272, align 8, !dbg !4003 | |
call void @llvm.dbg.value(metadata i64 %273, metadata !3923, metadata !DIExpression()), !dbg !3969 | |
%274 = icmp ne i64 %273, 0, !dbg !4008 | |
%275 = zext i1 %274 to i64, !dbg !4008 | |
call void @llvm.dbg.value(metadata i64 %275, metadata !3821, metadata !DIExpression()), !dbg !3966 | |
br label %typeswitch.done67, !dbg !4003 | |
typeswitch.body48: ; preds = %if.done | |
%276 = bitcast %runtime.Type_Info_Complex* %11 to i8*, !dbg !3959 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %276, i8* align 1 %41, i64 0, i1 false), !dbg !3959 | |
%277 = load i64, i64* %34, align 8, !dbg !3962 | |
switch i64 %277, label %typeswitch.done67 [ | |
i64 288230376151711858, label %typeswitch.body49 | |
i64 288230376151711859, label %typeswitch.body52 | |
], !dbg !3962 | |
typeswitch.body49: ; preds = %typeswitch.body48 | |
%278 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3962 | |
%279 = load i8*, i8** %278, align 8, !dbg !3962 | |
%280 = bitcast %..complex64* %12 to i8*, !dbg !3962 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %280, i8* align 4 %279, i64 8, i1 false), !dbg !3962 | |
%281 = getelementptr inbounds %..complex64, %..complex64* %12, i32 0, i32 1, !dbg !4009 | |
%282 = load float, float* %281, align 4, !dbg !4009 | |
%283 = fcmp oeq float %282, 0.000000e+00, !dbg !4009 | |
%284 = getelementptr inbounds %..complex64, %..complex64* %12, i32 0, i32 0, !dbg !4009 | |
%285 = load float, float* %284, align 4, !dbg !4009 | |
%286 = fptosi float %285 to i64, !dbg !4009 | |
%.371 = select i1 %283, i8 1, i8 0, !dbg !4009 | |
%.3 = select i1 %283, i64 %286, i64 0, !dbg !4009 | |
br label %typeswitch.done67, !dbg !4009 | |
typeswitch.body52: ; preds = %typeswitch.body48 | |
%287 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3962 | |
%288 = load i8*, i8** %287, align 8, !dbg !3962 | |
%289 = bitcast %..complex128* %13 to i8*, !dbg !3962 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %289, i8* align 8 %288, i64 16, i1 false), !dbg !3962 | |
%290 = getelementptr inbounds %..complex128, %..complex128* %13, i32 0, i32 1, !dbg !4010 | |
%291 = load double, double* %290, align 8, !dbg !4010 | |
%292 = fcmp oeq double %291, 0.000000e+00, !dbg !4010 | |
%293 = getelementptr inbounds %..complex128, %..complex128* %13, i32 0, i32 0, !dbg !4010 | |
%294 = load double, double* %293, align 8, !dbg !4010 | |
%295 = fptosi double %294 to i64, !dbg !4010 | |
%.472 = select i1 %292, i8 1, i8 0, !dbg !4010 | |
%.4 = select i1 %292, i64 %295, i64 0, !dbg !4010 | |
br label %typeswitch.done67, !dbg !4010 | |
typeswitch.body56: ; preds = %if.done | |
%296 = bitcast %runtime.Type_Info_Quaternion* %14 to i8*, !dbg !3959 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %296, i8* align 1 %41, i64 0, i1 false), !dbg !3959 | |
%297 = load i64, i64* %34, align 8, !dbg !3964 | |
switch i64 %297, label %typeswitch.done67 [ | |
i64 116, label %typeswitch.body57 | |
i64 117, label %typeswitch.body61 | |
], !dbg !3964 | |
typeswitch.body57: ; preds = %typeswitch.body56 | |
%298 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3964 | |
%299 = load i8*, i8** %298, align 8, !dbg !3964 | |
%300 = bitcast %..quaternion128* %15 to i8*, !dbg !3964 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %300, i8* align 4 %299, i64 16, i1 false), !dbg !3964 | |
%301 = getelementptr inbounds %..quaternion128, %..quaternion128* %15, i32 0, i32 0, !dbg !4011 | |
%302 = load float, float* %301, align 4, !dbg !4011 | |
%303 = fcmp oeq float %302, 0.000000e+00, !dbg !4011 | |
br i1 %303, label %cmp.and, label %typeswitch.done67, !dbg !4011 | |
cmp.and: ; preds = %typeswitch.body57 | |
%304 = getelementptr inbounds %..quaternion128, %..quaternion128* %15, i32 0, i32 1, !dbg !4011 | |
%305 = load float, float* %304, align 4, !dbg !4011 | |
%306 = fcmp oeq float %305, 0.000000e+00, !dbg !4011 | |
br i1 %306, label %cmp.and58, label %typeswitch.done67, !dbg !4011 | |
cmp.and58: ; preds = %cmp.and | |
%307 = getelementptr inbounds %..quaternion128, %..quaternion128* %15, i32 0, i32 2, !dbg !4011 | |
%308 = load float, float* %307, align 4, !dbg !4011 | |
%309 = fcmp oeq float %308, 0.000000e+00, !dbg !4011 | |
br i1 %309, label %if.then59, label %typeswitch.done67, !dbg !4011 | |
if.then59: ; preds = %cmp.and58 | |
%310 = getelementptr inbounds %..quaternion128, %..quaternion128* %15, i32 0, i32 3, !dbg !4012 | |
%311 = load float, float* %310, align 4, !dbg !4012 | |
%312 = fptosi float %311 to i64, !dbg !4012 | |
call void @llvm.dbg.value(metadata i64 %312, metadata !3821, metadata !DIExpression()), !dbg !3966 | |
call void @llvm.dbg.value(metadata i8 1, metadata !3822, metadata !DIExpression()), !dbg !3966 | |
br label %typeswitch.done67, !dbg !4011 | |
typeswitch.body61: ; preds = %typeswitch.body56 | |
%313 = getelementptr inbounds %..any, %..any* %4, i32 0, i32 0, !dbg !3964 | |
%314 = load i8*, i8** %313, align 8, !dbg !3964 | |
%315 = bitcast %..quaternion256* %16 to i8*, !dbg !3964 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %315, i8* align 8 %314, i64 32, i1 false), !dbg !3964 | |
%316 = getelementptr inbounds %..quaternion256, %..quaternion256* %16, i32 0, i32 0, !dbg !4015 | |
%317 = load double, double* %316, align 8, !dbg !4015 | |
%318 = fcmp oeq double %317, 0.000000e+00, !dbg !4015 | |
br i1 %318, label %cmp.and62, label %typeswitch.done67, !dbg !4015 | |
cmp.and62: ; preds = %typeswitch.body61 | |
%319 = getelementptr inbounds %..quaternion256, %..quaternion256* %16, i32 0, i32 1, !dbg !4015 | |
%320 = load double, double* %319, align 8, !dbg !4015 | |
%321 = fcmp oeq double %320, 0.000000e+00, !dbg !4015 | |
br i1 %321, label %cmp.and63, label %typeswitch.done67, !dbg !4015 | |
cmp.and63: ; preds = %cmp.and62 | |
%322 = getelementptr inbounds %..quaternion256, %..quaternion256* %16, i32 0, i32 2, !dbg !4015 | |
%323 = load double, double* %322, align 8, !dbg !4015 | |
%324 = fcmp oeq double %323, 0.000000e+00, !dbg !4015 | |
br i1 %324, label %if.then64, label %typeswitch.done67, !dbg !4015 | |
if.then64: ; preds = %cmp.and63 | |
%325 = getelementptr inbounds %..quaternion256, %..quaternion256* %16, i32 0, i32 3, !dbg !4016 | |
%326 = load double, double* %325, align 8, !dbg !4016 | |
%327 = fptosi double %326 to i64, !dbg !4016 | |
call void @llvm.dbg.value(metadata i64 %327, metadata !3821, metadata !DIExpression()), !dbg !3966 | |
call void @llvm.dbg.value(metadata i8 1, metadata !3822, metadata !DIExpression()), !dbg !3966 | |
br label %typeswitch.done67, !dbg !4015 | |
typeswitch.done67: ; preds = %typeswitch.body56, %if.then59, %cmp.and58, %cmp.and, %typeswitch.body57, %if.then64, %cmp.and63, %cmp.and62, %typeswitch.body61, %typeswitch.body48, %typeswitch.body49, %typeswitch.body52, %typeswitch.body41, %typeswitch.body42, %typeswitch.body43, %typeswitch.body44, %typeswitch.body45, %typeswitch.body40, %typeswitch.body32, %typeswitch.body33, %typeswitch.body34, %typeswitch.body35, %typeswitch.body36, %typeswitch.body37, %typeswitch.body31, %typeswitch.body1, %typeswitch.body2, %typeswitch.body3, %typeswitch.body4, %typeswitch.body5, %typeswitch.body6, %typeswitch.body7, %typeswitch.body8, %typeswitch.body9, %typeswitch.body10, %typeswitch.body11, %typeswitch.body12, %typeswitch.body13, %typeswitch.body14, %typeswitch.body15, %typeswitch.body16, %typeswitch.body17, %typeswitch.body18, %typeswitch.body19, %typeswitch.body20, %typeswitch.body21, %typeswitch.body22, %typeswitch.body23, %typeswitch.body24, %typeswitch.body25, %typeswitch.body26, %typeswitch.body27, %typeswitch.body28, %typeswitch.body29, %typeswitch.body, %any_cast.end, %if.done | |
%.977 = phi i8 [ 0, %if.done ], [ 1, %any_cast.end ], [ 1, %typeswitch.body29 ], [ 1, %typeswitch.body28 ], [ 1, %typeswitch.body27 ], [ 1, %typeswitch.body26 ], [ 1, %typeswitch.body25 ], [ 1, %typeswitch.body24 ], [ 1, %typeswitch.body23 ], [ 1, %typeswitch.body22 ], [ 1, %typeswitch.body21 ], [ 1, %typeswitch.body20 ], [ 1, %typeswitch.body19 ], [ 1, %typeswitch.body18 ], [ 1, %typeswitch.body17 ], [ 1, %typeswitch.body16 ], [ 1, %typeswitch.body15 ], [ 1, %typeswitch.body14 ], [ 1, %typeswitch.body13 ], [ 1, %typeswitch.body12 ], [ 1, %typeswitch.body11 ], [ 1, %typeswitch.body10 ], [ 1, %typeswitch.body9 ], [ 1, %typeswitch.body8 ], [ 1, %typeswitch.body7 ], [ 1, %typeswitch.body6 ], [ 1, %typeswitch.body5 ], [ 1, %typeswitch.body4 ], [ 1, %typeswitch.body3 ], [ 1, %typeswitch.body2 ], [ 1, %typeswitch.body1 ], [ 0, %typeswitch.body ], [ 1, %typeswitch.body37 ], [ 1, %typeswitch.body36 ], [ 1, %typeswitch.body35 ], [ 1, %typeswitch.body34 ], [ 1, %typeswitch.body33 ], [ 1, %typeswitch.body32 ], [ 0, %typeswitch.body31 ], [ 1, %typeswitch.body45 ], [ 1, %typeswitch.body44 ], [ 1, %typeswitch.body43 ], [ 1, %typeswitch.body42 ], [ 1, %typeswitch.body41 ], [ 0, %typeswitch.body40 ], [ 0, %typeswitch.body48 ], [ %.371, %typeswitch.body49 ], [ %.472, %typeswitch.body52 ], [ 0, %typeswitch.body56 ], [ 1, %if.then59 ], [ 0, %cmp.and58 ], [ 0, %cmp.and ], [ 0, %typeswitch.body57 ], [ 1, %if.then64 ], [ 0, %cmp.and63 ], [ 0, %cmp.and62 ], [ 0, %typeswitch.body61 ] | |
%.9 = phi i64 [ 0, %if.done ], [ %207, %any_cast.end ], [ %187, %typeswitch.body29 ], [ %181, %typeswitch.body28 ], [ %176, %typeswitch.body27 ], [ %170, %typeswitch.body26 ], [ %164, %typeswitch.body25 ], [ %158, %typeswitch.body24 ], [ %153, %typeswitch.body23 ], [ %147, %typeswitch.body22 ], [ %141, %typeswitch.body21 ], [ %136, %typeswitch.body20 ], [ %132, %typeswitch.body19 ], [ %127, %typeswitch.body18 ], [ %122, %typeswitch.body17 ], [ %117, %typeswitch.body16 ], [ %113, %typeswitch.body15 ], [ %108, %typeswitch.body14 ], [ %103, %typeswitch.body13 ], [ %99, %typeswitch.body12 ], [ %95, %typeswitch.body11 ], [ %90, %typeswitch.body10 ], [ %86, %typeswitch.body9 ], [ %81, %typeswitch.body8 ], [ %76, %typeswitch.body7 ], [ %72, %typeswitch.body6 ], [ %68, %typeswitch.body5 ], [ %63, %typeswitch.body4 ], [ %59, %typeswitch.body3 ], [ %54, %typeswitch.body2 ], [ %49, %typeswitch.body1 ], [ 0, %typeswitch.body ], [ %245, %typeswitch.body37 ], [ %237, %typeswitch.body36 ], [ %229, %typeswitch.body35 ], [ %224, %typeswitch.body34 ], [ %219, %typeswitch.body33 ], [ %214, %typeswitch.body32 ], [ 0, %typeswitch.body31 ], [ %275, %typeswitch.body45 ], [ %269, %typeswitch.body44 ], [ %263, %typeswitch.body43 ], [ %257, %typeswitch.body42 ], [ %252, %typeswitch.body41 ], [ 0, %typeswitch.body40 ], [ 0, %typeswitch.body48 ], [ %.3, %typeswitch.body49 ], [ %.4, %typeswitch.body52 ], [ 0, %typeswitch.body56 ], [ %312, %if.then59 ], [ 0, %cmp.and58 ], [ 0, %cmp.and ], [ 0, %typeswitch.body57 ], [ %327, %if.then64 ], [ 0, %cmp.and63 ], [ 0, %cmp.and62 ], [ 0, %typeswitch.body61 ] | |
call void @llvm.dbg.value(metadata i64 %.9, metadata !3821, metadata !DIExpression()), !dbg !3966 | |
call void @llvm.dbg.value(metadata i8 %.977, metadata !3822, metadata !DIExpression()), !dbg !3966 | |
call void @llvm.dbg.value(metadata i64 %.9, metadata !3821, metadata !DIExpression()), !dbg !3966 | |
call void @llvm.dbg.value(metadata i8 %.977, metadata !3822, metadata !DIExpression()), !dbg !3966 | |
%328 = getelementptr inbounds { i64, i8 }, { i64, i8 }* %17, i32 0, i32 0, !dbg !3965 | |
%329 = getelementptr inbounds { i64, i8 }, { i64, i8 }* %17, i32 0, i32 1, !dbg !3965 | |
store i64 %.9, i64* %328, align 8, !dbg !3965 | |
store i8 %.977, i8* %329, align 1, !dbg !3965 | |
%330 = bitcast { i64, i8 }* %17 to [2 x i64]*, !dbg !3965 | |
%331 = load [2 x i64], [2 x i64]* %330, align 8, !dbg !3965 | |
ret [2 x i64] %331, !dbg !3965 | |
} | |
; Function Attrs: nounwind | |
define internal i8* @reflect.relative_pointer_to_absolute_raw(i8* %0, i64 %1, i8* noalias nocapture nonnull %__.context_ptr) #0 !dbg !4019 { | |
decls: | |
call void @llvm.dbg.declare(metadata %..any* %2, metadata !4026, metadata !DIExpression()), !dbg !4029 | |
%2 = alloca %..any, align 8, !dbg !4029 | |
%3 = alloca %..any, align 8, !dbg !4029 | |
call void @llvm.dbg.value(metadata i8* %0, metadata !4023, metadata !DIExpression()), !dbg !4030 | |
call void @llvm.dbg.value(metadata i64 %1, metadata !4024, metadata !DIExpression()), !dbg !4030 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !4025, metadata !DIExpression()), !dbg !4031 | |
%4 = bitcast %..any* %2 to i8*, !dbg !4029 | |
call void @llvm.memset.p0i8.i64(i8* %4, i8 0, i64 16, i1 false), !dbg !4029 | |
%5 = bitcast %..any* %3 to i8*, !dbg !4029 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %5, i8 0, i64 16, i1 false), !dbg !4029 | |
%6 = getelementptr inbounds %..any, %..any* %3, i32 0, i32 0, !dbg !4029 | |
store i8* %0, i8** %6, align 8, !dbg !4029 | |
%7 = getelementptr inbounds %..any, %..any* %3, i32 0, i32 1, !dbg !4029 | |
store i64 %1, i64* %7, align 8, !dbg !4029 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %4, i8* align 8 %5, i64 16, i1 false), !dbg !4029 | |
call void @llvm.dbg.value(metadata i8* null, metadata !4028, metadata !DIExpression()), !dbg !4032 | |
%8 = getelementptr inbounds %..any, %..any* %2, i32 0, i32 1, !dbg !4033 | |
%9 = load i64, i64* %8, align 8, !dbg !4033 | |
switch i64 %9, label %typeswitch.done [ | |
i64 72057594037927945, label %typeswitch.body | |
i64 72057594037928033, label %typeswitch.body1 | |
i64 72057594037927953, label %typeswitch.body2 | |
i64 72057594037927940, label %typeswitch.body3 | |
i64 4683743612465315936, label %typeswitch.body4 | |
i64 4683743612465315938, label %typeswitch.body5 | |
i64 4683743612465315860, label %typeswitch.body6 | |
i64 4683743612465315889, label %typeswitch.body7 | |
i64 72057594037928056, label %typeswitch.body8 | |
i64 72057594037928058, label %typeswitch.body9 | |
i64 72057594037928060, label %typeswitch.body10 | |
i64 4683743612465315959, label %typeswitch.body11 | |
i64 4683743612465315961, label %typeswitch.body12 | |
i64 4683743612465315963, label %typeswitch.body13 | |
i64 72057594037928062, label %typeswitch.body14 | |
i64 72057594037928064, label %typeswitch.body15 | |
i64 72057594037928066, label %typeswitch.body16 | |
i64 4683743612465315965, label %typeswitch.body17 | |
i64 4683743612465315967, label %typeswitch.body18 | |
i64 4683743612465315969, label %typeswitch.body19 | |
], !dbg !4033 | |
typeswitch.body: ; preds = %decls | |
%10 = getelementptr inbounds %..any, %..any* %2, i32 0, i32 0, !dbg !4033 | |
%11 = load i8*, i8** %10, align 8, !dbg !4033 | |
%12 = call i8* @reflect.relative_pointer_to_absolute_raw._handle-0(i8* %11, i8* %__.context_ptr), !dbg !4034 | |
call void @llvm.dbg.value(metadata i8* %12, metadata !4028, metadata !DIExpression()), !dbg !4032 | |
br label %typeswitch.done, !dbg !4033 | |
typeswitch.body1: ; preds = %decls | |
%13 = getelementptr inbounds %..any, %..any* %2, i32 0, i32 0, !dbg !4033 | |
%14 = load i8*, i8** %13, align 8, !dbg !4033 | |
%15 = bitcast i8* %14 to i16*, !dbg !4033 | |
%16 = call i8* @reflect.relative_pointer_to_absolute_raw._handle-1(i16* %15, i8* %__.context_ptr), !dbg !4035 | |
call void @llvm.dbg.value(metadata i8* %16, metadata !4028, metadata !DIExpression()), !dbg !4032 | |
br label %typeswitch.done, !dbg !4033 | |
typeswitch.body2: ; preds = %decls | |
%17 = getelementptr inbounds %..any, %..any* %2, i32 0, i32 0, !dbg !4033 | |
%18 = load i8*, i8** %17, align 8, !dbg !4033 | |
%19 = bitcast i8* %18 to i32*, !dbg !4033 | |
%20 = call i8* @reflect.relative_pointer_to_absolute_raw._handle-2(i32* %19, i8* %__.context_ptr), !dbg !4036 | |
call void @llvm.dbg.value(metadata i8* %20, metadata !4028, metadata !DIExpression()), !dbg !4032 | |
br label %typeswitch.done, !dbg !4033 | |
typeswitch.body3: ; preds = %decls | |
%21 = getelementptr inbounds %..any, %..any* %2, i32 0, i32 0, !dbg !4033 | |
%22 = load i8*, i8** %21, align 8, !dbg !4033 | |
%23 = bitcast i8* %22 to i64*, !dbg !4033 | |
%24 = call i8* @reflect.relative_pointer_to_absolute_raw._handle-3(i64* %23, i8* %__.context_ptr), !dbg !4037 | |
call void @llvm.dbg.value(metadata i8* %24, metadata !4028, metadata !DIExpression()), !dbg !4032 | |
br label %typeswitch.done, !dbg !4033 | |
typeswitch.body4: ; preds = %decls | |
%25 = getelementptr inbounds %..any, %..any* %2, i32 0, i32 0, !dbg !4033 | |
%26 = load i8*, i8** %25, align 8, !dbg !4033 | |
%27 = call i8* @reflect.relative_pointer_to_absolute_raw._handle-4(i8* %26, i8* %__.context_ptr), !dbg !4038 | |
call void @llvm.dbg.value(metadata i8* %27, metadata !4028, metadata !DIExpression()), !dbg !4032 | |
br label %typeswitch.done, !dbg !4033 | |
typeswitch.body5: ; preds = %decls | |
%28 = getelementptr inbounds %..any, %..any* %2, i32 0, i32 0, !dbg !4033 | |
%29 = load i8*, i8** %28, align 8, !dbg !4033 | |
%30 = bitcast i8* %29 to i16*, !dbg !4033 | |
%31 = call i8* @reflect.relative_pointer_to_absolute_raw._handle-5(i16* %30, i8* %__.context_ptr), !dbg !4039 | |
call void @llvm.dbg.value(metadata i8* %31, metadata !4028, metadata !DIExpression()), !dbg !4032 | |
br label %typeswitch.done, !dbg !4033 | |
typeswitch.body6: ; preds = %decls | |
%32 = getelementptr inbounds %..any, %..any* %2, i32 0, i32 0, !dbg !4033 | |
%33 = load i8*, i8** %32, align 8, !dbg !4033 | |
%34 = bitcast i8* %33 to i32*, !dbg !4033 | |
%35 = call i8* @reflect.relative_pointer_to_absolute_raw._handle-6(i32* %34, i8* %__.context_ptr), !dbg !4040 | |
call void @llvm.dbg.value(metadata i8* %35, metadata !4028, metadata !DIExpression()), !dbg !4032 | |
br label %typeswitch.done, !dbg !4033 | |
typeswitch.body7: ; preds = %decls | |
%36 = getelementptr inbounds %..any, %..any* %2, i32 0, i32 0, !dbg !4033 | |
%37 = load i8*, i8** %36, align 8, !dbg !4033 | |
%38 = bitcast i8* %37 to i64*, !dbg !4033 | |
%39 = call i8* @reflect.relative_pointer_to_absolute_raw._handle-7(i64* %38, i8* %__.context_ptr), !dbg !4041 | |
call void @llvm.dbg.value(metadata i8* %39, metadata !4028, metadata !DIExpression()), !dbg !4032 | |
br label %typeswitch.done, !dbg !4033 | |
typeswitch.body8: ; preds = %decls | |
%40 = getelementptr inbounds %..any, %..any* %2, i32 0, i32 0, !dbg !4033 | |
%41 = load i8*, i8** %40, align 8, !dbg !4033 | |
%42 = bitcast i8* %41 to i16*, !dbg !4033 | |
%43 = call i8* @reflect.relative_pointer_to_absolute_raw._handle-8(i16* %42, i8* %__.context_ptr), !dbg !4042 | |
call void @llvm.dbg.value(metadata i8* %43, metadata !4028, metadata !DIExpression()), !dbg !4032 | |
br label %typeswitch.done, !dbg !4033 | |
typeswitch.body9: ; preds = %decls | |
%44 = getelementptr inbounds %..any, %..any* %2, i32 0, i32 0, !dbg !4033 | |
%45 = load i8*, i8** %44, align 8, !dbg !4033 | |
%46 = bitcast i8* %45 to i32*, !dbg !4033 | |
%47 = call i8* @reflect.relative_pointer_to_absolute_raw._handle-9(i32* %46, i8* %__.context_ptr), !dbg !4043 | |
call void @llvm.dbg.value(metadata i8* %47, metadata !4028, metadata !DIExpression()), !dbg !4032 | |
br label %typeswitch.done, !dbg !4033 | |
typeswitch.body10: ; preds = %decls | |
%48 = getelementptr inbounds %..any, %..any* %2, i32 0, i32 0, !dbg !4033 | |
%49 = load i8*, i8** %48, align 8, !dbg !4033 | |
%50 = bitcast i8* %49 to i64*, !dbg !4033 | |
%51 = call i8* @reflect.relative_pointer_to_absolute_raw._handle-10(i64* %50, i8* %__.context_ptr), !dbg !4044 | |
call void @llvm.dbg.value(metadata i8* %51, metadata !4028, metadata !DIExpression()), !dbg !4032 | |
br label %typeswitch.done, !dbg !4033 | |
typeswitch.body11: ; preds = %decls | |
%52 = getelementptr inbounds %..any, %..any* %2, i32 0, i32 0, !dbg !4033 | |
%53 = load i8*, i8** %52, align 8, !dbg !4033 | |
%54 = bitcast i8* %53 to i16*, !dbg !4033 | |
%55 = call i8* @reflect.relative_pointer_to_absolute_raw._handle-11(i16* %54, i8* %__.context_ptr), !dbg !4045 | |
call void @llvm.dbg.value(metadata i8* %55, metadata !4028, metadata !DIExpression()), !dbg !4032 | |
br label %typeswitch.done, !dbg !4033 | |
typeswitch.body12: ; preds = %decls | |
%56 = getelementptr inbounds %..any, %..any* %2, i32 0, i32 0, !dbg !4033 | |
%57 = load i8*, i8** %56, align 8, !dbg !4033 | |
%58 = bitcast i8* %57 to i32*, !dbg !4033 | |
%59 = call i8* @reflect.relative_pointer_to_absolute_raw._handle-12(i32* %58, i8* %__.context_ptr), !dbg !4046 | |
call void @llvm.dbg.value(metadata i8* %59, metadata !4028, metadata !DIExpression()), !dbg !4032 | |
br label %typeswitch.done, !dbg !4033 | |
typeswitch.body13: ; preds = %decls | |
%60 = getelementptr inbounds %..any, %..any* %2, i32 0, i32 0, !dbg !4033 | |
%61 = load i8*, i8** %60, align 8, !dbg !4033 | |
%62 = bitcast i8* %61 to i64*, !dbg !4033 | |
%63 = call i8* @reflect.relative_pointer_to_absolute_raw._handle-13(i64* %62, i8* %__.context_ptr), !dbg !4047 | |
call void @llvm.dbg.value(metadata i8* %63, metadata !4028, metadata !DIExpression()), !dbg !4032 | |
br label %typeswitch.done, !dbg !4033 | |
typeswitch.body14: ; preds = %decls | |
%64 = getelementptr inbounds %..any, %..any* %2, i32 0, i32 0, !dbg !4033 | |
%65 = load i8*, i8** %64, align 8, !dbg !4033 | |
%66 = bitcast i8* %65 to i16*, !dbg !4033 | |
%67 = call i8* @reflect.relative_pointer_to_absolute_raw._handle-14(i16* %66, i8* %__.context_ptr), !dbg !4048 | |
call void @llvm.dbg.value(metadata i8* %67, metadata !4028, metadata !DIExpression()), !dbg !4032 | |
br label %typeswitch.done, !dbg !4033 | |
typeswitch.body15: ; preds = %decls | |
%68 = getelementptr inbounds %..any, %..any* %2, i32 0, i32 0, !dbg !4033 | |
%69 = load i8*, i8** %68, align 8, !dbg !4033 | |
%70 = bitcast i8* %69 to i32*, !dbg !4033 | |
%71 = call i8* @reflect.relative_pointer_to_absolute_raw._handle-15(i32* %70, i8* %__.context_ptr), !dbg !4049 | |
call void @llvm.dbg.value(metadata i8* %71, metadata !4028, metadata !DIExpression()), !dbg !4032 | |
br label %typeswitch.done, !dbg !4033 | |
typeswitch.body16: ; preds = %decls | |
%72 = getelementptr inbounds %..any, %..any* %2, i32 0, i32 0, !dbg !4033 | |
%73 = load i8*, i8** %72, align 8, !dbg !4033 | |
%74 = bitcast i8* %73 to i64*, !dbg !4033 | |
%75 = call i8* @reflect.relative_pointer_to_absolute_raw._handle-16(i64* %74, i8* %__.context_ptr), !dbg !4050 | |
call void @llvm.dbg.value(metadata i8* %75, metadata !4028, metadata !DIExpression()), !dbg !4032 | |
br label %typeswitch.done, !dbg !4033 | |
typeswitch.body17: ; preds = %decls | |
%76 = getelementptr inbounds %..any, %..any* %2, i32 0, i32 0, !dbg !4033 | |
%77 = load i8*, i8** %76, align 8, !dbg !4033 | |
%78 = bitcast i8* %77 to i16*, !dbg !4033 | |
%79 = call i8* @reflect.relative_pointer_to_absolute_raw._handle-17(i16* %78, i8* %__.context_ptr), !dbg !4051 | |
call void @llvm.dbg.value(metadata i8* %79, metadata !4028, metadata !DIExpression()), !dbg !4032 | |
br label %typeswitch.done, !dbg !4033 | |
typeswitch.body18: ; preds = %decls | |
%80 = getelementptr inbounds %..any, %..any* %2, i32 0, i32 0, !dbg !4033 | |
%81 = load i8*, i8** %80, align 8, !dbg !4033 | |
%82 = bitcast i8* %81 to i32*, !dbg !4033 | |
%83 = call i8* @reflect.relative_pointer_to_absolute_raw._handle-18(i32* %82, i8* %__.context_ptr), !dbg !4052 | |
call void @llvm.dbg.value(metadata i8* %83, metadata !4028, metadata !DIExpression()), !dbg !4032 | |
br label %typeswitch.done, !dbg !4033 | |
typeswitch.body19: ; preds = %decls | |
%84 = getelementptr inbounds %..any, %..any* %2, i32 0, i32 0, !dbg !4033 | |
%85 = load i8*, i8** %84, align 8, !dbg !4033 | |
%86 = bitcast i8* %85 to i64*, !dbg !4033 | |
%87 = call i8* @reflect.relative_pointer_to_absolute_raw._handle-19(i64* %86, i8* %__.context_ptr), !dbg !4053 | |
call void @llvm.dbg.value(metadata i8* %87, metadata !4028, metadata !DIExpression()), !dbg !4032 | |
br label %typeswitch.done, !dbg !4033 | |
typeswitch.done: ; preds = %typeswitch.body19, %typeswitch.body18, %typeswitch.body17, %typeswitch.body16, %typeswitch.body15, %typeswitch.body14, %typeswitch.body13, %typeswitch.body12, %typeswitch.body11, %typeswitch.body10, %typeswitch.body9, %typeswitch.body8, %typeswitch.body7, %typeswitch.body6, %typeswitch.body5, %typeswitch.body4, %typeswitch.body3, %typeswitch.body2, %typeswitch.body1, %typeswitch.body, %decls | |
%.0 = phi i8* [ null, %decls ], [ %87, %typeswitch.body19 ], [ %83, %typeswitch.body18 ], [ %79, %typeswitch.body17 ], [ %75, %typeswitch.body16 ], [ %71, %typeswitch.body15 ], [ %67, %typeswitch.body14 ], [ %63, %typeswitch.body13 ], [ %59, %typeswitch.body12 ], [ %55, %typeswitch.body11 ], [ %51, %typeswitch.body10 ], [ %47, %typeswitch.body9 ], [ %43, %typeswitch.body8 ], [ %39, %typeswitch.body7 ], [ %35, %typeswitch.body6 ], [ %31, %typeswitch.body5 ], [ %27, %typeswitch.body4 ], [ %24, %typeswitch.body3 ], [ %20, %typeswitch.body2 ], [ %16, %typeswitch.body1 ], [ %12, %typeswitch.body ], !dbg !4032 | |
call void @llvm.dbg.value(metadata i8* %.0, metadata !4028, metadata !DIExpression()), !dbg !4032 | |
ret i8* %.0, !dbg !4054 | |
} | |
; Function Attrs: nounwind | |
define internal i8 @reflect.is_byte(%runtime.Type_Info* %0, i8* noalias nocapture nonnull %__.context_ptr) #0 !dbg !4055 { | |
decls: | |
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Integer* %1, metadata !4062, metadata !DIExpression()), !dbg !4064 | |
%1 = alloca %runtime.Type_Info_Integer, align 1, !dbg !4065 | |
call void @llvm.dbg.value(metadata %runtime.Type_Info* %0, metadata !4060, metadata !DIExpression()), !dbg !4066 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !4061, metadata !DIExpression()), !dbg !4067 | |
%2 = icmp eq %runtime.Type_Info* %0, null, !dbg !4068 | |
br i1 %2, label %if.then, label %if.done, !dbg !4068 | |
if.then: ; preds = %if.done, %decls | |
ret i8 0, !dbg !4069 | |
if.done: ; preds = %decls | |
%3 = call %runtime.Type_Info* @reflect.type_info_base(%runtime.Type_Info* %0, i8* %__.context_ptr), !dbg !4065 | |
%4 = getelementptr inbounds %runtime.Type_Info, %runtime.Type_Info* %3, i32 0, i32 4, !dbg !4065 | |
%5 = bitcast { [0 x i64], [120 x i8], i64 }* %4 to i8*, !dbg !4065 | |
%6 = getelementptr inbounds { [0 x i64], [120 x i8], i64 }, { [0 x i64], [120 x i8], i64 }* %4, i32 0, i32 2, !dbg !4065 | |
%7 = load i64, i64* %6, align 8, !dbg !4065 | |
%cond = icmp eq i64 %7, 2, !dbg !4065 | |
br i1 %cond, label %typeswitch.body, label %if.then, !dbg !4065 | |
typeswitch.body: ; preds = %if.done | |
%8 = bitcast %runtime.Type_Info_Integer* %1 to i8*, !dbg !4065 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %8, i8* align 1 %5, i64 2, i1 false), !dbg !4065 | |
%9 = getelementptr inbounds %runtime.Type_Info, %runtime.Type_Info* %0, i32 0, i32 0, !dbg !4072 | |
%10 = load i64, i64* %9, align 8, !dbg !4072 | |
%11 = icmp eq i64 %10, 1, !dbg !4072 | |
%12 = zext i1 %11 to i8, !dbg !4072 | |
ret i8 %12, !dbg !4072 | |
} | |
; Function Attrs: nounwind | |
define internal i8 @reflect.is_rune(%runtime.Type_Info* %0, i8* noalias nocapture nonnull %__.context_ptr) #0 !dbg !4073 { | |
decls: | |
%1 = alloca { i8, i8 }, align 1, !dbg !4079 | |
call void @llvm.dbg.value(metadata %runtime.Type_Info* %0, metadata !4075, metadata !DIExpression()), !dbg !4080 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !4076, metadata !DIExpression()), !dbg !4081 | |
%2 = icmp eq %runtime.Type_Info* %0, null, !dbg !4082 | |
br i1 %2, label %if.then, label %if.done, !dbg !4082 | |
if.then: ; preds = %decls | |
ret i8 0, !dbg !4083 | |
if.done: ; preds = %decls | |
call void @llvm.dbg.value(metadata i8 0, metadata !4077, metadata !DIExpression()), !dbg !4086 | |
%3 = call %runtime.Type_Info* @reflect.type_info_base(%runtime.Type_Info* %0, i8* %__.context_ptr), !dbg !4079 | |
%4 = getelementptr inbounds %runtime.Type_Info, %runtime.Type_Info* %3, i32 0, i32 4, !dbg !4079 | |
%5 = getelementptr inbounds { [0 x i64], [120 x i8], i64 }, { [0 x i64], [120 x i8], i64 }* %4, i32 0, i32 2, !dbg !4079 | |
%6 = load i64, i64* %5, align 8, !dbg !4079 | |
%7 = icmp eq i64 %6, 3, !dbg !4079 | |
%8 = getelementptr inbounds { i8, i8 }, { i8, i8 }* %1, i32 0, i32 1, !dbg !4079 | |
%9 = zext i1 %7 to i8, !dbg !4079 | |
store i8 %9, i8* %8, align 1, !dbg !4079 | |
call void @llvm.dbg.value(metadata i8 %9, metadata !4077, metadata !DIExpression()), !dbg !4086 | |
ret i8 %9, !dbg !4087 | |
} | |
; Function Attrs: nounwind | |
define internal i8 @reflect.is_any(%runtime.Type_Info* %0, i8* noalias nocapture nonnull %__.context_ptr) #0 !dbg !4088 { | |
decls: | |
%1 = alloca { i8, i8 }, align 1, !dbg !4094 | |
call void @llvm.dbg.value(metadata %runtime.Type_Info* %0, metadata !4090, metadata !DIExpression()), !dbg !4095 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !4091, metadata !DIExpression()), !dbg !4096 | |
%2 = icmp eq %runtime.Type_Info* %0, null, !dbg !4097 | |
br i1 %2, label %if.then, label %if.done, !dbg !4097 | |
if.then: ; preds = %decls | |
ret i8 0, !dbg !4098 | |
if.done: ; preds = %decls | |
call void @llvm.dbg.value(metadata i8 0, metadata !4092, metadata !DIExpression()), !dbg !4101 | |
%3 = call %runtime.Type_Info* @reflect.type_info_base(%runtime.Type_Info* %0, i8* %__.context_ptr), !dbg !4094 | |
%4 = getelementptr inbounds %runtime.Type_Info, %runtime.Type_Info* %3, i32 0, i32 4, !dbg !4094 | |
%5 = getelementptr inbounds { [0 x i64], [120 x i8], i64 }, { [0 x i64], [120 x i8], i64 }* %4, i32 0, i32 2, !dbg !4094 | |
%6 = load i64, i64* %5, align 8, !dbg !4094 | |
%7 = icmp eq i64 %6, 9, !dbg !4094 | |
%8 = getelementptr inbounds { i8, i8 }, { i8, i8 }* %1, i32 0, i32 1, !dbg !4094 | |
%9 = zext i1 %7 to i8, !dbg !4094 | |
store i8 %9, i8* %8, align 1, !dbg !4094 | |
call void @llvm.dbg.value(metadata i8 %9, metadata !4092, metadata !DIExpression()), !dbg !4101 | |
ret i8 %9, !dbg !4102 | |
} | |
; Function Attrs: nounwind | |
define internal i8 @reflect.is_string(%runtime.Type_Info* %0, i8* noalias nocapture nonnull %__.context_ptr) #0 !dbg !4103 { | |
decls: | |
%1 = alloca { i8, i8 }, align 1, !dbg !4109 | |
call void @llvm.dbg.value(metadata %runtime.Type_Info* %0, metadata !4105, metadata !DIExpression()), !dbg !4110 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !4106, metadata !DIExpression()), !dbg !4111 | |
%2 = icmp eq %runtime.Type_Info* %0, null, !dbg !4112 | |
br i1 %2, label %if.then, label %if.done, !dbg !4112 | |
if.then: ; preds = %decls | |
ret i8 0, !dbg !4113 | |
if.done: ; preds = %decls | |
call void @llvm.dbg.value(metadata i8 0, metadata !4107, metadata !DIExpression()), !dbg !4116 | |
%3 = call %runtime.Type_Info* @reflect.type_info_base(%runtime.Type_Info* %0, i8* %__.context_ptr), !dbg !4109 | |
%4 = getelementptr inbounds %runtime.Type_Info, %runtime.Type_Info* %3, i32 0, i32 4, !dbg !4109 | |
%5 = getelementptr inbounds { [0 x i64], [120 x i8], i64 }, { [0 x i64], [120 x i8], i64 }* %4, i32 0, i32 2, !dbg !4109 | |
%6 = load i64, i64* %5, align 8, !dbg !4109 | |
%7 = icmp eq i64 %6, 7, !dbg !4109 | |
%8 = getelementptr inbounds { i8, i8 }, { i8, i8 }* %1, i32 0, i32 1, !dbg !4109 | |
%9 = zext i1 %7 to i8, !dbg !4109 | |
store i8 %9, i8* %8, align 1, !dbg !4109 | |
call void @llvm.dbg.value(metadata i8 %9, metadata !4107, metadata !DIExpression()), !dbg !4116 | |
ret i8 %9, !dbg !4117 | |
} | |
define internal i64 @fmt.wprintln([2 x i64] %0, [2 x i64] %1, [2 x i64] %2, i8* noalias nocapture nonnull %__.context_ptr) !dbg !4118 { | |
decls: | |
%3 = alloca %io.Writer, align 8 | |
call void @llvm.dbg.declare(metadata %io.Writer* %4, metadata !4122, metadata !DIExpression()), !dbg !4132 | |
%4 = alloca %io.Writer, align 8 | |
%5 = alloca { %..any*, i64 }, align 8 | |
call void @llvm.dbg.declare(metadata { %..any*, i64 }* %6, metadata !4123, metadata !DIExpression()), !dbg !4133 | |
%6 = alloca { %..any*, i64 }, align 8 | |
%7 = alloca %..string, align 8 | |
call void @llvm.dbg.declare(metadata %..string* %8, metadata !4124, metadata !DIExpression()), !dbg !4134 | |
%8 = alloca %..string, align 8 | |
call void @llvm.dbg.declare(metadata %fmt.Info* %9, metadata !4126, metadata !DIExpression()), !dbg !4135 | |
%9 = alloca %fmt.Info, align 8, !dbg !4135 | |
%10 = alloca { i64, i32 }, align 8, !dbg !4136 | |
%11 = alloca [2 x i64], align 8, !dbg !4140 | |
%12 = bitcast %io.Writer* %3 to [2 x i64]* | |
store [2 x i64] %0, [2 x i64]* %12, align 8 | |
%13 = bitcast %io.Writer* %4 to i8* | |
%14 = bitcast %io.Writer* %3 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %13, i8* align 8 %14, i64 16, i1 false) | |
%15 = bitcast { %..any*, i64 }* %5 to [2 x i64]* | |
store [2 x i64] %1, [2 x i64]* %15, align 8 | |
%16 = bitcast { %..any*, i64 }* %6 to i8* | |
%17 = bitcast { %..any*, i64 }* %5 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %16, i8* align 8 %17, i64 16, i1 false) | |
%18 = bitcast %..string* %7 to [2 x i64]* | |
store [2 x i64] %2, [2 x i64]* %18, align 8 | |
%19 = bitcast %..string* %8 to i8* | |
%20 = bitcast %..string* %7 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %19, i8* align 8 %20, i64 16, i1 false) | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !4125, metadata !DIExpression()), !dbg !4141 | |
%21 = bitcast %fmt.Info* %9 to i8*, !dbg !4135 | |
call void @llvm.memset.p0i8.i64(i8* %21, i8 0, i64 80, i1 false), !dbg !4135 | |
%22 = getelementptr inbounds %fmt.Info, %fmt.Info* %9, i32 0, i32 13, !dbg !4142 | |
%23 = bitcast %io.Writer* %22 to i8*, !dbg !4142 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %23, i8* align 8 %14, i64 16, i1 false), !dbg !4142 | |
call void @llvm.dbg.value(metadata i64 0, metadata !4128, metadata !DIExpression()), !dbg !4143 | |
%24 = getelementptr inbounds %io.Writer, %io.Writer* %4, i32 0, i32 0, !dbg !4144 | |
%25 = bitcast %io.Stream* %24 to [2 x i64]*, !dbg !4144 | |
%26 = load [2 x i64], [2 x i64]* %25, align 8, !dbg !4144 | |
%27 = call i64 @io.size([2 x i64] %26, i8* %__.context_ptr), !dbg !4144 | |
call void @llvm.dbg.value(metadata i64 %27, metadata !4128, metadata !DIExpression()), !dbg !4143 | |
call void @llvm.dbg.value(metadata i64 0, metadata !4129, metadata !DIExpression()), !dbg !4145 | |
%28 = getelementptr inbounds { %..any*, i64 }, { %..any*, i64 }* %6, i32 0, i32 1, !dbg !4146 | |
%29 = load i64, i64* %28, align 8, !dbg !4146 | |
br label %for.index.loop, !dbg !4146 | |
for.index.loop: ; preds = %if.done, %decls | |
%.0 = phi i64 [ -1, %decls ], [ %30, %if.done ], !dbg !4146 | |
%30 = add i64 %.0, 1, !dbg !4146 | |
%31 = icmp slt i64 %30, %29, !dbg !4146 | |
br i1 %31, label %for.index.body, label %for.index.done, !dbg !4146 | |
for.index.body: ; preds = %for.index.loop | |
call void @llvm.dbg.value(metadata i64 %30, metadata !4129, metadata !DIExpression()), !dbg !4145 | |
%32 = icmp sgt i64 %30, 0, !dbg !4147 | |
br i1 %32, label %if.then, label %if.done, !dbg !4147 | |
if.then: ; preds = %for.index.body | |
%33 = bitcast %io.Writer* %22 to [2 x i64]*, !dbg !4136 | |
%34 = load [2 x i64], [2 x i64]* %33, align 8, !dbg !4136 | |
%35 = bitcast %..string* %8 to [2 x i64]*, !dbg !4136 | |
%36 = load [2 x i64], [2 x i64]* %35, align 8, !dbg !4136 | |
%37 = call [2 x i64] @io.write_string([2 x i64] %34, [2 x i64] %36, i8* %__.context_ptr), !dbg !4136 | |
%38 = bitcast { i64, i32 }* %10 to [2 x i64]*, !dbg !4136 | |
store [2 x i64] %37, [2 x i64]* %38, align 8, !dbg !4136 | |
br label %if.done, !dbg !4147 | |
if.done: ; preds = %if.then, %for.index.body | |
%39 = getelementptr inbounds { %..any*, i64 }, { %..any*, i64 }* %6, i32 0, i32 0, !dbg !4140 | |
%40 = load %..any*, %..any** %39, align 8, !dbg !4140 | |
%41 = load i64, i64* %28, align 8, !dbg !4140 | |
%42 = bitcast [2 x i64]* %11 to %..string*, !dbg !4140 | |
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %42, align 8, !dbg !4140 | |
%43 = load [2 x i64], [2 x i64]* %11, align 8, !dbg !4140 | |
call void @runtime.bounds_check_error([2 x i64] %43, i32 241, i32 23, i64 %30, i64 %41), !dbg !4140 | |
%44 = getelementptr %..any, %..any* %40, i64 %30, !dbg !4140 | |
%45 = bitcast %..any* %44 to [2 x i64]*, !dbg !4140 | |
%46 = load [2 x i64], [2 x i64]* %45, align 8, !dbg !4140 | |
call void @fmt.fmt_value(%fmt.Info* %9, [2 x i64] %46, i32 118, i8* %__.context_ptr), !dbg !4140 | |
br label %for.index.loop, !dbg !4146 | |
for.index.done: ; preds = %for.index.loop | |
%47 = bitcast %io.Writer* %22 to [2 x i64]*, !dbg !4148 | |
%48 = load [2 x i64], [2 x i64]* %47, align 8, !dbg !4148 | |
%49 = call i32 @io.write_byte_to_writer([2 x i64] %48, i8 10, i8* %__.context_ptr), !dbg !4148 | |
%50 = bitcast %io.Writer* %4 to %io.Flusher*, !dbg !4149 | |
%51 = bitcast %io.Flusher* %50 to [2 x i64]*, !dbg !4149 | |
%52 = load [2 x i64], [2 x i64]* %51, align 8, !dbg !4149 | |
%53 = call i32 @io.flush([2 x i64] %52, i8* %__.context_ptr), !dbg !4149 | |
call void @llvm.dbg.value(metadata i64 0, metadata !4131, metadata !DIExpression()), !dbg !4143 | |
%54 = load [2 x i64], [2 x i64]* %25, align 8, !dbg !4150 | |
%55 = call i64 @io.size([2 x i64] %54, i8* %__.context_ptr), !dbg !4150 | |
call void @llvm.dbg.value(metadata i64 %55, metadata !4131, metadata !DIExpression()), !dbg !4143 | |
%56 = sub i64 %55, %27, !dbg !4151 | |
ret i64 %56, !dbg !4151 | |
} | |
; Function Attrs: nounwind | |
define internal i8 @reflect.is_pointer(%runtime.Type_Info* %0, i8* noalias nocapture nonnull %__.context_ptr) #0 !dbg !4152 { | |
decls: | |
%1 = alloca { i8, i8 }, align 1, !dbg !4158 | |
call void @llvm.dbg.value(metadata %runtime.Type_Info* %0, metadata !4154, metadata !DIExpression()), !dbg !4159 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !4155, metadata !DIExpression()), !dbg !4160 | |
%2 = icmp eq %runtime.Type_Info* %0, null, !dbg !4161 | |
br i1 %2, label %if.then, label %if.done, !dbg !4161 | |
if.then: ; preds = %decls | |
ret i8 0, !dbg !4162 | |
if.done: ; preds = %decls | |
call void @llvm.dbg.value(metadata i8 0, metadata !4156, metadata !DIExpression()), !dbg !4165 | |
%3 = call %runtime.Type_Info* @reflect.type_info_base(%runtime.Type_Info* %0, i8* %__.context_ptr), !dbg !4158 | |
%4 = getelementptr inbounds %runtime.Type_Info, %runtime.Type_Info* %3, i32 0, i32 4, !dbg !4158 | |
%5 = getelementptr inbounds { [0 x i64], [120 x i8], i64 }, { [0 x i64], [120 x i8], i64 }* %4, i32 0, i32 2, !dbg !4158 | |
%6 = load i64, i64* %5, align 8, !dbg !4158 | |
%7 = icmp eq i64 %6, 11, !dbg !4158 | |
%8 = getelementptr inbounds { i8, i8 }, { i8, i8 }* %1, i32 0, i32 1, !dbg !4158 | |
%9 = zext i1 %7 to i8, !dbg !4158 | |
store i8 %9, i8* %8, align 1, !dbg !4158 | |
call void @llvm.dbg.value(metadata i8 %9, metadata !4156, metadata !DIExpression()), !dbg !4165 | |
ret i8 %9, !dbg !4166 | |
} | |
define internal void @fmt.fmt_bad_verb(%fmt.Info* %0, i32 %1, i8* noalias nocapture nonnull %__.context_ptr) !dbg !4167 { | |
decls: | |
%2 = alloca [2 x i64], align 8, !dbg !4183 | |
%3 = alloca { i64, i32 }, align 8, !dbg !4183 | |
%4 = alloca { i64, i32 }, align 8, !dbg !4184 | |
%5 = alloca [2 x i64], align 8, !dbg !4185 | |
%6 = alloca { i64, i32 }, align 8, !dbg !4185 | |
call void @llvm.dbg.value(metadata %fmt.Info* %0, metadata !4171, metadata !DIExpression()), !dbg !4186 | |
call void @llvm.dbg.value(metadata i32 %1, metadata !4172, metadata !DIExpression()), !dbg !4186 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !4173, metadata !DIExpression()), !dbg !4187 | |
call void @llvm.dbg.declare(metadata %io.Writer* %7, metadata !4174, metadata !DIExpression()), !dbg !4188 | |
%7 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 13, !dbg !4183 | |
%8 = bitcast %io.Writer* %7 to [2 x i64]*, !dbg !4183 | |
%9 = load [2 x i64], [2 x i64]* %8, align 8, !dbg !4183 | |
%10 = bitcast [2 x i64]* %2 to %..string*, !dbg !4183 | |
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$b6", i64 0, i64 0), i64 2 }, %..string* %10, align 8, !dbg !4183 | |
%11 = load [2 x i64], [2 x i64]* %2, align 8, !dbg !4183 | |
%12 = call [2 x i64] @io.write_string([2 x i64] %9, [2 x i64] %11, i8* %__.context_ptr), !dbg !4183 | |
%13 = bitcast { i64, i32 }* %3 to [2 x i64]*, !dbg !4183 | |
store [2 x i64] %12, [2 x i64]* %13, align 8, !dbg !4183 | |
call void @llvm.dbg.declare(metadata %io.Writer* %7, metadata !4174, metadata !DIExpression()), !dbg !4188 | |
%14 = load [2 x i64], [2 x i64]* %8, align 8, !dbg !4184 | |
%15 = call [2 x i64] @io.write_rune([2 x i64] %14, i32 %1, i8* %__.context_ptr), !dbg !4184 | |
%16 = bitcast { i64, i32 }* %4 to [2 x i64]*, !dbg !4184 | |
store [2 x i64] %15, [2 x i64]* %16, align 8, !dbg !4184 | |
call void @llvm.dbg.declare(metadata %io.Writer* %7, metadata !4174, metadata !DIExpression()), !dbg !4188 | |
%17 = load [2 x i64], [2 x i64]* %8, align 8, !dbg !4189 | |
%18 = call i32 @io.write_byte_to_writer([2 x i64] %17, i8 40, i8* %__.context_ptr), !dbg !4189 | |
call void @llvm.dbg.declare(metadata %..any* %19, metadata !4176, metadata !DIExpression()), !dbg !4190 | |
%19 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 14, !dbg !4191 | |
%20 = getelementptr inbounds %..any, %..any* %19, i32 0, i32 1, !dbg !4191 | |
%21 = load i64, i64* %20, align 8, !dbg !4191 | |
%22 = icmp ne i64 %21, 0, !dbg !4191 | |
%23 = load [2 x i64], [2 x i64]* %8, align 8, !dbg !4192 | |
br i1 %22, label %if.then, label %if.else, !dbg !4191 | |
if.then: ; preds = %decls | |
call void @llvm.dbg.declare(metadata %io.Writer* %7, metadata !4178, metadata !DIExpression()), !dbg !4193 | |
call void @llvm.dbg.declare(metadata %..any* %19, metadata !4180, metadata !DIExpression()), !dbg !4193 | |
call void @reflect.write_typeid_writer([2 x i64] %23, i64 %21, i8* %__.context_ptr), !dbg !4194 | |
call void @llvm.dbg.declare(metadata %io.Writer* %7, metadata !4178, metadata !DIExpression()), !dbg !4193 | |
%24 = load [2 x i64], [2 x i64]* %8, align 8, !dbg !4195 | |
%25 = call i32 @io.write_byte_to_writer([2 x i64] %24, i8 61, i8* %__.context_ptr), !dbg !4195 | |
call void @llvm.dbg.declare(metadata %..any* %19, metadata !4180, metadata !DIExpression()), !dbg !4193 | |
%26 = bitcast %..any* %19 to [2 x i64]*, !dbg !4196 | |
%27 = load [2 x i64], [2 x i64]* %26, align 8, !dbg !4196 | |
call void @fmt.fmt_value(%fmt.Info* %0, [2 x i64] %27, i32 118, i8* %__.context_ptr), !dbg !4196 | |
br label %if.done, !dbg !4191 | |
if.else: ; preds = %decls | |
call void @llvm.dbg.declare(metadata %io.Writer* %7, metadata !4181, metadata !DIExpression()), !dbg !4197 | |
%28 = bitcast [2 x i64]* %5 to %..string*, !dbg !4185 | |
store %..string { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"csbs$b7", i64 0, i64 0), i64 5 }, %..string* %28, align 8, !dbg !4185 | |
%29 = load [2 x i64], [2 x i64]* %5, align 8, !dbg !4185 | |
%30 = call [2 x i64] @io.write_string([2 x i64] %23, [2 x i64] %29, i8* %__.context_ptr), !dbg !4185 | |
%31 = bitcast { i64, i32 }* %6 to [2 x i64]*, !dbg !4185 | |
store [2 x i64] %30, [2 x i64]* %31, align 8, !dbg !4185 | |
br label %if.done, !dbg !4191 | |
if.done: ; preds = %if.else, %if.then | |
call void @llvm.dbg.declare(metadata %io.Writer* %7, metadata !4174, metadata !DIExpression()), !dbg !4188 | |
%32 = load [2 x i64], [2 x i64]* %8, align 8, !dbg !4198 | |
%33 = call i32 @io.write_byte_to_writer([2 x i64] %32, i8 41, i8* %__.context_ptr), !dbg !4198 | |
ret void, !dbg !4187 | |
} | |
define internal void @fmt.fmt_bool(%fmt.Info* %0, i1 zeroext %1, i32 %2, i8* noalias nocapture nonnull %__.context_ptr) !dbg !4199 { | |
decls: | |
%3 = alloca [2 x i64], align 8, !dbg !4210 | |
%4 = alloca { i64, i32 }, align 8, !dbg !4210 | |
call void @llvm.dbg.value(metadata %fmt.Info* %0, metadata !4203, metadata !DIExpression()), !dbg !4211 | |
call void @llvm.dbg.value(metadata i8 undef, metadata !4204, metadata !DIExpression()), !dbg !4211 | |
call void @llvm.dbg.value(metadata i32 %2, metadata !4205, metadata !DIExpression()), !dbg !4211 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !4206, metadata !DIExpression()), !dbg !4212 | |
switch i32 %2, label %switch.default.body [ | |
i32 116, label %switch.case.body | |
i32 118, label %switch.case.body | |
], !dbg !4213 | |
switch.case.body: ; preds = %decls, %decls | |
call void @llvm.dbg.declare(metadata %io.Writer* %5, metadata !4207, metadata !DIExpression()), !dbg !4214 | |
%5 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 13, !dbg !4210 | |
%. = select i1 %1, %..string { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"csbs$b8", i64 0, i64 0), i64 4 }, %..string { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"csbs$b9", i64 0, i64 0), i64 5 }, !dbg !4210 | |
%6 = bitcast %io.Writer* %5 to [2 x i64]*, !dbg !4210 | |
%7 = load [2 x i64], [2 x i64]* %6, align 8, !dbg !4210 | |
%8 = bitcast [2 x i64]* %3 to %..string*, !dbg !4210 | |
store %..string %., %..string* %8, align 8, !dbg !4210 | |
%9 = load [2 x i64], [2 x i64]* %3, align 8, !dbg !4210 | |
%10 = call [2 x i64] @io.write_string([2 x i64] %7, [2 x i64] %9, i8* %__.context_ptr), !dbg !4210 | |
%11 = bitcast { i64, i32 }* %4 to [2 x i64]*, !dbg !4210 | |
store [2 x i64] %10, [2 x i64]* %11, align 8, !dbg !4210 | |
br label %switch.done, !dbg !4213 | |
switch.default.body: ; preds = %decls | |
call void @fmt.fmt_bad_verb(%fmt.Info* %0, i32 %2, i8* %__.context_ptr), !dbg !4215 | |
br label %switch.done, !dbg !4213 | |
switch.done: ; preds = %switch.default.body, %switch.case.body | |
ret void, !dbg !4212 | |
} | |
define internal void @fmt.fmt_write_padding(%fmt.Info* %0, i64 %1, i8* noalias nocapture nonnull %__.context_ptr) !dbg !4216 { | |
decls: | |
call void @llvm.dbg.value(metadata %fmt.Info* %0, metadata !4220, metadata !DIExpression()), !dbg !4227 | |
call void @llvm.dbg.value(metadata i64 %1, metadata !4221, metadata !DIExpression()), !dbg !4227 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !4222, metadata !DIExpression()), !dbg !4228 | |
%2 = icmp sle i64 %1, 0, !dbg !4229 | |
br i1 %2, label %if.then, label %if.done, !dbg !4229 | |
if.then: ; preds = %for.loop, %decls | |
ret void, !dbg !4230 | |
if.done: ; preds = %decls | |
call void @llvm.dbg.value(metadata i8 32, metadata !4223, metadata !DIExpression()), !dbg !4233 | |
%3 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 2, !dbg !4234 | |
%4 = load i8, i8* %3, align 1, !dbg !4234 | |
%5 = trunc i8 %4 to i1, !dbg !4234 | |
%spec.select = select i1 %5, i8 32, i8 48, !dbg !4234 | |
call void @llvm.dbg.value(metadata i8 %spec.select, metadata !4223, metadata !DIExpression()), !dbg !4233 | |
call void @llvm.dbg.value(metadata i64 0, metadata !4225, metadata !DIExpression()), !dbg !4235 | |
br label %for.loop, !dbg !4236 | |
for.loop: ; preds = %for.body, %if.done | |
%.0 = phi i64 [ 0, %if.done ], [ %11, %for.body ], !dbg !4233 | |
call void @llvm.dbg.value(metadata i64 %.0, metadata !4225, metadata !DIExpression()), !dbg !4235 | |
%6 = icmp slt i64 %.0, %1, !dbg !4236 | |
br i1 %6, label %for.body, label %if.then, !dbg !4236 | |
for.body: ; preds = %for.loop | |
%7 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 13, !dbg !4237 | |
%8 = bitcast %io.Writer* %7 to [2 x i64]*, !dbg !4237 | |
%9 = load [2 x i64], [2 x i64]* %8, align 8, !dbg !4237 | |
%10 = call i32 @io.write_byte_to_writer([2 x i64] %9, i8 %spec.select, i8* %__.context_ptr), !dbg !4237 | |
%11 = add i64 %.0, 1, !dbg !4239 | |
call void @llvm.dbg.value(metadata i64 %11, metadata !4225, metadata !DIExpression()), !dbg !4235 | |
br label %for.loop, !dbg !4236 | |
} | |
; Function Attrs: nounwind | |
define dso_local i16 @__truncsfhf2(float %0) #0 !dbg !4240 { | |
decls: | |
call void @llvm.dbg.declare(metadata { [0 x i32], [4 x i8] }* %1, metadata !4245, metadata !DIExpression()), !dbg !4265 | |
%1 = alloca { [0 x i32], [4 x i8] }, align 4, !dbg !4265 | |
call void @llvm.dbg.declare(metadata i64* %2, metadata !4255, metadata !DIExpression()), !dbg !4266 | |
%2 = alloca i64, align 8, !dbg !4266 | |
call void @llvm.dbg.value(metadata float %0, metadata !4244, metadata !DIExpression()), !dbg !4267 | |
%3 = bitcast { [0 x i32], [4 x i8] }* %1 to i8*, !dbg !4265 | |
call void @llvm.memset.p0i8.i64(i8* %3, i8 0, i64 4, i1 false), !dbg !4265 | |
call void @llvm.dbg.value(metadata i32 0, metadata !4251, metadata !DIExpression()), !dbg !4268 | |
call void @llvm.dbg.value(metadata i32 0, metadata !4252, metadata !DIExpression()), !dbg !4268 | |
call void @llvm.dbg.value(metadata i32 0, metadata !4253, metadata !DIExpression()), !dbg !4268 | |
call void @llvm.dbg.value(metadata i32 0, metadata !4254, metadata !DIExpression()), !dbg !4268 | |
%4 = bitcast { [0 x i32], [4 x i8] }* %1 to float*, !dbg !4269 | |
store float %0, float* %4, align 4, !dbg !4269 | |
%5 = bitcast { [0 x i32], [4 x i8] }* %1 to i32*, !dbg !4270 | |
%6 = load i32, i32* %5, align 4, !dbg !4270 | |
call void @llvm.dbg.value(metadata i32 %6, metadata !4251, metadata !DIExpression()), !dbg !4268 | |
%7 = ashr i32 %6, 16, !dbg !4271 | |
%8 = and i32 %7, 32768, !dbg !4271 | |
call void @llvm.dbg.value(metadata i32 %8, metadata !4252, metadata !DIExpression()), !dbg !4268 | |
%9 = ashr i32 %6, 23, !dbg !4272 | |
%10 = and i32 %9, 255, !dbg !4272 | |
%11 = sub i32 %10, 112, !dbg !4272 | |
call void @llvm.dbg.value(metadata i32 %11, metadata !4253, metadata !DIExpression()), !dbg !4268 | |
%12 = and i32 %6, 8388607, !dbg !4273 | |
call void @llvm.dbg.value(metadata i32 %12, metadata !4254, metadata !DIExpression()), !dbg !4268 | |
%13 = icmp sle i32 %11, 0, !dbg !4274 | |
br i1 %13, label %if.then, label %if.else, !dbg !4274 | |
if.then: ; preds = %decls | |
%14 = icmp slt i32 %11, -10, !dbg !4275 | |
br i1 %14, label %if.then1, label %if.done, !dbg !4275 | |
if.then1: ; preds = %if.then | |
%15 = trunc i32 %8 to i16, !dbg !4277 | |
ret i16 %15, !dbg !4277 | |
if.done: ; preds = %if.then | |
%16 = or i32 %12, 8388608, !dbg !4280 | |
%17 = sub i32 1, %11, !dbg !4280 | |
%18 = icmp ult i32 %17, 32, !dbg !4280 | |
%19 = ashr i32 %16, %17, !dbg !4280 | |
%20 = select i1 %18, i32 %19, i32 0, !dbg !4280 | |
call void @llvm.dbg.value(metadata i32 %20, metadata !4254, metadata !DIExpression()), !dbg !4268 | |
%21 = and i32 %20, 4096, !dbg !4281 | |
%22 = icmp ne i32 %21, 0, !dbg !4281 | |
%23 = add i32 %20, 8192 | |
%spec.select = select i1 %22, i32 %23, i32 %20, !dbg !4281 | |
call void @llvm.dbg.value(metadata i32 %spec.select, metadata !4254, metadata !DIExpression()), !dbg !4268 | |
%24 = ashr i32 %spec.select, 13, !dbg !4282 | |
%25 = or i32 %8, %24, !dbg !4282 | |
%26 = trunc i32 %25 to i16, !dbg !4282 | |
ret i16 %26, !dbg !4282 | |
if.else: ; preds = %decls | |
%27 = icmp eq i32 %11, 143, !dbg !4283 | |
br i1 %27, label %if.then4, label %if.else8, !dbg !4283 | |
if.then4: ; preds = %if.else | |
%28 = icmp eq i32 %12, 0, !dbg !4284 | |
br i1 %28, label %if.then5, label %if.else6, !dbg !4284 | |
if.then5: ; preds = %if.then4 | |
%29 = or i32 %8, 31744, !dbg !4286 | |
%30 = trunc i32 %29 to i16, !dbg !4286 | |
ret i16 %30, !dbg !4286 | |
if.else6: ; preds = %if.then4 | |
%31 = ashr i32 %12, 13, !dbg !4289 | |
call void @llvm.dbg.value(metadata i32 %31, metadata !4254, metadata !DIExpression()), !dbg !4268 | |
%32 = or i32 %8, 31744, !dbg !4291 | |
%33 = or i32 %32, %31, !dbg !4291 | |
%34 = icmp eq i32 %31, 0, !dbg !4291 | |
%35 = zext i1 %34 to i32, !dbg !4291 | |
%36 = or i32 %33, %35, !dbg !4291 | |
%37 = trunc i32 %36 to i16, !dbg !4291 | |
ret i16 %37, !dbg !4291 | |
if.else8: ; preds = %if.else | |
%38 = and i32 %12, 4096, !dbg !4292 | |
%39 = icmp ne i32 %38, 0, !dbg !4292 | |
br i1 %39, label %if.then9, label %if.done12, !dbg !4292 | |
if.then9: ; preds = %if.else8 | |
%40 = add i32 %12, 8192, !dbg !4293 | |
call void @llvm.dbg.value(metadata i32 %40, metadata !4254, metadata !DIExpression()), !dbg !4268 | |
%41 = and i32 %40, 8388608, !dbg !4296 | |
%42 = icmp ne i32 %41, 0, !dbg !4296 | |
%43 = add i32 %11, 1 | |
%spec.select20 = select i1 %42, i32 %43, i32 %11, !dbg !4296 | |
%spec.select21 = select i1 %42, i32 0, i32 %40, !dbg !4296 | |
call void @llvm.dbg.value(metadata i32 %spec.select21, metadata !4254, metadata !DIExpression()), !dbg !4268 | |
call void @llvm.dbg.value(metadata i32 %spec.select20, metadata !4253, metadata !DIExpression()), !dbg !4268 | |
br label %if.done12, !dbg !4292 | |
if.done12: ; preds = %if.then9, %if.else8 | |
%.119 = phi i32 [ %spec.select20, %if.then9 ], [ %11, %if.else8 ], !dbg !4268 | |
%.2 = phi i32 [ %spec.select21, %if.then9 ], [ %12, %if.else8 ], !dbg !4268 | |
call void @llvm.dbg.value(metadata i32 %.2, metadata !4254, metadata !DIExpression()), !dbg !4268 | |
call void @llvm.dbg.value(metadata i32 %.119, metadata !4253, metadata !DIExpression()), !dbg !4268 | |
%44 = icmp sgt i32 %.119, 30, !dbg !4297 | |
br i1 %44, label %if.then13, label %if.done14, !dbg !4297 | |
if.then13: ; preds = %if.done12 | |
store i64 1000000000000, i64* %2, align 8, !dbg !4266 | |
call void @llvm.dbg.value(metadata i64 0, metadata !4261, metadata !DIExpression()), !dbg !4298 | |
br label %for.loop, !dbg !4299 | |
for.loop: ; preds = %for.body, %if.then13 | |
%.0 = phi i64 [ 0, %if.then13 ], [ %48, %for.body ], !dbg !4300 | |
call void @llvm.dbg.value(metadata i64 %.0, metadata !4261, metadata !DIExpression()), !dbg !4298 | |
%45 = icmp slt i64 %.0, 10, !dbg !4299 | |
br i1 %45, label %for.body, label %for.done, !dbg !4299 | |
for.body: ; preds = %for.loop | |
call void @llvm.dbg.value(metadata i64 0, metadata !4263, metadata !DIExpression()), !dbg !4301 | |
%46 = load volatile i64, i64* %2, align 8, !dbg !4302 | |
call void @llvm.dbg.value(metadata i64 %46, metadata !4263, metadata !DIExpression()), !dbg !4301 | |
%47 = mul i64 %46, %46, !dbg !4303 | |
call void @llvm.dbg.value(metadata i64 %47, metadata !4263, metadata !DIExpression()), !dbg !4301 | |
store volatile i64 %47, i64* %2, align 8, !dbg !4304 | |
%48 = add i64 %.0, 1, !dbg !4305 | |
call void @llvm.dbg.value(metadata i64 %48, metadata !4261, metadata !DIExpression()), !dbg !4298 | |
br label %for.loop, !dbg !4299 | |
for.done: ; preds = %for.loop | |
%49 = or i32 %8, 31744, !dbg !4306 | |
%50 = trunc i32 %49 to i16, !dbg !4306 | |
ret i16 %50, !dbg !4306 | |
if.done14: ; preds = %if.done12 | |
%51 = shl i32 %.119, 10, !dbg !4307 | |
%52 = or i32 %8, %51, !dbg !4307 | |
%53 = ashr i32 %.2, 13, !dbg !4307 | |
%54 = or i32 %52, %53, !dbg !4307 | |
%55 = trunc i32 %54 to i16, !dbg !4307 | |
ret i16 %55, !dbg !4307 | |
} | |
; Function Attrs: nounwind | |
define dso_local i16 @__truncdfhf2(double %0) #0 !dbg !4308 { | |
decls: | |
call void @llvm.dbg.value(metadata double %0, metadata !4312, metadata !DIExpression()), !dbg !4313 | |
%1 = fptrunc double %0 to float, !dbg !4314 | |
%2 = call i16 @__truncsfhf2(float %1), !dbg !4314 | |
ret i16 %2, !dbg !4314 | |
} | |
; Function Attrs: nounwind | |
define internal i8 @reflect.is_enum(%runtime.Type_Info* %0, i8* noalias nocapture nonnull %__.context_ptr) #0 !dbg !4316 { | |
decls: | |
%1 = alloca { i8, i8 }, align 1, !dbg !4322 | |
call void @llvm.dbg.value(metadata %runtime.Type_Info* %0, metadata !4318, metadata !DIExpression()), !dbg !4323 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !4319, metadata !DIExpression()), !dbg !4324 | |
%2 = icmp eq %runtime.Type_Info* %0, null, !dbg !4325 | |
br i1 %2, label %if.then, label %if.done, !dbg !4325 | |
if.then: ; preds = %decls | |
ret i8 0, !dbg !4326 | |
if.done: ; preds = %decls | |
call void @llvm.dbg.value(metadata i8 0, metadata !4320, metadata !DIExpression()), !dbg !4329 | |
%3 = call %runtime.Type_Info* @reflect.type_info_base(%runtime.Type_Info* %0, i8* %__.context_ptr), !dbg !4322 | |
%4 = getelementptr inbounds %runtime.Type_Info, %runtime.Type_Info* %3, i32 0, i32 4, !dbg !4322 | |
%5 = getelementptr inbounds { [0 x i64], [120 x i8], i64 }, { [0 x i64], [120 x i8], i64 }* %4, i32 0, i32 2, !dbg !4322 | |
%6 = load i64, i64* %5, align 8, !dbg !4322 | |
%7 = icmp eq i64 %6, 21, !dbg !4322 | |
%8 = getelementptr inbounds { i8, i8 }, { i8, i8 }* %1, i32 0, i32 1, !dbg !4322 | |
%9 = zext i1 %7 to i8, !dbg !4322 | |
store i8 %9, i8* %8, align 1, !dbg !4322 | |
call void @llvm.dbg.value(metadata i8 %9, metadata !4320, metadata !DIExpression()), !dbg !4329 | |
ret i8 %9, !dbg !4330 | |
} | |
define internal void @fmt._fmt_int(%fmt.Info* %0, i64 %1, i64 %2, i1 zeroext %3, i64 %4, [2 x i64] %5, i8* noalias nocapture nonnull %__.context_ptr) !dbg !4331 { | |
decls: | |
%6 = alloca %..string, align 8 | |
call void @llvm.dbg.declare(metadata %..string* %7, metadata !4340, metadata !DIExpression()), !dbg !4361 | |
%7 = alloca %..string, align 8 | |
%8 = alloca { i64, i8 }, align 8, !dbg !4362 | |
%9 = alloca [2 x i64], align 8, !dbg !4363 | |
%10 = alloca %runtime.Source_Code_Location, align 8, !dbg !4363 | |
%11 = alloca [2 x i64], align 8, !dbg !4366 | |
%12 = alloca %runtime.Source_Code_Location, align 8, !dbg !4366 | |
call void @llvm.dbg.declare(metadata [256 x i8]* %13, metadata !4353, metadata !DIExpression()), !dbg !4368 | |
%13 = alloca [256 x i8], align 1, !dbg !4368 | |
call void @llvm.dbg.declare(metadata %..string* %14, metadata !4356, metadata !DIExpression()), !dbg !4369 | |
%14 = alloca %..string, align 8, !dbg !4369 | |
%15 = alloca [2 x i64], align 8, !dbg !4369 | |
%16 = alloca { i8*, i64 }, align 8, !dbg !4369 | |
%17 = alloca %..string, align 8, !dbg !4369 | |
call void @llvm.dbg.value(metadata %fmt.Info* %0, metadata !4335, metadata !DIExpression()), !dbg !4370 | |
call void @llvm.dbg.value(metadata i64 %1, metadata !4336, metadata !DIExpression()), !dbg !4370 | |
call void @llvm.dbg.value(metadata i64 %2, metadata !4337, metadata !DIExpression()), !dbg !4370 | |
call void @llvm.dbg.value(metadata i8 undef, metadata !4338, metadata !DIExpression()), !dbg !4370 | |
call void @llvm.dbg.value(metadata i64 %4, metadata !4339, metadata !DIExpression()), !dbg !4370 | |
%18 = bitcast %..string* %6 to [2 x i64]* | |
store [2 x i64] %5, [2 x i64]* %18, align 8 | |
%19 = bitcast %..string* %7 to i8* | |
%20 = bitcast %..string* %6 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %19, i8* align 8 %20, i64 16, i1 false) | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !4341, metadata !DIExpression()), !dbg !4371 | |
call void @llvm.dbg.value(metadata i8 0, metadata !4342, metadata !DIExpression()), !dbg !4372 | |
%21 = call [2 x i64] @strconv.is_integer_negative(i64 %1, i1 %3, i64 %4, i8* %__.context_ptr), !dbg !4362 | |
%22 = bitcast { i64, i8 }* %8 to [2 x i64]*, !dbg !4362 | |
store [2 x i64] %21, [2 x i64]* %22, align 8, !dbg !4362 | |
call void @llvm.dbg.value(metadata i8 undef, metadata !4342, metadata !DIExpression()), !dbg !4372 | |
%23 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 5, !dbg !4373 | |
%24 = load i8, i8* %23, align 1, !dbg !4373 | |
%25 = trunc i8 %24 to i1, !dbg !4373 | |
br i1 %25, label %if.then, label %cmp.or, !dbg !4373 | |
cmp.or: ; preds = %decls | |
%26 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 6, !dbg !4373 | |
%27 = load i8, i8* %26, align 1, !dbg !4373 | |
%28 = trunc i8 %27 to i1, !dbg !4373 | |
br i1 %28, label %if.then, label %if.done2, !dbg !4373 | |
if.then: ; preds = %cmp.or, %decls | |
call void @llvm.dbg.value(metadata i64 0, metadata !4344, metadata !DIExpression()), !dbg !4374 | |
%29 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 7, !dbg !4375 | |
%30 = load i64, i64* %29, align 8, !dbg !4375 | |
%31 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 8, !dbg !4375 | |
%32 = load i64, i64* %31, align 8, !dbg !4375 | |
%33 = add i64 %30, %32, !dbg !4375 | |
%34 = add i64 %33, 3, !dbg !4375 | |
call void @llvm.dbg.value(metadata i64 %34, metadata !4344, metadata !DIExpression()), !dbg !4374 | |
%35 = icmp sgt i64 %34, 256, !dbg !4376 | |
br i1 %35, label %if.then1, label %if.done2, !dbg !4376 | |
if.then1: ; preds = %if.then | |
%36 = bitcast [2 x i64]* %9 to %..string*, !dbg !4363 | |
store %..string { i8* getelementptr inbounds ([54 x i8], [54 x i8]* @"csbs$ba", i64 0, i64 0), i64 53 }, %..string* %36, align 8, !dbg !4363 | |
%37 = load [2 x i64], [2 x i64]* %9, align 8, !dbg !4363 | |
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, i32 658, i32 4, %..string { i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"csbs$bb", i64 0, i64 0), i64 8 } }, %runtime.Source_Code_Location* %10, align 8, !dbg !4363 | |
call void @runtime.panic([2 x i64] %37, %runtime.Source_Code_Location* %10, i8* %__.context_ptr), !dbg !4363 | |
unreachable, !dbg !4363 | |
if.done2: ; preds = %if.then, %cmp.or | |
call void @llvm.dbg.value(metadata i64 0, metadata !4347, metadata !DIExpression()), !dbg !4372 | |
call void @llvm.dbg.value(metadata i64 0, metadata !4347, metadata !DIExpression()), !dbg !4372 | |
%38 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 6, !dbg !4377 | |
%39 = load i8, i8* %38, align 1, !dbg !4377 | |
%40 = trunc i8 %39 to i1, !dbg !4377 | |
br i1 %40, label %if.then3, label %if.else, !dbg !4377 | |
if.then3: ; preds = %if.done2 | |
%41 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 8, !dbg !4378 | |
%42 = load i64, i64* %41, align 8, !dbg !4378 | |
call void @llvm.dbg.value(metadata i64 %42, metadata !4347, metadata !DIExpression()), !dbg !4372 | |
%43 = icmp eq i64 %42, 0, !dbg !4379 | |
br i1 %43, label %cmp.and, label %if.done13, !dbg !4379 | |
cmp.and: ; preds = %if.then3 | |
%44 = icmp eq i64 %1, 0, !dbg !4379 | |
br i1 %44, label %if.then4, label %if.done13, !dbg !4379 | |
if.then4: ; preds = %cmp.and | |
call void @llvm.dbg.value(metadata i8 0, metadata !4348, metadata !DIExpression()), !dbg !4380 | |
%45 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 3, !dbg !4381 | |
%46 = load i8, i8* %45, align 1, !dbg !4381 | |
call void @llvm.dbg.value(metadata i8 %46, metadata !4348, metadata !DIExpression()), !dbg !4380 | |
store i8 0, i8* %45, align 1, !dbg !4382 | |
%47 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 7, !dbg !4383 | |
%48 = load i64, i64* %47, align 8, !dbg !4383 | |
call void @fmt.fmt_write_padding(%fmt.Info* %0, i64 %48, i8* %__.context_ptr), !dbg !4383 | |
store i8 %46, i8* %45, align 1, !dbg !4384 | |
ret void, !dbg !4385 | |
if.else: ; preds = %if.done2 | |
%49 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 3, !dbg !4386 | |
%50 = load i8, i8* %49, align 1, !dbg !4386 | |
%51 = trunc i8 %50 to i1, !dbg !4386 | |
br i1 %51, label %cmp.and6, label %if.done13, !dbg !4386 | |
cmp.and6: ; preds = %if.else | |
%52 = load i8, i8* %23, align 1, !dbg !4386 | |
%53 = trunc i8 %52 to i1, !dbg !4386 | |
br i1 %53, label %if.then7, label %if.done13, !dbg !4386 | |
if.then7: ; preds = %cmp.and6 | |
call void @llvm.dbg.value(metadata i64 undef, metadata !4347, metadata !DIExpression()), !dbg !4372 | |
br label %if.done13, !dbg !4388 | |
if.done13: ; preds = %if.then7, %if.else, %cmp.and6, %if.then3, %cmp.and | |
%54 = sub i64 %2, 2, !dbg !4390 | |
%55 = lshr i64 %54, 1, !dbg !4390 | |
%56 = shl i64 %54, 63, !dbg !4390 | |
%57 = or i64 %55, %56, !dbg !4390 | |
switch i64 %57, label %switch.default.body [ | |
i64 0, label %switch.done | |
i64 3, label %switch.done | |
i64 4, label %switch.done | |
i64 5, label %switch.done | |
i64 7, label %switch.done | |
], !dbg !4390 | |
switch.default.body: ; preds = %if.done13 | |
%58 = bitcast [2 x i64]* %11 to %..string*, !dbg !4366 | |
store %..string { i8* getelementptr inbounds ([31 x i8], [31 x i8]* @"csbs$bc", i64 0, i64 0), i64 30 }, %..string* %58, align 8, !dbg !4366 | |
%59 = load [2 x i64], [2 x i64]* %11, align 8, !dbg !4366 | |
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, i32 684, i32 3, %..string { i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"csbs$bb", i64 0, i64 0), i64 8 } }, %runtime.Source_Code_Location* %12, align 8, !dbg !4366 | |
call void @runtime.panic([2 x i64] %59, %runtime.Source_Code_Location* %12, i8* %__.context_ptr), !dbg !4366 | |
unreachable, !dbg !4366 | |
switch.done: ; preds = %if.done13, %if.done13, %if.done13, %if.done13, %if.done13 | |
%60 = bitcast [256 x i8]* %13 to i8*, !dbg !4368 | |
call void @llvm.memset.p0i8.i64(i8* %60, i8 0, i64 256, i1 false), !dbg !4368 | |
call void @llvm.dbg.value(metadata i64 0, metadata !4354, metadata !DIExpression()), !dbg !4372 | |
call void @llvm.dbg.value(metadata i64 0, metadata !4354, metadata !DIExpression()), !dbg !4372 | |
call void @llvm.dbg.value(metadata i8 0, metadata !4355, metadata !DIExpression()), !dbg !4372 | |
%61 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 4, !dbg !4391 | |
%62 = load i8, i8* %61, align 1, !dbg !4391 | |
%63 = trunc i8 %62 to i1, !dbg !4391 | |
br i1 %63, label %cmp.and14, label %if.done16, !dbg !4391 | |
cmp.and14: ; preds = %switch.done | |
%64 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 3, !dbg !4391 | |
%65 = load i8, i8* %64, align 1, !dbg !4391 | |
%66 = trunc i8 %65 to i1, !dbg !4391 | |
%spec.select = select i1 %66, i8 0, i8 1, !dbg !4391 | |
br label %if.done16, !dbg !4391 | |
if.done16: ; preds = %cmp.and14, %switch.done | |
%.032 = phi i8 [ 0, %switch.done ], [ %spec.select, %cmp.and14 ], !dbg !4372 | |
call void @llvm.dbg.value(metadata i8 %.032, metadata !4355, metadata !DIExpression()), !dbg !4372 | |
%67 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 1, !dbg !4392 | |
%68 = load i8, i8* %67, align 1, !dbg !4392 | |
%69 = trunc i8 %68 to i1, !dbg !4392 | |
%70 = or i8 %.032, 2 | |
%spec.select33 = select i1 %69, i8 %70, i8 %.032, !dbg !4392 | |
call void @llvm.dbg.value(metadata i8 %spec.select33, metadata !4355, metadata !DIExpression()), !dbg !4372 | |
%71 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 2, !dbg !4393 | |
%72 = load i8, i8* %71, align 1, !dbg !4393 | |
%73 = trunc i8 %72 to i1, !dbg !4393 | |
%74 = or i8 %spec.select33, 4, !dbg !4393 | |
%.2 = select i1 %73, i8 %74, i8 %spec.select33, !dbg !4393 | |
call void @llvm.dbg.value(metadata i8 %.2, metadata !4355, metadata !DIExpression()), !dbg !4372 | |
%75 = bitcast %..string* %14 to i8*, !dbg !4369 | |
call void @llvm.memset.p0i8.i64(i8* %75, i8 0, i64 16, i1 false), !dbg !4369 | |
%76 = bitcast [2 x i64]* %15 to %..string*, !dbg !4369 | |
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %76, align 8, !dbg !4369 | |
%77 = load [2 x i64], [2 x i64]* %15, align 8, !dbg !4369 | |
call void @runtime.slice_expr_error_lo_hi([2 x i64] %77, i32 694, i32 30, i64 0, i64 256, i64 256), !dbg !4369 | |
%78 = getelementptr [256 x i8], [256 x i8]* %13, i64 0, i64 0, !dbg !4369 | |
%79 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %16, i32 0, i32 0, !dbg !4369 | |
store i8* %78, i8** %79, align 8, !dbg !4369 | |
%80 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %16, i32 0, i32 1, !dbg !4369 | |
store i64 256, i64* %80, align 8, !dbg !4369 | |
%81 = bitcast { i8*, i64 }* %16 to [2 x i64]*, !dbg !4369 | |
%82 = load [2 x i64], [2 x i64]* %81, align 8, !dbg !4369 | |
%83 = bitcast %..string* %7 to [2 x i64]*, !dbg !4369 | |
%84 = load [2 x i64], [2 x i64]* %83, align 8, !dbg !4369 | |
%85 = call [2 x i64] @strconv.append_bits([2 x i64] %82, i64 %1, i64 %2, i1 %3, i64 %4, [2 x i64] %84, i8 %.2, i8* %__.context_ptr), !dbg !4369 | |
%86 = bitcast %..string* %17 to [2 x i64]*, !dbg !4369 | |
store [2 x i64] %85, [2 x i64]* %86, align 8, !dbg !4369 | |
%87 = bitcast %..string* %17 to i8*, !dbg !4369 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %75, i8* align 8 %87, i64 16, i1 false), !dbg !4369 | |
%88 = load i8, i8* %61, align 1, !dbg !4394 | |
%89 = trunc i8 %88 to i1, !dbg !4394 | |
br i1 %89, label %cmp.and21, label %if.done31, !dbg !4394 | |
cmp.and21: ; preds = %if.done16 | |
%90 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 3, !dbg !4394 | |
%91 = load i8, i8* %90, align 1, !dbg !4394 | |
%92 = trunc i8 %91 to i1, !dbg !4394 | |
br i1 %92, label %cmp.and22, label %if.done31, !dbg !4394 | |
cmp.and22: ; preds = %cmp.and21 | |
%93 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 9, !dbg !4394 | |
%94 = load i64, i64* %93, align 8, !dbg !4394 | |
%95 = icmp eq i64 %94, 0, !dbg !4394 | |
br i1 %95, label %if.then23, label %if.done31, !dbg !4394 | |
if.then23: ; preds = %cmp.and22 | |
call void @llvm.dbg.value(metadata i8 0, metadata !4357, metadata !DIExpression()), !dbg !4395 | |
call void @llvm.dbg.value(metadata i8 0, metadata !4357, metadata !DIExpression()), !dbg !4395 | |
%96 = sub i64 %2, 2, !dbg !4396 | |
%97 = lshr i64 %96, 1, !dbg !4396 | |
%98 = shl i64 %96, 63, !dbg !4396 | |
%99 = or i64 %97, %98, !dbg !4396 | |
switch i64 %99, label %switch.done28 [ | |
i64 0, label %switch.case.body24 | |
i64 3, label %switch.case.body25 | |
i64 5, label %switch.case.body26 | |
i64 7, label %switch.case.body27 | |
], !dbg !4396 | |
switch.case.body24: ; preds = %if.then23 | |
call void @llvm.dbg.value(metadata i8 98, metadata !4357, metadata !DIExpression()), !dbg !4395 | |
br label %switch.done28, !dbg !4396 | |
switch.case.body25: ; preds = %if.then23 | |
call void @llvm.dbg.value(metadata i8 111, metadata !4357, metadata !DIExpression()), !dbg !4395 | |
br label %switch.done28, !dbg !4396 | |
switch.case.body26: ; preds = %if.then23 | |
call void @llvm.dbg.value(metadata i8 122, metadata !4357, metadata !DIExpression()), !dbg !4395 | |
br label %switch.done28, !dbg !4396 | |
switch.case.body27: ; preds = %if.then23 | |
call void @llvm.dbg.value(metadata i8 120, metadata !4357, metadata !DIExpression()), !dbg !4395 | |
br label %switch.done28, !dbg !4396 | |
switch.done28: ; preds = %switch.case.body27, %switch.case.body26, %switch.case.body25, %switch.case.body24, %if.then23 | |
%.0 = phi i8 [ 0, %if.then23 ], [ 120, %switch.case.body27 ], [ 122, %switch.case.body26 ], [ 111, %switch.case.body25 ], [ 98, %switch.case.body24 ], !dbg !4395 | |
call void @llvm.dbg.value(metadata i8 %.0, metadata !4357, metadata !DIExpression()), !dbg !4395 | |
%100 = icmp ne i8 %.0, 0, !dbg !4397 | |
br i1 %100, label %if.then29, label %if.done31, !dbg !4397 | |
if.then29: ; preds = %switch.done28 | |
%101 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 13, !dbg !4398 | |
%102 = bitcast %io.Writer* %101 to [2 x i64]*, !dbg !4398 | |
%103 = load [2 x i64], [2 x i64]* %102, align 8, !dbg !4398 | |
%104 = call i32 @io.write_byte_to_writer([2 x i64] %103, i8 48, i8* %__.context_ptr), !dbg !4398 | |
%105 = load [2 x i64], [2 x i64]* %102, align 8, !dbg !4401 | |
%106 = call i32 @io.write_byte_to_writer([2 x i64] %105, i8 %.0, i8* %__.context_ptr), !dbg !4401 | |
br label %if.done31, !dbg !4397 | |
if.done31: ; preds = %switch.done28, %if.then29, %cmp.and22, %cmp.and21, %if.done16 | |
call void @llvm.dbg.value(metadata i8 0, metadata !4360, metadata !DIExpression()), !dbg !4372 | |
%107 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 3, !dbg !4402 | |
%108 = load i8, i8* %107, align 1, !dbg !4402 | |
call void @llvm.dbg.value(metadata i8 %108, metadata !4360, metadata !DIExpression()), !dbg !4372 | |
store i8 0, i8* %107, align 1, !dbg !4403 | |
%109 = bitcast %..string* %14 to [2 x i64]*, !dbg !4404 | |
%110 = load [2 x i64], [2 x i64]* %109, align 8, !dbg !4404 | |
call void @fmt._pad(%fmt.Info* %0, [2 x i64] %110, i8* %__.context_ptr), !dbg !4404 | |
store i8 %108, i8* %107, align 1, !dbg !4405 | |
ret void, !dbg !4371 | |
} | |
; Function Attrs: nounwind | |
define dso_local float @__gnu_h2f_ieee(i16 %0) #0 !dbg !4406 { | |
decls: | |
call void @llvm.dbg.declare(metadata %__gnu_h2f_ieee.fp32-2* %1, metadata !4411, metadata !DIExpression()), !dbg !4418 | |
%1 = alloca %__gnu_h2f_ieee.fp32-2, align 4, !dbg !4418 | |
call void @llvm.dbg.declare(metadata %__gnu_h2f_ieee.fp32-2* %2, metadata !4416, metadata !DIExpression()), !dbg !4419 | |
%2 = alloca %__gnu_h2f_ieee.fp32-2, align 4, !dbg !4419 | |
call void @llvm.dbg.declare(metadata %__gnu_h2f_ieee.fp32-2* %3, metadata !4417, metadata !DIExpression()), !dbg !4420 | |
%3 = alloca %__gnu_h2f_ieee.fp32-2, align 4, !dbg !4419 | |
call void @llvm.dbg.value(metadata i16 %0, metadata !4410, metadata !DIExpression()), !dbg !4421 | |
%4 = bitcast %__gnu_h2f_ieee.fp32-2* %1 to i8*, !dbg !4418 | |
call void @llvm.memset.p0i8.i64(i8* %4, i8 0, i64 4, i1 false), !dbg !4418 | |
%5 = bitcast %__gnu_h2f_ieee.fp32-2* %2 to i8*, !dbg !4419 | |
call void @llvm.memset.p0i8.i64(i8* %5, i8 0, i64 4, i1 false), !dbg !4419 | |
%6 = bitcast %__gnu_h2f_ieee.fp32-2* %3 to i8*, !dbg !4419 | |
call void @llvm.memset.p0i8.i64(i8* %6, i8 0, i64 4, i1 false), !dbg !4419 | |
%7 = bitcast %__gnu_h2f_ieee.fp32-2* %2 to i32*, !dbg !4422 | |
store i32 2004877312, i32* %7, align 4, !dbg !4422 | |
%8 = bitcast %__gnu_h2f_ieee.fp32-2* %3 to i32*, !dbg !4423 | |
store i32 1199570944, i32* %8, align 4, !dbg !4423 | |
%9 = bitcast %__gnu_h2f_ieee.fp32-2* %1 to i32*, !dbg !4424 | |
%10 = and i16 %0, 32767, !dbg !4424 | |
%11 = zext i16 %10 to i32, !dbg !4424 | |
%12 = shl i32 %11, 13, !dbg !4424 | |
store i32 %12, i32* %9, align 4, !dbg !4424 | |
%13 = bitcast %__gnu_h2f_ieee.fp32-2* %1 to float*, !dbg !4425 | |
%14 = bitcast %__gnu_h2f_ieee.fp32-2* %2 to float*, !dbg !4425 | |
%15 = load float, float* %14, align 4, !dbg !4425 | |
%16 = load float, float* %13, align 4, !dbg !4425 | |
%17 = fmul float %16, %15, !dbg !4425 | |
store float %17, float* %13, align 4, !dbg !4425 | |
%18 = bitcast %__gnu_h2f_ieee.fp32-2* %3 to float*, !dbg !4426 | |
%19 = load float, float* %18, align 4, !dbg !4426 | |
%20 = fcmp oge float %17, %19, !dbg !4426 | |
br i1 %20, label %if.then, label %if.done, !dbg !4426 | |
if.then: ; preds = %decls | |
%21 = load i32, i32* %9, align 4, !dbg !4427 | |
%22 = or i32 %21, 2139095040, !dbg !4427 | |
store i32 %22, i32* %9, align 4, !dbg !4427 | |
br label %if.done, !dbg !4426 | |
if.done: ; preds = %if.then, %decls | |
%23 = and i16 %0, -32768, !dbg !4430 | |
%24 = zext i16 %23 to i32, !dbg !4430 | |
%25 = shl i32 %24, 16, !dbg !4430 | |
%26 = load i32, i32* %9, align 4, !dbg !4430 | |
%27 = or i32 %26, %25, !dbg !4430 | |
store i32 %27, i32* %9, align 4, !dbg !4430 | |
%28 = load float, float* %13, align 4, !dbg !4431 | |
ret float %28, !dbg !4431 | |
} | |
; Function Attrs: nounwind | |
define dso_local i16 @__gnu_f2h_ieee(float %0) #0 !dbg !4432 { | |
decls: | |
call void @llvm.dbg.value(metadata float %0, metadata !4434, metadata !DIExpression()), !dbg !4435 | |
%1 = call i16 @__truncsfhf2(float %0), !dbg !4436 | |
ret i16 %1, !dbg !4436 | |
} | |
define internal void @fmt._fmt_int_128(%fmt.Info* %0, i128 %1, i64 %2, i1 zeroext %3, i64 %4, [2 x i64] %5, i8* noalias nocapture nonnull %__.context_ptr) !dbg !4438 { | |
decls: | |
%6 = alloca %..string, align 8 | |
call void @llvm.dbg.declare(metadata %..string* %7, metadata !4447, metadata !DIExpression()), !dbg !4468 | |
%7 = alloca %..string, align 8 | |
%8 = alloca { i128, i8 }, align 16, !dbg !4469 | |
%9 = alloca [2 x i64], align 8, !dbg !4470 | |
%10 = alloca %runtime.Source_Code_Location, align 8, !dbg !4470 | |
%11 = alloca [2 x i64], align 8, !dbg !4473 | |
%12 = alloca %runtime.Source_Code_Location, align 8, !dbg !4473 | |
call void @llvm.dbg.declare(metadata [256 x i8]* %13, metadata !4460, metadata !DIExpression()), !dbg !4475 | |
%13 = alloca [256 x i8], align 1, !dbg !4475 | |
call void @llvm.dbg.declare(metadata %..string* %14, metadata !4463, metadata !DIExpression()), !dbg !4476 | |
%14 = alloca %..string, align 8, !dbg !4476 | |
%15 = alloca [2 x i64], align 8, !dbg !4476 | |
%16 = alloca { i8*, i64 }, align 8, !dbg !4476 | |
%17 = alloca %..string, align 8, !dbg !4476 | |
call void @llvm.dbg.value(metadata %fmt.Info* %0, metadata !4442, metadata !DIExpression()), !dbg !4477 | |
call void @llvm.dbg.value(metadata i128 %1, metadata !4443, metadata !DIExpression()), !dbg !4477 | |
call void @llvm.dbg.value(metadata i64 %2, metadata !4444, metadata !DIExpression()), !dbg !4477 | |
call void @llvm.dbg.value(metadata i8 undef, metadata !4445, metadata !DIExpression()), !dbg !4477 | |
call void @llvm.dbg.value(metadata i64 %4, metadata !4446, metadata !DIExpression()), !dbg !4477 | |
%18 = bitcast %..string* %6 to [2 x i64]* | |
store [2 x i64] %5, [2 x i64]* %18, align 8 | |
%19 = bitcast %..string* %7 to i8* | |
%20 = bitcast %..string* %6 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %19, i8* align 8 %20, i64 16, i1 false) | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !4448, metadata !DIExpression()), !dbg !4478 | |
call void @llvm.dbg.value(metadata i8 0, metadata !4449, metadata !DIExpression()), !dbg !4479 | |
%21 = bitcast { i128, i8 }* %8 to i8*, !dbg !4469 | |
call void @llvm.memset.p0i8.i64(i8* %21, i8 0, i64 24, i1 false), !dbg !4469 | |
call void @strconv.is_integer_negative_128({ i128, i8 }* %8, i128 %1, i1 %3, i64 %4, i8* %__.context_ptr), !dbg !4469 | |
call void @llvm.dbg.value(metadata i8 undef, metadata !4449, metadata !DIExpression()), !dbg !4479 | |
%22 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 5, !dbg !4480 | |
%23 = load i8, i8* %22, align 1, !dbg !4480 | |
%24 = trunc i8 %23 to i1, !dbg !4480 | |
br i1 %24, label %if.then, label %cmp.or, !dbg !4480 | |
cmp.or: ; preds = %decls | |
%25 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 6, !dbg !4480 | |
%26 = load i8, i8* %25, align 1, !dbg !4480 | |
%27 = trunc i8 %26 to i1, !dbg !4480 | |
br i1 %27, label %if.then, label %if.done2, !dbg !4480 | |
if.then: ; preds = %cmp.or, %decls | |
call void @llvm.dbg.value(metadata i64 0, metadata !4451, metadata !DIExpression()), !dbg !4481 | |
%28 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 7, !dbg !4482 | |
%29 = load i64, i64* %28, align 8, !dbg !4482 | |
%30 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 8, !dbg !4482 | |
%31 = load i64, i64* %30, align 8, !dbg !4482 | |
%32 = add i64 %29, %31, !dbg !4482 | |
%33 = add i64 %32, 3, !dbg !4482 | |
call void @llvm.dbg.value(metadata i64 %33, metadata !4451, metadata !DIExpression()), !dbg !4481 | |
%34 = icmp sgt i64 %33, 256, !dbg !4483 | |
br i1 %34, label %if.then1, label %if.done2, !dbg !4483 | |
if.then1: ; preds = %if.then | |
%35 = bitcast [2 x i64]* %9 to %..string*, !dbg !4470 | |
store %..string { i8* getelementptr inbounds ([54 x i8], [54 x i8]* @"csbs$ba", i64 0, i64 0), i64 53 }, %..string* %35, align 8, !dbg !4470 | |
%36 = load [2 x i64], [2 x i64]* %9, align 8, !dbg !4470 | |
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, i32 724, i32 4, %..string { i8* getelementptr inbounds ([13 x i8], [13 x i8]* @"csbs$bd", i64 0, i64 0), i64 12 } }, %runtime.Source_Code_Location* %10, align 8, !dbg !4470 | |
call void @runtime.panic([2 x i64] %36, %runtime.Source_Code_Location* %10, i8* %__.context_ptr), !dbg !4470 | |
unreachable, !dbg !4470 | |
if.done2: ; preds = %if.then, %cmp.or | |
call void @llvm.dbg.value(metadata i64 0, metadata !4454, metadata !DIExpression()), !dbg !4479 | |
call void @llvm.dbg.value(metadata i64 0, metadata !4454, metadata !DIExpression()), !dbg !4479 | |
%37 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 6, !dbg !4484 | |
%38 = load i8, i8* %37, align 1, !dbg !4484 | |
%39 = trunc i8 %38 to i1, !dbg !4484 | |
br i1 %39, label %if.then3, label %if.else, !dbg !4484 | |
if.then3: ; preds = %if.done2 | |
%40 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 8, !dbg !4485 | |
%41 = load i64, i64* %40, align 8, !dbg !4485 | |
call void @llvm.dbg.value(metadata i64 %41, metadata !4454, metadata !DIExpression()), !dbg !4479 | |
%42 = icmp eq i64 %41, 0, !dbg !4486 | |
br i1 %42, label %cmp.and, label %if.done13, !dbg !4486 | |
cmp.and: ; preds = %if.then3 | |
%43 = icmp eq i128 %1, 0, !dbg !4486 | |
br i1 %43, label %if.then4, label %if.done13, !dbg !4486 | |
if.then4: ; preds = %cmp.and | |
call void @llvm.dbg.value(metadata i8 0, metadata !4455, metadata !DIExpression()), !dbg !4487 | |
%44 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 3, !dbg !4488 | |
%45 = load i8, i8* %44, align 1, !dbg !4488 | |
call void @llvm.dbg.value(metadata i8 %45, metadata !4455, metadata !DIExpression()), !dbg !4487 | |
store i8 0, i8* %44, align 1, !dbg !4489 | |
%46 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 7, !dbg !4490 | |
%47 = load i64, i64* %46, align 8, !dbg !4490 | |
call void @fmt.fmt_write_padding(%fmt.Info* %0, i64 %47, i8* %__.context_ptr), !dbg !4490 | |
store i8 %45, i8* %44, align 1, !dbg !4491 | |
ret void, !dbg !4492 | |
if.else: ; preds = %if.done2 | |
%48 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 3, !dbg !4493 | |
%49 = load i8, i8* %48, align 1, !dbg !4493 | |
%50 = trunc i8 %49 to i1, !dbg !4493 | |
br i1 %50, label %cmp.and6, label %if.done13, !dbg !4493 | |
cmp.and6: ; preds = %if.else | |
%51 = load i8, i8* %22, align 1, !dbg !4493 | |
%52 = trunc i8 %51 to i1, !dbg !4493 | |
br i1 %52, label %if.then7, label %if.done13, !dbg !4493 | |
if.then7: ; preds = %cmp.and6 | |
call void @llvm.dbg.value(metadata i64 undef, metadata !4454, metadata !DIExpression()), !dbg !4479 | |
br label %if.done13, !dbg !4495 | |
if.done13: ; preds = %if.then7, %if.else, %cmp.and6, %if.then3, %cmp.and | |
%53 = sub i64 %2, 2, !dbg !4497 | |
%54 = lshr i64 %53, 1, !dbg !4497 | |
%55 = shl i64 %53, 63, !dbg !4497 | |
%56 = or i64 %54, %55, !dbg !4497 | |
switch i64 %56, label %switch.default.body [ | |
i64 0, label %switch.done | |
i64 3, label %switch.done | |
i64 4, label %switch.done | |
i64 5, label %switch.done | |
i64 7, label %switch.done | |
], !dbg !4497 | |
switch.default.body: ; preds = %if.done13 | |
%57 = bitcast [2 x i64]* %11 to %..string*, !dbg !4473 | |
store %..string { i8* getelementptr inbounds ([31 x i8], [31 x i8]* @"csbs$bc", i64 0, i64 0), i64 30 }, %..string* %57, align 8, !dbg !4473 | |
%58 = load [2 x i64], [2 x i64]* %11, align 8, !dbg !4473 | |
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, i32 750, i32 3, %..string { i8* getelementptr inbounds ([13 x i8], [13 x i8]* @"csbs$bd", i64 0, i64 0), i64 12 } }, %runtime.Source_Code_Location* %12, align 8, !dbg !4473 | |
call void @runtime.panic([2 x i64] %58, %runtime.Source_Code_Location* %12, i8* %__.context_ptr), !dbg !4473 | |
unreachable, !dbg !4473 | |
switch.done: ; preds = %if.done13, %if.done13, %if.done13, %if.done13, %if.done13 | |
%59 = bitcast [256 x i8]* %13 to i8*, !dbg !4475 | |
call void @llvm.memset.p0i8.i64(i8* %59, i8 0, i64 256, i1 false), !dbg !4475 | |
call void @llvm.dbg.value(metadata i64 0, metadata !4461, metadata !DIExpression()), !dbg !4479 | |
call void @llvm.dbg.value(metadata i64 0, metadata !4461, metadata !DIExpression()), !dbg !4479 | |
call void @llvm.dbg.value(metadata i8 0, metadata !4462, metadata !DIExpression()), !dbg !4479 | |
%60 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 4, !dbg !4498 | |
%61 = load i8, i8* %60, align 1, !dbg !4498 | |
%62 = trunc i8 %61 to i1, !dbg !4498 | |
br i1 %62, label %cmp.and14, label %if.done16, !dbg !4498 | |
cmp.and14: ; preds = %switch.done | |
%63 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 3, !dbg !4498 | |
%64 = load i8, i8* %63, align 1, !dbg !4498 | |
%65 = trunc i8 %64 to i1, !dbg !4498 | |
%spec.select = select i1 %65, i8 0, i8 1, !dbg !4498 | |
br label %if.done16, !dbg !4498 | |
if.done16: ; preds = %cmp.and14, %switch.done | |
%.032 = phi i8 [ 0, %switch.done ], [ %spec.select, %cmp.and14 ], !dbg !4479 | |
call void @llvm.dbg.value(metadata i8 %.032, metadata !4462, metadata !DIExpression()), !dbg !4479 | |
%66 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 1, !dbg !4499 | |
%67 = load i8, i8* %66, align 1, !dbg !4499 | |
%68 = trunc i8 %67 to i1, !dbg !4499 | |
%69 = or i8 %.032, 2 | |
%spec.select33 = select i1 %68, i8 %69, i8 %.032, !dbg !4499 | |
call void @llvm.dbg.value(metadata i8 %spec.select33, metadata !4462, metadata !DIExpression()), !dbg !4479 | |
%70 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 2, !dbg !4500 | |
%71 = load i8, i8* %70, align 1, !dbg !4500 | |
%72 = trunc i8 %71 to i1, !dbg !4500 | |
%73 = or i8 %spec.select33, 4, !dbg !4500 | |
%.2 = select i1 %72, i8 %73, i8 %spec.select33, !dbg !4500 | |
call void @llvm.dbg.value(metadata i8 %.2, metadata !4462, metadata !DIExpression()), !dbg !4479 | |
%74 = bitcast %..string* %14 to i8*, !dbg !4476 | |
call void @llvm.memset.p0i8.i64(i8* %74, i8 0, i64 16, i1 false), !dbg !4476 | |
%75 = bitcast [2 x i64]* %15 to %..string*, !dbg !4476 | |
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %75, align 8, !dbg !4476 | |
%76 = load [2 x i64], [2 x i64]* %15, align 8, !dbg !4476 | |
call void @runtime.slice_expr_error_lo_hi([2 x i64] %76, i32 760, i32 34, i64 0, i64 256, i64 256), !dbg !4476 | |
%77 = getelementptr [256 x i8], [256 x i8]* %13, i64 0, i64 0, !dbg !4476 | |
%78 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %16, i32 0, i32 0, !dbg !4476 | |
store i8* %77, i8** %78, align 8, !dbg !4476 | |
%79 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %16, i32 0, i32 1, !dbg !4476 | |
store i64 256, i64* %79, align 8, !dbg !4476 | |
%80 = bitcast { i8*, i64 }* %16 to [2 x i64]*, !dbg !4476 | |
%81 = load [2 x i64], [2 x i64]* %80, align 8, !dbg !4476 | |
%82 = bitcast %..string* %7 to [2 x i64]*, !dbg !4476 | |
%83 = load [2 x i64], [2 x i64]* %82, align 8, !dbg !4476 | |
%84 = call [2 x i64] @strconv.append_bits_128([2 x i64] %81, i128 %1, i64 %2, i1 %3, i64 %4, [2 x i64] %83, i8 %.2, i8* %__.context_ptr), !dbg !4476 | |
%85 = bitcast %..string* %17 to [2 x i64]*, !dbg !4476 | |
store [2 x i64] %84, [2 x i64]* %85, align 8, !dbg !4476 | |
%86 = bitcast %..string* %17 to i8*, !dbg !4476 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %74, i8* align 8 %86, i64 16, i1 false), !dbg !4476 | |
%87 = load i8, i8* %60, align 1, !dbg !4501 | |
%88 = trunc i8 %87 to i1, !dbg !4501 | |
br i1 %88, label %cmp.and21, label %if.done31, !dbg !4501 | |
cmp.and21: ; preds = %if.done16 | |
%89 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 3, !dbg !4501 | |
%90 = load i8, i8* %89, align 1, !dbg !4501 | |
%91 = trunc i8 %90 to i1, !dbg !4501 | |
br i1 %91, label %cmp.and22, label %if.done31, !dbg !4501 | |
cmp.and22: ; preds = %cmp.and21 | |
%92 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 9, !dbg !4501 | |
%93 = load i64, i64* %92, align 8, !dbg !4501 | |
%94 = icmp eq i64 %93, 0, !dbg !4501 | |
br i1 %94, label %if.then23, label %if.done31, !dbg !4501 | |
if.then23: ; preds = %cmp.and22 | |
call void @llvm.dbg.value(metadata i8 0, metadata !4464, metadata !DIExpression()), !dbg !4502 | |
call void @llvm.dbg.value(metadata i8 0, metadata !4464, metadata !DIExpression()), !dbg !4502 | |
%95 = sub i64 %2, 2, !dbg !4503 | |
%96 = lshr i64 %95, 1, !dbg !4503 | |
%97 = shl i64 %95, 63, !dbg !4503 | |
%98 = or i64 %96, %97, !dbg !4503 | |
switch i64 %98, label %switch.done28 [ | |
i64 0, label %switch.case.body24 | |
i64 3, label %switch.case.body25 | |
i64 5, label %switch.case.body26 | |
i64 7, label %switch.case.body27 | |
], !dbg !4503 | |
switch.case.body24: ; preds = %if.then23 | |
call void @llvm.dbg.value(metadata i8 98, metadata !4464, metadata !DIExpression()), !dbg !4502 | |
br label %switch.done28, !dbg !4503 | |
switch.case.body25: ; preds = %if.then23 | |
call void @llvm.dbg.value(metadata i8 111, metadata !4464, metadata !DIExpression()), !dbg !4502 | |
br label %switch.done28, !dbg !4503 | |
switch.case.body26: ; preds = %if.then23 | |
call void @llvm.dbg.value(metadata i8 122, metadata !4464, metadata !DIExpression()), !dbg !4502 | |
br label %switch.done28, !dbg !4503 | |
switch.case.body27: ; preds = %if.then23 | |
call void @llvm.dbg.value(metadata i8 120, metadata !4464, metadata !DIExpression()), !dbg !4502 | |
br label %switch.done28, !dbg !4503 | |
switch.done28: ; preds = %switch.case.body27, %switch.case.body26, %switch.case.body25, %switch.case.body24, %if.then23 | |
%.0 = phi i8 [ 0, %if.then23 ], [ 120, %switch.case.body27 ], [ 122, %switch.case.body26 ], [ 111, %switch.case.body25 ], [ 98, %switch.case.body24 ], !dbg !4502 | |
call void @llvm.dbg.value(metadata i8 %.0, metadata !4464, metadata !DIExpression()), !dbg !4502 | |
%99 = icmp ne i8 %.0, 0, !dbg !4504 | |
br i1 %99, label %if.then29, label %if.done31, !dbg !4504 | |
if.then29: ; preds = %switch.done28 | |
%100 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 13, !dbg !4505 | |
%101 = bitcast %io.Writer* %100 to [2 x i64]*, !dbg !4505 | |
%102 = load [2 x i64], [2 x i64]* %101, align 8, !dbg !4505 | |
%103 = call i32 @io.write_byte_to_writer([2 x i64] %102, i8 48, i8* %__.context_ptr), !dbg !4505 | |
%104 = load [2 x i64], [2 x i64]* %101, align 8, !dbg !4508 | |
%105 = call i32 @io.write_byte_to_writer([2 x i64] %104, i8 %.0, i8* %__.context_ptr), !dbg !4508 | |
br label %if.done31, !dbg !4504 | |
if.done31: ; preds = %switch.done28, %if.then29, %cmp.and22, %cmp.and21, %if.done16 | |
call void @llvm.dbg.value(metadata i8 0, metadata !4467, metadata !DIExpression()), !dbg !4479 | |
%106 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 3, !dbg !4509 | |
%107 = load i8, i8* %106, align 1, !dbg !4509 | |
call void @llvm.dbg.value(metadata i8 %107, metadata !4467, metadata !DIExpression()), !dbg !4479 | |
store i8 0, i8* %106, align 1, !dbg !4510 | |
%108 = bitcast %..string* %14 to [2 x i64]*, !dbg !4511 | |
%109 = load [2 x i64], [2 x i64]* %108, align 8, !dbg !4511 | |
call void @fmt._pad(%fmt.Info* %0, [2 x i64] %109, i8* %__.context_ptr), !dbg !4511 | |
store i8 %107, i8* %106, align 1, !dbg !4512 | |
ret void, !dbg !4478 | |
} | |
; Function Attrs: nounwind | |
define dso_local float @__extendhfsf2(i16 %0) #0 !dbg !4513 { | |
decls: | |
call void @llvm.dbg.value(metadata i16 %0, metadata !4515, metadata !DIExpression()), !dbg !4516 | |
%1 = call float @__gnu_h2f_ieee(i16 %0), !dbg !4517 | |
ret float %1, !dbg !4517 | |
} | |
; Function Attrs: nounwind | |
define dso_local double @__floattidf(i128 %0, i8* noalias nocapture nonnull %__.context_ptr) #0 !dbg !4519 { | |
decls: | |
call void @llvm.dbg.declare(metadata [2 x i32]* %1, metadata !4530, metadata !DIExpression()), !dbg !4532 | |
%1 = alloca [2 x i32], align 4, !dbg !4532 | |
call void @llvm.dbg.value(metadata i128 %0, metadata !4523, metadata !DIExpression()), !dbg !4533 | |
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !4524, metadata !DIExpression()), !dbg !4534 | |
%2 = icmp eq i128 %0, 0, !dbg !4535 | |
br i1 %2, label %if.then, label %if.done, !dbg !4535 | |
if.then: ; preds = %decls | |
ret double 0.000000e+00, !dbg !4536 | |
if.done: ; preds = %decls | |
call void @llvm.dbg.value(metadata i128 0, metadata !4525, metadata !DIExpression()), !dbg !4539 | |
call void @llvm.dbg.value(metadata i128 %0, metadata !4525, metadata !DIExpression()), !dbg !4539 | |
call void @llvm.dbg.value(metadata i128 0, metadata !4527, metadata !DIExpression()), !dbg !4539 | |
%3 = ashr i128 %0, 127, !dbg !4540 | |
call void @llvm.dbg.value(metadata i128 %3, metadata !4527, metadata !DIExpression()), !dbg !4539 | |
%4 = xor i128 %0, %3, !dbg !4541 | |
%5 = sub i128 %4, %3, !dbg !4541 | |
call void @llvm.dbg.value(metadata i128 %5, metadata !4525, metadata !DIExpression()), !dbg !4539 | |
call void @llvm.dbg.value(metadata i128 0, metadata !4528, metadata !DIExpression()), !dbg !4539 | |
%6 = call i128 @llvm.ctlz.i128(i128 %5, i1 false), !dbg !4542 | |
%7 = sub i128 128, %6, !dbg !4542 | |
call void @llvm.dbg.value(metadata i128 %7, metadata !4528, metadata !DIExpression()), !dbg !4539 | |
call void @llvm.dbg.value(metadata i32 0, metadata !4529, metadata !DIExpression()), !dbg !4539 | |
%8 = sub i128 %7, 1, !dbg !4543 | |
%9 = trunc i128 %8 to i32, !dbg !4543 | |
call void @llvm.dbg.value(metadata i32 %9, metadata !4529, metadata !DIExpression()), !dbg !4539 | |
%10 = icmp sgt i128 %7, 53, !dbg !4544 | |
br i1 %10, label %if.then1, label %if.else, !dbg !4544 | |
if.then1: ; preds = %if.done | |
switch i128 %7, label %switch.default.body [ | |
i128 54, label %switch.case.body | |
i128 55, label %switch.done | |
], !dbg !4545 | |
switch.case.body: ; preds = %if.then1 | |
%11 = shl i128 %5, 1, !dbg !4548 | |
call void @llvm.dbg.value(metadata i128 %11, metadata !4525, metadata !DIExpression()), !dbg !4539 | |
br label %switch.done, !dbg !4545 | |
switch.default.body: ; preds = %if.then1 | |
%12 = sub i128 %7, 55, !dbg !4550 | |
%13 = icmp ult i128 %12, 128, !dbg !4550 | |
%14 = lshr i128 %5, %12, !dbg !4550 | |
%15 = select i1 %13, i128 %14, i128 0, !dbg !4550 | |
%16 = sub i128 183, %7, !dbg !4550 | |
%17 = icmp ult i128 %16, 128, !dbg !4550 | |
%18 = lshr i128 -1, %16, !dbg !4550 | |
%19 = select i1 %17, i128 %18, i128 0, !dbg !4550 | |
%20 = and i128 %5, %19, !dbg !4550 | |
%21 = icmp ne i128 %20, 0, !dbg !4550 | |
%22 = zext i1 %21 to i128, !dbg !4550 | |
%23 = or i128 %15, %22, !dbg !4550 | |
call void @llvm.dbg.value(metadata i128 %23, metadata !4525, metadata !DIExpression()), !dbg !4539 | |
br label %switch.done, !dbg !4545 | |
switch.done: ; preds = %if.then1, %switch.default.body, %switch.case.body | |
%.06 = phi i128 [ %23, %switch.default.body ], [ %11, %switch.case.body ], [ %5, %if.then1 ], !dbg !4539 | |
call void @llvm.dbg.value(metadata i128 %.06, metadata !4525, metadata !DIExpression()), !dbg !4539 | |
%24 = and i128 %.06, 4, !dbg !4551 | |
%25 = icmp ne i128 %24, 0, !dbg !4551 | |
%26 = zext i1 %25 to i128, !dbg !4551 | |
%27 = or i128 %.06, %26, !dbg !4551 | |
call void @llvm.dbg.value(metadata i128 %27, metadata !4525, metadata !DIExpression()), !dbg !4539 | |
%28 = add i128 %27, 1, !dbg !4552 | |
call void @llvm.dbg.value(metadata i128 %28, metadata !4525, metadata !DIExpression()), !dbg !4539 | |
%29 = ashr i128 %28, 2, !dbg !4553 | |
call void @llvm.dbg.value(metadata i128 %29, metadata !4525, metadata !DIExpression()), !dbg !4539 | |
%30 = and i128 %29, 9007199254740992, !dbg !4554 | |
%31 = icmp ne i128 %30, 0, !dbg !4554 | |
%32 = ashr i128 %29, 1, !dbg !4554 | |
%33 = add i32 %9, 1, !dbg !4554 | |
%.17 = select i1 %31, i128 %32, i128 %29, !dbg !4554 | |
%.0 = select i1 %31, i32 %33, i32 %9, !dbg !4554 | |
br label %if.done5, !dbg !4554 | |
if.else: ; preds = %if.done | |
%34 = sub i128 53, %7, !dbg !4555 | |
%35 = icmp ult i128 %34, 128, !dbg !4555 | |
%36 = shl i128 %5, %34, !dbg !4555 | |
%37 = select i1 %35, i128 %36, i128 0, !dbg !4555 | |
call void @llvm.dbg.value(metadata i128 %37, metadata !4525, metadata !DIExpression()), !dbg !4539 | |
br label %if.done5, !dbg !4544 | |
if.done5: ; preds = %switch.done, %if.else | |
%.2 = phi i128 [ %37, %if.else ], [ %.17, %switch.done ], !dbg !4557 | |
%.1 = phi i32 [ %9, %if.else ], [ %.0, %switch.done ], !dbg !4539 | |
call void @llvm.dbg.value(metadata i32 %.1, metadata !4529, metadata !DIExpression()), !dbg !4539 | |
call void @llvm.dbg.value(metadata i128 %.2, metadata !4525, metadata !DIExpression()), !dbg !4539 | |
%38 = bitcast [2 x i32]* %1 to i8*, !dbg !4532 | |
call void @llvm.memset.p0i8.i64(i8* %38, i8 0, i64 8, i1 false), !dbg !4532 | |
%39 = getelementptr [2 x i32], [2 x i32]* %1, i64 0, i64 0, !dbg !4558 | |
%40 = trunc i128 %3 to i32, !dbg !4558 | |
%41 = and i32 %40, -2147483648, !dbg !4558 | |
%42 = add i32 %.1, 1023, !dbg !4558 | |
%43 = shl i32 %42, 20, !dbg !4558 | |
%44 = or i32 %41, %43, !dbg !4558 | |
%45 = trunc i128 %.2 to i64, !dbg !4558 | |
%46 = lshr i64 %45, 32, !dbg !4558 | |
%47 = and i64 %46, 1048575, !dbg !4558 | |
%48 = trunc i64 %47 to i32, !dbg !4558 | |
%49 = or i32 %44, %48, !dbg !4558 | |
store i32 %49, i32* %39, align 4, !dbg !4558 | |
%50 = getelementptr [2 x i32], [2 x i32]* %1, i64 0, i64 1, !dbg !4559 | |
%51 = trunc i128 %.2 to i32, !dbg !4559 | |
store i32 %51, i32* %50, align 4, !dbg !4559 | |
%52 = bitcast [2 x i32]* %1 to double*, !dbg !4560 | |
%53 = load double, double* %52, align 8, !dbg !4560 | |
ret double %53, !dbg !4560 | |
} | |
define internal void @fmt.fmt_rune(%fmt.Info* %0, i32 %1, i32 %2, i8* noalias nocapture nonnull %__.context_ptr) !dbg !4561 { | |
decls: | |
%3 = alloca { i64, i32 }, align 8, !dbg !4569 | |
call void @llvm.dbg.value(metadata %fmt.Info* %0, metadata !4565, metadata !DIExpression()), !dbg !4572 | |
call void @llvm.dbg.value(metadata i32 %1, metadata !4566, metadata !DIExpression()), !dbg !4572 | |
call void @llvm.dbg.value(metadata i32 %2, metadata !4567, metadata !DIExpression()), !dbg !4572 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !4568, metadata !DIExpression()), !dbg !4573 | |
switch i32 %2, label %switch.default.body [ | |
i32 99, label %switch.case.body | |
i32 114, label %switch.case.body | |
i32 118, label %switch.case.body | |
i32 113, label %switch.case.body1 | |
], !dbg !4574 | |
switch.case.body: ; preds = %decls, %decls, %decls | |
%4 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 13, !dbg !4569 | |
%5 = bitcast %io.Writer* %4 to [2 x i64]*, !dbg !4569 | |
%6 = load [2 x i64], [2 x i64]* %5, align 8, !dbg !4569 | |
%7 = call [2 x i64] @io.write_rune([2 x i64] %6, i32 %1, i8* %__.context_ptr), !dbg !4569 | |
%8 = bitcast { i64, i32 }* %3 to [2 x i64]*, !dbg !4569 | |
store [2 x i64] %7, [2 x i64]* %8, align 8, !dbg !4569 | |
br label %switch.done, !dbg !4574 | |
switch.case.body1: ; preds = %decls | |
%9 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 13, !dbg !4575 | |
%10 = bitcast %io.Writer* %9 to [2 x i64]*, !dbg !4575 | |
%11 = load [2 x i64], [2 x i64]* %10, align 8, !dbg !4575 | |
%12 = call i64 @strings.write_quoted_rune([2 x i64] %11, i32 %1, i8* %__.context_ptr), !dbg !4575 | |
br label %switch.done, !dbg !4574 | |
switch.default.body: ; preds = %decls | |
%13 = sext i32 %1 to i64, !dbg !4576 | |
call void @fmt.fmt_int(%fmt.Info* %0, i64 %13, i1 false, i64 32, i32 %2, i8* %__.context_ptr), !dbg !4576 | |
br label %switch.done, !dbg !4574 | |
switch.done: ; preds = %switch.default.body, %switch.case.body1, %switch.case.body | |
ret void, !dbg !4573 | |
} | |
; Function Attrs: nounwind | |
define dso_local double @__floattidf_unsigned(i128 %0, i8* noalias nocapture nonnull %__.context_ptr) #0 !dbg !4577 { | |
decls: | |
call void @llvm.dbg.declare(metadata [2 x i32]* %1, metadata !4587, metadata !DIExpression()), !dbg !4588 | |
%1 = alloca [2 x i32], align 4, !dbg !4588 | |
call void @llvm.dbg.value(metadata i128 %0, metadata !4581, metadata !DIExpression()), !dbg !4589 | |
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !4582, metadata !DIExpression()), !dbg !4590 | |
%2 = icmp eq i128 %0, 0, !dbg !4591 | |
br i1 %2, label %if.then, label %if.done, !dbg !4591 | |
if.then: ; preds = %decls | |
ret double 0.000000e+00, !dbg !4592 | |
if.done: ; preds = %decls | |
call void @llvm.dbg.value(metadata i128 0, metadata !4583, metadata !DIExpression()), !dbg !4595 | |
call void @llvm.dbg.value(metadata i128 %0, metadata !4583, metadata !DIExpression()), !dbg !4595 | |
call void @llvm.dbg.value(metadata i128 0, metadata !4585, metadata !DIExpression()), !dbg !4595 | |
%3 = call i128 @llvm.ctlz.i128(i128 %0, i1 false), !dbg !4596 | |
%4 = sub i128 128, %3, !dbg !4596 | |
call void @llvm.dbg.value(metadata i128 %4, metadata !4585, metadata !DIExpression()), !dbg !4595 | |
call void @llvm.dbg.value(metadata i32 0, metadata !4586, metadata !DIExpression()), !dbg !4595 | |
%5 = sub i128 %4, 1, !dbg !4597 | |
%6 = trunc i128 %5 to i32, !dbg !4597 | |
call void @llvm.dbg.value(metadata i32 %6, metadata !4586, metadata !DIExpression()), !dbg !4595 | |
%7 = icmp ugt i128 %4, 53, !dbg !4598 | |
br i1 %7, label %if.then1, label %if.else, !dbg !4598 | |
if.then1: ; preds = %if.done | |
switch i128 %4, label %switch.default.body [ | |
i128 54, label %switch.case.body | |
i128 55, label %switch.done | |
], !dbg !4599 | |
switch.case.body: ; preds = %if.then1 | |
%8 = shl i128 %0, 1, !dbg !4602 | |
call void @llvm.dbg.value(metadata i128 %8, metadata !4583, metadata !DIExpression()), !dbg !4595 | |
br label %switch.done, !dbg !4599 | |
switch.default.body: ; preds = %if.then1 | |
%9 = sub i128 %4, 55, !dbg !4604 | |
%10 = icmp ult i128 %9, 128, !dbg !4604 | |
%11 = lshr i128 %0, %9, !dbg !4604 | |
%12 = select i1 %10, i128 %11, i128 0, !dbg !4604 | |
%13 = sub i128 183, %4, !dbg !4604 | |
%14 = icmp ult i128 %13, 128, !dbg !4604 | |
%15 = lshr i128 -1, %13, !dbg !4604 | |
%16 = select i1 %14, i128 %15, i128 0, !dbg !4604 | |
%17 = and i128 %0, %16, !dbg !4604 | |
%18 = icmp ne i128 %17, 0, !dbg !4604 | |
%19 = zext i1 %18 to i128, !dbg !4604 | |
%20 = or i128 %12, %19, !dbg !4604 | |
call void @llvm.dbg.value(metadata i128 %20, metadata !4583, metadata !DIExpression()), !dbg !4595 | |
br label %switch.done, !dbg !4599 | |
switch.done: ; preds = %if.then1, %switch.default.body, %switch.case.body | |
%.06 = phi i128 [ %20, %switch.default.body ], [ %8, %switch.case.body ], [ %0, %if.then1 ], !dbg !4595 | |
call void @llvm.dbg.value(metadata i128 %.06, metadata !4583, metadata !DIExpression()), !dbg !4595 | |
%21 = and i128 %.06, 4, !dbg !4605 | |
%22 = icmp ne i128 %21, 0, !dbg !4605 | |
%23 = zext i1 %22 to i128, !dbg !4605 | |
%24 = or i128 %.06, %23, !dbg !4605 | |
call void @llvm.dbg.value(metadata i128 %24, metadata !4583, metadata !DIExpression()), !dbg !4595 | |
%25 = add i128 %24, 1, !dbg !4606 | |
call void @llvm.dbg.value(metadata i128 %25, metadata !4583, metadata !DIExpression()), !dbg !4595 | |
%26 = lshr i128 %25, 2, !dbg !4607 | |
call void @llvm.dbg.value(metadata i128 %26, metadata !4583, metadata !DIExpression()), !dbg !4595 | |
%27 = and i128 %26, 9007199254740992, !dbg !4608 | |
%28 = icmp ne i128 %27, 0, !dbg !4608 | |
%29 = lshr i128 %26, 1, !dbg !4608 | |
%30 = add i32 %6, 1, !dbg !4608 | |
%.17 = select i1 %28, i128 %29, i128 %26, !dbg !4608 | |
%.0 = select i1 %28, i32 %30, i32 %6, !dbg !4608 | |
br label %if.done5, !dbg !4608 | |
if.else: ; preds = %if.done | |
%31 = sub i128 53, %4, !dbg !4609 | |
%32 = icmp ult i128 %31, 128, !dbg !4609 | |
%33 = shl i128 %0, %31, !dbg !4609 | |
%34 = select i1 %32, i128 %33, i128 0, !dbg !4609 | |
call void @llvm.dbg.value(metadata i128 %34, metadata !4583, metadata !DIExpression()), !dbg !4595 | |
br label %if.done5, !dbg !4598 | |
if.done5: ; preds = %switch.done, %if.else | |
%.2 = phi i128 [ %34, %if.else ], [ %.17, %switch.done ], !dbg !4611 | |
%.1 = phi i32 [ %6, %if.else ], [ %.0, %switch.done ], !dbg !4595 | |
call void @llvm.dbg.value(metadata i32 %.1, metadata !4586, metadata !DIExpression()), !dbg !4595 | |
call void @llvm.dbg.value(metadata i128 %.2, metadata !4583, metadata !DIExpression()), !dbg !4595 | |
%35 = bitcast [2 x i32]* %1 to i8*, !dbg !4588 | |
call void @llvm.memset.p0i8.i64(i8* %35, i8 0, i64 8, i1 false), !dbg !4588 | |
%36 = getelementptr [2 x i32], [2 x i32]* %1, i64 0, i64 0, !dbg !4612 | |
%37 = add i32 %.1, 1023, !dbg !4612 | |
%38 = shl i32 %37, 20, !dbg !4612 | |
%39 = trunc i128 %.2 to i64, !dbg !4612 | |
%40 = lshr i64 %39, 32, !dbg !4612 | |
%41 = and i64 %40, 1048575, !dbg !4612 | |
%42 = trunc i64 %41 to i32, !dbg !4612 | |
%43 = or i32 %38, %42, !dbg !4612 | |
store i32 %43, i32* %36, align 4, !dbg !4612 | |
%44 = getelementptr [2 x i32], [2 x i32]* %1, i64 0, i64 1, !dbg !4613 | |
%45 = trunc i128 %.2 to i32, !dbg !4613 | |
store i32 %45, i32* %44, align 4, !dbg !4613 | |
%46 = bitcast [2 x i32]* %1 to double*, !dbg !4614 | |
%47 = load double, double* %46, align 8, !dbg !4614 | |
ret double %47, !dbg !4614 | |
} | |
define internal void @fmt.fmt_int(%fmt.Info* %0, i64 %1, i1 zeroext %2, i64 %3, i32 %4, i8* noalias nocapture nonnull %__.context_ptr) !dbg !4615 { | |
decls: | |
%5 = alloca [2 x i64], align 8, !dbg !4628 | |
%6 = alloca { i64, i32 }, align 8, !dbg !4628 | |
call void @llvm.dbg.value(metadata %fmt.Info* %0, metadata !4619, metadata !DIExpression()), !dbg !4631 | |
call void @llvm.dbg.value(metadata i64 %1, metadata !4620, metadata !DIExpression()), !dbg !4631 | |
call void @llvm.dbg.value(metadata i8 undef, metadata !4621, metadata !DIExpression()), !dbg !4631 | |
call void @llvm.dbg.value(metadata i64 %3, metadata !4622, metadata !DIExpression()), !dbg !4631 | |
call void @llvm.dbg.value(metadata i32 %4, metadata !4623, metadata !DIExpression()), !dbg !4631 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !4624, metadata !DIExpression()), !dbg !4632 | |
switch i32 %4, label %switch.default.body [ | |
i32 118, label %switch.case.body | |
i32 98, label %switch.case.body1 | |
i32 111, label %switch.case.body2 | |
i32 105, label %switch.case.body3 | |
i32 100, label %switch.case.body3 | |
i32 122, label %switch.case.body4 | |
i32 120, label %switch.case.body5 | |
i32 88, label %switch.case.body6 | |
i32 99, label %switch.case.body7 | |
i32 114, label %switch.case.body7 | |
i32 85, label %switch.case.body8 | |
], !dbg !4633 | |
switch.case.body: ; preds = %decls | |
%7 = load [2 x i64], [2 x i64]* bitcast (%..string* @fmt.__DIGITS_LOWER to [2 x i64]*), align 8, !dbg !4634 | |
call void @fmt._fmt_int(%fmt.Info* %0, i64 %1, i64 10, i1 %2, i64 %3, [2 x i64] %7, i8* %__.context_ptr), !dbg !4634 | |
br label %switch.done, !dbg !4633 | |
switch.case.body1: ; preds = %decls | |
%8 = load [2 x i64], [2 x i64]* bitcast (%..string* @fmt.__DIGITS_LOWER to [2 x i64]*), align 8, !dbg !4635 | |
call void @fmt._fmt_int(%fmt.Info* %0, i64 %1, i64 2, i1 %2, i64 %3, [2 x i64] %8, i8* %__.context_ptr), !dbg !4635 | |
br label %switch.done, !dbg !4633 | |
switch.case.body2: ; preds = %decls | |
%9 = load [2 x i64], [2 x i64]* bitcast (%..string* @fmt.__DIGITS_LOWER to [2 x i64]*), align 8, !dbg !4636 | |
call void @fmt._fmt_int(%fmt.Info* %0, i64 %1, i64 8, i1 %2, i64 %3, [2 x i64] %9, i8* %__.context_ptr), !dbg !4636 | |
br label %switch.done, !dbg !4633 | |
switch.case.body3: ; preds = %decls, %decls | |
%10 = load [2 x i64], [2 x i64]* bitcast (%..string* @fmt.__DIGITS_LOWER to [2 x i64]*), align 8, !dbg !4637 | |
call void @fmt._fmt_int(%fmt.Info* %0, i64 %1, i64 10, i1 %2, i64 %3, [2 x i64] %10, i8* %__.context_ptr), !dbg !4637 | |
br label %switch.done, !dbg !4633 | |
switch.case.body4: ; preds = %decls | |
%11 = load [2 x i64], [2 x i64]* bitcast (%..string* @fmt.__DIGITS_LOWER to [2 x i64]*), align 8, !dbg !4638 | |
call void @fmt._fmt_int(%fmt.Info* %0, i64 %1, i64 12, i1 %2, i64 %3, [2 x i64] %11, i8* %__.context_ptr), !dbg !4638 | |
br label %switch.done, !dbg !4633 | |
switch.case.body5: ; preds = %decls | |
%12 = load [2 x i64], [2 x i64]* bitcast (%..string* @fmt.__DIGITS_LOWER to [2 x i64]*), align 8, !dbg !4639 | |
call void @fmt._fmt_int(%fmt.Info* %0, i64 %1, i64 16, i1 %2, i64 %3, [2 x i64] %12, i8* %__.context_ptr), !dbg !4639 | |
br label %switch.done, !dbg !4633 | |
switch.case.body6: ; preds = %decls | |
%13 = load [2 x i64], [2 x i64]* bitcast (%..string* @fmt.__DIGITS_UPPER to [2 x i64]*), align 8, !dbg !4640 | |
call void @fmt._fmt_int(%fmt.Info* %0, i64 %1, i64 16, i1 %2, i64 %3, [2 x i64] %13, i8* %__.context_ptr), !dbg !4640 | |
br label %switch.done, !dbg !4633 | |
switch.case.body7: ; preds = %decls, %decls | |
%14 = trunc i64 %1 to i32, !dbg !4641 | |
call void @fmt.fmt_rune(%fmt.Info* %0, i32 %14, i32 %4, i8* %__.context_ptr), !dbg !4641 | |
br label %switch.done, !dbg !4633 | |
switch.case.body8: ; preds = %decls | |
call void @llvm.dbg.value(metadata i32 0, metadata !4625, metadata !DIExpression()), !dbg !4642 | |
%15 = trunc i64 %1 to i32, !dbg !4643 | |
call void @llvm.dbg.value(metadata i32 %15, metadata !4625, metadata !DIExpression()), !dbg !4642 | |
%16 = icmp slt i32 %15, 0, !dbg !4644 | |
br i1 %16, label %if.then, label %cmp.or, !dbg !4644 | |
cmp.or: ; preds = %switch.case.body8 | |
%17 = icmp sgt i32 %15, 1114111, !dbg !4644 | |
br i1 %17, label %if.then, label %if.else, !dbg !4644 | |
if.then: ; preds = %cmp.or, %switch.case.body8 | |
call void @fmt.fmt_bad_verb(%fmt.Info* %0, i32 %4, i8* %__.context_ptr), !dbg !4645 | |
br label %switch.done, !dbg !4644 | |
if.else: ; preds = %cmp.or | |
%18 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 13, !dbg !4628 | |
%19 = bitcast %io.Writer* %18 to [2 x i64]*, !dbg !4628 | |
%20 = load [2 x i64], [2 x i64]* %19, align 8, !dbg !4628 | |
%21 = bitcast [2 x i64]* %5 to %..string*, !dbg !4628 | |
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$be", i64 0, i64 0), i64 2 }, %..string* %21, align 8, !dbg !4628 | |
%22 = load [2 x i64], [2 x i64]* %5, align 8, !dbg !4628 | |
%23 = call [2 x i64] @io.write_string([2 x i64] %20, [2 x i64] %22, i8* %__.context_ptr), !dbg !4628 | |
%24 = bitcast { i64, i32 }* %6 to [2 x i64]*, !dbg !4628 | |
store [2 x i64] %23, [2 x i64]* %24, align 8, !dbg !4628 | |
%25 = load [2 x i64], [2 x i64]* bitcast (%..string* @fmt.__DIGITS_UPPER to [2 x i64]*), align 8, !dbg !4647 | |
call void @fmt._fmt_int(%fmt.Info* %0, i64 %1, i64 16, i1 false, i64 %3, [2 x i64] %25, i8* %__.context_ptr), !dbg !4647 | |
br label %switch.done, !dbg !4644 | |
switch.default.body: ; preds = %decls | |
call void @fmt.fmt_bad_verb(%fmt.Info* %0, i32 %4, i8* %__.context_ptr), !dbg !4648 | |
br label %switch.done, !dbg !4633 | |
switch.done: ; preds = %if.then, %if.else, %switch.default.body, %switch.case.body7, %switch.case.body6, %switch.case.body5, %switch.case.body4, %switch.case.body3, %switch.case.body2, %switch.case.body1, %switch.case.body | |
ret void, !dbg !4632 | |
} | |
; Function Attrs: nounwind | |
define dso_local i128 @__umodti3(i128 %0, i128 %1) #0 !dbg !4649 { | |
decls: | |
call void @llvm.dbg.declare(metadata i128* %2, metadata !4656, metadata !DIExpression()), !dbg !4658 | |
%2 = alloca i128, align 16, !dbg !4658 | |
call void @llvm.dbg.value(metadata i128 %0, metadata !4654, metadata !DIExpression()), !dbg !4659 | |
call void @llvm.dbg.value(metadata i128 %1, metadata !4655, metadata !DIExpression()), !dbg !4659 | |
store i128 undef, i128* %2, align 16, !dbg !4658 | |
%3 = call i128 @runtime.udivmod128(i128 %0, i128 %1, i128* %2), !dbg !4660 | |
%4 = load i128, i128* %2, align 16, !dbg !4661 | |
ret i128 %4, !dbg !4661 | |
} | |
define internal void @fmt.fmt_int_128(%fmt.Info* %0, i128 %1, i1 zeroext %2, i64 %3, i32 %4, i8* noalias nocapture nonnull %__.context_ptr) !dbg !4662 { | |
decls: | |
%5 = alloca [2 x i64], align 8, !dbg !4675 | |
%6 = alloca { i64, i32 }, align 8, !dbg !4675 | |
call void @llvm.dbg.value(metadata %fmt.Info* %0, metadata !4666, metadata !DIExpression()), !dbg !4678 | |
call void @llvm.dbg.value(metadata i128 %1, metadata !4667, metadata !DIExpression()), !dbg !4678 | |
call void @llvm.dbg.value(metadata i8 undef, metadata !4668, metadata !DIExpression()), !dbg !4678 | |
call void @llvm.dbg.value(metadata i64 %3, metadata !4669, metadata !DIExpression()), !dbg !4678 | |
call void @llvm.dbg.value(metadata i32 %4, metadata !4670, metadata !DIExpression()), !dbg !4678 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !4671, metadata !DIExpression()), !dbg !4679 | |
switch i32 %4, label %switch.default.body [ | |
i32 118, label %switch.case.body | |
i32 98, label %switch.case.body1 | |
i32 111, label %switch.case.body2 | |
i32 105, label %switch.case.body3 | |
i32 100, label %switch.case.body3 | |
i32 122, label %switch.case.body4 | |
i32 120, label %switch.case.body5 | |
i32 88, label %switch.case.body6 | |
i32 99, label %switch.case.body7 | |
i32 114, label %switch.case.body7 | |
i32 85, label %switch.case.body8 | |
], !dbg !4680 | |
switch.case.body: ; preds = %decls | |
%7 = load [2 x i64], [2 x i64]* bitcast (%..string* @fmt.__DIGITS_LOWER to [2 x i64]*), align 8, !dbg !4681 | |
call void @fmt._fmt_int_128(%fmt.Info* %0, i128 %1, i64 10, i1 %2, i64 %3, [2 x i64] %7, i8* %__.context_ptr), !dbg !4681 | |
br label %switch.done, !dbg !4680 | |
switch.case.body1: ; preds = %decls | |
%8 = load [2 x i64], [2 x i64]* bitcast (%..string* @fmt.__DIGITS_LOWER to [2 x i64]*), align 8, !dbg !4682 | |
call void @fmt._fmt_int_128(%fmt.Info* %0, i128 %1, i64 2, i1 %2, i64 %3, [2 x i64] %8, i8* %__.context_ptr), !dbg !4682 | |
br label %switch.done, !dbg !4680 | |
switch.case.body2: ; preds = %decls | |
%9 = load [2 x i64], [2 x i64]* bitcast (%..string* @fmt.__DIGITS_LOWER to [2 x i64]*), align 8, !dbg !4683 | |
call void @fmt._fmt_int_128(%fmt.Info* %0, i128 %1, i64 8, i1 %2, i64 %3, [2 x i64] %9, i8* %__.context_ptr), !dbg !4683 | |
br label %switch.done, !dbg !4680 | |
switch.case.body3: ; preds = %decls, %decls | |
%10 = load [2 x i64], [2 x i64]* bitcast (%..string* @fmt.__DIGITS_LOWER to [2 x i64]*), align 8, !dbg !4684 | |
call void @fmt._fmt_int_128(%fmt.Info* %0, i128 %1, i64 10, i1 %2, i64 %3, [2 x i64] %10, i8* %__.context_ptr), !dbg !4684 | |
br label %switch.done, !dbg !4680 | |
switch.case.body4: ; preds = %decls | |
%11 = load [2 x i64], [2 x i64]* bitcast (%..string* @fmt.__DIGITS_LOWER to [2 x i64]*), align 8, !dbg !4685 | |
call void @fmt._fmt_int_128(%fmt.Info* %0, i128 %1, i64 12, i1 %2, i64 %3, [2 x i64] %11, i8* %__.context_ptr), !dbg !4685 | |
br label %switch.done, !dbg !4680 | |
switch.case.body5: ; preds = %decls | |
%12 = load [2 x i64], [2 x i64]* bitcast (%..string* @fmt.__DIGITS_LOWER to [2 x i64]*), align 8, !dbg !4686 | |
call void @fmt._fmt_int_128(%fmt.Info* %0, i128 %1, i64 16, i1 %2, i64 %3, [2 x i64] %12, i8* %__.context_ptr), !dbg !4686 | |
br label %switch.done, !dbg !4680 | |
switch.case.body6: ; preds = %decls | |
%13 = load [2 x i64], [2 x i64]* bitcast (%..string* @fmt.__DIGITS_UPPER to [2 x i64]*), align 8, !dbg !4687 | |
call void @fmt._fmt_int_128(%fmt.Info* %0, i128 %1, i64 16, i1 %2, i64 %3, [2 x i64] %13, i8* %__.context_ptr), !dbg !4687 | |
br label %switch.done, !dbg !4680 | |
switch.case.body7: ; preds = %decls, %decls | |
%14 = trunc i128 %1 to i32, !dbg !4688 | |
call void @fmt.fmt_rune(%fmt.Info* %0, i32 %14, i32 %4, i8* %__.context_ptr), !dbg !4688 | |
br label %switch.done, !dbg !4680 | |
switch.case.body8: ; preds = %decls | |
call void @llvm.dbg.value(metadata i32 0, metadata !4672, metadata !DIExpression()), !dbg !4689 | |
%15 = trunc i128 %1 to i32, !dbg !4690 | |
call void @llvm.dbg.value(metadata i32 %15, metadata !4672, metadata !DIExpression()), !dbg !4689 | |
%16 = icmp slt i32 %15, 0, !dbg !4691 | |
br i1 %16, label %if.then, label %cmp.or, !dbg !4691 | |
cmp.or: ; preds = %switch.case.body8 | |
%17 = icmp sgt i32 %15, 1114111, !dbg !4691 | |
br i1 %17, label %if.then, label %if.else, !dbg !4691 | |
if.then: ; preds = %cmp.or, %switch.case.body8 | |
call void @fmt.fmt_bad_verb(%fmt.Info* %0, i32 %4, i8* %__.context_ptr), !dbg !4692 | |
br label %switch.done, !dbg !4691 | |
if.else: ; preds = %cmp.or | |
%18 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 13, !dbg !4675 | |
%19 = bitcast %io.Writer* %18 to [2 x i64]*, !dbg !4675 | |
%20 = load [2 x i64], [2 x i64]* %19, align 8, !dbg !4675 | |
%21 = bitcast [2 x i64]* %5 to %..string*, !dbg !4675 | |
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$be", i64 0, i64 0), i64 2 }, %..string* %21, align 8, !dbg !4675 | |
%22 = load [2 x i64], [2 x i64]* %5, align 8, !dbg !4675 | |
%23 = call [2 x i64] @io.write_string([2 x i64] %20, [2 x i64] %22, i8* %__.context_ptr), !dbg !4675 | |
%24 = bitcast { i64, i32 }* %6 to [2 x i64]*, !dbg !4675 | |
store [2 x i64] %23, [2 x i64]* %24, align 8, !dbg !4675 | |
%25 = load [2 x i64], [2 x i64]* bitcast (%..string* @fmt.__DIGITS_UPPER to [2 x i64]*), align 8, !dbg !4694 | |
call void @fmt._fmt_int_128(%fmt.Info* %0, i128 %1, i64 16, i1 false, i64 %3, [2 x i64] %25, i8* %__.context_ptr), !dbg !4694 | |
br label %switch.done, !dbg !4691 | |
switch.default.body: ; preds = %decls | |
call void @fmt.fmt_bad_verb(%fmt.Info* %0, i32 %4, i8* %__.context_ptr), !dbg !4695 | |
br label %switch.done, !dbg !4680 | |
switch.done: ; preds = %if.then, %if.else, %switch.default.body, %switch.case.body7, %switch.case.body6, %switch.case.body5, %switch.case.body4, %switch.case.body3, %switch.case.body2, %switch.case.body1, %switch.case.body | |
ret void, !dbg !4679 | |
} | |
define internal void @fmt._pad(%fmt.Info* %0, [2 x i64] %1, i8* noalias nocapture nonnull %__.context_ptr) !dbg !4696 { | |
decls: | |
%2 = alloca { i8*, i64 }, align 8 | |
%3 = alloca { i8*, i64 }, align 8 | |
%4 = alloca [2 x i64], align 8, !dbg !4705 | |
%5 = alloca [2 x i64], align 8, !dbg !4739 | |
%6 = alloca %utf8.Accept_Range, align 1, !dbg !4740 | |
%7 = alloca [2 x i64], align 8, !dbg !4740 | |
%8 = alloca [2 x i64], align 8, !dbg !4741 | |
%9 = alloca [2 x i64], align 8, !dbg !4742 | |
%10 = alloca [2 x i64], align 8, !dbg !4743 | |
%11 = alloca %..string, align 8 | |
%12 = alloca %..string, align 8 | |
%13 = alloca %..string, align 8 | |
call void @llvm.dbg.declare(metadata %..string* %14, metadata !4701, metadata !DIExpression()), !dbg !4744 | |
%14 = alloca %..string, align 8 | |
%15 = alloca { i64, i32 }, align 8, !dbg !4745 | |
%16 = alloca { i64, i32 }, align 8, !dbg !4748 | |
%17 = alloca { i64, i32 }, align 8, !dbg !4751 | |
call void @llvm.dbg.value(metadata %fmt.Info* %0, metadata !4700, metadata !DIExpression()), !dbg !4753 | |
%18 = bitcast %..string* %13 to [2 x i64]* | |
store [2 x i64] %1, [2 x i64]* %18, align 8 | |
%19 = bitcast %..string* %14 to i8* | |
%20 = bitcast %..string* %13 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %19, i8* align 8 %20, i64 16, i1 false) | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !4702, metadata !DIExpression()), !dbg !4754 | |
%21 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 5, !dbg !4755 | |
%22 = load i8, i8* %21, align 1, !dbg !4755 | |
%23 = trunc i8 %22 to i1, !dbg !4755 | |
br i1 %23, label %if.done, label %if.then, !dbg !4755 | |
if.then: ; preds = %decls | |
%24 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 13, !dbg !4745 | |
%25 = bitcast %io.Writer* %24 to [2 x i64]*, !dbg !4745 | |
%26 = load [2 x i64], [2 x i64]* %25, align 8, !dbg !4745 | |
%27 = bitcast %..string* %14 to [2 x i64]*, !dbg !4745 | |
%28 = load [2 x i64], [2 x i64]* %27, align 8, !dbg !4745 | |
%29 = call [2 x i64] @io.write_string([2 x i64] %26, [2 x i64] %28, i8* %__.context_ptr), !dbg !4745 | |
%30 = bitcast { i64, i32 }* %15 to [2 x i64]*, !dbg !4745 | |
store [2 x i64] %29, [2 x i64]* %30, align 8, !dbg !4745 | |
ret void, !dbg !4756 | |
if.done: ; preds = %decls | |
call void @llvm.dbg.value(metadata i64 0, metadata !4703, metadata !DIExpression()), !dbg !4757 | |
%31 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 7, !dbg !4758 | |
%32 = load i64, i64* %31, align 8, !dbg !4758 | |
%33 = bitcast %..string* %14 to [2 x i64]*, !dbg !4758 | |
%34 = load [2 x i64], [2 x i64]* %33, align 8, !dbg !4758 | |
%35 = bitcast %..string* %11 to i8*, !dbg !4759 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %35), !dbg !4759 | |
%36 = bitcast %..string* %12 to i8*, !dbg !4759 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %36), !dbg !4759 | |
call void @llvm.dbg.declare(metadata !112, metadata !4736, metadata !DIExpression()), !dbg !4759 | |
%37 = bitcast %..string* %11 to [2 x i64]* | |
store [2 x i64] %34, [2 x i64]* %37, align 8 | |
%38 = bitcast %..string* %12 to i8* | |
%39 = bitcast %..string* %11 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %38, i8* align 8 %39, i64 16, i1 false) | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !4737, metadata !DIExpression()), !dbg !4760 | |
%40 = bitcast %..string* %12 to { i8*, i64 }*, !dbg !4761 | |
%41 = bitcast { i8*, i64 }* %40 to [2 x i64]*, !dbg !4761 | |
%42 = load [2 x i64], [2 x i64]* %41, align 8, !dbg !4761 | |
%43 = bitcast { i8*, i64 }* %2 to i8*, !dbg !4762 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %43), !dbg !4762 | |
%44 = bitcast { i8*, i64 }* %3 to i8*, !dbg !4762 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %44), !dbg !4762 | |
%45 = bitcast [2 x i64]* %4 to i8*, !dbg !4762 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %45), !dbg !4762 | |
%46 = bitcast [2 x i64]* %5 to i8*, !dbg !4762 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %46), !dbg !4762 | |
%47 = bitcast %utf8.Accept_Range* %6 to i8*, !dbg !4762 | |
call void @llvm.lifetime.start.p0i8(i64 2, i8* %47), !dbg !4762 | |
%48 = bitcast [2 x i64]* %7 to i8*, !dbg !4762 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %48), !dbg !4762 | |
%49 = bitcast [2 x i64]* %8 to i8*, !dbg !4762 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %49), !dbg !4762 | |
%50 = bitcast [2 x i64]* %9 to i8*, !dbg !4762 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %50), !dbg !4762 | |
%51 = bitcast [2 x i64]* %10 to i8*, !dbg !4762 | |
call void @llvm.lifetime.start.p0i8(i64 16, i8* %51), !dbg !4762 | |
call void @llvm.dbg.declare(metadata !112, metadata !4713, metadata !DIExpression()), !dbg !4762 | |
call void @llvm.dbg.declare(metadata !112, metadata !4721, metadata !DIExpression()), !dbg !4740 | |
%52 = bitcast { i8*, i64 }* %2 to [2 x i64]* | |
store [2 x i64] %42, [2 x i64]* %52, align 8 | |
%53 = bitcast { i8*, i64 }* %3 to i8* | |
%54 = bitcast { i8*, i64 }* %2 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %53, i8* align 8 %54, i64 16, i1 false) | |
call void @llvm.dbg.declare(metadata i8* %__.context_ptr, metadata !4714, metadata !DIExpression()), !dbg !4763 | |
call void @llvm.dbg.value(metadata i64 0, metadata !4715, metadata !DIExpression()), !dbg !4764 | |
call void @llvm.dbg.value(metadata i64 0, metadata !4716, metadata !DIExpression()), !dbg !4764 | |
%55 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %3, i32 0, i32 1, !dbg !4765 | |
%56 = load i64, i64* %55, align 8, !dbg !4765 | |
call void @llvm.dbg.value(metadata i64 %56, metadata !4716, metadata !DIExpression()), !dbg !4764 | |
call void @llvm.dbg.value(metadata i64 0, metadata !4717, metadata !DIExpression()), !dbg !4766 | |
br label %for.loop.i.i, !dbg !4767 | |
for.loop.i.i: ; preds = %if.done23.i.i, %if.then4.i.i, %if.then1.i.i, %if.then.i.i, %if.done | |
%.025.i.i = phi i64 [ 0, %if.done ], [ %66, %if.then.i.i ], [ %74, %if.then1.i.i ], [ %80, %if.then4.i.i ], [ %122, %if.done23.i.i ], !dbg !4766 | |
%.0.i.i = phi i64 [ 0, %if.done ], [ %67, %if.then.i.i ], [ %75, %if.then1.i.i ], [ %81, %if.then4.i.i ], [ %123, %if.done23.i.i ], !dbg !4764 | |
call void @llvm.dbg.value(metadata i64 %.0.i.i, metadata !4715, metadata !DIExpression()), !dbg !4764 | |
call void @llvm.dbg.value(metadata i64 %.025.i.i, metadata !4717, metadata !DIExpression()), !dbg !4766 | |
%57 = icmp slt i64 %.025.i.i, %56, !dbg !4767 | |
br i1 %57, label %for.body.i.i, label %utf8.rune_count_in_string.exit, !dbg !4767 | |
for.body.i.i: ; preds = %for.loop.i.i | |
call void @llvm.dbg.value(metadata i8 0, metadata !4718, metadata !DIExpression()), !dbg !4768 | |
%58 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %3, i32 0, i32 0, !dbg !4705 | |
%59 = load i8*, i8** %58, align 8, !dbg !4705 | |
%60 = load i64, i64* %55, align 8, !dbg !4705 | |
%61 = bitcast [2 x i64]* %4 to %..string*, !dbg !4705 | |
store %..string { i8* getelementptr inbounds ([56 x i8], [56 x i8]* @"csbs$7c", i64 0, i64 0), i64 55 }, %..string* %61, align 8, !dbg !4705 | |
%62 = load [2 x i64], [2 x i64]* %4, align 8, !dbg !4705 | |
call void @runtime.bounds_check_error([2 x i64] %62, i32 309, i32 11, i64 %.025.i.i, i64 %60), !dbg !4705 | |
%63 = getelementptr i8, i8* %59, i64 %.025.i.i, !dbg !4705 | |
%64 = load i8, i8* %63, align 1, !dbg !4705 | |
call void @llvm.dbg.value(metadata i8 %64, metadata !4718, metadata !DIExpression()), !dbg !4768 | |
%65 = icmp ult i8 %64, -128, !dbg !4769 | |
br i1 %65, label %if.then.i.i, label %if.done.i.i, !dbg !4769 | |
if.then.i.i: ; preds = %for.body.i.i | |
%66 = add i64 %.025.i.i, 1, !dbg !4770 | |
call void @llvm.dbg.value(metadata i64 %66, metadata !4717, metadata !DIExpression()), !dbg !4766 | |
%67 = add i64 %.0.i.i, 1, !dbg !4773 | |
call void @llvm.dbg.value(metadata i64 %67, metadata !4715, metadata !DIExpression()), !dbg !4764 | |
br label %for.loop.i.i, !dbg !4774 | |
if.done.i.i: ; preds = %for.body.i.i | |
call void @llvm.dbg.value(metadata i8 0, metadata !4719, metadata !DIExpression()), !dbg !4768 | |
%68 = zext i8 %64 to i64, !dbg !4739 | |
%69 = getelementptr [256 x i8], [256 x i8]* @utf8.accept_sizes, i64 0, i64 %68, !dbg !4739 | |
%70 = bitcast [2 x i64]* %5 to %..string*, !dbg !4739 | |
store %..string { i8* getelementptr inbounds ([56 x i8], [56 x i8]* @"csbs$7c", i64 0, i64 0), i64 55 }, %..string* %70, align 8, !dbg !4739 | |
%71 = load [2 x i64], [2 x i64]* %5, align 8, !dbg !4739 | |
call void @runtime.bounds_check_error([2 x i64] %71, i32 314, i32 21, i64 %68, i64 256), !dbg !4739 | |
%72 = load i8, i8* %69, align 1, !dbg !4739 | |
call void @llvm.dbg.value(metadata i8 %72, metadata !4719, metadata !DIExpression()), !dbg !4768 | |
%73 = icmp eq i8 %72, -15, !dbg !4775 | |
br i1 %73, label %if.then1.i.i, label %if.done3.i.i, !dbg !4775 | |
if.then1.i.i: ; preds = %if.done.i.i | |
%74 = add i64 %.025.i.i, 1, !dbg !4776 | |
call void @llvm.dbg.value(metadata i64 %74, metadata !4717, metadata !DIExpression()), !dbg !4766 | |
%75 = add i64 %.0.i.i, 1, !dbg !4779 | |
call void @llvm.dbg.value(metadata i64 %75, metadata !4715, metadata !DIExpression()), !dbg !4764 | |
br label %for.loop.i.i, !dbg !4780 | |
if.done3.i.i: ; preds = %if.done.i.i | |
call void @llvm.dbg.value(metadata i64 0, metadata !4720, metadata !DIExpression()), !dbg !4768 | |
%76 = and i8 %72, 7, !dbg !4781 | |
%77 = zext i8 %76 to i64, !dbg !4781 | |
call void @llvm.dbg.value(metadata i64 %77, metadata !4720, metadata !DIExpression()), !dbg !4768 | |
%78 = add i64 %.025.i.i, %77, !dbg !4782 | |
%79 = icmp sgt i64 %78, %56, !dbg !4782 | |
br i1 %79, label %if.then4.i.i, label %if.done6.i.i, !dbg !4782 | |
if.then4.i.i: ; preds = %if.done3.i.i | |
%80 = add i64 %.025.i.i, 1, !dbg !4783 | |
call void @llvm.dbg.value(metadata i64 %80, metadata !4717, metadata !DIExpression()), !dbg !4766 | |
%81 = add i64 %.0.i.i, 1, !dbg !4786 | |
call void @llvm.dbg.value(metadata i64 %81, metadata !4715, metadata !DIExpression()), !dbg !4764 | |
br label %for.loop.i.i, !dbg !4787 | |
if.done6.i.i: ; preds = %if.done3.i.i | |
%82 = bitcast %utf8.Accept_Range* %6 to i8*, !dbg !4740 | |
call void @llvm.memset.p0i8.i64(i8* %82, i8 0, i64 2, i1 false), !dbg !4740 | |
%83 = lshr i8 %72, 4, !dbg !4740 | |
%84 = zext i8 %83 to i64, !dbg !4740 | |
%85 = getelementptr [5 x %utf8.Accept_Range], [5 x %utf8.Accept_Range]* @utf8.accept_ranges, i64 0, i64 %84, !dbg !4740 | |
%86 = bitcast [2 x i64]* %7 to %..string*, !dbg !4740 | |
store %..string { i8* getelementptr inbounds ([56 x i8], [56 x i8]* @"csbs$7c", i64 0, i64 0), i64 55 }, %..string* %86, align 8, !dbg !4740 | |
%87 = load [2 x i64], [2 x i64]* %7, align 8, !dbg !4740 | |
call void @runtime.bounds_check_error([2 x i64] %87, i32 324, i32 23, i64 %84, i64 5), !dbg !4740 | |
%88 = bitcast %utf8.Accept_Range* %85 to i8*, !dbg !4740 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %82, i8* align 1 %88, i64 2, i1 false), !dbg !4740 | |
call void @llvm.dbg.value(metadata i8 0, metadata !4722, metadata !DIExpression()), !dbg !4788 | |
%89 = load i8*, i8** %58, align 8, !dbg !4741 | |
%90 = add i64 %.025.i.i, 1, !dbg !4741 | |
%91 = load i64, i64* %55, align 8, !dbg !4741 | |
%92 = bitcast [2 x i64]* %8 to %..string*, !dbg !4741 | |
store %..string { i8* getelementptr inbounds ([56 x i8], [56 x i8]* @"csbs$7c", i64 0, i64 0), i64 55 }, %..string* %92, align 8, !dbg !4741 | |
%93 = load [2 x i64], [2 x i64]* %8, align 8, !dbg !4741 | |
call void @runtime.bounds_check_error([2 x i64] %93, i32 325, i32 13, i64 %90, i64 %91), !dbg !4741 | |
%94 = getelementptr i8, i8* %89, i64 %90, !dbg !4741 | |
%95 = load i8, i8* %94, align 1, !dbg !4741 | |
call void @llvm.dbg.value(metadata i8 %95, metadata !4722, metadata !DIExpression()), !dbg !4788 | |
%96 = getelementptr inbounds %utf8.Accept_Range, %utf8.Accept_Range* %6, i32 0, i32 0, !dbg !4789 | |
%97 = load i8, i8* %96, align 1, !dbg !4789 | |
%98 = icmp ult i8 %95, %97, !dbg !4789 | |
br i1 %98, label %if.done23.i.i, label %cmp.or.i.i, !dbg !4789 | |
cmp.or.i.i: ; preds = %if.done6.i.i | |
%99 = getelementptr inbounds %utf8.Accept_Range, %utf8.Accept_Range* %6, i32 0, i32 1, !dbg !4789 | |
%100 = load i8, i8* %99, align 1, !dbg !4789 | |
%101 = icmp ult i8 %100, %95, !dbg !4789 | |
br i1 %101, label %if.done23.i.i, label %if.else.i.i, !dbg !4789 | |
if.else.i.i: ; preds = %cmp.or.i.i | |
%102 = icmp eq i64 %77, 2, !dbg !4790 | |
br i1 %102, label %if.done23.i.i, label %if.init10.i.i, !dbg !4790 | |
if.init10.i.i: ; preds = %if.else.i.i | |
call void @llvm.dbg.value(metadata i8 0, metadata !4724, metadata !DIExpression()), !dbg !4791 | |
%103 = load i8*, i8** %58, align 8, !dbg !4742 | |
%104 = add i64 %.025.i.i, 2, !dbg !4742 | |
%105 = load i64, i64* %55, align 8, !dbg !4742 | |
%106 = bitcast [2 x i64]* %9 to %..string*, !dbg !4742 | |
store %..string { i8* getelementptr inbounds ([56 x i8], [56 x i8]* @"csbs$7c", i64 0, i64 0), i64 55 }, %..string* %106, align 8, !dbg !4742 | |
%107 = load [2 x i64], [2 x i64]* %9, align 8, !dbg !4742 | |
call void @runtime.bounds_check_error([2 x i64] %107, i32 329, i32 20, i64 %104, i64 %105), !dbg !4742 | |
%108 = getelementptr i8, i8* %103, i64 %104, !dbg !4742 | |
%109 = load i8, i8* %108, align 1, !dbg !4742 | |
call void @llvm.dbg.value(metadata i8 %109, metadata !4724, metadata !DIExpression()), !dbg !4791 | |
%110 = icmp ult i8 %109, -128, !dbg !4792 | |
br i1 %110, label %if.done23.i.i, label %cmp.or11.i.i, !dbg !4792 | |
cmp.or11.i.i: ; preds = %if.init10.i.i | |
%111 = icmp ult i8 -65, %109, !dbg !4792 | |
br i1 %111, label %if.done23.i.i, label %if.else13.i.i, !dbg !4792 | |
if.else13.i.i: ; preds = %cmp.or11.i.i | |
%112 = icmp eq i64 %77, 3, !dbg !4793 | |
br i1 %112, label %if.done23.i.i, label %if.init16.i.i, !dbg !4793 | |
if.init16.i.i: ; preds = %if.else13.i.i | |
call void @llvm.dbg.value(metadata i8 0, metadata !4727, metadata !DIExpression()), !dbg !4794 | |
%113 = load i8*, i8** %58, align 8, !dbg !4743 | |
%114 = add i64 %.025.i.i, 3, !dbg !4743 | |
%115 = load i64, i64* %55, align 8, !dbg !4743 | |
%116 = bitcast [2 x i64]* %10 to %..string*, !dbg !4743 | |
store %..string { i8* getelementptr inbounds ([56 x i8], [56 x i8]* @"csbs$7c", i64 0, i64 0), i64 55 }, %..string* %116, align 8, !dbg !4743 | |
%117 = load [2 x i64], [2 x i64]* %10, align 8, !dbg !4743 | |
call void @runtime.bounds_check_error([2 x i64] %117, i32 333, i32 20, i64 %114, i64 %115), !dbg !4743 | |
%118 = getelementptr i8, i8* %113, i64 %114, !dbg !4743 | |
%119 = load i8, i8* %118, align 1, !dbg !4743 | |
call void @llvm.dbg.value(metadata i8 %119, metadata !4727, metadata !DIExpression()), !dbg !4794 | |
%120 = icmp ult i8 %119, -128, !dbg !4795 | |
br i1 %120, label %if.then18.i.i, label %cmp.or17.i.i, !dbg !4795 | |
cmp.or17.i.i: ; preds = %if.init16.i.i | |
%121 = icmp ult i8 -65, %119, !dbg !4795 | |
br i1 %121, label %if.then18.i.i, label %if.done23.i.i, !dbg !4795 | |
if.then18.i.i: ; preds = %cmp.or17.i.i, %if.init16.i.i | |
call void @llvm.dbg.value(metadata i64 1, metadata !4720, metadata !DIExpression()), !dbg !4768 | |
br label %if.done23.i.i, !dbg !4795 | |
if.done23.i.i: ; preds = %if.then18.i.i, %cmp.or17.i.i, %if.else13.i.i, %cmp.or11.i.i, %if.init10.i.i, %if.else.i.i, %cmp.or.i.i, %if.done6.i.i | |
%.4.i.i = phi i64 [ 1, %cmp.or.i.i ], [ 1, %if.done6.i.i ], [ %77, %if.else.i.i ], [ 1, %cmp.or11.i.i ], [ 1, %if.init10.i.i ], [ %77, %if.else13.i.i ], [ 1, %if.then18.i.i ], [ %77, %cmp.or17.i.i ], !dbg !4768 | |
call void @llvm.dbg.value(metadata i64 %.4.i.i, metadata !4720, metadata !DIExpression()), !dbg !4768 | |
%122 = add i64 %.025.i.i, %.4.i.i, !dbg !4796 | |
call void @llvm.dbg.value(metadata i64 %122, metadata !4717, metadata !DIExpression()), !dbg !4766 | |
%123 = add i64 %.0.i.i, 1, !dbg !4797 | |
call void @llvm.dbg.value(metadata i64 %123, metadata !4715, metadata !DIExpression()), !dbg !4764 | |
br label %for.loop.i.i, !dbg !4767 | |
utf8.rune_count_in_string.exit: ; preds = %for.loop.i.i | |
%124 = bitcast { i8*, i64 }* %2 to i8*, !dbg !4798 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %124), !dbg !4798 | |
%125 = bitcast { i8*, i64 }* %3 to i8*, !dbg !4798 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %125), !dbg !4798 | |
%126 = bitcast [2 x i64]* %4 to i8*, !dbg !4798 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %126), !dbg !4798 | |
%127 = bitcast [2 x i64]* %5 to i8*, !dbg !4798 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %127), !dbg !4798 | |
%128 = bitcast %utf8.Accept_Range* %6 to i8*, !dbg !4798 | |
call void @llvm.lifetime.end.p0i8(i64 2, i8* %128), !dbg !4798 | |
%129 = bitcast [2 x i64]* %7 to i8*, !dbg !4798 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %129), !dbg !4798 | |
%130 = bitcast [2 x i64]* %8 to i8*, !dbg !4798 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %130), !dbg !4798 | |
%131 = bitcast [2 x i64]* %9 to i8*, !dbg !4798 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %131), !dbg !4798 | |
%132 = bitcast [2 x i64]* %10 to i8*, !dbg !4798 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %132), !dbg !4798 | |
%133 = bitcast %..string* %11 to i8*, !dbg !4761 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %133), !dbg !4761 | |
%134 = bitcast %..string* %12 to i8*, !dbg !4761 | |
call void @llvm.lifetime.end.p0i8(i64 16, i8* %134), !dbg !4761 | |
%135 = sub i64 %32, %.0.i.i, !dbg !4758 | |
call void @llvm.dbg.value(metadata i64 %135, metadata !4703, metadata !DIExpression()), !dbg !4757 | |
%136 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 0, !dbg !4799 | |
%137 = load i8, i8* %136, align 1, !dbg !4799 | |
%138 = trunc i8 %137 to i1, !dbg !4799 | |
br i1 %138, label %if.then1, label %if.else, !dbg !4799 | |
if.then1: ; preds = %utf8.rune_count_in_string.exit | |
%139 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 13, !dbg !4748 | |
%140 = bitcast %io.Writer* %139 to [2 x i64]*, !dbg !4748 | |
%141 = load [2 x i64], [2 x i64]* %140, align 8, !dbg !4748 | |
%142 = load [2 x i64], [2 x i64]* %33, align 8, !dbg !4748 | |
%143 = call [2 x i64] @io.write_string([2 x i64] %141, [2 x i64] %142, i8* %__.context_ptr), !dbg !4748 | |
%144 = bitcast { i64, i32 }* %16 to [2 x i64]*, !dbg !4748 | |
store [2 x i64] %143, [2 x i64]* %144, align 8, !dbg !4748 | |
call void @fmt.fmt_write_padding(%fmt.Info* %0, i64 %135, i8* %__.context_ptr), !dbg !4800 | |
br label %if.done2, !dbg !4799 | |
if.else: ; preds = %utf8.rune_count_in_string.exit | |
call void @fmt.fmt_write_padding(%fmt.Info* %0, i64 %135, i8* %__.context_ptr), !dbg !4801 | |
%145 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 13, !dbg !4751 | |
%146 = bitcast %io.Writer* %145 to [2 x i64]*, !dbg !4751 | |
%147 = load [2 x i64], [2 x i64]* %146, align 8, !dbg !4751 | |
%148 = load [2 x i64], [2 x i64]* %33, align 8, !dbg !4751 | |
%149 = call [2 x i64] @io.write_string([2 x i64] %147, [2 x i64] %148, i8* %__.context_ptr), !dbg !4751 | |
%150 = bitcast { i64, i32 }* %17 to [2 x i64]*, !dbg !4751 | |
store [2 x i64] %149, [2 x i64]* %150, align 8, !dbg !4751 | |
br label %if.done2, !dbg !4799 | |
if.done2: ; preds = %if.else, %if.then1 | |
ret void, !dbg !4754 | |
} | |
define internal void @fmt.fmt_float(%fmt.Info* %0, double %1, i64 %2, i32 %3, i8* noalias nocapture nonnull %__.context_ptr) !dbg !4802 { | |
decls: | |
call void @llvm.dbg.declare(metadata [386 x i8]* %4, metadata !4814, metadata !DIExpression()), !dbg !4826 | |
%4 = alloca [386 x i8], align 1, !dbg !4826 | |
call void @llvm.dbg.declare(metadata %..string* %5, metadata !4818, metadata !DIExpression()), !dbg !4827 | |
%5 = alloca %..string, align 8, !dbg !4827 | |
%6 = alloca [2 x i64], align 8, !dbg !4827 | |
%7 = alloca { i8*, i64 }, align 8, !dbg !4827 | |
%8 = alloca %..string, align 8, !dbg !4827 | |
call void @llvm.dbg.declare(metadata { i8*, i64 }* %9, metadata !4819, metadata !DIExpression()), !dbg !4828 | |
%9 = alloca { i8*, i64 }, align 8, !dbg !4828 | |
%10 = alloca [2 x i64], align 8, !dbg !4828 | |
%11 = alloca { i8*, i64 }, align 8, !dbg !4828 | |
%12 = alloca [2 x i64], align 8, !dbg !4829 | |
%13 = alloca [2 x i64], align 8, !dbg !4829 | |
%14 = alloca [2 x i64], align 8, !dbg !4830 | |
%15 = alloca { i8*, i64 }, align 8, !dbg !4830 | |
%16 = alloca [2 x i64], align 8, !dbg !4833 | |
%17 = alloca [2 x i64], align 8, !dbg !4835 | |
%18 = alloca [2 x i64], align 8, !dbg !4836 | |
%19 = alloca [2 x i64], align 8, !dbg !4839 | |
%20 = alloca [2 x i64], align 8, !dbg !4839 | |
%21 = alloca { i64, i32 }, align 8, !dbg !4840 | |
%22 = alloca [2 x i64], align 8, !dbg !4843 | |
%23 = alloca [2 x i64], align 8, !dbg !4844 | |
%24 = alloca [2 x i64], align 8, !dbg !4849 | |
%25 = alloca { i8*, i64 }, align 8, !dbg !4849 | |
%26 = alloca { i64, i32 }, align 8, !dbg !4849 | |
%27 = alloca [2 x i64], align 8, !dbg !4850 | |
%28 = alloca { i8*, i64 }, align 8, !dbg !4850 | |
call void @llvm.dbg.declare(metadata [386 x i8]* %29, metadata !4821, metadata !DIExpression()), !dbg !4852 | |
%29 = alloca [386 x i8], align 1, !dbg !4852 | |
call void @llvm.dbg.declare(metadata %..string* %30, metadata !4822, metadata !DIExpression()), !dbg !4853 | |
%30 = alloca %..string, align 8, !dbg !4853 | |
%31 = alloca [2 x i64], align 8, !dbg !4853 | |
%32 = alloca { i8*, i64 }, align 8, !dbg !4853 | |
%33 = alloca %..string, align 8, !dbg !4853 | |
call void @llvm.dbg.declare(metadata { i8*, i64 }* %34, metadata !4823, metadata !DIExpression()), !dbg !4854 | |
%34 = alloca { i8*, i64 }, align 8, !dbg !4854 | |
%35 = alloca [2 x i64], align 8, !dbg !4854 | |
%36 = alloca { i8*, i64 }, align 8, !dbg !4854 | |
%37 = alloca [2 x i64], align 8, !dbg !4855 | |
%38 = alloca [2 x i64], align 8, !dbg !4855 | |
%39 = alloca [2 x i64], align 8, !dbg !4856 | |
%40 = alloca { i8*, i64 }, align 8, !dbg !4856 | |
%41 = alloca [2 x i64], align 8, !dbg !4859 | |
%42 = alloca [2 x i64], align 8, !dbg !4861 | |
%43 = alloca [2 x i64], align 8, !dbg !4862 | |
%44 = alloca [2 x i64], align 8, !dbg !4865 | |
%45 = alloca [2 x i64], align 8, !dbg !4865 | |
%46 = alloca { i64, i32 }, align 8, !dbg !4866 | |
%47 = alloca [2 x i64], align 8, !dbg !4869 | |
%48 = alloca [2 x i64], align 8, !dbg !4870 | |
%49 = alloca [2 x i64], align 8, !dbg !4875 | |
%50 = alloca { i8*, i64 }, align 8, !dbg !4875 | |
%51 = alloca { i64, i32 }, align 8, !dbg !4875 | |
%52 = alloca [2 x i64], align 8, !dbg !4876 | |
%53 = alloca { i8*, i64 }, align 8, !dbg !4876 | |
call void @llvm.dbg.declare(metadata %fmt.Info* %54, metadata !4824, metadata !DIExpression()), !dbg !4878 | |
%54 = alloca %fmt.Info, align 8, !dbg !4878 | |
%55 = alloca [2 x i64], align 8, !dbg !4879 | |
%56 = alloca %runtime.Source_Code_Location, align 8, !dbg !4879 | |
%57 = alloca [2 x i64], align 8, !dbg !4881 | |
%58 = alloca { i64, i32 }, align 8, !dbg !4881 | |
%59 = alloca [2 x i64], align 8, !dbg !4882 | |
call void @llvm.dbg.value(metadata %fmt.Info* %0, metadata !4806, metadata !DIExpression()), !dbg !4883 | |
call void @llvm.dbg.value(metadata double %1, metadata !4807, metadata !DIExpression()), !dbg !4883 | |
call void @llvm.dbg.value(metadata i64 %2, metadata !4808, metadata !DIExpression()), !dbg !4883 | |
call void @llvm.dbg.value(metadata i32 %3, metadata !4809, metadata !DIExpression()), !dbg !4883 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !4810, metadata !DIExpression()), !dbg !4884 | |
switch i32 %3, label %switch.default.body50 [ | |
i32 102, label %switch.case.body | |
i32 70, label %switch.case.body | |
i32 118, label %switch.case.body | |
i32 101, label %switch.case.body19 | |
i32 69, label %switch.case.body19 | |
i32 104, label %switch.case.body43 | |
i32 72, label %switch.case.body43 | |
], !dbg !4885 | |
switch.case.body: ; preds = %decls, %decls, %decls | |
call void @llvm.dbg.value(metadata i64 0, metadata !4811, metadata !DIExpression()), !dbg !4886 | |
call void @llvm.dbg.value(metadata i64 3, metadata !4811, metadata !DIExpression()), !dbg !4886 | |
%60 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 6, !dbg !4887 | |
%61 = load i8, i8* %60, align 1, !dbg !4887 | |
%62 = trunc i8 %61 to i1, !dbg !4887 | |
br i1 %62, label %if.then, label %if.done, !dbg !4887 | |
if.then: ; preds = %switch.case.body | |
%63 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 8, !dbg !4888 | |
%64 = load i64, i64* %63, align 8, !dbg !4888 | |
call void @llvm.dbg.value(metadata i64 %64, metadata !4811, metadata !DIExpression()), !dbg !4886 | |
br label %if.done, !dbg !4887 | |
if.done: ; preds = %if.then, %switch.case.body | |
%.053 = phi i64 [ %64, %if.then ], [ 3, %switch.case.body ], !dbg !4883 | |
call void @llvm.dbg.value(metadata i64 %.053, metadata !4811, metadata !DIExpression()), !dbg !4886 | |
%65 = bitcast [386 x i8]* %4 to i8*, !dbg !4826 | |
call void @llvm.memset.p0i8.i64(i8* %65, i8 0, i64 386, i1 false), !dbg !4826 | |
%66 = bitcast %..string* %5 to i8*, !dbg !4827 | |
call void @llvm.memset.p0i8.i64(i8* %66, i8 0, i64 16, i1 false), !dbg !4827 | |
%67 = bitcast [2 x i64]* %6 to %..string*, !dbg !4827 | |
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %67, align 8, !dbg !4827 | |
%68 = load [2 x i64], [2 x i64]* %6, align 8, !dbg !4827 | |
call void @runtime.slice_expr_error_lo_hi([2 x i64] %68, i32 872, i32 34, i64 1, i64 386, i64 386), !dbg !4827 | |
%69 = getelementptr [386 x i8], [386 x i8]* %4, i64 0, i64 0, !dbg !4827 | |
%70 = getelementptr i8, i8* %69, i64 1, !dbg !4827 | |
%71 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %7, i32 0, i32 0, !dbg !4827 | |
store i8* %70, i8** %71, align 8, !dbg !4827 | |
%72 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %7, i32 0, i32 1, !dbg !4827 | |
store i64 385, i64* %72, align 8, !dbg !4827 | |
%73 = bitcast { i8*, i64 }* %7 to [2 x i64]*, !dbg !4827 | |
%74 = load [2 x i64], [2 x i64]* %73, align 8, !dbg !4827 | |
%75 = call [2 x i64] @strconv.append_float([2 x i64] %74, double %1, i8 102, i64 %.053, i64 %2, i8* %__.context_ptr), !dbg !4827 | |
%76 = bitcast %..string* %8 to [2 x i64]*, !dbg !4827 | |
store [2 x i64] %75, [2 x i64]* %76, align 8, !dbg !4827 | |
%77 = bitcast %..string* %8 to i8*, !dbg !4827 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %66, i8* align 8 %77, i64 16, i1 false), !dbg !4827 | |
%78 = bitcast { i8*, i64 }* %9 to i8*, !dbg !4828 | |
call void @llvm.memset.p0i8.i64(i8* %78, i8 0, i64 16, i1 false), !dbg !4828 | |
%79 = getelementptr inbounds %..string, %..string* %5, i32 0, i32 1, !dbg !4828 | |
%80 = load i64, i64* %79, align 8, !dbg !4828 | |
%81 = add i64 %80, 1, !dbg !4828 | |
%82 = bitcast [2 x i64]* %10 to %..string*, !dbg !4828 | |
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %82, align 8, !dbg !4828 | |
%83 = load [2 x i64], [2 x i64]* %10, align 8, !dbg !4828 | |
call void @runtime.slice_expr_error_hi([2 x i64] %83, i32 873, i32 11, i64 %81, i64 386), !dbg !4828 | |
%84 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %11, i32 0, i32 0, !dbg !4828 | |
store i8* %69, i8** %84, align 8, !dbg !4828 | |
%85 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %11, i32 0, i32 1, !dbg !4828 | |
store i64 %81, i64* %85, align 8, !dbg !4828 | |
%86 = bitcast { i8*, i64 }* %11 to i8*, !dbg !4828 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %78, i8* align 8 %86, i64 16, i1 false), !dbg !4828 | |
%87 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %9, i32 0, i32 0, !dbg !4829 | |
%88 = load i8*, i8** %87, align 8, !dbg !4829 | |
%89 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %9, i32 0, i32 1, !dbg !4829 | |
%90 = load i64, i64* %89, align 8, !dbg !4829 | |
%91 = bitcast [2 x i64]* %12 to %..string*, !dbg !4829 | |
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %91, align 8, !dbg !4829 | |
%92 = load [2 x i64], [2 x i64]* %12, align 8, !dbg !4829 | |
call void @runtime.bounds_check_error([2 x i64] %92, i32 874, i32 8, i64 1, i64 %90), !dbg !4829 | |
%93 = getelementptr i8, i8* %88, i64 1, !dbg !4829 | |
%94 = load i8, i8* %93, align 1, !dbg !4829 | |
%95 = icmp eq i8 %94, 43, !dbg !4829 | |
br i1 %95, label %if.then1, label %cmp.or, !dbg !4829 | |
cmp.or: ; preds = %if.done | |
%96 = load i8*, i8** %87, align 8, !dbg !4829 | |
%97 = load i64, i64* %89, align 8, !dbg !4829 | |
%98 = bitcast [2 x i64]* %13 to %..string*, !dbg !4829 | |
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %98, align 8, !dbg !4829 | |
%99 = load [2 x i64], [2 x i64]* %13, align 8, !dbg !4829 | |
call void @runtime.bounds_check_error([2 x i64] %99, i32 874, i32 23, i64 1, i64 %97), !dbg !4829 | |
%100 = getelementptr i8, i8* %96, i64 1, !dbg !4829 | |
%101 = load i8, i8* %100, align 1, !dbg !4829 | |
%102 = icmp eq i8 %101, 45, !dbg !4829 | |
br i1 %102, label %if.then1, label %if.else, !dbg !4829 | |
if.then1: ; preds = %cmp.or, %if.done | |
%103 = load i64, i64* %89, align 8, !dbg !4830 | |
%104 = bitcast [2 x i64]* %14 to %..string*, !dbg !4830 | |
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %104, align 8, !dbg !4830 | |
%105 = load [2 x i64], [2 x i64]* %14, align 8, !dbg !4830 | |
call void @runtime.slice_expr_error_lo_hi([2 x i64] %105, i32 875, i32 9, i64 1, i64 %103, i64 %103), !dbg !4830 | |
%106 = load i8*, i8** %87, align 8, !dbg !4830 | |
%107 = getelementptr i8, i8* %106, i64 1, !dbg !4830 | |
%108 = sub i64 %103, 1, !dbg !4830 | |
%109 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %15, i32 0, i32 0, !dbg !4830 | |
store i8* %107, i8** %109, align 8, !dbg !4830 | |
%110 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %15, i32 0, i32 1, !dbg !4830 | |
store i64 %108, i64* %110, align 8, !dbg !4830 | |
%111 = bitcast { i8*, i64 }* %15 to i8*, !dbg !4830 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %78, i8* align 8 %111, i64 16, i1 false), !dbg !4830 | |
br label %if.done2, !dbg !4829 | |
if.else: ; preds = %cmp.or | |
%112 = load i8*, i8** %87, align 8, !dbg !4833 | |
%113 = load i64, i64* %89, align 8, !dbg !4833 | |
%114 = bitcast [2 x i64]* %16 to %..string*, !dbg !4833 | |
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %114, align 8, !dbg !4833 | |
%115 = load [2 x i64], [2 x i64]* %16, align 8, !dbg !4833 | |
call void @runtime.bounds_check_error([2 x i64] %115, i32 877, i32 6, i64 0, i64 %113), !dbg !4833 | |
store i8 43, i8* %112, align 1, !dbg !4833 | |
br label %if.done2, !dbg !4829 | |
if.done2: ; preds = %if.else, %if.then1 | |
%116 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 2, !dbg !4835 | |
%117 = load i8, i8* %116, align 1, !dbg !4835 | |
%118 = trunc i8 %117 to i1, !dbg !4835 | |
br i1 %118, label %cmp.and, label %if.done5, !dbg !4835 | |
cmp.and: ; preds = %if.done2 | |
%119 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 1, !dbg !4835 | |
%120 = load i8, i8* %119, align 1, !dbg !4835 | |
%121 = trunc i8 %120 to i1, !dbg !4835 | |
br i1 %121, label %if.done5, label %cmp.and3, !dbg !4835 | |
cmp.and3: ; preds = %cmp.and | |
%122 = load i8*, i8** %87, align 8, !dbg !4835 | |
%123 = load i64, i64* %89, align 8, !dbg !4835 | |
%124 = bitcast [2 x i64]* %17 to %..string*, !dbg !4835 | |
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %124, align 8, !dbg !4835 | |
%125 = load [2 x i64], [2 x i64]* %17, align 8, !dbg !4835 | |
call void @runtime.bounds_check_error([2 x i64] %125, i32 880, i32 32, i64 0, i64 %123), !dbg !4835 | |
%126 = load i8, i8* %122, align 1, !dbg !4835 | |
%127 = icmp eq i8 %126, 43, !dbg !4835 | |
br i1 %127, label %if.then4, label %if.done5, !dbg !4835 | |
if.then4: ; preds = %cmp.and3 | |
%128 = load i8*, i8** %87, align 8, !dbg !4836 | |
%129 = load i64, i64* %89, align 8, !dbg !4836 | |
%130 = bitcast [2 x i64]* %18 to %..string*, !dbg !4836 | |
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %130, align 8, !dbg !4836 | |
%131 = load [2 x i64], [2 x i64]* %18, align 8, !dbg !4836 | |
call void @runtime.bounds_check_error([2 x i64] %131, i32 881, i32 6, i64 0, i64 %129), !dbg !4836 | |
store i8 32, i8* %128, align 1, !dbg !4836 | |
br label %if.done5, !dbg !4835 | |
if.done5: ; preds = %if.then4, %cmp.and3, %cmp.and, %if.done2 | |
%132 = load i64, i64* %89, align 8, !dbg !4839 | |
%133 = icmp sgt i64 %132, 1, !dbg !4839 | |
br i1 %133, label %cmp.and6, label %if.done9, !dbg !4839 | |
cmp.and6: ; preds = %if.done5 | |
%134 = load i8*, i8** %87, align 8, !dbg !4839 | |
%135 = bitcast [2 x i64]* %19 to %..string*, !dbg !4839 | |
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %135, align 8, !dbg !4839 | |
%136 = load [2 x i64], [2 x i64]* %19, align 8, !dbg !4839 | |
call void @runtime.bounds_check_error([2 x i64] %136, i32 884, i32 23, i64 1, i64 %132), !dbg !4839 | |
%137 = getelementptr i8, i8* %134, i64 1, !dbg !4839 | |
%138 = load i8, i8* %137, align 1, !dbg !4839 | |
%139 = icmp eq i8 %138, 78, !dbg !4839 | |
br i1 %139, label %if.then8, label %cmp.or7, !dbg !4839 | |
cmp.or7: ; preds = %cmp.and6 | |
%140 = load i8*, i8** %87, align 8, !dbg !4839 | |
%141 = load i64, i64* %89, align 8, !dbg !4839 | |
%142 = bitcast [2 x i64]* %20 to %..string*, !dbg !4839 | |
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %142, align 8, !dbg !4839 | |
%143 = load [2 x i64], [2 x i64]* %20, align 8, !dbg !4839 | |
call void @runtime.bounds_check_error([2 x i64] %143, i32 884, i32 38, i64 1, i64 %141), !dbg !4839 | |
%144 = getelementptr i8, i8* %140, i64 1, !dbg !4839 | |
%145 = load i8, i8* %144, align 1, !dbg !4839 | |
%146 = icmp eq i8 %145, 73, !dbg !4839 | |
br i1 %146, label %if.then8, label %if.done9, !dbg !4839 | |
if.then8: ; preds = %cmp.or7, %cmp.and6 | |
%147 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 13, !dbg !4840 | |
%148 = bitcast { i8*, i64 }* %9 to %..string*, !dbg !4840 | |
%149 = bitcast %io.Writer* %147 to [2 x i64]*, !dbg !4840 | |
%150 = load [2 x i64], [2 x i64]* %149, align 8, !dbg !4840 | |
%151 = bitcast %..string* %148 to [2 x i64]*, !dbg !4840 | |
%152 = load [2 x i64], [2 x i64]* %151, align 8, !dbg !4840 | |
%153 = call [2 x i64] @io.write_string([2 x i64] %150, [2 x i64] %152, i8* %__.context_ptr), !dbg !4840 | |
%154 = bitcast { i64, i32 }* %21 to [2 x i64]*, !dbg !4840 | |
store [2 x i64] %153, [2 x i64]* %154, align 8, !dbg !4840 | |
ret void, !dbg !4891 | |
if.done9: ; preds = %cmp.or7, %if.done5 | |
%155 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 1, !dbg !4843 | |
%156 = load i8, i8* %155, align 1, !dbg !4843 | |
%157 = trunc i8 %156 to i1, !dbg !4843 | |
br i1 %157, label %if.then11, label %cmp.or10, !dbg !4843 | |
cmp.or10: ; preds = %if.done9 | |
%158 = load i8*, i8** %87, align 8, !dbg !4843 | |
%159 = load i64, i64* %89, align 8, !dbg !4843 | |
%160 = bitcast [2 x i64]* %22 to %..string*, !dbg !4843 | |
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %160, align 8, !dbg !4843 | |
%161 = load [2 x i64], [2 x i64]* %22, align 8, !dbg !4843 | |
call void @runtime.bounds_check_error([2 x i64] %161, i32 889, i32 19, i64 0, i64 %159), !dbg !4843 | |
%162 = load i8, i8* %158, align 1, !dbg !4843 | |
%163 = icmp ne i8 %162, 43, !dbg !4843 | |
br i1 %163, label %if.then11, label %if.else17, !dbg !4843 | |
if.then11: ; preds = %cmp.or10, %if.done9 | |
%164 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 3, !dbg !4892 | |
%165 = load i8, i8* %164, align 1, !dbg !4892 | |
%166 = trunc i8 %165 to i1, !dbg !4892 | |
br i1 %166, label %cmp.and12, label %if.else15, !dbg !4892 | |
cmp.and12: ; preds = %if.then11 | |
%167 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 5, !dbg !4892 | |
%168 = load i8, i8* %167, align 1, !dbg !4892 | |
%169 = trunc i8 %168 to i1, !dbg !4892 | |
br i1 %169, label %cmp.and13, label %if.else15, !dbg !4892 | |
cmp.and13: ; preds = %cmp.and12 | |
%170 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 7, !dbg !4892 | |
%171 = load i64, i64* %170, align 8, !dbg !4892 | |
%172 = load i64, i64* %89, align 8, !dbg !4892 | |
%173 = icmp sgt i64 %171, %172, !dbg !4892 | |
br i1 %173, label %if.then14, label %if.else15, !dbg !4892 | |
if.then14: ; preds = %cmp.and13 | |
%174 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 13, !dbg !4844 | |
%175 = load i8*, i8** %87, align 8, !dbg !4844 | |
%176 = bitcast [2 x i64]* %23 to %..string*, !dbg !4844 | |
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %176, align 8, !dbg !4844 | |
%177 = load [2 x i64], [2 x i64]* %23, align 8, !dbg !4844 | |
call void @runtime.bounds_check_error([2 x i64] %177, i32 891, i32 32, i64 0, i64 %172), !dbg !4844 | |
%178 = load i8, i8* %175, align 1, !dbg !4844 | |
%179 = bitcast %io.Writer* %174 to [2 x i64]*, !dbg !4844 | |
%180 = load [2 x i64], [2 x i64]* %179, align 8, !dbg !4844 | |
%181 = call i32 @io.write_byte_to_writer([2 x i64] %180, i8 %178, i8* %__.context_ptr), !dbg !4844 | |
%182 = load i64, i64* %170, align 8, !dbg !4893 | |
%183 = load i64, i64* %89, align 8, !dbg !4893 | |
%184 = sub i64 %182, %183, !dbg !4893 | |
call void @fmt.fmt_write_padding(%fmt.Info* %0, i64 %184, i8* %__.context_ptr), !dbg !4893 | |
%185 = load i64, i64* %89, align 8, !dbg !4849 | |
%186 = bitcast [2 x i64]* %24 to %..string*, !dbg !4849 | |
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %186, align 8, !dbg !4849 | |
%187 = load [2 x i64], [2 x i64]* %24, align 8, !dbg !4849 | |
call void @runtime.slice_expr_error_lo_hi([2 x i64] %187, i32 893, i32 40, i64 1, i64 %185, i64 %185), !dbg !4849 | |
%188 = load i8*, i8** %87, align 8, !dbg !4849 | |
%189 = getelementptr i8, i8* %188, i64 1, !dbg !4849 | |
%190 = sub i64 %185, 1, !dbg !4849 | |
%191 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %25, i32 0, i32 0, !dbg !4849 | |
store i8* %189, i8** %191, align 8, !dbg !4849 | |
%192 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %25, i32 0, i32 1, !dbg !4849 | |
store i64 %190, i64* %192, align 8, !dbg !4849 | |
%193 = bitcast { i8*, i64 }* %25 to %..string*, !dbg !4849 | |
%194 = load [2 x i64], [2 x i64]* %179, align 8, !dbg !4849 | |
%195 = bitcast %..string* %193 to [2 x i64]*, !dbg !4849 | |
%196 = load [2 x i64], [2 x i64]* %195, align 8, !dbg !4849 | |
%197 = call [2 x i64] @io.write_string([2 x i64] %194, [2 x i64] %196, i8* %__.context_ptr), !dbg !4849 | |
%198 = bitcast { i64, i32 }* %26 to [2 x i64]*, !dbg !4849 | |
store [2 x i64] %197, [2 x i64]* %198, align 8, !dbg !4849 | |
br label %switch.done51, !dbg !4892 | |
if.else15: ; preds = %cmp.and13, %cmp.and12, %if.then11 | |
%199 = bitcast { i8*, i64 }* %9 to %..string*, !dbg !4894 | |
%200 = bitcast %..string* %199 to [2 x i64]*, !dbg !4894 | |
%201 = load [2 x i64], [2 x i64]* %200, align 8, !dbg !4894 | |
call void @fmt._pad(%fmt.Info* %0, [2 x i64] %201, i8* %__.context_ptr), !dbg !4894 | |
br label %switch.done51, !dbg !4892 | |
if.else17: ; preds = %cmp.or10 | |
%202 = load i64, i64* %89, align 8, !dbg !4850 | |
%203 = bitcast [2 x i64]* %27 to %..string*, !dbg !4850 | |
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %203, align 8, !dbg !4850 | |
%204 = load [2 x i64], [2 x i64]* %27, align 8, !dbg !4850 | |
call void @runtime.slice_expr_error_lo_hi([2 x i64] %204, i32 898, i32 21, i64 1, i64 %202, i64 %202), !dbg !4850 | |
%205 = load i8*, i8** %87, align 8, !dbg !4850 | |
%206 = getelementptr i8, i8* %205, i64 1, !dbg !4850 | |
%207 = sub i64 %202, 1, !dbg !4850 | |
%208 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %28, i32 0, i32 0, !dbg !4850 | |
store i8* %206, i8** %208, align 8, !dbg !4850 | |
%209 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %28, i32 0, i32 1, !dbg !4850 | |
store i64 %207, i64* %209, align 8, !dbg !4850 | |
%210 = bitcast { i8*, i64 }* %28 to %..string*, !dbg !4850 | |
%211 = bitcast %..string* %210 to [2 x i64]*, !dbg !4850 | |
%212 = load [2 x i64], [2 x i64]* %211, align 8, !dbg !4850 | |
call void @fmt._pad(%fmt.Info* %0, [2 x i64] %212, i8* %__.context_ptr), !dbg !4850 | |
br label %switch.done51, !dbg !4843 | |
switch.case.body19: ; preds = %decls, %decls | |
call void @llvm.dbg.value(metadata i64 0, metadata !4820, metadata !DIExpression()), !dbg !4886 | |
call void @llvm.dbg.value(metadata i64 3, metadata !4820, metadata !DIExpression()), !dbg !4886 | |
%213 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 6, !dbg !4896 | |
%214 = load i8, i8* %213, align 1, !dbg !4896 | |
%215 = trunc i8 %214 to i1, !dbg !4896 | |
br i1 %215, label %if.then20, label %if.done21, !dbg !4896 | |
if.then20: ; preds = %switch.case.body19 | |
%216 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 8, !dbg !4897 | |
%217 = load i64, i64* %216, align 8, !dbg !4897 | |
call void @llvm.dbg.value(metadata i64 %217, metadata !4820, metadata !DIExpression()), !dbg !4886 | |
br label %if.done21, !dbg !4896 | |
if.done21: ; preds = %if.then20, %switch.case.body19 | |
%.052 = phi i64 [ %217, %if.then20 ], [ 3, %switch.case.body19 ], !dbg !4883 | |
call void @llvm.dbg.value(metadata i64 %.052, metadata !4820, metadata !DIExpression()), !dbg !4886 | |
%218 = bitcast [386 x i8]* %29 to i8*, !dbg !4852 | |
call void @llvm.memset.p0i8.i64(i8* %218, i8 0, i64 386, i1 false), !dbg !4852 | |
%219 = bitcast %..string* %30 to i8*, !dbg !4853 | |
call void @llvm.memset.p0i8.i64(i8* %219, i8 0, i64 16, i1 false), !dbg !4853 | |
%220 = bitcast [2 x i64]* %31 to %..string*, !dbg !4853 | |
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %220, align 8, !dbg !4853 | |
%221 = load [2 x i64], [2 x i64]* %31, align 8, !dbg !4853 | |
call void @runtime.slice_expr_error_lo_hi([2 x i64] %221, i32 908, i32 34, i64 1, i64 386, i64 386), !dbg !4853 | |
%222 = getelementptr [386 x i8], [386 x i8]* %29, i64 0, i64 0, !dbg !4853 | |
%223 = getelementptr i8, i8* %222, i64 1, !dbg !4853 | |
%224 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %32, i32 0, i32 0, !dbg !4853 | |
store i8* %223, i8** %224, align 8, !dbg !4853 | |
%225 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %32, i32 0, i32 1, !dbg !4853 | |
store i64 385, i64* %225, align 8, !dbg !4853 | |
%226 = bitcast { i8*, i64 }* %32 to [2 x i64]*, !dbg !4853 | |
%227 = load [2 x i64], [2 x i64]* %226, align 8, !dbg !4853 | |
%228 = call [2 x i64] @strconv.append_float([2 x i64] %227, double %1, i8 101, i64 %.052, i64 %2, i8* %__.context_ptr), !dbg !4853 | |
%229 = bitcast %..string* %33 to [2 x i64]*, !dbg !4853 | |
store [2 x i64] %228, [2 x i64]* %229, align 8, !dbg !4853 | |
%230 = bitcast %..string* %33 to i8*, !dbg !4853 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %219, i8* align 8 %230, i64 16, i1 false), !dbg !4853 | |
%231 = bitcast { i8*, i64 }* %34 to i8*, !dbg !4854 | |
call void @llvm.memset.p0i8.i64(i8* %231, i8 0, i64 16, i1 false), !dbg !4854 | |
%232 = getelementptr inbounds %..string, %..string* %30, i32 0, i32 1, !dbg !4854 | |
%233 = load i64, i64* %232, align 8, !dbg !4854 | |
%234 = add i64 %233, 1, !dbg !4854 | |
%235 = bitcast [2 x i64]* %35 to %..string*, !dbg !4854 | |
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %235, align 8, !dbg !4854 | |
%236 = load [2 x i64], [2 x i64]* %35, align 8, !dbg !4854 | |
call void @runtime.slice_expr_error_hi([2 x i64] %236, i32 909, i32 11, i64 %234, i64 386), !dbg !4854 | |
%237 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %36, i32 0, i32 0, !dbg !4854 | |
store i8* %222, i8** %237, align 8, !dbg !4854 | |
%238 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %36, i32 0, i32 1, !dbg !4854 | |
store i64 %234, i64* %238, align 8, !dbg !4854 | |
%239 = bitcast { i8*, i64 }* %36 to i8*, !dbg !4854 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %231, i8* align 8 %239, i64 16, i1 false), !dbg !4854 | |
%240 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %34, i32 0, i32 0, !dbg !4855 | |
%241 = load i8*, i8** %240, align 8, !dbg !4855 | |
%242 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %34, i32 0, i32 1, !dbg !4855 | |
%243 = load i64, i64* %242, align 8, !dbg !4855 | |
%244 = bitcast [2 x i64]* %37 to %..string*, !dbg !4855 | |
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %244, align 8, !dbg !4855 | |
%245 = load [2 x i64], [2 x i64]* %37, align 8, !dbg !4855 | |
call void @runtime.bounds_check_error([2 x i64] %245, i32 910, i32 8, i64 1, i64 %243), !dbg !4855 | |
%246 = getelementptr i8, i8* %241, i64 1, !dbg !4855 | |
%247 = load i8, i8* %246, align 1, !dbg !4855 | |
%248 = icmp eq i8 %247, 43, !dbg !4855 | |
br i1 %248, label %if.then23, label %cmp.or22, !dbg !4855 | |
cmp.or22: ; preds = %if.done21 | |
%249 = load i8*, i8** %240, align 8, !dbg !4855 | |
%250 = load i64, i64* %242, align 8, !dbg !4855 | |
%251 = bitcast [2 x i64]* %38 to %..string*, !dbg !4855 | |
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %251, align 8, !dbg !4855 | |
%252 = load [2 x i64], [2 x i64]* %38, align 8, !dbg !4855 | |
call void @runtime.bounds_check_error([2 x i64] %252, i32 910, i32 23, i64 1, i64 %250), !dbg !4855 | |
%253 = getelementptr i8, i8* %249, i64 1, !dbg !4855 | |
%254 = load i8, i8* %253, align 1, !dbg !4855 | |
%255 = icmp eq i8 %254, 45, !dbg !4855 | |
br i1 %255, label %if.then23, label %if.else24, !dbg !4855 | |
if.then23: ; preds = %cmp.or22, %if.done21 | |
%256 = load i64, i64* %242, align 8, !dbg !4856 | |
%257 = bitcast [2 x i64]* %39 to %..string*, !dbg !4856 | |
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %257, align 8, !dbg !4856 | |
%258 = load [2 x i64], [2 x i64]* %39, align 8, !dbg !4856 | |
call void @runtime.slice_expr_error_lo_hi([2 x i64] %258, i32 911, i32 9, i64 1, i64 %256, i64 %256), !dbg !4856 | |
%259 = load i8*, i8** %240, align 8, !dbg !4856 | |
%260 = getelementptr i8, i8* %259, i64 1, !dbg !4856 | |
%261 = sub i64 %256, 1, !dbg !4856 | |
%262 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %40, i32 0, i32 0, !dbg !4856 | |
store i8* %260, i8** %262, align 8, !dbg !4856 | |
%263 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %40, i32 0, i32 1, !dbg !4856 | |
store i64 %261, i64* %263, align 8, !dbg !4856 | |
%264 = bitcast { i8*, i64 }* %40 to i8*, !dbg !4856 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %231, i8* align 8 %264, i64 16, i1 false), !dbg !4856 | |
br label %if.done25, !dbg !4855 | |
if.else24: ; preds = %cmp.or22 | |
%265 = load i8*, i8** %240, align 8, !dbg !4859 | |
%266 = load i64, i64* %242, align 8, !dbg !4859 | |
%267 = bitcast [2 x i64]* %41 to %..string*, !dbg !4859 | |
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %267, align 8, !dbg !4859 | |
%268 = load [2 x i64], [2 x i64]* %41, align 8, !dbg !4859 | |
call void @runtime.bounds_check_error([2 x i64] %268, i32 913, i32 6, i64 0, i64 %266), !dbg !4859 | |
store i8 43, i8* %265, align 1, !dbg !4859 | |
br label %if.done25, !dbg !4855 | |
if.done25: ; preds = %if.else24, %if.then23 | |
%269 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 2, !dbg !4861 | |
%270 = load i8, i8* %269, align 1, !dbg !4861 | |
%271 = trunc i8 %270 to i1, !dbg !4861 | |
br i1 %271, label %cmp.and26, label %if.done29, !dbg !4861 | |
cmp.and26: ; preds = %if.done25 | |
%272 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 1, !dbg !4861 | |
%273 = load i8, i8* %272, align 1, !dbg !4861 | |
%274 = trunc i8 %273 to i1, !dbg !4861 | |
br i1 %274, label %if.done29, label %cmp.and27, !dbg !4861 | |
cmp.and27: ; preds = %cmp.and26 | |
%275 = load i8*, i8** %240, align 8, !dbg !4861 | |
%276 = load i64, i64* %242, align 8, !dbg !4861 | |
%277 = bitcast [2 x i64]* %42 to %..string*, !dbg !4861 | |
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %277, align 8, !dbg !4861 | |
%278 = load [2 x i64], [2 x i64]* %42, align 8, !dbg !4861 | |
call void @runtime.bounds_check_error([2 x i64] %278, i32 916, i32 32, i64 0, i64 %276), !dbg !4861 | |
%279 = load i8, i8* %275, align 1, !dbg !4861 | |
%280 = icmp eq i8 %279, 43, !dbg !4861 | |
br i1 %280, label %if.then28, label %if.done29, !dbg !4861 | |
if.then28: ; preds = %cmp.and27 | |
%281 = load i8*, i8** %240, align 8, !dbg !4862 | |
%282 = load i64, i64* %242, align 8, !dbg !4862 | |
%283 = bitcast [2 x i64]* %43 to %..string*, !dbg !4862 | |
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %283, align 8, !dbg !4862 | |
%284 = load [2 x i64], [2 x i64]* %43, align 8, !dbg !4862 | |
call void @runtime.bounds_check_error([2 x i64] %284, i32 917, i32 6, i64 0, i64 %282), !dbg !4862 | |
store i8 32, i8* %281, align 1, !dbg !4862 | |
br label %if.done29, !dbg !4861 | |
if.done29: ; preds = %if.then28, %cmp.and27, %cmp.and26, %if.done25 | |
%285 = load i64, i64* %242, align 8, !dbg !4865 | |
%286 = icmp sgt i64 %285, 1, !dbg !4865 | |
br i1 %286, label %cmp.and30, label %if.done33, !dbg !4865 | |
cmp.and30: ; preds = %if.done29 | |
%287 = load i8*, i8** %240, align 8, !dbg !4865 | |
%288 = bitcast [2 x i64]* %44 to %..string*, !dbg !4865 | |
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %288, align 8, !dbg !4865 | |
%289 = load [2 x i64], [2 x i64]* %44, align 8, !dbg !4865 | |
call void @runtime.bounds_check_error([2 x i64] %289, i32 920, i32 23, i64 1, i64 %285), !dbg !4865 | |
%290 = getelementptr i8, i8* %287, i64 1, !dbg !4865 | |
%291 = load i8, i8* %290, align 1, !dbg !4865 | |
%292 = icmp eq i8 %291, 78, !dbg !4865 | |
br i1 %292, label %if.then32, label %cmp.or31, !dbg !4865 | |
cmp.or31: ; preds = %cmp.and30 | |
%293 = load i8*, i8** %240, align 8, !dbg !4865 | |
%294 = load i64, i64* %242, align 8, !dbg !4865 | |
%295 = bitcast [2 x i64]* %45 to %..string*, !dbg !4865 | |
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %295, align 8, !dbg !4865 | |
%296 = load [2 x i64], [2 x i64]* %45, align 8, !dbg !4865 | |
call void @runtime.bounds_check_error([2 x i64] %296, i32 920, i32 38, i64 1, i64 %294), !dbg !4865 | |
%297 = getelementptr i8, i8* %293, i64 1, !dbg !4865 | |
%298 = load i8, i8* %297, align 1, !dbg !4865 | |
%299 = icmp eq i8 %298, 73, !dbg !4865 | |
br i1 %299, label %if.then32, label %if.done33, !dbg !4865 | |
if.then32: ; preds = %cmp.or31, %cmp.and30 | |
%300 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 13, !dbg !4866 | |
%301 = bitcast { i8*, i64 }* %34 to %..string*, !dbg !4866 | |
%302 = bitcast %io.Writer* %300 to [2 x i64]*, !dbg !4866 | |
%303 = load [2 x i64], [2 x i64]* %302, align 8, !dbg !4866 | |
%304 = bitcast %..string* %301 to [2 x i64]*, !dbg !4866 | |
%305 = load [2 x i64], [2 x i64]* %304, align 8, !dbg !4866 | |
%306 = call [2 x i64] @io.write_string([2 x i64] %303, [2 x i64] %305, i8* %__.context_ptr), !dbg !4866 | |
%307 = bitcast { i64, i32 }* %46 to [2 x i64]*, !dbg !4866 | |
store [2 x i64] %306, [2 x i64]* %307, align 8, !dbg !4866 | |
ret void, !dbg !4900 | |
if.done33: ; preds = %cmp.or31, %if.done29 | |
%308 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 1, !dbg !4869 | |
%309 = load i8, i8* %308, align 1, !dbg !4869 | |
%310 = trunc i8 %309 to i1, !dbg !4869 | |
br i1 %310, label %if.then35, label %cmp.or34, !dbg !4869 | |
cmp.or34: ; preds = %if.done33 | |
%311 = getelementptr inbounds %..string, %..string* %30, i32 0, i32 0, !dbg !4869 | |
%312 = load i8*, i8** %311, align 8, !dbg !4869 | |
%313 = load i64, i64* %232, align 8, !dbg !4869 | |
%314 = bitcast [2 x i64]* %47 to %..string*, !dbg !4869 | |
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %314, align 8, !dbg !4869 | |
%315 = load [2 x i64], [2 x i64]* %47, align 8, !dbg !4869 | |
call void @runtime.bounds_check_error([2 x i64] %315, i32 925, i32 21, i64 0, i64 %313), !dbg !4869 | |
%316 = load i8, i8* %312, align 1, !dbg !4869 | |
%317 = icmp ne i8 %316, 43, !dbg !4869 | |
br i1 %317, label %if.then35, label %if.else41, !dbg !4869 | |
if.then35: ; preds = %cmp.or34, %if.done33 | |
%318 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 3, !dbg !4901 | |
%319 = load i8, i8* %318, align 1, !dbg !4901 | |
%320 = trunc i8 %319 to i1, !dbg !4901 | |
br i1 %320, label %cmp.and36, label %if.else39, !dbg !4901 | |
cmp.and36: ; preds = %if.then35 | |
%321 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 5, !dbg !4901 | |
%322 = load i8, i8* %321, align 1, !dbg !4901 | |
%323 = trunc i8 %322 to i1, !dbg !4901 | |
br i1 %323, label %cmp.and37, label %if.else39, !dbg !4901 | |
cmp.and37: ; preds = %cmp.and36 | |
%324 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 7, !dbg !4901 | |
%325 = load i64, i64* %324, align 8, !dbg !4901 | |
%326 = load i64, i64* %242, align 8, !dbg !4901 | |
%327 = icmp sgt i64 %325, %326, !dbg !4901 | |
br i1 %327, label %if.then38, label %if.else39, !dbg !4901 | |
if.then38: ; preds = %cmp.and37 | |
%328 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 13, !dbg !4870 | |
%329 = load i8*, i8** %240, align 8, !dbg !4870 | |
%330 = bitcast [2 x i64]* %48 to %..string*, !dbg !4870 | |
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %330, align 8, !dbg !4870 | |
%331 = load [2 x i64], [2 x i64]* %48, align 8, !dbg !4870 | |
call void @runtime.bounds_check_error([2 x i64] %331, i32 927, i32 32, i64 0, i64 %326), !dbg !4870 | |
%332 = load i8, i8* %329, align 1, !dbg !4870 | |
%333 = bitcast %io.Writer* %328 to [2 x i64]*, !dbg !4870 | |
%334 = load [2 x i64], [2 x i64]* %333, align 8, !dbg !4870 | |
%335 = call i32 @io.write_byte_to_writer([2 x i64] %334, i8 %332, i8* %__.context_ptr), !dbg !4870 | |
%336 = load i64, i64* %324, align 8, !dbg !4902 | |
%337 = load i64, i64* %242, align 8, !dbg !4902 | |
%338 = sub i64 %336, %337, !dbg !4902 | |
call void @fmt.fmt_write_padding(%fmt.Info* %0, i64 %338, i8* %__.context_ptr), !dbg !4902 | |
%339 = load i64, i64* %242, align 8, !dbg !4875 | |
%340 = bitcast [2 x i64]* %49 to %..string*, !dbg !4875 | |
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %340, align 8, !dbg !4875 | |
%341 = load [2 x i64], [2 x i64]* %49, align 8, !dbg !4875 | |
call void @runtime.slice_expr_error_lo_hi([2 x i64] %341, i32 929, i32 40, i64 1, i64 %339, i64 %339), !dbg !4875 | |
%342 = load i8*, i8** %240, align 8, !dbg !4875 | |
%343 = getelementptr i8, i8* %342, i64 1, !dbg !4875 | |
%344 = sub i64 %339, 1, !dbg !4875 | |
%345 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %50, i32 0, i32 0, !dbg !4875 | |
store i8* %343, i8** %345, align 8, !dbg !4875 | |
%346 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %50, i32 0, i32 1, !dbg !4875 | |
store i64 %344, i64* %346, align 8, !dbg !4875 | |
%347 = bitcast { i8*, i64 }* %50 to %..string*, !dbg !4875 | |
%348 = load [2 x i64], [2 x i64]* %333, align 8, !dbg !4875 | |
%349 = bitcast %..string* %347 to [2 x i64]*, !dbg !4875 | |
%350 = load [2 x i64], [2 x i64]* %349, align 8, !dbg !4875 | |
%351 = call [2 x i64] @io.write_string([2 x i64] %348, [2 x i64] %350, i8* %__.context_ptr), !dbg !4875 | |
%352 = bitcast { i64, i32 }* %51 to [2 x i64]*, !dbg !4875 | |
store [2 x i64] %351, [2 x i64]* %352, align 8, !dbg !4875 | |
br label %switch.done51, !dbg !4901 | |
if.else39: ; preds = %cmp.and37, %cmp.and36, %if.then35 | |
%353 = bitcast { i8*, i64 }* %34 to %..string*, !dbg !4903 | |
%354 = bitcast %..string* %353 to [2 x i64]*, !dbg !4903 | |
%355 = load [2 x i64], [2 x i64]* %354, align 8, !dbg !4903 | |
call void @fmt._pad(%fmt.Info* %0, [2 x i64] %355, i8* %__.context_ptr), !dbg !4903 | |
br label %switch.done51, !dbg !4901 | |
if.else41: ; preds = %cmp.or34 | |
%356 = load i64, i64* %242, align 8, !dbg !4876 | |
%357 = bitcast [2 x i64]* %52 to %..string*, !dbg !4876 | |
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %357, align 8, !dbg !4876 | |
%358 = load [2 x i64], [2 x i64]* %52, align 8, !dbg !4876 | |
call void @runtime.slice_expr_error_lo_hi([2 x i64] %358, i32 934, i32 21, i64 1, i64 %356, i64 %356), !dbg !4876 | |
%359 = load i8*, i8** %240, align 8, !dbg !4876 | |
%360 = getelementptr i8, i8* %359, i64 1, !dbg !4876 | |
%361 = sub i64 %356, 1, !dbg !4876 | |
%362 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %53, i32 0, i32 0, !dbg !4876 | |
store i8* %360, i8** %362, align 8, !dbg !4876 | |
%363 = getelementptr inbounds { i8*, i64 }, { i8*, i64 }* %53, i32 0, i32 1, !dbg !4876 | |
store i64 %361, i64* %363, align 8, !dbg !4876 | |
%364 = bitcast { i8*, i64 }* %53 to %..string*, !dbg !4876 | |
%365 = bitcast %..string* %364 to [2 x i64]*, !dbg !4876 | |
%366 = load [2 x i64], [2 x i64]* %365, align 8, !dbg !4876 | |
call void @fmt._pad(%fmt.Info* %0, [2 x i64] %366, i8* %__.context_ptr), !dbg !4876 | |
br label %switch.done51, !dbg !4869 | |
switch.case.body43: ; preds = %decls, %decls | |
%367 = bitcast %fmt.Info* %54 to i8*, !dbg !4878 | |
%368 = bitcast %fmt.Info* %0 to i8*, !dbg !4878 | |
%369 = getelementptr i8, i8* %367, i64 80, !dbg !4878 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %369, i8 0, i64 0, i1 false), !dbg !4878 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %367, i8* align 8 %368, i64 80, i1 false), !dbg !4878 | |
%370 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 4, !dbg !4905 | |
store i8 0, i8* %370, align 1, !dbg !4905 | |
%371 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 7, !dbg !4906 | |
store i64 %2, i64* %371, align 8, !dbg !4906 | |
%372 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 3, !dbg !4907 | |
store i8 1, i8* %372, align 1, !dbg !4907 | |
%373 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 1, !dbg !4908 | |
store i8 0, i8* %373, align 1, !dbg !4908 | |
call void @llvm.dbg.value(metadata i64 0, metadata !4825, metadata !DIExpression()), !dbg !4886 | |
switch i64 %2, label %switch.default.body [ | |
i64 16, label %switch.case.body44 | |
i64 32, label %switch.case.body45 | |
i64 64, label %switch.case.body46 | |
], !dbg !4909 | |
switch.case.body44: ; preds = %switch.case.body43 | |
%374 = fptrunc double %1 to half, !dbg !4910 | |
%375 = bitcast half %374 to i16, !dbg !4910 | |
%376 = zext i16 %375 to i64, !dbg !4910 | |
call void @llvm.dbg.value(metadata i64 %376, metadata !4825, metadata !DIExpression()), !dbg !4886 | |
br label %switch.done, !dbg !4909 | |
switch.case.body45: ; preds = %switch.case.body43 | |
%377 = fptrunc double %1 to float, !dbg !4911 | |
%378 = bitcast float %377 to i32, !dbg !4911 | |
%379 = zext i32 %378 to i64, !dbg !4911 | |
call void @llvm.dbg.value(metadata i64 %379, metadata !4825, metadata !DIExpression()), !dbg !4886 | |
br label %switch.done, !dbg !4909 | |
switch.case.body46: ; preds = %switch.case.body43 | |
%380 = bitcast double %1 to i64, !dbg !4912 | |
call void @llvm.dbg.value(metadata i64 %380, metadata !4825, metadata !DIExpression()), !dbg !4886 | |
br label %switch.done, !dbg !4909 | |
switch.default.body: ; preds = %switch.case.body43 | |
%381 = bitcast [2 x i64]* %55 to %..string*, !dbg !4879 | |
store %..string { i8* getelementptr inbounds ([21 x i8], [21 x i8]* @"csbs$bf", i64 0, i64 0), i64 20 }, %..string* %381, align 8, !dbg !4879 | |
%382 = load [2 x i64], [2 x i64]* %55, align 8, !dbg !4879 | |
store %runtime.Source_Code_Location { %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, i32 950, i32 9, %..string { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"csbs$c0", i64 0, i64 0), i64 9 } }, %runtime.Source_Code_Location* %56, align 8, !dbg !4879 | |
call void @runtime.panic([2 x i64] %382, %runtime.Source_Code_Location* %56, i8* %__.context_ptr), !dbg !4879 | |
unreachable, !dbg !4879 | |
switch.done: ; preds = %switch.case.body46, %switch.case.body45, %switch.case.body44 | |
%.0 = phi i64 [ %380, %switch.case.body46 ], [ %379, %switch.case.body45 ], [ %376, %switch.case.body44 ], !dbg !4913 | |
call void @llvm.dbg.value(metadata i64 %.0, metadata !4825, metadata !DIExpression()), !dbg !4886 | |
%383 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 13, !dbg !4881 | |
%384 = bitcast %io.Writer* %383 to [2 x i64]*, !dbg !4881 | |
%385 = load [2 x i64], [2 x i64]* %384, align 8, !dbg !4881 | |
%386 = bitcast [2 x i64]* %57 to %..string*, !dbg !4881 | |
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$c1", i64 0, i64 0), i64 2 }, %..string* %386, align 8, !dbg !4881 | |
%387 = load [2 x i64], [2 x i64]* %57, align 8, !dbg !4881 | |
%388 = call [2 x i64] @io.write_string([2 x i64] %385, [2 x i64] %387, i8* %__.context_ptr), !dbg !4881 | |
%389 = bitcast { i64, i32 }* %58 to [2 x i64]*, !dbg !4881 | |
store [2 x i64] %388, [2 x i64]* %389, align 8, !dbg !4881 | |
%390 = icmp eq i32 %3, 104, !dbg !4882 | |
%391 = load %..string, %..string* @fmt.__DIGITS_LOWER, align 8, !dbg !4882 | |
%392 = load %..string, %..string* @fmt.__DIGITS_UPPER, align 8, !dbg !4882 | |
%393 = select i1 %390, %..string %391, %..string %392, !dbg !4882 | |
%394 = bitcast [2 x i64]* %59 to %..string*, !dbg !4882 | |
store %..string %393, %..string* %394, align 8, !dbg !4882 | |
%395 = load [2 x i64], [2 x i64]* %59, align 8, !dbg !4882 | |
call void @fmt._fmt_int(%fmt.Info* %0, i64 %.0, i64 16, i1 false, i64 %2, [2 x i64] %395, i8* %__.context_ptr), !dbg !4882 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %368, i8* align 8 %367, i64 80, i1 false), !dbg !4914 | |
br label %switch.done51, !dbg !4885 | |
switch.default.body50: ; preds = %decls | |
call void @fmt.fmt_bad_verb(%fmt.Info* %0, i32 %3, i8* %__.context_ptr), !dbg !4915 | |
br label %switch.done51, !dbg !4885 | |
switch.done51: ; preds = %if.else41, %if.else39, %if.then38, %if.else17, %if.else15, %if.then14, %switch.default.body50, %switch.done | |
ret void, !dbg !4884 | |
} | |
; Function Attrs: nounwind | |
define dso_local i128 @__udivmodti4(i128 %0, i128 %1, i128* %2) #0 !dbg !4916 { | |
decls: | |
call void @llvm.dbg.value(metadata i128 %0, metadata !4918, metadata !DIExpression()), !dbg !4921 | |
call void @llvm.dbg.value(metadata i128 %1, metadata !4919, metadata !DIExpression()), !dbg !4921 | |
call void @llvm.dbg.value(metadata i128* %2, metadata !4920, metadata !DIExpression()), !dbg !4921 | |
%3 = call i128 @runtime.udivmod128(i128 %0, i128 %1, i128* %2), !dbg !4922 | |
ret i128 %3, !dbg !4922 | |
} | |
define internal void @reflect.write_typeid_writer([2 x i64] %0, i64 %1, i8* noalias nocapture nonnull %__.context_ptr) !dbg !4924 { | |
decls: | |
%2 = alloca %io.Writer, align 8 | |
call void @llvm.dbg.declare(metadata %io.Writer* %3, metadata !4928, metadata !DIExpression()), !dbg !4931 | |
%3 = alloca %io.Writer, align 8 | |
%4 = bitcast %io.Writer* %2 to [2 x i64]* | |
store [2 x i64] %0, [2 x i64]* %4, align 8 | |
%5 = bitcast %io.Writer* %3 to i8* | |
%6 = bitcast %io.Writer* %2 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %5, i8* align 8 %6, i64 16, i1 false) | |
call void @llvm.dbg.value(metadata i64 %1, metadata !4929, metadata !DIExpression()), !dbg !4932 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !4930, metadata !DIExpression()), !dbg !4933 | |
%7 = call %runtime.Type_Info* @runtime.__type_info_of(i64 %1), !dbg !4934 | |
%8 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !4934 | |
%9 = load [2 x i64], [2 x i64]* %8, align 8, !dbg !4934 | |
%10 = call i64 @reflect.write_type_writer([2 x i64] %9, %runtime.Type_Info* %7, i8* %__.context_ptr), !dbg !4934 | |
ret void, !dbg !4933 | |
} | |
; Function Attrs: nounwind | |
define dso_local i128 @__udivti3(i128 %0, i128 %1) #0 !dbg !4936 { | |
decls: | |
call void @llvm.dbg.value(metadata i128 %0, metadata !4938, metadata !DIExpression()), !dbg !4940 | |
call void @llvm.dbg.value(metadata i128 %1, metadata !4939, metadata !DIExpression()), !dbg !4940 | |
%2 = call i128 @__udivmodti4(i128 %0, i128 %1, i128* null), !dbg !4941 | |
ret i128 %2, !dbg !4941 | |
} | |
; Function Attrs: nounwind | |
define dso_local i128 @__modti3(i128 %0, i128 %1) #0 !dbg !4943 { | |
decls: | |
call void @llvm.dbg.declare(metadata i128* %2, metadata !4954, metadata !DIExpression()), !dbg !4955 | |
%2 = alloca i128, align 16, !dbg !4955 | |
call void @llvm.dbg.value(metadata i128 %0, metadata !4947, metadata !DIExpression()), !dbg !4956 | |
call void @llvm.dbg.value(metadata i128 %1, metadata !4948, metadata !DIExpression()), !dbg !4956 | |
call void @llvm.dbg.value(metadata i128 0, metadata !4949, metadata !DIExpression()), !dbg !4957 | |
%3 = ashr i128 %0, 127, !dbg !4958 | |
call void @llvm.dbg.value(metadata i128 %3, metadata !4949, metadata !DIExpression()), !dbg !4957 | |
call void @llvm.dbg.value(metadata i128 0, metadata !4951, metadata !DIExpression()), !dbg !4957 | |
%4 = ashr i128 %1, 127, !dbg !4959 | |
call void @llvm.dbg.value(metadata i128 %4, metadata !4951, metadata !DIExpression()), !dbg !4957 | |
call void @llvm.dbg.value(metadata i128 0, metadata !4952, metadata !DIExpression()), !dbg !4957 | |
%5 = xor i128 %0, %3, !dbg !4960 | |
%6 = sub i128 %5, %3, !dbg !4960 | |
call void @llvm.dbg.value(metadata i128 %6, metadata !4952, metadata !DIExpression()), !dbg !4957 | |
call void @llvm.dbg.value(metadata i128 0, metadata !4953, metadata !DIExpression()), !dbg !4957 | |
%7 = xor i128 %1, %4, !dbg !4961 | |
%8 = sub i128 %7, %4, !dbg !4961 | |
call void @llvm.dbg.value(metadata i128 %8, metadata !4953, metadata !DIExpression()), !dbg !4957 | |
store i128 undef, i128* %2, align 16, !dbg !4955 | |
%9 = call i128 @runtime.udivmod128(i128 %6, i128 %8, i128* %2), !dbg !4962 | |
%10 = load i128, i128* %2, align 16, !dbg !4963 | |
%11 = xor i128 %10, %3, !dbg !4963 | |
%12 = sub i128 %11, %3, !dbg !4963 | |
ret i128 %12, !dbg !4963 | |
} | |
define internal void @fmt.fmt_string(%fmt.Info* %0, [2 x i64] %1, i32 %2, i8* noalias nocapture nonnull %__.context_ptr) !dbg !4964 { | |
decls: | |
%3 = alloca %..string, align 8 | |
call void @llvm.dbg.declare(metadata %..string* %4, metadata !4969, metadata !DIExpression()), !dbg !4979 | |
%4 = alloca %..string, align 8 | |
%5 = alloca { i64, i32 }, align 8, !dbg !4980 | |
call void @llvm.dbg.declare(metadata %..string* %6, metadata !4977, metadata !DIExpression()), !dbg !4981 | |
%6 = alloca %..string, align 8, !dbg !4981 | |
%7 = alloca [2 x i64], align 8, !dbg !4982 | |
call void @llvm.dbg.value(metadata %fmt.Info* %0, metadata !4968, metadata !DIExpression()), !dbg !4983 | |
%8 = bitcast %..string* %3 to [2 x i64]* | |
store [2 x i64] %1, [2 x i64]* %8, align 8 | |
%9 = bitcast %..string* %4 to i8* | |
%10 = bitcast %..string* %3 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %9, i8* align 8 %10, i64 16, i1 false) | |
call void @llvm.dbg.value(metadata i32 %2, metadata !4970, metadata !DIExpression()), !dbg !4983 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !4971, metadata !DIExpression()), !dbg !4984 | |
switch i32 %2, label %switch.default.body [ | |
i32 115, label %switch.case.body | |
i32 118, label %switch.case.body | |
i32 113, label %switch.case.body1 | |
i32 120, label %switch.case.body2 | |
i32 88, label %switch.case.body2 | |
], !dbg !4985 | |
switch.case.body: ; preds = %decls, %decls | |
%11 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 13, !dbg !4980 | |
%12 = bitcast %io.Writer* %11 to [2 x i64]*, !dbg !4980 | |
%13 = load [2 x i64], [2 x i64]* %12, align 8, !dbg !4980 | |
%14 = bitcast %..string* %4 to [2 x i64]*, !dbg !4980 | |
%15 = load [2 x i64], [2 x i64]* %14, align 8, !dbg !4980 | |
%16 = call [2 x i64] @io.write_string([2 x i64] %13, [2 x i64] %15, i8* %__.context_ptr), !dbg !4980 | |
%17 = bitcast { i64, i32 }* %5 to [2 x i64]*, !dbg !4980 | |
store [2 x i64] %16, [2 x i64]* %17, align 8, !dbg !4980 | |
%18 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 5, !dbg !4986 | |
%19 = load i8, i8* %18, align 1, !dbg !4986 | |
%20 = trunc i8 %19 to i1, !dbg !4986 | |
br i1 %20, label %cmp.and, label %switch.done, !dbg !4986 | |
cmp.and: ; preds = %switch.case.body | |
%21 = getelementptr inbounds %..string, %..string* %4, i32 0, i32 1, !dbg !4986 | |
%22 = load i64, i64* %21, align 8, !dbg !4986 | |
%23 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 7, !dbg !4986 | |
%24 = load i64, i64* %23, align 8, !dbg !4986 | |
%25 = icmp slt i64 %22, %24, !dbg !4986 | |
br i1 %25, label %for.interval.loop, label %switch.done, !dbg !4986 | |
for.interval.loop: ; preds = %cmp.and, %for.interval.body | |
%.014 = phi i64 [ %33, %for.interval.body ], [ 0, %cmp.and ], !dbg !4987 | |
%.013 = phi i64 [ %32, %for.interval.body ], [ 0, %cmp.and ], !dbg !4987 | |
%26 = load i64, i64* %23, align 8, !dbg !4987 | |
%27 = load i64, i64* %21, align 8, !dbg !4987 | |
%28 = sub i64 %26, %27, !dbg !4987 | |
%29 = icmp slt i64 %.013, %28, !dbg !4987 | |
br i1 %29, label %for.interval.body, label %switch.done, !dbg !4987 | |
for.interval.body: ; preds = %for.interval.loop | |
%30 = load [2 x i64], [2 x i64]* %12, align 8, !dbg !4990 | |
%31 = call i32 @io.write_byte_to_writer([2 x i64] %30, i8 32, i8* %__.context_ptr), !dbg !4990 | |
%32 = add i64 %.013, 1, !dbg !4987 | |
%33 = add i64 %.014, 1, !dbg !4987 | |
br label %for.interval.loop, !dbg !4987 | |
switch.case.body1: ; preds = %decls | |
%34 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 13, !dbg !4993 | |
%35 = bitcast %io.Writer* %34 to [2 x i64]*, !dbg !4993 | |
%36 = load [2 x i64], [2 x i64]* %35, align 8, !dbg !4993 | |
%37 = bitcast %..string* %4 to [2 x i64]*, !dbg !4993 | |
%38 = load [2 x i64], [2 x i64]* %37, align 8, !dbg !4993 | |
%39 = call i64 @strings.write_quoted_string_writer([2 x i64] %36, [2 x i64] %38, i8 34, i8* %__.context_ptr), !dbg !4993 | |
br label %switch.done, !dbg !4985 | |
switch.case.body2: ; preds = %decls, %decls | |
call void @llvm.dbg.value(metadata i8 0, metadata !4972, metadata !DIExpression()), !dbg !4994 | |
%40 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 2, !dbg !4995 | |
%41 = load i8, i8* %40, align 1, !dbg !4995 | |
call void @llvm.dbg.value(metadata i8 %41, metadata !4972, metadata !DIExpression()), !dbg !4994 | |
store i8 0, i8* %40, align 1, !dbg !4996 | |
call void @llvm.dbg.value(metadata i64 0, metadata !4975, metadata !DIExpression()), !dbg !4997 | |
br label %for.interval.loop3, !dbg !4998 | |
for.interval.loop3: ; preds = %if.done9, %switch.case.body2 | |
%.012 = phi i64 [ 0, %switch.case.body2 ], [ %64, %if.done9 ], !dbg !4998 | |
%.0 = phi i64 [ 0, %switch.case.body2 ], [ %65, %if.done9 ], !dbg !4998 | |
%42 = getelementptr inbounds %..string, %..string* %4, i32 0, i32 1, !dbg !4998 | |
%43 = load i64, i64* %42, align 8, !dbg !4998 | |
%44 = icmp slt i64 %.012, %43, !dbg !4998 | |
br i1 %44, label %for.interval.body4, label %defer, !dbg !4998 | |
for.interval.body4: ; preds = %for.interval.loop3 | |
call void @llvm.dbg.value(metadata i64 %.012, metadata !4975, metadata !DIExpression()), !dbg !4997 | |
%45 = icmp sgt i64 %.012, 0, !dbg !4999 | |
br i1 %45, label %cmp.and5, label %if.done7, !dbg !4999 | |
cmp.and5: ; preds = %for.interval.body4 | |
%46 = trunc i8 %41 to i1, !dbg !4999 | |
br i1 %46, label %if.then6, label %if.done7, !dbg !4999 | |
if.then6: ; preds = %cmp.and5 | |
%47 = getelementptr inbounds %fmt.Info, %fmt.Info* %0, i32 0, i32 13, !dbg !5000 | |
%48 = bitcast %io.Writer* %47 to [2 x i64]*, !dbg !5000 | |
%49 = load [2 x i64], [2 x i64]* %48, align 8, !dbg !5000 | |
%50 = call i32 @io.write_byte_to_writer([2 x i64] %49, i8 32, i8* %__.context_ptr), !dbg !5000 | |
br label %if.done7, !dbg !4999 | |
if.done7: ; preds = %if.then6, %cmp.and5, %for.interval.body4 | |
%51 = bitcast %..string* %6 to i8*, !dbg !4981 | |
%52 = getelementptr i8, i8* %51, i64 16, !dbg !4981 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %52, i8 0, i64 0, i1 false), !dbg !4981 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %51, i8* align 8 bitcast (%..string* @fmt.__DIGITS_UPPER to i8*), i64 16, i1 false), !dbg !4981 | |
%53 = icmp eq i32 %2, 120, !dbg !5003 | |
br i1 %53, label %if.then8, label %if.done9, !dbg !5003 | |
if.then8: ; preds = %if.done7 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %51, i8* align 8 bitcast (%..string* @fmt.__DIGITS_LOWER to i8*), i64 16, i1 false), !dbg !5004 | |
br label %if.done9, !dbg !5003 | |
if.done9: ; preds = %if.then8, %if.done7 | |
%54 = getelementptr inbounds %..string, %..string* %4, i32 0, i32 0, !dbg !4982 | |
%55 = load i8*, i8** %54, align 8, !dbg !4982 | |
%56 = load i64, i64* %42, align 8, !dbg !4982 | |
%57 = bitcast [2 x i64]* %7 to %..string*, !dbg !4982 | |
store %..string { i8* getelementptr inbounds ([46 x i8], [46 x i8]* @"csbs$b5", i64 0, i64 0), i64 45 }, %..string* %57, align 8, !dbg !4982 | |
%58 = load [2 x i64], [2 x i64]* %7, align 8, !dbg !4982 | |
call void @runtime.bounds_check_error([2 x i64] %58, i32 989, i32 23, i64 %.012, i64 %56), !dbg !4982 | |
%59 = getelementptr i8, i8* %55, i64 %.012, !dbg !4982 | |
%60 = load i8, i8* %59, align 1, !dbg !4982 | |
%61 = zext i8 %60 to i64, !dbg !4982 | |
%62 = bitcast %..string* %6 to [2 x i64]*, !dbg !4982 | |
%63 = load [2 x i64], [2 x i64]* %62, align 8, !dbg !4982 | |
call void @fmt._fmt_int(%fmt.Info* %0, i64 %61, i64 16, i1 false, i64 8, [2 x i64] %63, i8* %__.context_ptr), !dbg !4982 | |
%64 = add i64 %.012, 1, !dbg !4998 | |
%65 = add i64 %.0, 1, !dbg !4998 | |
br label %for.interval.loop3, !dbg !4998 | |
defer: ; preds = %for.interval.loop3 | |
store i8 %41, i8* %40, align 1, !dbg !5007 | |
br label %switch.done, !dbg !4985 | |
switch.default.body: ; preds = %decls | |
call void @fmt.fmt_bad_verb(%fmt.Info* %0, i32 %2, i8* %__.context_ptr), !dbg !5008 | |
br label %switch.done, !dbg !4985 | |
switch.done: ; preds = %switch.case.body, %cmp.and, %for.interval.loop, %switch.default.body, %defer, %switch.case.body1 | |
ret void, !dbg !4984 | |
} | |
define internal void @fmt.fmt_cstring(%fmt.Info* %0, i8* %1, i32 %2, i8* noalias nocapture nonnull %__.context_ptr) !dbg !5009 { | |
decls: | |
%3 = alloca %..string, align 8, !dbg !5017 | |
call void @llvm.dbg.value(metadata %fmt.Info* %0, metadata !5013, metadata !DIExpression()), !dbg !5019 | |
call void @llvm.dbg.value(metadata i8* %1, metadata !5014, metadata !DIExpression()), !dbg !5019 | |
call void @llvm.dbg.value(metadata i32 %2, metadata !5015, metadata !DIExpression()), !dbg !5019 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !5016, metadata !DIExpression()), !dbg !5020 | |
%4 = call [2 x i64] @runtime.cstring_to_string(i8* %1), !dbg !5017 | |
%5 = bitcast %..string* %3 to [2 x i64]*, !dbg !5017 | |
store [2 x i64] %4, [2 x i64]* %5, align 8, !dbg !5017 | |
call void @fmt.fmt_string(%fmt.Info* %0, [2 x i64] %4, i32 %2, i8* %__.context_ptr), !dbg !5017 | |
ret void, !dbg !5020 | |
} | |
; Function Attrs: nounwind | |
define dso_local i128 @__divti3(i128 %0, i128 %1) #0 !dbg !5021 { | |
decls: | |
call void @llvm.dbg.value(metadata i128 %0, metadata !5023, metadata !DIExpression()), !dbg !5027 | |
call void @llvm.dbg.value(metadata i128 %1, metadata !5024, metadata !DIExpression()), !dbg !5027 | |
call void @llvm.dbg.value(metadata i128 0, metadata !5025, metadata !DIExpression()), !dbg !5028 | |
%2 = call i128 @__udivmodti4(i128 %0, i128 %1, i128* null), !dbg !5029 | |
call void @llvm.dbg.value(metadata i128 %2, metadata !5025, metadata !DIExpression()), !dbg !5028 | |
ret i128 %2, !dbg !5030 | |
} | |
define internal i64 @reflect.write_type_writer([2 x i64] %0, %runtime.Type_Info* %1, i8* noalias nocapture nonnull %__.context_ptr) !dbg !5031 { | |
decls: | |
%2 = alloca %io.Writer, align 8 | |
call void @llvm.dbg.declare(metadata %io.Writer* %3, metadata !5035, metadata !DIExpression()), !dbg !5087 | |
%3 = alloca %io.Writer, align 8 | |
%4 = alloca [2 x i64], align 8, !dbg !5088 | |
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Named* %5, metadata !5039, metadata !DIExpression()), !dbg !5091 | |
%5 = alloca %runtime.Type_Info_Named, align 8, !dbg !5092 | |
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Integer* %6, metadata !5041, metadata !DIExpression()), !dbg !5091 | |
%6 = alloca %runtime.Type_Info_Integer, align 1, !dbg !5092 | |
%7 = alloca [2 x i64], align 8, !dbg !5093 | |
%8 = alloca [2 x i64], align 8, !dbg !5095 | |
%9 = alloca [2 x i64], align 8, !dbg !5096 | |
%10 = alloca { i64, i32 }, align 8, !dbg !5097 | |
%11 = alloca [2 x i64], align 8, !dbg !5098 | |
%12 = alloca [2 x i64], align 8, !dbg !5100 | |
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Rune* %13, metadata !5042, metadata !DIExpression()), !dbg !5091 | |
%13 = alloca %runtime.Type_Info_Rune, align 1, !dbg !5092 | |
%14 = alloca [2 x i64], align 8, !dbg !5101 | |
%15 = alloca { i64, i32 }, align 8, !dbg !5101 | |
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Float* %16, metadata !5043, metadata !DIExpression()), !dbg !5091 | |
%16 = alloca %runtime.Type_Info_Float, align 1, !dbg !5092 | |
%17 = alloca { i64, i32 }, align 8, !dbg !5102 | |
%18 = alloca [2 x i64], align 8, !dbg !5103 | |
%19 = alloca [2 x i64], align 8, !dbg !5105 | |
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Complex* %20, metadata !5044, metadata !DIExpression()), !dbg !5091 | |
%20 = alloca %runtime.Type_Info_Complex, align 1, !dbg !5092 | |
%21 = alloca [2 x i64], align 8, !dbg !5106 | |
%22 = alloca { i64, i32 }, align 8, !dbg !5106 | |
%23 = alloca { i64, i32 }, align 8, !dbg !5107 | |
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Quaternion* %24, metadata !5045, metadata !DIExpression()), !dbg !5091 | |
%24 = alloca %runtime.Type_Info_Quaternion, align 1, !dbg !5092 | |
%25 = alloca [2 x i64], align 8, !dbg !5108 | |
%26 = alloca { i64, i32 }, align 8, !dbg !5108 | |
%27 = alloca { i64, i32 }, align 8, !dbg !5109 | |
call void @llvm.dbg.declare(metadata %runtime.Type_Info_String* %28, metadata !5046, metadata !DIExpression()), !dbg !5091 | |
%28 = alloca %runtime.Type_Info_String, align 1, !dbg !5092 | |
%29 = alloca [2 x i64], align 8, !dbg !5110 | |
%30 = alloca [2 x i64], align 8, !dbg !5113 | |
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Boolean* %31, metadata !5047, metadata !DIExpression()), !dbg !5091 | |
%31 = alloca %runtime.Type_Info_Boolean, align 1, !dbg !5092 | |
%32 = alloca [2 x i64], align 8, !dbg !5115 | |
%33 = alloca { i64, i32 }, align 8, !dbg !5117 | |
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Any* %34, metadata !5048, metadata !DIExpression()), !dbg !5091 | |
%34 = alloca %runtime.Type_Info_Any, align 1, !dbg !5092 | |
%35 = alloca [2 x i64], align 8, !dbg !5118 | |
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Type_Id* %36, metadata !5049, metadata !DIExpression()), !dbg !5091 | |
%36 = alloca %runtime.Type_Info_Type_Id, align 1, !dbg !5092 | |
%37 = alloca [2 x i64], align 8, !dbg !5119 | |
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Pointer* %38, metadata !5050, metadata !DIExpression()), !dbg !5091 | |
%38 = alloca %runtime.Type_Info_Pointer, align 8, !dbg !5092 | |
%39 = alloca [2 x i64], align 8, !dbg !5120 | |
%40 = alloca [2 x i64], align 8, !dbg !5123 | |
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Multi_Pointer* %41, metadata !5051, metadata !DIExpression()), !dbg !5091 | |
%41 = alloca %runtime.Type_Info_Multi_Pointer, align 8, !dbg !5092 | |
%42 = alloca [2 x i64], align 8, !dbg !5125 | |
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Procedure* %43, metadata !5052, metadata !DIExpression()), !dbg !5091 | |
%43 = alloca %runtime.Type_Info_Procedure, align 8, !dbg !5092 | |
%44 = alloca [2 x i64], align 8, !dbg !5126 | |
%45 = alloca [2 x i64], align 8, !dbg !5127 | |
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Tuple* %46, metadata !5053, metadata !DIExpression()), !dbg !5129 | |
%46 = alloca %runtime.Type_Info_Tuple, align 8, !dbg !5129 | |
%47 = alloca { %runtime.Type_Info_Tuple, i8 }, align 8, !dbg !5129 | |
%48 = alloca [2 x i64], align 8, !dbg !5129 | |
%49 = alloca [2 x i64], align 8, !dbg !5130 | |
%50 = alloca [2 x i64], align 8, !dbg !5131 | |
%51 = alloca [2 x i64], align 8, !dbg !5135 | |
%52 = alloca [2 x i64], align 8, !dbg !5136 | |
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Tuple* %53, metadata !5059, metadata !DIExpression()), !dbg !5091 | |
%53 = alloca %runtime.Type_Info_Tuple, align 8, !dbg !5092 | |
%54 = alloca [2 x i64], align 8, !dbg !5139 | |
call void @llvm.dbg.declare(metadata %..string* %55, metadata !5061, metadata !DIExpression()), !dbg !5142 | |
%55 = alloca %..string, align 8, !dbg !5143 | |
call void @llvm.dbg.declare(metadata %..string* %56, metadata !5061, metadata !DIExpression()), !dbg !5142 | |
%56 = alloca %..string, align 8, !dbg !5143 | |
%57 = alloca [2 x i64], align 8, !dbg !5144 | |
%58 = alloca [2 x i64], align 8, !dbg !5147 | |
%59 = alloca [2 x i64], align 8, !dbg !5148 | |
%60 = alloca [2 x i64], align 8, !dbg !5151 | |
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Array* %61, metadata !5066, metadata !DIExpression()), !dbg !5091 | |
%61 = alloca %runtime.Type_Info_Array, align 8, !dbg !5092 | |
%62 = alloca [2 x i64], align 8, !dbg !5154 | |
%63 = alloca { i64, i32 }, align 8, !dbg !5154 | |
%64 = alloca { i64, i32 }, align 8, !dbg !5155 | |
%65 = alloca [2 x i64], align 8, !dbg !5156 | |
%66 = alloca { i64, i32 }, align 8, !dbg !5156 | |
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Enumerated_Array* %67, metadata !5067, metadata !DIExpression()), !dbg !5091 | |
%67 = alloca %runtime.Type_Info_Enumerated_Array, align 8, !dbg !5092 | |
%68 = alloca [2 x i64], align 8, !dbg !5157 | |
%69 = alloca [2 x i64], align 8, !dbg !5158 | |
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Dynamic_Array* %70, metadata !5068, metadata !DIExpression()), !dbg !5091 | |
%70 = alloca %runtime.Type_Info_Dynamic_Array, align 8, !dbg !5092 | |
%71 = alloca [2 x i64], align 8, !dbg !5159 | |
%72 = alloca { i64, i32 }, align 8, !dbg !5159 | |
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Slice* %73, metadata !5069, metadata !DIExpression()), !dbg !5091 | |
%73 = alloca %runtime.Type_Info_Slice, align 8, !dbg !5092 | |
%74 = alloca [2 x i64], align 8, !dbg !5160 | |
%75 = alloca { i64, i32 }, align 8, !dbg !5160 | |
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Map* %76, metadata !5070, metadata !DIExpression()), !dbg !5091 | |
%76 = alloca %runtime.Type_Info_Map, align 8, !dbg !5092 | |
%77 = alloca [2 x i64], align 8, !dbg !5161 | |
%78 = alloca { i64, i32 }, align 8, !dbg !5161 | |
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Struct* %79, metadata !5071, metadata !DIExpression()), !dbg !5091 | |
%79 = alloca %runtime.Type_Info_Struct, align 8, !dbg !5092 | |
%80 = alloca [2 x i64], align 8, !dbg !5162 | |
%81 = alloca { i64, i32 }, align 8, !dbg !5162 | |
%82 = alloca { i64, i32 }, align 8, !dbg !5164 | |
%83 = alloca [2 x i64], align 8, !dbg !5165 | |
%84 = alloca { i64, i32 }, align 8, !dbg !5165 | |
%85 = alloca [2 x i64], align 8, !dbg !5166 | |
%86 = alloca { i64, i32 }, align 8, !dbg !5166 | |
%87 = alloca [2 x i64], align 8, !dbg !5167 | |
%88 = alloca [2 x i64], align 8, !dbg !5168 | |
%89 = alloca [2 x i64], align 8, !dbg !5171 | |
%90 = alloca [2 x i64], align 8, !dbg !5174 | |
%91 = alloca { i64, i32 }, align 8, !dbg !5174 | |
%92 = alloca { i64, i32 }, align 8, !dbg !5177 | |
call void @llvm.dbg.declare(metadata %..string* %93, metadata !5072, metadata !DIExpression()), !dbg !5178 | |
%93 = alloca %..string, align 8, !dbg !5179 | |
call void @llvm.dbg.declare(metadata %..string* %94, metadata !5072, metadata !DIExpression()), !dbg !5178 | |
%94 = alloca %..string, align 8, !dbg !5179 | |
%95 = alloca [2 x i64], align 8, !dbg !5180 | |
%96 = alloca { i64, i32 }, align 8, !dbg !5184 | |
%97 = alloca [2 x i64], align 8, !dbg !5185 | |
%98 = alloca { i64, i32 }, align 8, !dbg !5185 | |
%99 = alloca [2 x i64], align 8, !dbg !5186 | |
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Union* %100, metadata !5075, metadata !DIExpression()), !dbg !5091 | |
%100 = alloca %runtime.Type_Info_Union, align 8, !dbg !5092 | |
%101 = alloca [2 x i64], align 8, !dbg !5187 | |
%102 = alloca [2 x i64], align 8, !dbg !5188 | |
%103 = alloca { i64, i32 }, align 8, !dbg !5191 | |
%104 = alloca [2 x i64], align 8, !dbg !5192 | |
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Enum* %105, metadata !5079, metadata !DIExpression()), !dbg !5091 | |
%105 = alloca %runtime.Type_Info_Enum, align 8, !dbg !5092 | |
%106 = alloca [2 x i64], align 8, !dbg !5196 | |
%107 = alloca [2 x i64], align 8, !dbg !5197 | |
call void @llvm.dbg.declare(metadata %..string* %108, metadata !5080, metadata !DIExpression()), !dbg !5198 | |
%108 = alloca %..string, align 8, !dbg !5199 | |
call void @llvm.dbg.declare(metadata %..string* %109, metadata !5080, metadata !DIExpression()), !dbg !5198 | |
%109 = alloca %..string, align 8, !dbg !5199 | |
%110 = alloca [2 x i64], align 8, !dbg !5200 | |
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Bit_Set* %111, metadata !5083, metadata !DIExpression()), !dbg !5091 | |
%111 = alloca %runtime.Type_Info_Bit_Set, align 8, !dbg !5092 | |
%112 = alloca [2 x i64], align 8, !dbg !5204 | |
%113 = alloca [2 x i64], align 8, !dbg !5205 | |
%114 = alloca { i64, i32 }, align 8, !dbg !5207 | |
%115 = alloca [2 x i64], align 8, !dbg !5208 | |
%116 = alloca { i64, i32 }, align 8, !dbg !5209 | |
%117 = alloca [2 x i64], align 8, !dbg !5210 | |
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Simd_Vector* %118, metadata !5084, metadata !DIExpression()), !dbg !5091 | |
%118 = alloca %runtime.Type_Info_Simd_Vector, align 8, !dbg !5092 | |
%119 = alloca [2 x i64], align 8, !dbg !5213 | |
%120 = alloca { i64, i32 }, align 8, !dbg !5214 | |
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Relative_Pointer* %121, metadata !5085, metadata !DIExpression()), !dbg !5091 | |
%121 = alloca %runtime.Type_Info_Relative_Pointer, align 8, !dbg !5092 | |
%122 = alloca [2 x i64], align 8, !dbg !5215 | |
%123 = alloca [2 x i64], align 8, !dbg !5216 | |
call void @llvm.dbg.declare(metadata %runtime.Type_Info_Relative_Slice* %124, metadata !5086, metadata !DIExpression()), !dbg !5091 | |
%124 = alloca %runtime.Type_Info_Relative_Slice, align 8, !dbg !5092 | |
%125 = alloca [2 x i64], align 8, !dbg !5217 | |
%126 = alloca [2 x i64], align 8, !dbg !5218 | |
%127 = bitcast %io.Writer* %2 to [2 x i64]* | |
store [2 x i64] %0, [2 x i64]* %127, align 8 | |
%128 = bitcast %io.Writer* %3 to i8* | |
%129 = bitcast %io.Writer* %2 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %128, i8* align 8 %129, i64 16, i1 false) | |
call void @llvm.dbg.value(metadata %runtime.Type_Info* %1, metadata !5036, metadata !DIExpression()), !dbg !5219 | |
call void @llvm.dbg.value(metadata i64 0, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
call void @llvm.dbg.declare(metadata %runtime.Context* undef, metadata !5038, metadata !DIExpression()), !dbg !5220 | |
%130 = icmp eq %runtime.Type_Info* %1, null, !dbg !5221 | |
br i1 %130, label %if.then, label %if.done, !dbg !5221 | |
if.then: ; preds = %decls | |
%131 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5088 | |
%132 = load [2 x i64], [2 x i64]* %131, align 8, !dbg !5088 | |
%133 = bitcast [2 x i64]* %4 to %..string*, !dbg !5088 | |
store %..string { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"csbs$c2", i64 0, i64 0), i64 3 }, %..string* %133, align 8, !dbg !5088 | |
%134 = load [2 x i64], [2 x i64]* %4, align 8, !dbg !5088 | |
%135 = call i64 @strings.write_string_writer([2 x i64] %132, [2 x i64] %134, i8* %__.context_ptr), !dbg !5088 | |
call void @llvm.dbg.value(metadata i64 %135, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
ret i64 %135, !dbg !5088 | |
if.done: ; preds = %decls | |
%136 = getelementptr inbounds %runtime.Type_Info, %runtime.Type_Info* %1, i32 0, i32 4, !dbg !5092 | |
%137 = bitcast { [0 x i64], [120 x i8], i64 }* %136 to i8*, !dbg !5092 | |
%138 = getelementptr inbounds { [0 x i64], [120 x i8], i64 }, { [0 x i64], [120 x i8], i64 }* %136, i32 0, i32 2, !dbg !5092 | |
%139 = load i64, i64* %138, align 8, !dbg !5092 | |
switch i64 %139, label %typeswitch.done [ | |
i64 1, label %typeswitch.body | |
i64 2, label %typeswitch.body1 | |
i64 3, label %typeswitch.body10 | |
i64 4, label %typeswitch.body11 | |
i64 5, label %typeswitch.body16 | |
i64 6, label %typeswitch.body17 | |
i64 7, label %typeswitch.body18 | |
i64 8, label %typeswitch.body22 | |
i64 9, label %typeswitch.body26 | |
i64 10, label %typeswitch.body27 | |
i64 11, label %typeswitch.body28 | |
i64 12, label %typeswitch.body32 | |
i64 13, label %typeswitch.body33 | |
i64 18, label %typeswitch.body41 | |
i64 14, label %typeswitch.body53 | |
i64 15, label %typeswitch.body54 | |
i64 16, label %typeswitch.body55 | |
i64 17, label %typeswitch.body56 | |
i64 22, label %typeswitch.body57 | |
i64 19, label %typeswitch.body58 | |
i64 20, label %typeswitch.body75 | |
i64 21, label %typeswitch.body83 | |
i64 23, label %typeswitch.body89 | |
i64 24, label %typeswitch.body97 | |
i64 25, label %typeswitch.body98 | |
i64 26, label %typeswitch.body99 | |
], !dbg !5092 | |
typeswitch.body: ; preds = %if.done | |
%140 = bitcast %runtime.Type_Info_Named* %5 to i8*, !dbg !5092 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %140, i8* align 8 %137, i64 80, i1 false), !dbg !5092 | |
%141 = getelementptr inbounds %runtime.Type_Info_Named, %runtime.Type_Info_Named* %5, i32 0, i32 0, !dbg !5222 | |
%142 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5222 | |
%143 = load [2 x i64], [2 x i64]* %142, align 8, !dbg !5222 | |
%144 = bitcast %..string* %141 to [2 x i64]*, !dbg !5222 | |
%145 = load [2 x i64], [2 x i64]* %144, align 8, !dbg !5222 | |
%146 = call i64 @strings.write_string_writer([2 x i64] %143, [2 x i64] %145, i8* %__.context_ptr), !dbg !5222 | |
call void @llvm.dbg.value(metadata i64 %146, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
ret i64 %146, !dbg !5222 | |
typeswitch.body1: ; preds = %if.done | |
%147 = bitcast %runtime.Type_Info_Integer* %6 to i8*, !dbg !5092 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %147, i8* align 1 %137, i64 2, i1 false), !dbg !5092 | |
%148 = getelementptr inbounds %runtime.Type_Info, %runtime.Type_Info* %1, i32 0, i32 3, !dbg !5223 | |
%149 = load i64, i64* %148, align 8, !dbg !5223 | |
switch i64 %149, label %switch.default.body [ | |
i64 4683743612465315841, label %switch.case.body | |
i64 72057594037928035, label %switch.case.body2 | |
i64 72057594037927998, label %switch.case.body3 | |
], !dbg !5223 | |
switch.case.body: ; preds = %typeswitch.body1 | |
%150 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5093 | |
%151 = load [2 x i64], [2 x i64]* %150, align 8, !dbg !5093 | |
%152 = bitcast [2 x i64]* %7 to %..string*, !dbg !5093 | |
store %..string { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"csbs$c3", i64 0, i64 0), i64 3 }, %..string* %152, align 8, !dbg !5093 | |
%153 = load [2 x i64], [2 x i64]* %7, align 8, !dbg !5093 | |
%154 = call i64 @strings.write_string_writer([2 x i64] %151, [2 x i64] %153, i8* %__.context_ptr), !dbg !5093 | |
call void @llvm.dbg.value(metadata i64 %154, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
ret i64 %154, !dbg !5093 | |
switch.case.body2: ; preds = %typeswitch.body1 | |
%155 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5095 | |
%156 = load [2 x i64], [2 x i64]* %155, align 8, !dbg !5095 | |
%157 = bitcast [2 x i64]* %8 to %..string*, !dbg !5095 | |
store %..string { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"csbs$c4", i64 0, i64 0), i64 4 }, %..string* %157, align 8, !dbg !5095 | |
%158 = load [2 x i64], [2 x i64]* %8, align 8, !dbg !5095 | |
%159 = call i64 @strings.write_string_writer([2 x i64] %156, [2 x i64] %158, i8* %__.context_ptr), !dbg !5095 | |
call void @llvm.dbg.value(metadata i64 %159, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
ret i64 %159, !dbg !5095 | |
switch.case.body3: ; preds = %typeswitch.body1 | |
%160 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5096 | |
%161 = load [2 x i64], [2 x i64]* %160, align 8, !dbg !5096 | |
%162 = bitcast [2 x i64]* %9 to %..string*, !dbg !5096 | |
store %..string { i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"csbs$c5", i64 0, i64 0), i64 7 }, %..string* %162, align 8, !dbg !5096 | |
%163 = load [2 x i64], [2 x i64]* %9, align 8, !dbg !5096 | |
%164 = call i64 @strings.write_string_writer([2 x i64] %161, [2 x i64] %163, i8* %__.context_ptr), !dbg !5096 | |
call void @llvm.dbg.value(metadata i64 %164, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
ret i64 %164, !dbg !5096 | |
switch.default.body: ; preds = %typeswitch.body1 | |
%165 = getelementptr inbounds %runtime.Type_Info_Integer, %runtime.Type_Info_Integer* %6, i32 0, i32 0, !dbg !5224 | |
%166 = load i8, i8* %165, align 1, !dbg !5224 | |
%167 = trunc i8 %166 to i1, !dbg !5224 | |
%. = select i1 %167, i8 105, i8 117, !dbg !5224 | |
%168 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5224 | |
%169 = load [2 x i64], [2 x i64]* %168, align 8, !dbg !5224 | |
%170 = call i32 @io.write_byte_to_writer([2 x i64] %169, i8 %., i8* %__.context_ptr), !dbg !5224 | |
%171 = call i64 @reflect.write_type_writer._n1-0(i32 %170, i8* %__.context_ptr), !dbg !5224 | |
call void @llvm.dbg.value(metadata i64 %171, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
%172 = getelementptr inbounds %runtime.Type_Info, %runtime.Type_Info* %1, i32 0, i32 0, !dbg !5097 | |
%173 = load i64, i64* %172, align 8, !dbg !5097 | |
%174 = mul i64 8, %173, !dbg !5097 | |
%175 = load [2 x i64], [2 x i64]* %168, align 8, !dbg !5097 | |
%176 = call [2 x i64] @io.write_i64([2 x i64] %175, i64 %174, i64 10, i8* %__.context_ptr), !dbg !5097 | |
%177 = bitcast { i64, i32 }* %10 to [2 x i64]*, !dbg !5097 | |
store [2 x i64] %176, [2 x i64]* %177, align 8, !dbg !5097 | |
%178 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %10, i32 0, i32 0, !dbg !5097 | |
%179 = load i64, i64* %178, align 8, !dbg !5097 | |
%180 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %10, i32 0, i32 1, !dbg !5097 | |
%181 = load i32, i32* %180, align 4, !dbg !5097 | |
%182 = call i64 @reflect.write_type_writer._n2-1(i64 %179, i32 %181, i8* %__.context_ptr), !dbg !5097 | |
%183 = add i64 %171, %182, !dbg !5097 | |
call void @llvm.dbg.value(metadata i64 %183, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
%184 = getelementptr inbounds %runtime.Type_Info_Integer, %runtime.Type_Info_Integer* %6, i32 0, i32 1, !dbg !5225 | |
%185 = load i8, i8* %184, align 1, !dbg !5225 | |
switch i8 %185, label %typeswitch.done [ | |
i8 2, label %switch.case.body8 | |
i8 1, label %switch.case.body7 | |
], !dbg !5225 | |
switch.case.body7: ; preds = %switch.default.body | |
%186 = load [2 x i64], [2 x i64]* %168, align 8, !dbg !5098 | |
%187 = bitcast [2 x i64]* %11 to %..string*, !dbg !5098 | |
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$c6", i64 0, i64 0), i64 2 }, %..string* %187, align 8, !dbg !5098 | |
%188 = load [2 x i64], [2 x i64]* %11, align 8, !dbg !5098 | |
%189 = call i64 @strings.write_string_writer([2 x i64] %186, [2 x i64] %188, i8* %__.context_ptr), !dbg !5098 | |
%190 = add i64 %183, %189, !dbg !5098 | |
call void @llvm.dbg.value(metadata i64 %190, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
br label %typeswitch.done, !dbg !5225 | |
switch.case.body8: ; preds = %switch.default.body | |
%191 = load [2 x i64], [2 x i64]* %168, align 8, !dbg !5100 | |
%192 = bitcast [2 x i64]* %12 to %..string*, !dbg !5100 | |
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$c7", i64 0, i64 0), i64 2 }, %..string* %192, align 8, !dbg !5100 | |
%193 = load [2 x i64], [2 x i64]* %12, align 8, !dbg !5100 | |
%194 = call i64 @strings.write_string_writer([2 x i64] %191, [2 x i64] %193, i8* %__.context_ptr), !dbg !5100 | |
%195 = add i64 %183, %194, !dbg !5100 | |
call void @llvm.dbg.value(metadata i64 %195, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
br label %typeswitch.done, !dbg !5225 | |
typeswitch.body10: ; preds = %if.done | |
%196 = bitcast %runtime.Type_Info_Rune* %13 to i8*, !dbg !5092 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %196, i8* align 1 %137, i64 0, i1 false), !dbg !5092 | |
%197 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5101 | |
%198 = load [2 x i64], [2 x i64]* %197, align 8, !dbg !5101 | |
%199 = bitcast [2 x i64]* %14 to %..string*, !dbg !5101 | |
store %..string { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"csbs$c8", i64 0, i64 0), i64 4 }, %..string* %199, align 8, !dbg !5101 | |
%200 = load [2 x i64], [2 x i64]* %14, align 8, !dbg !5101 | |
%201 = call [2 x i64] @io.write_string([2 x i64] %198, [2 x i64] %200, i8* %__.context_ptr), !dbg !5101 | |
%202 = bitcast { i64, i32 }* %15 to [2 x i64]*, !dbg !5101 | |
store [2 x i64] %201, [2 x i64]* %202, align 8, !dbg !5101 | |
%203 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %15, i32 0, i32 0, !dbg !5101 | |
%204 = load i64, i64* %203, align 8, !dbg !5101 | |
%205 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %15, i32 0, i32 1, !dbg !5101 | |
%206 = load i32, i32* %205, align 4, !dbg !5101 | |
%207 = call i64 @reflect.write_type_writer._n2-1(i64 %204, i32 %206, i8* %__.context_ptr), !dbg !5101 | |
call void @llvm.dbg.value(metadata i64 %207, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
br label %typeswitch.done, !dbg !5092 | |
typeswitch.body11: ; preds = %if.done | |
%208 = bitcast %runtime.Type_Info_Float* %16 to i8*, !dbg !5092 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %208, i8* align 1 %137, i64 1, i1 false), !dbg !5092 | |
%209 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5226 | |
%210 = load [2 x i64], [2 x i64]* %209, align 8, !dbg !5226 | |
%211 = call i32 @io.write_byte_to_writer([2 x i64] %210, i8 102, i8* %__.context_ptr), !dbg !5226 | |
%212 = call i64 @reflect.write_type_writer._n1-0(i32 %211, i8* %__.context_ptr), !dbg !5226 | |
call void @llvm.dbg.value(metadata i64 %212, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
%213 = getelementptr inbounds %runtime.Type_Info, %runtime.Type_Info* %1, i32 0, i32 0, !dbg !5102 | |
%214 = load i64, i64* %213, align 8, !dbg !5102 | |
%215 = mul i64 8, %214, !dbg !5102 | |
%216 = load [2 x i64], [2 x i64]* %209, align 8, !dbg !5102 | |
%217 = call [2 x i64] @io.write_i64([2 x i64] %216, i64 %215, i64 10, i8* %__.context_ptr), !dbg !5102 | |
%218 = bitcast { i64, i32 }* %17 to [2 x i64]*, !dbg !5102 | |
store [2 x i64] %217, [2 x i64]* %218, align 8, !dbg !5102 | |
%219 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %17, i32 0, i32 0, !dbg !5102 | |
%220 = load i64, i64* %219, align 8, !dbg !5102 | |
%221 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %17, i32 0, i32 1, !dbg !5102 | |
%222 = load i32, i32* %221, align 4, !dbg !5102 | |
%223 = call i64 @reflect.write_type_writer._n2-1(i64 %220, i32 %222, i8* %__.context_ptr), !dbg !5102 | |
%224 = add i64 %212, %223, !dbg !5102 | |
call void @llvm.dbg.value(metadata i64 %224, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
%225 = getelementptr inbounds %runtime.Type_Info_Float, %runtime.Type_Info_Float* %16, i32 0, i32 0, !dbg !5227 | |
%226 = load i8, i8* %225, align 1, !dbg !5227 | |
switch i8 %226, label %typeswitch.done [ | |
i8 2, label %switch.case.body14 | |
i8 1, label %switch.case.body13 | |
], !dbg !5227 | |
switch.case.body13: ; preds = %typeswitch.body11 | |
%227 = load [2 x i64], [2 x i64]* %209, align 8, !dbg !5103 | |
%228 = bitcast [2 x i64]* %18 to %..string*, !dbg !5103 | |
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$c6", i64 0, i64 0), i64 2 }, %..string* %228, align 8, !dbg !5103 | |
%229 = load [2 x i64], [2 x i64]* %18, align 8, !dbg !5103 | |
%230 = call i64 @strings.write_string_writer([2 x i64] %227, [2 x i64] %229, i8* %__.context_ptr), !dbg !5103 | |
%231 = add i64 %224, %230, !dbg !5103 | |
call void @llvm.dbg.value(metadata i64 %231, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
br label %typeswitch.done, !dbg !5227 | |
switch.case.body14: ; preds = %typeswitch.body11 | |
%232 = load [2 x i64], [2 x i64]* %209, align 8, !dbg !5105 | |
%233 = bitcast [2 x i64]* %19 to %..string*, !dbg !5105 | |
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$c7", i64 0, i64 0), i64 2 }, %..string* %233, align 8, !dbg !5105 | |
%234 = load [2 x i64], [2 x i64]* %19, align 8, !dbg !5105 | |
%235 = call i64 @strings.write_string_writer([2 x i64] %232, [2 x i64] %234, i8* %__.context_ptr), !dbg !5105 | |
%236 = add i64 %224, %235, !dbg !5105 | |
call void @llvm.dbg.value(metadata i64 %236, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
br label %typeswitch.done, !dbg !5227 | |
typeswitch.body16: ; preds = %if.done | |
%237 = bitcast %runtime.Type_Info_Complex* %20 to i8*, !dbg !5092 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %237, i8* align 1 %137, i64 0, i1 false), !dbg !5092 | |
%238 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5106 | |
%239 = load [2 x i64], [2 x i64]* %238, align 8, !dbg !5106 | |
%240 = bitcast [2 x i64]* %21 to %..string*, !dbg !5106 | |
store %..string { i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"csbs$c9", i64 0, i64 0), i64 7 }, %..string* %240, align 8, !dbg !5106 | |
%241 = load [2 x i64], [2 x i64]* %21, align 8, !dbg !5106 | |
%242 = call [2 x i64] @io.write_string([2 x i64] %239, [2 x i64] %241, i8* %__.context_ptr), !dbg !5106 | |
%243 = bitcast { i64, i32 }* %22 to [2 x i64]*, !dbg !5106 | |
store [2 x i64] %242, [2 x i64]* %243, align 8, !dbg !5106 | |
%244 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %22, i32 0, i32 0, !dbg !5106 | |
%245 = load i64, i64* %244, align 8, !dbg !5106 | |
%246 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %22, i32 0, i32 1, !dbg !5106 | |
%247 = load i32, i32* %246, align 4, !dbg !5106 | |
%248 = call i64 @reflect.write_type_writer._n2-1(i64 %245, i32 %247, i8* %__.context_ptr), !dbg !5106 | |
call void @llvm.dbg.value(metadata i64 %248, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
%249 = getelementptr inbounds %runtime.Type_Info, %runtime.Type_Info* %1, i32 0, i32 0, !dbg !5107 | |
%250 = load i64, i64* %249, align 8, !dbg !5107 | |
%251 = mul i64 8, %250, !dbg !5107 | |
%252 = load [2 x i64], [2 x i64]* %238, align 8, !dbg !5107 | |
%253 = call [2 x i64] @io.write_i64([2 x i64] %252, i64 %251, i64 10, i8* %__.context_ptr), !dbg !5107 | |
%254 = bitcast { i64, i32 }* %23 to [2 x i64]*, !dbg !5107 | |
store [2 x i64] %253, [2 x i64]* %254, align 8, !dbg !5107 | |
%255 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %23, i32 0, i32 0, !dbg !5107 | |
%256 = load i64, i64* %255, align 8, !dbg !5107 | |
%257 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %23, i32 0, i32 1, !dbg !5107 | |
%258 = load i32, i32* %257, align 4, !dbg !5107 | |
%259 = call i64 @reflect.write_type_writer._n2-1(i64 %256, i32 %258, i8* %__.context_ptr), !dbg !5107 | |
%260 = add i64 %248, %259, !dbg !5107 | |
call void @llvm.dbg.value(metadata i64 %260, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
br label %typeswitch.done, !dbg !5092 | |
typeswitch.body17: ; preds = %if.done | |
%261 = bitcast %runtime.Type_Info_Quaternion* %24 to i8*, !dbg !5092 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %261, i8* align 1 %137, i64 0, i1 false), !dbg !5092 | |
%262 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5108 | |
%263 = load [2 x i64], [2 x i64]* %262, align 8, !dbg !5108 | |
%264 = bitcast [2 x i64]* %25 to %..string*, !dbg !5108 | |
store %..string { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"csbs$ca", i64 0, i64 0), i64 10 }, %..string* %264, align 8, !dbg !5108 | |
%265 = load [2 x i64], [2 x i64]* %25, align 8, !dbg !5108 | |
%266 = call [2 x i64] @io.write_string([2 x i64] %263, [2 x i64] %265, i8* %__.context_ptr), !dbg !5108 | |
%267 = bitcast { i64, i32 }* %26 to [2 x i64]*, !dbg !5108 | |
store [2 x i64] %266, [2 x i64]* %267, align 8, !dbg !5108 | |
%268 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %26, i32 0, i32 0, !dbg !5108 | |
%269 = load i64, i64* %268, align 8, !dbg !5108 | |
%270 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %26, i32 0, i32 1, !dbg !5108 | |
%271 = load i32, i32* %270, align 4, !dbg !5108 | |
%272 = call i64 @reflect.write_type_writer._n2-1(i64 %269, i32 %271, i8* %__.context_ptr), !dbg !5108 | |
call void @llvm.dbg.value(metadata i64 %272, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
%273 = getelementptr inbounds %runtime.Type_Info, %runtime.Type_Info* %1, i32 0, i32 0, !dbg !5109 | |
%274 = load i64, i64* %273, align 8, !dbg !5109 | |
%275 = mul i64 8, %274, !dbg !5109 | |
%276 = load [2 x i64], [2 x i64]* %262, align 8, !dbg !5109 | |
%277 = call [2 x i64] @io.write_i64([2 x i64] %276, i64 %275, i64 10, i8* %__.context_ptr), !dbg !5109 | |
%278 = bitcast { i64, i32 }* %27 to [2 x i64]*, !dbg !5109 | |
store [2 x i64] %277, [2 x i64]* %278, align 8, !dbg !5109 | |
%279 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %27, i32 0, i32 0, !dbg !5109 | |
%280 = load i64, i64* %279, align 8, !dbg !5109 | |
%281 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %27, i32 0, i32 1, !dbg !5109 | |
%282 = load i32, i32* %281, align 4, !dbg !5109 | |
%283 = call i64 @reflect.write_type_writer._n2-1(i64 %280, i32 %282, i8* %__.context_ptr), !dbg !5109 | |
%284 = add i64 %272, %283, !dbg !5109 | |
call void @llvm.dbg.value(metadata i64 %284, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
br label %typeswitch.done, !dbg !5092 | |
typeswitch.body18: ; preds = %if.done | |
%285 = bitcast %runtime.Type_Info_String* %28 to i8*, !dbg !5092 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %285, i8* align 1 %137, i64 1, i1 false), !dbg !5092 | |
%286 = getelementptr inbounds %runtime.Type_Info_String, %runtime.Type_Info_String* %28, i32 0, i32 0, !dbg !5228 | |
%287 = load i8, i8* %286, align 1, !dbg !5228 | |
%288 = trunc i8 %287 to i1, !dbg !5228 | |
%289 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5229 | |
%290 = load [2 x i64], [2 x i64]* %289, align 8, !dbg !5229 | |
br i1 %288, label %if.then19, label %if.else20, !dbg !5228 | |
if.then19: ; preds = %typeswitch.body18 | |
%291 = bitcast [2 x i64]* %29 to %..string*, !dbg !5110 | |
store %..string { i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"csbs$cb", i64 0, i64 0), i64 7 }, %..string* %291, align 8, !dbg !5110 | |
%292 = load [2 x i64], [2 x i64]* %29, align 8, !dbg !5110 | |
%293 = call i64 @strings.write_string_writer([2 x i64] %290, [2 x i64] %292, i8* %__.context_ptr), !dbg !5110 | |
call void @llvm.dbg.value(metadata i64 %293, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
br label %typeswitch.done, !dbg !5228 | |
if.else20: ; preds = %typeswitch.body18 | |
%294 = bitcast [2 x i64]* %30 to %..string*, !dbg !5113 | |
store %..string { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"csbs$cc", i64 0, i64 0), i64 6 }, %..string* %294, align 8, !dbg !5113 | |
%295 = load [2 x i64], [2 x i64]* %30, align 8, !dbg !5113 | |
%296 = call i64 @strings.write_string_writer([2 x i64] %290, [2 x i64] %295, i8* %__.context_ptr), !dbg !5113 | |
call void @llvm.dbg.value(metadata i64 %296, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
br label %typeswitch.done, !dbg !5228 | |
typeswitch.body22: ; preds = %if.done | |
%297 = bitcast %runtime.Type_Info_Boolean* %31 to i8*, !dbg !5092 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %297, i8* align 1 %137, i64 0, i1 false), !dbg !5092 | |
%298 = getelementptr inbounds %runtime.Type_Info, %runtime.Type_Info* %1, i32 0, i32 3, !dbg !5230 | |
%299 = load i64, i64* %298, align 8, !dbg !5230 | |
%cond = icmp eq i64 %299, 504403158265495575, !dbg !5230 | |
%300 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5231 | |
%301 = load [2 x i64], [2 x i64]* %300, align 8, !dbg !5231 | |
br i1 %cond, label %switch.case.body23, label %switch.default.body24, !dbg !5230 | |
switch.case.body23: ; preds = %typeswitch.body22 | |
%302 = bitcast [2 x i64]* %32 to %..string*, !dbg !5115 | |
store %..string { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"csbs$cd", i64 0, i64 0), i64 4 }, %..string* %302, align 8, !dbg !5115 | |
%303 = load [2 x i64], [2 x i64]* %32, align 8, !dbg !5115 | |
%304 = call i64 @strings.write_string_writer([2 x i64] %301, [2 x i64] %303, i8* %__.context_ptr), !dbg !5115 | |
call void @llvm.dbg.value(metadata i64 %304, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
br label %typeswitch.done, !dbg !5230 | |
switch.default.body24: ; preds = %typeswitch.body22 | |
%305 = call i32 @io.write_byte_to_writer([2 x i64] %301, i8 98, i8* %__.context_ptr), !dbg !5232 | |
%306 = call i64 @reflect.write_type_writer._n1-0(i32 %305, i8* %__.context_ptr), !dbg !5232 | |
call void @llvm.dbg.value(metadata i64 %306, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
%307 = getelementptr inbounds %runtime.Type_Info, %runtime.Type_Info* %1, i32 0, i32 0, !dbg !5117 | |
%308 = load i64, i64* %307, align 8, !dbg !5117 | |
%309 = mul i64 8, %308, !dbg !5117 | |
%310 = load [2 x i64], [2 x i64]* %300, align 8, !dbg !5117 | |
%311 = call [2 x i64] @io.write_i64([2 x i64] %310, i64 %309, i64 10, i8* %__.context_ptr), !dbg !5117 | |
%312 = bitcast { i64, i32 }* %33 to [2 x i64]*, !dbg !5117 | |
store [2 x i64] %311, [2 x i64]* %312, align 8, !dbg !5117 | |
%313 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %33, i32 0, i32 0, !dbg !5117 | |
%314 = load i64, i64* %313, align 8, !dbg !5117 | |
%315 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %33, i32 0, i32 1, !dbg !5117 | |
%316 = load i32, i32* %315, align 4, !dbg !5117 | |
%317 = call i64 @reflect.write_type_writer._n2-1(i64 %314, i32 %316, i8* %__.context_ptr), !dbg !5117 | |
%318 = add i64 %306, %317, !dbg !5117 | |
call void @llvm.dbg.value(metadata i64 %318, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
br label %typeswitch.done, !dbg !5230 | |
typeswitch.body26: ; preds = %if.done | |
%319 = bitcast %runtime.Type_Info_Any* %34 to i8*, !dbg !5092 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %319, i8* align 1 %137, i64 0, i1 false), !dbg !5092 | |
%320 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5118 | |
%321 = load [2 x i64], [2 x i64]* %320, align 8, !dbg !5118 | |
%322 = bitcast [2 x i64]* %35 to %..string*, !dbg !5118 | |
store %..string { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"csbs$ce", i64 0, i64 0), i64 3 }, %..string* %322, align 8, !dbg !5118 | |
%323 = load [2 x i64], [2 x i64]* %35, align 8, !dbg !5118 | |
%324 = call i64 @strings.write_string_writer([2 x i64] %321, [2 x i64] %323, i8* %__.context_ptr), !dbg !5118 | |
call void @llvm.dbg.value(metadata i64 %324, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
br label %typeswitch.done, !dbg !5092 | |
typeswitch.body27: ; preds = %if.done | |
%325 = bitcast %runtime.Type_Info_Type_Id* %36 to i8*, !dbg !5092 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %325, i8* align 1 %137, i64 0, i1 false), !dbg !5092 | |
%326 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5119 | |
%327 = load [2 x i64], [2 x i64]* %326, align 8, !dbg !5119 | |
%328 = bitcast [2 x i64]* %37 to %..string*, !dbg !5119 | |
store %..string { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"csbs$cf", i64 0, i64 0), i64 6 }, %..string* %328, align 8, !dbg !5119 | |
%329 = load [2 x i64], [2 x i64]* %37, align 8, !dbg !5119 | |
%330 = call i64 @strings.write_string_writer([2 x i64] %327, [2 x i64] %329, i8* %__.context_ptr), !dbg !5119 | |
call void @llvm.dbg.value(metadata i64 %330, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
br label %typeswitch.done, !dbg !5092 | |
typeswitch.body28: ; preds = %if.done | |
%331 = bitcast %runtime.Type_Info_Pointer* %38 to i8*, !dbg !5092 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %331, i8* align 8 %137, i64 8, i1 false), !dbg !5092 | |
%332 = getelementptr inbounds %runtime.Type_Info_Pointer, %runtime.Type_Info_Pointer* %38, i32 0, i32 0, !dbg !5233 | |
%333 = load %runtime.Type_Info*, %runtime.Type_Info** %332, align 8, !dbg !5233 | |
%334 = icmp eq %runtime.Type_Info* %333, null, !dbg !5233 | |
%335 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5234 | |
%336 = load [2 x i64], [2 x i64]* %335, align 8, !dbg !5234 | |
br i1 %334, label %if.then29, label %if.else30, !dbg !5233 | |
if.then29: ; preds = %typeswitch.body28 | |
%337 = bitcast [2 x i64]* %39 to %..string*, !dbg !5120 | |
store %..string { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"csbs$d0", i64 0, i64 0), i64 6 }, %..string* %337, align 8, !dbg !5120 | |
%338 = load [2 x i64], [2 x i64]* %39, align 8, !dbg !5120 | |
%339 = call i64 @strings.write_string_writer([2 x i64] %336, [2 x i64] %338, i8* %__.context_ptr), !dbg !5120 | |
br label %typeswitch.done, !dbg !5233 | |
if.else30: ; preds = %typeswitch.body28 | |
%340 = bitcast [2 x i64]* %40 to %..string*, !dbg !5123 | |
store %..string { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"csbs$d1", i64 0, i64 0), i64 1 }, %..string* %340, align 8, !dbg !5123 | |
%341 = load [2 x i64], [2 x i64]* %40, align 8, !dbg !5123 | |
%342 = call i64 @strings.write_string_writer([2 x i64] %336, [2 x i64] %341, i8* %__.context_ptr), !dbg !5123 | |
%343 = load %runtime.Type_Info*, %runtime.Type_Info** %332, align 8, !dbg !5235 | |
%344 = load [2 x i64], [2 x i64]* %335, align 8, !dbg !5235 | |
%345 = call i64 @reflect.write_type_writer([2 x i64] %344, %runtime.Type_Info* %343, i8* %__.context_ptr), !dbg !5235 | |
br label %typeswitch.done, !dbg !5233 | |
typeswitch.body32: ; preds = %if.done | |
%346 = bitcast %runtime.Type_Info_Multi_Pointer* %41 to i8*, !dbg !5092 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %346, i8* align 8 %137, i64 8, i1 false), !dbg !5092 | |
%347 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5125 | |
%348 = load [2 x i64], [2 x i64]* %347, align 8, !dbg !5125 | |
%349 = bitcast [2 x i64]* %42 to %..string*, !dbg !5125 | |
store %..string { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"csbs$d2", i64 0, i64 0), i64 3 }, %..string* %349, align 8, !dbg !5125 | |
%350 = load [2 x i64], [2 x i64]* %42, align 8, !dbg !5125 | |
%351 = call i64 @strings.write_string_writer([2 x i64] %348, [2 x i64] %350, i8* %__.context_ptr), !dbg !5125 | |
%352 = getelementptr inbounds %runtime.Type_Info_Multi_Pointer, %runtime.Type_Info_Multi_Pointer* %41, i32 0, i32 0, !dbg !5236 | |
%353 = load %runtime.Type_Info*, %runtime.Type_Info** %352, align 8, !dbg !5236 | |
%354 = load [2 x i64], [2 x i64]* %347, align 8, !dbg !5236 | |
%355 = call i64 @reflect.write_type_writer([2 x i64] %354, %runtime.Type_Info* %353, i8* %__.context_ptr), !dbg !5236 | |
br label %typeswitch.done, !dbg !5092 | |
typeswitch.body33: ; preds = %if.done | |
%356 = bitcast %runtime.Type_Info_Procedure* %43 to i8*, !dbg !5092 | |
%357 = getelementptr i8, i8* %356, i64 24, !dbg !5092 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %357, i8 0, i64 0, i1 false), !dbg !5092 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %356, i8* align 8 %137, i64 24, i1 false), !dbg !5092 | |
%358 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5126 | |
%359 = load [2 x i64], [2 x i64]* %358, align 8, !dbg !5126 | |
%360 = bitcast [2 x i64]* %44 to %..string*, !dbg !5126 | |
store %..string { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"csbs$d3", i64 0, i64 0), i64 4 }, %..string* %360, align 8, !dbg !5126 | |
%361 = load [2 x i64], [2 x i64]* %44, align 8, !dbg !5126 | |
%362 = call i64 @strings.write_string_writer([2 x i64] %359, [2 x i64] %361, i8* %__.context_ptr), !dbg !5126 | |
call void @llvm.dbg.value(metadata i64 %362, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
%363 = getelementptr inbounds %runtime.Type_Info_Procedure, %runtime.Type_Info_Procedure* %43, i32 0, i32 0, !dbg !5237 | |
%364 = load %runtime.Type_Info*, %runtime.Type_Info** %363, align 8, !dbg !5237 | |
%365 = icmp eq %runtime.Type_Info* %364, null, !dbg !5237 | |
br i1 %365, label %if.then34, label %if.else35, !dbg !5237 | |
if.then34: ; preds = %typeswitch.body33 | |
%366 = load [2 x i64], [2 x i64]* %358, align 8, !dbg !5127 | |
%367 = bitcast [2 x i64]* %45 to %..string*, !dbg !5127 | |
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$d4", i64 0, i64 0), i64 2 }, %..string* %367, align 8, !dbg !5127 | |
%368 = load [2 x i64], [2 x i64]* %45, align 8, !dbg !5127 | |
%369 = call i64 @strings.write_string_writer([2 x i64] %366, [2 x i64] %368, i8* %__.context_ptr), !dbg !5127 | |
%370 = add i64 %362, %369, !dbg !5127 | |
call void @llvm.dbg.value(metadata i64 %370, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
br label %if.done38, !dbg !5237 | |
if.else35: ; preds = %typeswitch.body33 | |
%371 = bitcast %runtime.Type_Info_Tuple* %46 to i8*, !dbg !5129 | |
call void @llvm.memset.p0i8.i64(i8* %371, i8 0, i64 32, i1 false), !dbg !5129 | |
%372 = load %runtime.Type_Info*, %runtime.Type_Info** %363, align 8, !dbg !5129 | |
%373 = getelementptr inbounds %runtime.Type_Info, %runtime.Type_Info* %372, i32 0, i32 4, !dbg !5129 | |
%374 = bitcast { %runtime.Type_Info_Tuple, i8 }* %47 to i8*, !dbg !5129 | |
call void @llvm.memset.p0i8.i64(i8* %374, i8 0, i64 40, i1 false), !dbg !5129 | |
%375 = getelementptr inbounds { %runtime.Type_Info_Tuple, i8 }, { %runtime.Type_Info_Tuple, i8 }* %47, i32 0, i32 0, !dbg !5129 | |
%376 = getelementptr inbounds { %runtime.Type_Info_Tuple, i8 }, { %runtime.Type_Info_Tuple, i8 }* %47, i32 0, i32 1, !dbg !5129 | |
%377 = getelementptr inbounds { [0 x i64], [120 x i8], i64 }, { [0 x i64], [120 x i8], i64 }* %373, i32 0, i32 2, !dbg !5129 | |
%378 = load i64, i64* %377, align 8, !dbg !5129 | |
%379 = icmp eq i64 %378, 18, !dbg !5129 | |
br i1 %379, label %union_cast.ok, label %union_cast.end, !dbg !5129 | |
union_cast.ok: ; preds = %if.else35 | |
%380 = bitcast { [0 x i64], [120 x i8], i64 }* %373 to %runtime.Type_Info_Tuple*, !dbg !5129 | |
%381 = bitcast %runtime.Type_Info_Tuple* %375 to i8*, !dbg !5129 | |
%382 = bitcast %runtime.Type_Info_Tuple* %380 to i8*, !dbg !5129 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %381, i8* align 8 %382, i64 32, i1 false), !dbg !5129 | |
store i8 1, i8* %376, align 1, !dbg !5129 | |
br label %union_cast.end, !dbg !5129 | |
union_cast.end: ; preds = %union_cast.ok, %if.else35 | |
%383 = load i8, i8* %376, align 1, !dbg !5129 | |
%384 = bitcast { [0 x i64], [120 x i8], i64 }* %373 to i8*, !dbg !5129 | |
%385 = icmp ne i8 %383, 0, !dbg !5129 | |
%386 = bitcast [2 x i64]* %48 to %..string*, !dbg !5129 | |
store %..string { i8* getelementptr inbounds ([52 x i8], [52 x i8]* @"csbs$d5", i64 0, i64 0), i64 51 }, %..string* %386, align 8, !dbg !5129 | |
%387 = load [2 x i64], [2 x i64]* %48, align 8, !dbg !5129 | |
call void @runtime.type_assertion_check2(i1 %385, [2 x i64] %387, i32 428, i32 21, i64 1369094286720630787, i64 3602879701896396853, i8* %384), !dbg !5129 | |
%388 = bitcast %runtime.Type_Info_Tuple* %375 to i8*, !dbg !5129 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %371, i8* align 8 %388, i64 32, i1 false), !dbg !5129 | |
%389 = load [2 x i64], [2 x i64]* %358, align 8, !dbg !5130 | |
%390 = bitcast [2 x i64]* %49 to %..string*, !dbg !5130 | |
store %..string { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"csbs$d6", i64 0, i64 0), i64 1 }, %..string* %390, align 8, !dbg !5130 | |
%391 = load [2 x i64], [2 x i64]* %49, align 8, !dbg !5130 | |
%392 = call i64 @strings.write_string_writer([2 x i64] %389, [2 x i64] %391, i8* %__.context_ptr), !dbg !5130 | |
%393 = add i64 %362, %392, !dbg !5130 | |
call void @llvm.dbg.value(metadata i64 %393, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
call void @llvm.dbg.value(metadata %runtime.Type_Info* null, metadata !5056, metadata !DIExpression()), !dbg !5238 | |
call void @llvm.dbg.value(metadata i64 0, metadata !5058, metadata !DIExpression()), !dbg !5238 | |
%394 = getelementptr inbounds %runtime.Type_Info_Tuple, %runtime.Type_Info_Tuple* %46, i32 0, i32 0, !dbg !5239 | |
%395 = getelementptr inbounds { %runtime.Type_Info**, i64 }, { %runtime.Type_Info**, i64 }* %394, i32 0, i32 1, !dbg !5239 | |
%396 = load i64, i64* %395, align 8, !dbg !5239 | |
br label %for.index.loop, !dbg !5239 | |
for.index.loop: ; preds = %if.done37, %union_cast.end | |
%.0103 = phi i64 [ -1, %union_cast.end ], [ %397, %if.done37 ], !dbg !5239 | |
%.4 = phi i64 [ %393, %union_cast.end ], [ %411, %if.done37 ], !dbg !5240 | |
call void @llvm.dbg.value(metadata i64 %.4, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
%397 = add i64 %.0103, 1, !dbg !5239 | |
%398 = icmp slt i64 %397, %396, !dbg !5239 | |
br i1 %398, label %for.index.body, label %for.index.done, !dbg !5239 | |
for.index.body: ; preds = %for.index.loop | |
%399 = getelementptr inbounds { %runtime.Type_Info**, i64 }, { %runtime.Type_Info**, i64 }* %394, i32 0, i32 0, !dbg !5239 | |
%400 = load %runtime.Type_Info**, %runtime.Type_Info*** %399, align 8, !dbg !5239 | |
%401 = getelementptr %runtime.Type_Info*, %runtime.Type_Info** %400, i64 %397, !dbg !5239 | |
%402 = load %runtime.Type_Info*, %runtime.Type_Info** %401, align 8, !dbg !5239 | |
call void @llvm.dbg.value(metadata %runtime.Type_Info* %402, metadata !5056, metadata !DIExpression()), !dbg !5238 | |
call void @llvm.dbg.value(metadata i64 %397, metadata !5058, metadata !DIExpression()), !dbg !5238 | |
%403 = icmp sgt i64 %397, 0, !dbg !5241 | |
br i1 %403, label %if.then36, label %if.done37, !dbg !5241 | |
if.then36: ; preds = %for.index.body | |
%404 = load [2 x i64], [2 x i64]* %358, align 8, !dbg !5131 | |
%405 = bitcast [2 x i64]* %50 to %..string*, !dbg !5131 | |
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$d7", i64 0, i64 0), i64 2 }, %..string* %405, align 8, !dbg !5131 | |
%406 = load [2 x i64], [2 x i64]* %50, align 8, !dbg !5131 | |
%407 = call i64 @strings.write_string_writer([2 x i64] %404, [2 x i64] %406, i8* %__.context_ptr), !dbg !5131 | |
%408 = add i64 %.4, %407, !dbg !5131 | |
call void @llvm.dbg.value(metadata i64 %408, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
br label %if.done37, !dbg !5241 | |
if.done37: ; preds = %if.then36, %for.index.body | |
%.5 = phi i64 [ %408, %if.then36 ], [ %.4, %for.index.body ], !dbg !5240 | |
call void @llvm.dbg.value(metadata i64 %.5, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
%409 = load [2 x i64], [2 x i64]* %358, align 8, !dbg !5242 | |
%410 = call i64 @reflect.write_type_writer([2 x i64] %409, %runtime.Type_Info* %402, i8* %__.context_ptr), !dbg !5242 | |
%411 = add i64 %.5, %410, !dbg !5242 | |
call void @llvm.dbg.value(metadata i64 %411, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
br label %for.index.loop, !dbg !5239 | |
for.index.done: ; preds = %for.index.loop | |
%412 = load [2 x i64], [2 x i64]* %358, align 8, !dbg !5135 | |
%413 = bitcast [2 x i64]* %51 to %..string*, !dbg !5135 | |
store %..string { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"csbs$d8", i64 0, i64 0), i64 1 }, %..string* %413, align 8, !dbg !5135 | |
%414 = load [2 x i64], [2 x i64]* %51, align 8, !dbg !5135 | |
%415 = call i64 @strings.write_string_writer([2 x i64] %412, [2 x i64] %414, i8* %__.context_ptr), !dbg !5135 | |
%416 = add i64 %.4, %415, !dbg !5135 | |
call void @llvm.dbg.value(metadata i64 %416, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
br label %if.done38, !dbg !5237 | |
if.done38: ; preds = %for.index.done, %if.then34 | |
%.6 = phi i64 [ %370, %if.then34 ], [ %416, %for.index.done ], !dbg !5243 | |
call void @llvm.dbg.value(metadata i64 %.6, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
%417 = getelementptr inbounds %runtime.Type_Info_Procedure, %runtime.Type_Info_Procedure* %43, i32 0, i32 1, !dbg !5244 | |
%418 = load %runtime.Type_Info*, %runtime.Type_Info** %417, align 8, !dbg !5244 | |
%419 = icmp ne %runtime.Type_Info* %418, null, !dbg !5244 | |
br i1 %419, label %if.then39, label %typeswitch.done, !dbg !5244 | |
if.then39: ; preds = %if.done38 | |
%420 = load [2 x i64], [2 x i64]* %358, align 8, !dbg !5136 | |
%421 = bitcast [2 x i64]* %52 to %..string*, !dbg !5136 | |
store %..string { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"csbs$d9", i64 0, i64 0), i64 4 }, %..string* %421, align 8, !dbg !5136 | |
%422 = load [2 x i64], [2 x i64]* %52, align 8, !dbg !5136 | |
%423 = call i64 @strings.write_string_writer([2 x i64] %420, [2 x i64] %422, i8* %__.context_ptr), !dbg !5136 | |
%424 = add i64 %.6, %423, !dbg !5136 | |
call void @llvm.dbg.value(metadata i64 %424, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
%425 = load %runtime.Type_Info*, %runtime.Type_Info** %417, align 8, !dbg !5245 | |
%426 = load [2 x i64], [2 x i64]* %358, align 8, !dbg !5245 | |
%427 = call i64 @reflect.write_type_writer([2 x i64] %426, %runtime.Type_Info* %425, i8* %__.context_ptr), !dbg !5245 | |
%428 = add i64 %424, %427, !dbg !5245 | |
call void @llvm.dbg.value(metadata i64 %428, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
br label %typeswitch.done, !dbg !5244 | |
typeswitch.body41: ; preds = %if.done | |
%429 = bitcast %runtime.Type_Info_Tuple* %53 to i8*, !dbg !5092 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %429, i8* align 8 %137, i64 32, i1 false), !dbg !5092 | |
call void @llvm.dbg.value(metadata i64 0, metadata !5060, metadata !DIExpression()), !dbg !5246 | |
%430 = getelementptr inbounds %runtime.Type_Info_Tuple, %runtime.Type_Info_Tuple* %53, i32 0, i32 1, !dbg !5247 | |
%431 = getelementptr inbounds { %..string*, i64 }, { %..string*, i64 }* %430, i32 0, i32 1, !dbg !5247 | |
%432 = load i64, i64* %431, align 8, !dbg !5247 | |
call void @llvm.dbg.value(metadata i64 %432, metadata !5060, metadata !DIExpression()), !dbg !5246 | |
%433 = icmp ne i64 %432, 1, !dbg !5248 | |
br i1 %433, label %if.then42, label %if.done43, !dbg !5248 | |
if.then42: ; preds = %typeswitch.body41 | |
%434 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5139 | |
%435 = load [2 x i64], [2 x i64]* %434, align 8, !dbg !5139 | |
%436 = bitcast [2 x i64]* %54 to %..string*, !dbg !5139 | |
store %..string { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"csbs$d6", i64 0, i64 0), i64 1 }, %..string* %436, align 8, !dbg !5139 | |
%437 = load [2 x i64], [2 x i64]* %54, align 8, !dbg !5139 | |
%438 = call i64 @strings.write_string_writer([2 x i64] %435, [2 x i64] %437, i8* %__.context_ptr), !dbg !5139 | |
call void @llvm.dbg.value(metadata i64 %438, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
br label %if.done43, !dbg !5248 | |
if.done43: ; preds = %if.then42, %typeswitch.body41 | |
%.8 = phi i64 [ %438, %if.then42 ], [ 0, %typeswitch.body41 ] | |
call void @llvm.dbg.value(metadata i64 %.8, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
%439 = bitcast %..string* %55 to i8*, !dbg !5143 | |
call void @llvm.memset.p0i8.i64(i8* %439, i8 0, i64 16, i1 false), !dbg !5143 | |
call void @llvm.dbg.value(metadata i64 0, metadata !5063, metadata !DIExpression()), !dbg !5249 | |
%440 = load i64, i64* %431, align 8, !dbg !5143 | |
br label %for.index.loop44, !dbg !5143 | |
for.index.loop44: ; preds = %if.done49, %if.done43 | |
%.0104 = phi i64 [ -1, %if.done43 ], [ %441, %if.done49 ], !dbg !5143 | |
%.9 = phi i64 [ %.8, %if.done43 ], [ %481, %if.done49 ], !dbg !5219 | |
call void @llvm.dbg.value(metadata i64 %.9, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
%441 = add i64 %.0104, 1, !dbg !5143 | |
%442 = icmp slt i64 %441, %440, !dbg !5143 | |
br i1 %442, label %for.index.body45, label %for.index.done50, !dbg !5143 | |
for.index.body45: ; preds = %for.index.loop44 | |
%443 = getelementptr inbounds { %..string*, i64 }, { %..string*, i64 }* %430, i32 0, i32 0, !dbg !5143 | |
%444 = load %..string*, %..string** %443, align 8, !dbg !5143 | |
%445 = getelementptr %..string, %..string* %444, i64 %441, !dbg !5143 | |
%446 = bitcast %..string* %56 to i8*, !dbg !5143 | |
%447 = bitcast %..string* %445 to i8*, !dbg !5143 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %446, i8* align 8 %447, i64 16, i1 false), !dbg !5143 | |
call void @llvm.dbg.value(metadata i64 %441, metadata !5063, metadata !DIExpression()), !dbg !5249 | |
%448 = icmp sgt i64 %441, 0, !dbg !5250 | |
br i1 %448, label %if.then46, label %if.done47, !dbg !5250 | |
if.then46: ; preds = %for.index.body45 | |
%449 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5144 | |
%450 = load [2 x i64], [2 x i64]* %449, align 8, !dbg !5144 | |
%451 = bitcast [2 x i64]* %57 to %..string*, !dbg !5144 | |
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$d7", i64 0, i64 0), i64 2 }, %..string* %451, align 8, !dbg !5144 | |
%452 = load [2 x i64], [2 x i64]* %57, align 8, !dbg !5144 | |
%453 = call i64 @strings.write_string_writer([2 x i64] %450, [2 x i64] %452, i8* %__.context_ptr), !dbg !5144 | |
%454 = add i64 %.9, %453, !dbg !5144 | |
call void @llvm.dbg.value(metadata i64 %454, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
br label %if.done47, !dbg !5250 | |
if.done47: ; preds = %if.then46, %for.index.body45 | |
%.10 = phi i64 [ %454, %if.then46 ], [ %.9, %for.index.body45 ], !dbg !5219 | |
call void @llvm.dbg.value(metadata i64 %.10, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
call void @llvm.dbg.value(metadata %runtime.Type_Info* null, metadata !5064, metadata !DIExpression()), !dbg !5251 | |
%455 = getelementptr inbounds %runtime.Type_Info_Tuple, %runtime.Type_Info_Tuple* %53, i32 0, i32 0, !dbg !5147 | |
%456 = getelementptr inbounds { %runtime.Type_Info**, i64 }, { %runtime.Type_Info**, i64 }* %455, i32 0, i32 0, !dbg !5147 | |
%457 = load %runtime.Type_Info**, %runtime.Type_Info*** %456, align 8, !dbg !5147 | |
%458 = getelementptr inbounds { %runtime.Type_Info**, i64 }, { %runtime.Type_Info**, i64 }* %455, i32 0, i32 1, !dbg !5147 | |
%459 = load i64, i64* %458, align 8, !dbg !5147 | |
%460 = bitcast [2 x i64]* %58 to %..string*, !dbg !5147 | |
store %..string { i8* getelementptr inbounds ([52 x i8], [52 x i8]* @"csbs$d5", i64 0, i64 0), i64 51 }, %..string* %460, align 8, !dbg !5147 | |
%461 = load [2 x i64], [2 x i64]* %58, align 8, !dbg !5147 | |
call void @runtime.bounds_check_error([2 x i64] %461, i32 448, i32 20, i64 %441, i64 %459), !dbg !5147 | |
%462 = getelementptr %runtime.Type_Info*, %runtime.Type_Info** %457, i64 %441, !dbg !5147 | |
%463 = load %runtime.Type_Info*, %runtime.Type_Info** %462, align 8, !dbg !5147 | |
call void @llvm.dbg.value(metadata %runtime.Type_Info* %463, metadata !5064, metadata !DIExpression()), !dbg !5251 | |
%464 = getelementptr inbounds %..string, %..string* %56, i32 0, i32 1, !dbg !5252 | |
%465 = load i64, i64* %464, align 8, !dbg !5252 | |
%466 = icmp sgt i64 %465, 0, !dbg !5252 | |
br i1 %466, label %if.then48, label %if.done49, !dbg !5252 | |
if.then48: ; preds = %if.done47 | |
%467 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5253 | |
%468 = load [2 x i64], [2 x i64]* %467, align 8, !dbg !5253 | |
%469 = bitcast %..string* %56 to [2 x i64]*, !dbg !5253 | |
%470 = load [2 x i64], [2 x i64]* %469, align 8, !dbg !5253 | |
%471 = call i64 @strings.write_string_writer([2 x i64] %468, [2 x i64] %470, i8* %__.context_ptr), !dbg !5253 | |
%472 = add i64 %.10, %471, !dbg !5253 | |
call void @llvm.dbg.value(metadata i64 %472, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
%473 = load [2 x i64], [2 x i64]* %467, align 8, !dbg !5148 | |
%474 = bitcast [2 x i64]* %59 to %..string*, !dbg !5148 | |
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$7b", i64 0, i64 0), i64 2 }, %..string* %474, align 8, !dbg !5148 | |
%475 = load [2 x i64], [2 x i64]* %59, align 8, !dbg !5148 | |
%476 = call i64 @strings.write_string_writer([2 x i64] %473, [2 x i64] %475, i8* %__.context_ptr), !dbg !5148 | |
%477 = add i64 %472, %476, !dbg !5148 | |
call void @llvm.dbg.value(metadata i64 %477, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
br label %if.done49, !dbg !5252 | |
if.done49: ; preds = %if.then48, %if.done47 | |
%.11 = phi i64 [ %477, %if.then48 ], [ %.10, %if.done47 ], !dbg !5251 | |
call void @llvm.dbg.value(metadata i64 %.11, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
%478 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5254 | |
%479 = load [2 x i64], [2 x i64]* %478, align 8, !dbg !5254 | |
%480 = call i64 @reflect.write_type_writer([2 x i64] %479, %runtime.Type_Info* %463, i8* %__.context_ptr), !dbg !5254 | |
%481 = add i64 %.11, %480, !dbg !5254 | |
call void @llvm.dbg.value(metadata i64 %481, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
br label %for.index.loop44, !dbg !5143 | |
for.index.done50: ; preds = %for.index.loop44 | |
br i1 %433, label %if.then51, label %typeswitch.done, !dbg !5255 | |
if.then51: ; preds = %for.index.done50 | |
%482 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5151 | |
%483 = load [2 x i64], [2 x i64]* %482, align 8, !dbg !5151 | |
%484 = bitcast [2 x i64]* %60 to %..string*, !dbg !5151 | |
store %..string { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"csbs$d8", i64 0, i64 0), i64 1 }, %..string* %484, align 8, !dbg !5151 | |
%485 = load [2 x i64], [2 x i64]* %60, align 8, !dbg !5151 | |
%486 = call i64 @strings.write_string_writer([2 x i64] %483, [2 x i64] %485, i8* %__.context_ptr), !dbg !5151 | |
%487 = add i64 %.9, %486, !dbg !5151 | |
call void @llvm.dbg.value(metadata i64 %487, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
br label %typeswitch.done, !dbg !5255 | |
typeswitch.body53: ; preds = %if.done | |
%488 = bitcast %runtime.Type_Info_Array* %61 to i8*, !dbg !5092 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %488, i8* align 8 %137, i64 24, i1 false), !dbg !5092 | |
%489 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5154 | |
%490 = load [2 x i64], [2 x i64]* %489, align 8, !dbg !5154 | |
%491 = bitcast [2 x i64]* %62 to %..string*, !dbg !5154 | |
store %..string { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"csbs$da", i64 0, i64 0), i64 1 }, %..string* %491, align 8, !dbg !5154 | |
%492 = load [2 x i64], [2 x i64]* %62, align 8, !dbg !5154 | |
%493 = call [2 x i64] @io.write_string([2 x i64] %490, [2 x i64] %492, i8* %__.context_ptr), !dbg !5154 | |
%494 = bitcast { i64, i32 }* %63 to [2 x i64]*, !dbg !5154 | |
store [2 x i64] %493, [2 x i64]* %494, align 8, !dbg !5154 | |
%495 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %63, i32 0, i32 0, !dbg !5154 | |
%496 = load i64, i64* %495, align 8, !dbg !5154 | |
%497 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %63, i32 0, i32 1, !dbg !5154 | |
%498 = load i32, i32* %497, align 4, !dbg !5154 | |
%499 = call i64 @reflect.write_type_writer._n2-1(i64 %496, i32 %498, i8* %__.context_ptr), !dbg !5154 | |
call void @llvm.dbg.value(metadata i64 %499, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
%500 = getelementptr inbounds %runtime.Type_Info_Array, %runtime.Type_Info_Array* %61, i32 0, i32 2, !dbg !5155 | |
%501 = load i64, i64* %500, align 8, !dbg !5155 | |
%502 = load [2 x i64], [2 x i64]* %489, align 8, !dbg !5155 | |
%503 = call [2 x i64] @io.write_i64([2 x i64] %502, i64 %501, i64 10, i8* %__.context_ptr), !dbg !5155 | |
%504 = bitcast { i64, i32 }* %64 to [2 x i64]*, !dbg !5155 | |
store [2 x i64] %503, [2 x i64]* %504, align 8, !dbg !5155 | |
%505 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %64, i32 0, i32 0, !dbg !5155 | |
%506 = load i64, i64* %505, align 8, !dbg !5155 | |
%507 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %64, i32 0, i32 1, !dbg !5155 | |
%508 = load i32, i32* %507, align 4, !dbg !5155 | |
%509 = call i64 @reflect.write_type_writer._n2-1(i64 %506, i32 %508, i8* %__.context_ptr), !dbg !5155 | |
%510 = add i64 %499, %509, !dbg !5155 | |
call void @llvm.dbg.value(metadata i64 %510, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
%511 = load [2 x i64], [2 x i64]* %489, align 8, !dbg !5156 | |
%512 = bitcast [2 x i64]* %65 to %..string*, !dbg !5156 | |
store %..string { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"csbs$db", i64 0, i64 0), i64 1 }, %..string* %512, align 8, !dbg !5156 | |
%513 = load [2 x i64], [2 x i64]* %65, align 8, !dbg !5156 | |
%514 = call [2 x i64] @io.write_string([2 x i64] %511, [2 x i64] %513, i8* %__.context_ptr), !dbg !5156 | |
%515 = bitcast { i64, i32 }* %66 to [2 x i64]*, !dbg !5156 | |
store [2 x i64] %514, [2 x i64]* %515, align 8, !dbg !5156 | |
%516 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %66, i32 0, i32 0, !dbg !5156 | |
%517 = load i64, i64* %516, align 8, !dbg !5156 | |
%518 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %66, i32 0, i32 1, !dbg !5156 | |
%519 = load i32, i32* %518, align 4, !dbg !5156 | |
%520 = call i64 @reflect.write_type_writer._n2-1(i64 %517, i32 %519, i8* %__.context_ptr), !dbg !5156 | |
%521 = add i64 %510, %520, !dbg !5156 | |
call void @llvm.dbg.value(metadata i64 %521, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
%522 = getelementptr inbounds %runtime.Type_Info_Array, %runtime.Type_Info_Array* %61, i32 0, i32 0, !dbg !5256 | |
%523 = load %runtime.Type_Info*, %runtime.Type_Info** %522, align 8, !dbg !5256 | |
%524 = load [2 x i64], [2 x i64]* %489, align 8, !dbg !5256 | |
%525 = call i64 @reflect.write_type_writer([2 x i64] %524, %runtime.Type_Info* %523, i8* %__.context_ptr), !dbg !5256 | |
%526 = add i64 %521, %525, !dbg !5256 | |
call void @llvm.dbg.value(metadata i64 %526, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
br label %typeswitch.done, !dbg !5092 | |
typeswitch.body54: ; preds = %if.done | |
%527 = bitcast %runtime.Type_Info_Enumerated_Array* %67 to i8*, !dbg !5092 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %527, i8* align 8 %137, i64 48, i1 false), !dbg !5092 | |
%528 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5157 | |
%529 = load [2 x i64], [2 x i64]* %528, align 8, !dbg !5157 | |
%530 = bitcast [2 x i64]* %68 to %..string*, !dbg !5157 | |
store %..string { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"csbs$da", i64 0, i64 0), i64 1 }, %..string* %530, align 8, !dbg !5157 | |
%531 = load [2 x i64], [2 x i64]* %68, align 8, !dbg !5157 | |
%532 = call i64 @strings.write_string_writer([2 x i64] %529, [2 x i64] %531, i8* %__.context_ptr), !dbg !5157 | |
call void @llvm.dbg.value(metadata i64 %532, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
%533 = getelementptr inbounds %runtime.Type_Info_Enumerated_Array, %runtime.Type_Info_Enumerated_Array* %67, i32 0, i32 1, !dbg !5257 | |
%534 = load %runtime.Type_Info*, %runtime.Type_Info** %533, align 8, !dbg !5257 | |
%535 = load [2 x i64], [2 x i64]* %528, align 8, !dbg !5257 | |
%536 = call i64 @reflect.write_type_writer([2 x i64] %535, %runtime.Type_Info* %534, i8* %__.context_ptr), !dbg !5257 | |
%537 = add i64 %532, %536, !dbg !5257 | |
call void @llvm.dbg.value(metadata i64 %537, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
%538 = load [2 x i64], [2 x i64]* %528, align 8, !dbg !5158 | |
%539 = bitcast [2 x i64]* %69 to %..string*, !dbg !5158 | |
store %..string { i8* getelementptr inbounds ([2 x i8], [2 x i8]* @"csbs$db", i64 0, i64 0), i64 1 }, %..string* %539, align 8, !dbg !5158 | |
%540 = load [2 x i64], [2 x i64]* %69, align 8, !dbg !5158 | |
%541 = call i64 @strings.write_string_writer([2 x i64] %538, [2 x i64] %540, i8* %__.context_ptr), !dbg !5158 | |
%542 = add i64 %537, %541, !dbg !5158 | |
call void @llvm.dbg.value(metadata i64 %542, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
%543 = getelementptr inbounds %runtime.Type_Info_Enumerated_Array, %runtime.Type_Info_Enumerated_Array* %67, i32 0, i32 0, !dbg !5258 | |
%544 = load %runtime.Type_Info*, %runtime.Type_Info** %543, align 8, !dbg !5258 | |
%545 = load [2 x i64], [2 x i64]* %528, align 8, !dbg !5258 | |
%546 = call i64 @reflect.write_type_writer([2 x i64] %545, %runtime.Type_Info* %544, i8* %__.context_ptr), !dbg !5258 | |
%547 = add i64 %542, %546, !dbg !5258 | |
call void @llvm.dbg.value(metadata i64 %547, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
br label %typeswitch.done, !dbg !5092 | |
typeswitch.body55: ; preds = %if.done | |
%548 = bitcast %runtime.Type_Info_Dynamic_Array* %70 to i8*, !dbg !5092 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %548, i8* align 8 %137, i64 16, i1 false), !dbg !5092 | |
%549 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5159 | |
%550 = load [2 x i64], [2 x i64]* %549, align 8, !dbg !5159 | |
%551 = bitcast [2 x i64]* %71 to %..string*, !dbg !5159 | |
store %..string { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"csbs$dc", i64 0, i64 0), i64 9 }, %..string* %551, align 8, !dbg !5159 | |
%552 = load [2 x i64], [2 x i64]* %71, align 8, !dbg !5159 | |
%553 = call [2 x i64] @io.write_string([2 x i64] %550, [2 x i64] %552, i8* %__.context_ptr), !dbg !5159 | |
%554 = bitcast { i64, i32 }* %72 to [2 x i64]*, !dbg !5159 | |
store [2 x i64] %553, [2 x i64]* %554, align 8, !dbg !5159 | |
%555 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %72, i32 0, i32 0, !dbg !5159 | |
%556 = load i64, i64* %555, align 8, !dbg !5159 | |
%557 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %72, i32 0, i32 1, !dbg !5159 | |
%558 = load i32, i32* %557, align 4, !dbg !5159 | |
%559 = call i64 @reflect.write_type_writer._n2-1(i64 %556, i32 %558, i8* %__.context_ptr), !dbg !5159 | |
call void @llvm.dbg.value(metadata i64 %559, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
%560 = getelementptr inbounds %runtime.Type_Info_Dynamic_Array, %runtime.Type_Info_Dynamic_Array* %70, i32 0, i32 0, !dbg !5259 | |
%561 = load %runtime.Type_Info*, %runtime.Type_Info** %560, align 8, !dbg !5259 | |
%562 = load [2 x i64], [2 x i64]* %549, align 8, !dbg !5259 | |
%563 = call i64 @reflect.write_type_writer([2 x i64] %562, %runtime.Type_Info* %561, i8* %__.context_ptr), !dbg !5259 | |
%564 = add i64 %559, %563, !dbg !5259 | |
call void @llvm.dbg.value(metadata i64 %564, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
br label %typeswitch.done, !dbg !5092 | |
typeswitch.body56: ; preds = %if.done | |
%565 = bitcast %runtime.Type_Info_Slice* %73 to i8*, !dbg !5092 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %565, i8* align 8 %137, i64 16, i1 false), !dbg !5092 | |
%566 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5160 | |
%567 = load [2 x i64], [2 x i64]* %566, align 8, !dbg !5160 | |
%568 = bitcast [2 x i64]* %74 to %..string*, !dbg !5160 | |
store %..string { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"csbs$dd", i64 0, i64 0), i64 2 }, %..string* %568, align 8, !dbg !5160 | |
%569 = load [2 x i64], [2 x i64]* %74, align 8, !dbg !5160 | |
%570 = call [2 x i64] @io.write_string([2 x i64] %567, [2 x i64] %569, i8* %__.context_ptr), !dbg !5160 | |
%571 = bitcast { i64, i32 }* %75 to [2 x i64]*, !dbg !5160 | |
store [2 x i64] %570, [2 x i64]* %571, align 8, !dbg !5160 | |
%572 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %75, i32 0, i32 0, !dbg !5160 | |
%573 = load i64, i64* %572, align 8, !dbg !5160 | |
%574 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %75, i32 0, i32 1, !dbg !5160 | |
%575 = load i32, i32* %574, align 4, !dbg !5160 | |
%576 = call i64 @reflect.write_type_writer._n2-1(i64 %573, i32 %575, i8* %__.context_ptr), !dbg !5160 | |
call void @llvm.dbg.value(metadata i64 %576, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
%577 = getelementptr inbounds %runtime.Type_Info_Slice, %runtime.Type_Info_Slice* %73, i32 0, i32 0, !dbg !5260 | |
%578 = load %runtime.Type_Info*, %runtime.Type_Info** %577, align 8, !dbg !5260 | |
%579 = load [2 x i64], [2 x i64]* %566, align 8, !dbg !5260 | |
%580 = call i64 @reflect.write_type_writer([2 x i64] %579, %runtime.Type_Info* %578, i8* %__.context_ptr), !dbg !5260 | |
%581 = add i64 %576, %580, !dbg !5260 | |
call void @llvm.dbg.value(metadata i64 %581, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
br label %typeswitch.done, !dbg !5092 | |
typeswitch.body57: ; preds = %if.done | |
%582 = bitcast %runtime.Type_Info_Map* %76 to i8*, !dbg !5092 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %582, i8* align 8 %137, i64 40, i1 false), !dbg !5092 | |
%583 = bitcast %io.Writer* %3 to [2 x i64]*, !dbg !5161 | |
%584 = load [2 x i64], [2 x i64]* %583, align 8, !dbg !5161 | |
%585 = bitcast [2 x i64]* %77 to %..string*, !dbg !5161 | |
store %..string { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"csbs$de", i64 0, i64 0), i64 4 }, %..string* %585, align 8, !dbg !5161 | |
%586 = load [2 x i64], [2 x i64]* %77, align 8, !dbg !5161 | |
%587 = call [2 x i64] @io.write_string([2 x i64] %584, [2 x i64] %586, i8* %__.context_ptr), !dbg !5161 | |
%588 = bitcast { i64, i32 }* %78 to [2 x i64]*, !dbg !5161 | |
store [2 x i64] %587, [2 x i64]* %588, align 8, !dbg !5161 | |
%589 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %78, i32 0, i32 0, !dbg !5161 | |
%590 = load i64, i64* %589, align 8, !dbg !5161 | |
%591 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %78, i32 0, i32 1, !dbg !5161 | |
%592 = load i32, i32* %591, align 4, !dbg !5161 | |
%593 = call i64 @reflect.write_type_writer._n2-1(i64 %590, i32 %592, i8* %__.context_ptr), !dbg !5161 | |
call void @llvm.dbg.value(metadata i64 %593, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
%594 = getelementptr inbounds %runtime.Type_Info_Map, %runtime.Type_Info_Map* %76, i32 0, i32 0, !dbg !5261 | |
%595 = load %runtime.Type_Info*, %runtime.Type_Info** %594, align 8, !dbg !5261 | |
%596 = load [2 x i64], [2 x i64]* %583, align 8, !dbg !5261 | |
%597 = call i64 @reflect.write_type_writer([2 x i64] %596, %runtime.Type_Info* %595, i8* %__.context_ptr), !dbg !5261 | |
%598 = add i64 %593, %597, !dbg !5261 | |
call void @llvm.dbg.value(metadata i64 %598, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
%599 = load [2 x i64], [2 x i64]* %583, align 8, !dbg !5262 | |
%600 = call i32 @io.write_byte_to_writer([2 x i64] %599, i8 93, i8* %__.context_ptr), !dbg !5262 | |
%601 = call i64 @reflect.write_type_writer._n1-0(i32 %600, i8* %__.context_ptr), !dbg !5262 | |
%602 = add i64 %598, %601, !dbg !5262 | |
call void @llvm.dbg.value(metadata i64 %602, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
%603 = getelementptr inbounds %runtime.Type_Info_Map, %runtime.Type_Info_Map* %76, i32 0, i32 1, !dbg !5263 | |
%604 = load %runtime.Type_Info*, %runtime.Type_Info** %603, align 8, !dbg !5263 | |
%605 = load [2 x i64], [2 x i64]* %583, align 8, !dbg !5263 | |
%606 = call i64 @reflect.write_type_writer([2 x i64] %605, %runtime.Type_Info* %604, i8* %__.context_ptr), !dbg !5263 | |
%607 = add i64 %602, %606, !dbg !5263 | |
call void @llvm.dbg.value(metadata i64 %607, metadata !5037, metadata !DIExpression()), !dbg !5219 | |
br label %typeswitch.done, !dbg !5092 | |
typeswitch.body58: ; preds = %if.done | |
%608 = bitcast %runtime.Type_Info_Struct* %79 to i8*, !dbg !5092 | |
%609 = getelementptr i8, i8* %608, i64 120, !dbg !5092 | |
call void @llvm.memset.p0i8.i64(i8* align 8 %609, i8 0, i64 0, i1 false), !dbg !5092 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %608, i8* align 8 %137, i64 120, i1 false), !dbg !5092 | |
%610 = getelementptr inbounds %runtime.Type_Info_Struct, %runtime.Type_Info_Struct* %79, i32 0, i32 9, !dbg !5264 | |
%611 = load i8, i8* %610, align 1, !dbg !5264 | |
switch i8 %611, label %switch.done63 [ | |
i8 3, label %switch.case.body62 | |
i8 1, label %switch.case.body60 | |
i8 2, label %switch.case.body61 | |
], !dbg !5264 | |
switch.case.body60: ; preds = %typeswitch.body58 | |
%612 = bitcast %io.Writer* %3 to [2 x i64] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment