; ModuleID = 'nn_cuda-host-x86_64-unknown-linux-gnu.bc' source_filename = "nn_cuda.cu" target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" %struct._IO_FILE = type { i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, %struct._IO_marker*, %struct._IO_FILE*, i32, i32, i64, i16, i8, [1 x i8], i8*, i64, i8*, i8*, i8*, i8*, i64, i32, [20 x i8] } %struct._IO_marker = type { %struct._IO_marker*, %struct._IO_FILE*, i32 } %struct.latLong = type { float, float } %struct.dim3 = type { i32, i32, i32 } %struct.CUstream_st = type opaque %"class.std::vector" = type { %"struct.std::_Vector_base" } %"struct.std::_Vector_base" = type { %"struct.std::_Vector_base >::_Vector_impl" } %"struct.std::_Vector_base >::_Vector_impl" = type { %struct.record*, %struct.record*, %struct.record* } %struct.record = type { [53 x i8], float } %"class.std::vector.0" = type { %"struct.std::_Vector_base.1" } %"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base >::_Vector_impl" } %"struct.std::_Vector_base >::_Vector_impl" = type { %struct.latLong*, %struct.latLong*, %struct.latLong* } %struct.cudaDeviceProp = type { [256 x i8], %struct.CUuuid_st, [8 x i8], i32, i64, i64, i32, i32, i64, i32, [3 x i32], [3 x i32], i32, i64, i32, i32, i64, i64, i32, i32, i32, i32, i32, i32, i32, i32, i32, [2 x i32], [2 x i32], [3 x i32], [2 x i32], [3 x i32], [3 x i32], i32, [2 x i32], [3 x i32], [2 x i32], i32, [2 x i32], [3 x i32], [2 x i32], [3 x i32], i32, [2 x i32], i64, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i64, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i64, i32, i32 } %struct.CUuuid_st = type { [16 x i8] } %"class.std::allocator.2" = type { i8 } %"class.std::allocator" = type { i8 } %"class.__gnu_cxx::__normal_iterator" = type { %struct.latLong* } %"class.__gnu_cxx::__normal_iterator.5" = type { %struct.record* } %"class.__gnu_cxx::new_allocator" = type { i8 } %"class.__gnu_cxx::new_allocator.3" = type { i8 } $_ZNSt6vectorI6recordSaIS0_EEC2Ev = comdat any $_ZNSt6vectorI7latLongSaIS0_EEC2Ev = comdat any $_ZN4dim3C2Ejjj = comdat any $_ZNSt6vectorI7latLongSaIS0_EEixEm = comdat any $_ZNSt6vectorI6recordSaIS0_EEixEm = comdat any $_ZNSt6vectorI7latLongSaIS0_EED2Ev = comdat any $__clang_call_terminate = comdat any $_ZNSt6vectorI6recordSaIS0_EED2Ev = comdat any $_ZNSt6vectorI7latLongSaIS0_EE9push_backERKS0_ = comdat any $_ZNSt6vectorI6recordSaIS0_EE9push_backERKS0_ = comdat any $_ZNSt12_Vector_baseI6recordSaIS0_EEC2Ev = comdat any $_ZNSt12_Vector_baseI6recordSaIS0_EE12_Vector_implC2Ev = comdat any $_ZNSaI6recordEC2Ev = comdat any $_ZN9__gnu_cxx13new_allocatorI6recordEC2Ev = comdat any $_ZSt8_DestroyIP6recordS0_EvT_S2_RSaIT0_E = comdat any $_ZNSt12_Vector_baseI6recordSaIS0_EE19_M_get_Tp_allocatorEv = comdat any $_ZNSt12_Vector_baseI6recordSaIS0_EED2Ev = comdat any $_ZSt8_DestroyIP6recordEvT_S2_ = comdat any $_ZNSt12_Destroy_auxILb1EE9__destroyIP6recordEEvT_S4_ = comdat any $_ZNSt12_Vector_baseI6recordSaIS0_EE13_M_deallocateEPS0_m = comdat any $_ZNSt12_Vector_baseI6recordSaIS0_EE12_Vector_implD2Ev = comdat any $_ZN9__gnu_cxx14__alloc_traitsISaI6recordEE10deallocateERS2_PS1_m = comdat any $_ZN9__gnu_cxx13new_allocatorI6recordE10deallocateEPS1_m = comdat any $_ZNSaI6recordED2Ev = comdat any $_ZN9__gnu_cxx13new_allocatorI6recordED2Ev = comdat any $_ZNSt12_Vector_baseI7latLongSaIS0_EEC2Ev = comdat any $_ZNSt12_Vector_baseI7latLongSaIS0_EE12_Vector_implC2Ev = comdat any $_ZNSaI7latLongEC2Ev = comdat any $_ZN9__gnu_cxx13new_allocatorI7latLongEC2Ev = comdat any $_ZSt8_DestroyIP7latLongS0_EvT_S2_RSaIT0_E = comdat any $_ZNSt12_Vector_baseI7latLongSaIS0_EE19_M_get_Tp_allocatorEv = comdat any $_ZNSt12_Vector_baseI7latLongSaIS0_EED2Ev = comdat any $_ZSt8_DestroyIP7latLongEvT_S2_ = comdat any $_ZNSt12_Destroy_auxILb1EE9__destroyIP7latLongEEvT_S4_ = comdat any $_ZNSt12_Vector_baseI7latLongSaIS0_EE13_M_deallocateEPS0_m = comdat any $_ZNSt12_Vector_baseI7latLongSaIS0_EE12_Vector_implD2Ev = comdat any $_ZN9__gnu_cxx14__alloc_traitsISaI7latLongEE10deallocateERS2_PS1_m = comdat any $_ZN9__gnu_cxx13new_allocatorI7latLongE10deallocateEPS1_m = comdat any $_ZNSaI7latLongED2Ev = comdat any $_ZN9__gnu_cxx13new_allocatorI7latLongED2Ev = comdat any $_ZN9__gnu_cxx14__alloc_traitsISaI7latLongEE9constructIS1_EEvRS2_PS1_RKT_ = comdat any $_ZNSt6vectorI7latLongSaIS0_EE17_M_realloc_insertEN9__gnu_cxx17__normal_iteratorIPS0_S2_EERKS0_ = comdat any $_ZNSt6vectorI7latLongSaIS0_EE3endEv = comdat any $_ZN9__gnu_cxx13new_allocatorI7latLongE9constructEPS1_RKS1_ = comdat any $_ZNKSt6vectorI7latLongSaIS0_EE12_M_check_lenEmPKc = comdat any $_ZN9__gnu_cxxmiIP7latLongSt6vectorIS1_SaIS1_EEEENS_17__normal_iteratorIT_T0_E15difference_typeERKS9_SC_ = comdat any $_ZNSt6vectorI7latLongSaIS0_EE5beginEv = comdat any $_ZNSt12_Vector_baseI7latLongSaIS0_EE11_M_allocateEm = comdat any $_ZSt34__uninitialized_move_if_noexcept_aIP7latLongS1_SaIS0_EET0_T_S4_S3_RT1_ = comdat any $_ZNK9__gnu_cxx17__normal_iteratorIP7latLongSt6vectorIS1_SaIS1_EEE4baseEv = comdat any $_ZN9__gnu_cxx14__alloc_traitsISaI7latLongEE7destroyERS2_PS1_ = comdat any $_ZNKSt6vectorI7latLongSaIS0_EE8max_sizeEv = comdat any $_ZNKSt6vectorI7latLongSaIS0_EE4sizeEv = comdat any $_ZSt3maxImERKT_S2_S2_ = comdat any $_ZN9__gnu_cxx14__alloc_traitsISaI7latLongEE8max_sizeERKS2_ = comdat any $_ZNKSt12_Vector_baseI7latLongSaIS0_EE19_M_get_Tp_allocatorEv = comdat any $_ZNK9__gnu_cxx13new_allocatorI7latLongE8max_sizeEv = comdat any $_ZN9__gnu_cxx17__normal_iteratorIP7latLongSt6vectorIS1_SaIS1_EEEC2ERKS2_ = comdat any $_ZN9__gnu_cxx14__alloc_traitsISaI7latLongEE8allocateERS2_m = comdat any $_ZN9__gnu_cxx13new_allocatorI7latLongE8allocateEmPKv = comdat any $_ZSt22__uninitialized_copy_aIP7latLongS1_S0_ET0_T_S3_S2_RSaIT1_E = comdat any $_ZSt18uninitialized_copyIP7latLongS1_ET0_T_S3_S2_ = comdat any $_ZNSt20__uninitialized_copyILb1EE13__uninit_copyIP7latLongS3_EET0_T_S5_S4_ = comdat any $_ZSt4copyIP7latLongS1_ET0_T_S3_S2_ = comdat any $_ZSt14__copy_move_a2ILb0EP7latLongS1_ET1_T0_S3_S2_ = comdat any $_ZSt12__miter_baseIP7latLongET_S2_ = comdat any $_ZSt13__copy_move_aILb0EP7latLongS1_ET1_T0_S3_S2_ = comdat any $_ZSt12__niter_baseIP7latLongET_S2_ = comdat any $_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mI7latLongEEPT_PKS4_S7_S5_ = comdat any $_ZN9__gnu_cxx13new_allocatorI7latLongE7destroyEPS1_ = comdat any $_ZN9__gnu_cxx14__alloc_traitsISaI6recordEE9constructIS1_EEvRS2_PS1_RKT_ = comdat any $_ZNSt6vectorI6recordSaIS0_EE17_M_realloc_insertEN9__gnu_cxx17__normal_iteratorIPS0_S2_EERKS0_ = comdat any $_ZNSt6vectorI6recordSaIS0_EE3endEv = comdat any $_ZN9__gnu_cxx13new_allocatorI6recordE9constructEPS1_RKS1_ = comdat any $_ZNKSt6vectorI6recordSaIS0_EE12_M_check_lenEmPKc = comdat any $_ZN9__gnu_cxxmiIP6recordSt6vectorIS1_SaIS1_EEEENS_17__normal_iteratorIT_T0_E15difference_typeERKS9_SC_ = comdat any $_ZNSt6vectorI6recordSaIS0_EE5beginEv = comdat any $_ZNSt12_Vector_baseI6recordSaIS0_EE11_M_allocateEm = comdat any $_ZSt34__uninitialized_move_if_noexcept_aIP6recordS1_SaIS0_EET0_T_S4_S3_RT1_ = comdat any $_ZNK9__gnu_cxx17__normal_iteratorIP6recordSt6vectorIS1_SaIS1_EEE4baseEv = comdat any $_ZN9__gnu_cxx14__alloc_traitsISaI6recordEE7destroyERS2_PS1_ = comdat any $_ZNKSt6vectorI6recordSaIS0_EE8max_sizeEv = comdat any $_ZNKSt6vectorI6recordSaIS0_EE4sizeEv = comdat any $_ZN9__gnu_cxx14__alloc_traitsISaI6recordEE8max_sizeERKS2_ = comdat any $_ZNKSt12_Vector_baseI6recordSaIS0_EE19_M_get_Tp_allocatorEv = comdat any $_ZNK9__gnu_cxx13new_allocatorI6recordE8max_sizeEv = comdat any $_ZN9__gnu_cxx17__normal_iteratorIP6recordSt6vectorIS1_SaIS1_EEEC2ERKS2_ = comdat any $_ZN9__gnu_cxx14__alloc_traitsISaI6recordEE8allocateERS2_m = comdat any $_ZN9__gnu_cxx13new_allocatorI6recordE8allocateEmPKv = comdat any $_ZSt22__uninitialized_copy_aIP6recordS1_S0_ET0_T_S3_S2_RSaIT1_E = comdat any $_ZSt18uninitialized_copyIP6recordS1_ET0_T_S3_S2_ = comdat any $_ZNSt20__uninitialized_copyILb1EE13__uninit_copyIP6recordS3_EET0_T_S5_S4_ = comdat any $_ZSt4copyIP6recordS1_ET0_T_S3_S2_ = comdat any $_ZSt14__copy_move_a2ILb0EP6recordS1_ET1_T0_S3_S2_ = comdat any $_ZSt12__miter_baseIP6recordET_S2_ = comdat any $_ZSt13__copy_move_aILb0EP6recordS1_ET1_T0_S3_S2_ = comdat any $_ZSt12__niter_baseIP6recordET_S2_ = comdat any $_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mI6recordEEPT_PKS4_S7_S5_ = comdat any $_ZN9__gnu_cxx13new_allocatorI6recordE7destroyEPS1_ = comdat any @.str = private unnamed_addr constant [12 x i8] c"before all\0A\00", align 1 @.str.1 = private unnamed_addr constant [18 x i8] c"after before all\0A\00", align 1 @.str.2 = private unnamed_addr constant [13 x i8] c"before call\0A\00", align 1 @.str.3 = private unnamed_addr constant [12 x i8] c"after call\0A\00", align 1 @.str.4 = private unnamed_addr constant [13 x i8] c"before find\0A\00", align 1 @.str.5 = private unnamed_addr constant [12 x i8] c"after find\0A\00", align 1 @.str.6 = private unnamed_addr constant [20 x i8] c"%s --> Distance=%f\0A\00", align 1 @.str.7 = private unnamed_addr constant [2 x i8] c"r\00", align 1 @.str.8 = private unnamed_addr constant [4 x i8] c"%s\0A\00", align 1 @stderr = external dso_local global %struct._IO_FILE*, align 8 @.str.9 = private unnamed_addr constant [24 x i8] c"error reading filelist\0A\00", align 1 @.str.10 = private unnamed_addr constant [20 x i8] c"error opening a db\0A\00", align 1 @.str.11 = private unnamed_addr constant [24 x i8] c"Nearest Neighbor Usage\0A\00", align 1 @.str.12 = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 @.str.13 = private unnamed_addr constant [90 x i8] c"nearestNeighbor [filename] -r [int] -lat [float] -lng [float] [-hqt] [-p [int] -d [int]]\0A\00", align 1 @.str.14 = private unnamed_addr constant [10 x i8] c"example:\0A\00", align 1 @.str.15 = private unnamed_addr constant [55 x i8] c"$ ./nearestNeighbor filelist.txt -r 5 -lat 30 -lng 90\0A\00", align 1 @.str.16 = private unnamed_addr constant [59 x i8] c"filename the filename that lists the data input files\0A\00", align 1 @.str.17 = private unnamed_addr constant [60 x i8] c"-r [int] the number of records to return (default: 10)\0A\00", align 1 @.str.18 = private unnamed_addr constant [62 x i8] c"-lat [float] the latitude for nearest neighbors (default: 0)\0A\00", align 1 @.str.19 = private unnamed_addr constant [63 x i8] c"-lng [float] the longitude for nearest neighbors (default: 0)\0A\00", align 1 @.str.20 = private unnamed_addr constant [36 x i8] c"-h, --help Display the help file\0A\00", align 1 @.str.21 = private unnamed_addr constant [52 x i8] c"-q Quiet mode. Suppress all text output.\0A\00", align 1 @.str.22 = private unnamed_addr constant [40 x i8] c"-t Print timing information.\0A\00", align 1 @.str.23 = private unnamed_addr constant [73 x i8] c"-p [int] Choose the platform (must choose both platform and device)\0A\00", align 1 @.str.24 = private unnamed_addr constant [71 x i8] c"-d [int] Choose the device (must choose both platform and device)\0A\00", align 1 @.str.25 = private unnamed_addr constant [60 x i8] c"Notes: 1. The filename is required as the first parameter.\0A\00", align 1 @.str.26 = private unnamed_addr constant [61 x i8] c" 2. If you declare either the device or the platform,\0A\00", align 1 @.str.27 = private unnamed_addr constant [35 x i8] c" you must declare both.\0A\0A\00", align 1 @.str.28 = private unnamed_addr constant [26 x i8] c"vector::_M_realloc_insert\00", align 1 @0 = private unnamed_addr constant [24 x i8] c"_Z6euclidP7latLongPfiff\00", align 1 @1 = private constant [8313 x i8] c"P\EDU\BA\01\00\10\00h \00\00\00\00\00\00\02\00\01\01@\00\00\00\A8\19\00\00\00\00\00\00\00\00\00\00\00\00\00\00\07\00\01\00=\00\00\00\00\00\00\00\00\00\00\00\11\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\7FELF\02\01\013\07\00\00\00\00\00\00\00\02\00\BE\00e\00\00\00\00\00\00\00\00\00\00\00\00\19\00\00\00\00\00\00\C0\16\00\00\00\00\00\00=\05=\00@\008\00\03\00@\00\09\00\01\00\00.shstrtab\00.strtab\00.symtab\00.symtab_shndx\00.nv.info\00.text._Z6euclidP7latLongPfiff\00.nv.info._Z6euclidP7latLongPfiff\00.nv.shared._Z6euclidP7latLongPfiff\00.nv.global\00.nv.constant0._Z6euclidP7latLongPfiff\00\00.shstrtab\00.strtab\00.symtab\00.symtab_shndx\00.nv.info\00_Z6euclidP7latLongPfiff\00.text._Z6euclidP7latLongPfiff\00.nv.info._Z6euclidP7latLongPfiff\00.nv.shared._Z6euclidP7latLongPfiff\00.nv.global\00blockDim\00gridDim\00blockIdx\00threadIdx\00$_Z6euclidP7latLongPfiff$__cuda_sm20_sqrt_rn_f32_slowpath\00.nv.constant0._Z6euclidP7latLongPfiff\00_param\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00J\00\00\00\03\00\07\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\AC\00\00\00\03\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\B7\00\00\00\01\00\08\00\01\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\C0\00\00\00\01\00\08\00\03\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\C8\00\00\00\01\00\08\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\D1\00\00\00\01\00\08\00\02\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\DB\00\00\00\22\00\07\00\D0\0E\00\00\00\00\00\00p\02\00\00\00\00\00\00\15\01\00\00\03\00\06\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\002\00\00\00\12\10\07\00\00\00\00\00\00\00\00\00@\11\00\00\00\00\00\00\04/\08\00\09\00\00\00\0D\00\00\00\04#\08\00\07\00\00\00\00\00\00\00\04\12\08\00\07\00\00\00\00\00\00\00\04\11\08\00\07\00\00\00\00\00\00\00\04#\08\00\09\00\00\00\00\00\00\00\04\12\08\00\09\00\00\008\00\00\00\04\11\08\00\09\00\00\008\00\00\00\010\00\00\01*\00\00\04\0A\08\00\08\00\00\00@\01\1C\00\03\19\1C\00\04\17\0C\00\00\00\00\00\04\00\18\00\00\F0\11\00\04\17\0C\00\00\00\00\00\03\00\14\00\00\F0\11\00\04\17\0C\00\00\00\00\00\02\00\10\00\00\F0\11\00\04\17\0C\00\00\00\00\00\01\00\08\00\00\F0!\00\04\17\0C\00\00\00\00\00\00\00\00\00\00\F0!\00\03\1B\FF\00\04\1D\08\00\18\04\00\008\04\00\00\04\1C\04\00\C8\0E\00\00\04\1E\04\00\90\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\EF\1F\E0\FD\03!\00\D3rd<3>;\0A\0Amov.u2\00\1B,e\00b;\0Acvta\8D\00\04%\00\13,\\\00\22ld\C8\00\02\18\00nrd2, [\CE\00\1E])\00\1F1)\00\01a0];\0Ast#\00\81[%SP+0],,\00\0A\16\00\128\16\00\222;\B6\00\01\D8\00a1, 999(\00\02g\00\00\EF\00\18[\9E\01\03M\00\AF1;\0Aret;\0A\0A}\D6\01\1A\FE\02FuncGetAttributes\E1\01\0D#\00\0E\EC\01\0F+\00\06\0F\F7\01\1B\1F1\F7\01Q\1F1\F7\01!\0E\D9\00\0F\02\02\0F\0E8\01\0F\0D\02\8DhDevice\B4\00\0E\0E\02\0E$\00\0F\0F\02\00/32,\00\0B\1F1,\00\18\1F2<\02\13\1F2<\02\1F\1D4<\02\1F2<\02\0C\1F2<\02\13\01_\00\04;\02\0F\D9\00\07\1D]4\00\1F14\00\06\0Fp\02\10\0E\9A\01\0Fq\02\12(32q\02\0B\15\00!12\16\00\09\86\02\1F3\86\02\15\1F3\86\02#2Get\CB\00\0E}\02\05\1B\00\04\DA\00\0F\1C\02\13?3[8W\04.\0F\1B\02\0D\1F3W\04\19\04\B3\01\0D\D0\00\0F\AA\01\06\0F\05\04W\F0\04OccupancyMaxActiveBV\08\FE\03sPerMultiprocessor\9F\01\0F;\00\16\0EB\06\0FC\00%\0EJ\04\0FC\00\1E\1F2\86\00/\1F3\88\02\13O4[32\89\02\1C\1D3\89\02\1F4\89\02\0C\1F4\89\02\19\133\89\02\0F\F1\00\1E\0F\BC\04\00\0FK\00$/2]w\07\00\0FL\00$\0F\1F\05\01\0F\98\00%\0F\A7\07\1D\097\05\186M\05\04,\00\2224-\00\183\CF\03\1F2\CF\03\15\1F2\CF\03L\9FWithFlags\D8\03(\05D\00\0E\E1\03\0FL\00'\0F\EA\030\0CL\00\1F2\98\008\1F3\98\008\1F4H\04\13O5[40\EC\08.\0FH\04\0D\1F5\EC\08\1C\0F\F9\00+\1F]\9C\040\0D\9A\01\0F\A5\040\0D:\02\0F\AE\041\0D\DB\02\0F\B7\041\0D|\03\0F\C0\04I\08-\00\1F3$\0A6\F6\17visible .entry _Z6euclidP7latLongPfiff\A0\04\00\9A\00\0F%\00\04\0E\81\04\0F-\00\0F\07b\04\00\C6\00\0F-\00\0B\07C\04\1Ff-\00\0E\1F3-\00\12\0F\05\04\1B?6[5\F1\0C\16wpred %p\D7\0A\00\87\00k%f<14>)\04\1E1r\08/17+\04\0C\1F6+\04\12\02s\00\00-\03\0F\00\01\0C\1D]5\00\1F15\00\0E\0F\EC\03\00\0F5\00\0F\0F\CD\03\01\0F\A0\00\0F\0F\AE\03\01\0Fl\00\0F#0]%\01#to\99\13\07\E8\04\02\82\03\01[\0E\0A\1C\00\144q\03\0F;\00\03\145\D3\03\0F;\00\00\116\1C\00\1F5\EF\03\02\1A6\16\00\03\EF\03*d4\D9\03'24\06\04\15f\16\00\01D\00\1Bf\16\00\02\05\04+f2\DB\08{%ntid.x\1B\04\\%ncta\18\00\00\EB\00\02\17\00\B1y;\0Amul.lo.s\1A\00#5,7\00(r41\00\1561\00cx;\0Aadd.\00$7,3\00\1B6H\00#8,\95\00(r7H\00\\9, %tF\00410,2\00\1B9\EF\04\03\1C\05\110\06\02\03m\01$7,`\01\01\16\00\02D\005d8,3\00T;\0AshlR\03#9,\1E\00\133s\00\03E\02#0,L\00\00$\00\0A\A3\01\144\BF\05\03w\00\02\E2\02\181a\00\06\17\00%2,\C1\01\92;\0Asetp.ge\94\003p1,8\00\00'\00\F2\0B;\0A@%p1 bra LBB6_2;\0Abra.uni\10\0021;\0A\08\00\17:\EB\00\05u\00)16\ED\00/12\EE\00\04413, \00\1A2\F0\00$4,Q\00\01'\00\0B\F2\00\03\AC\02!14f\00\02\09\04%3,\85\02\08\7F\01515,'\01\07.\00\104\16\00\00\1E\00\00\91\00Sub.rn\19\00\225,L\00(%f]\00%6,\CC\02\07\16\00\147E\00,+4G\00\228,6\002%f7k\02\05\1A\00$9,\1F\00f8;\0Afma\1A\00\01\E5\01%f5\05\00\1A9H\03\124]\03\170\81\00\05q\01*4],\00\120,\00\181,\00\04\85\01\01\FE\077qrty\00\01\F0\00)128\01%6,m\01\07\\\00\22rd\12\04;f13\12\02\132\12\02\B02:\0Aret;\0A\0A}\0A\00\00\00\00\00", section ".nv_fatbin", align 8 @__cuda_fatbin_wrapper = internal constant { i32, i32, i8*, i8* } { i32 1180844977, i32 1, i8* getelementptr inbounds ([8313 x i8], [8313 x i8]* @1, i64 0, i64 0), i8* null }, section ".nvFatBinSegment", align 8 @__cuda_gpubin_handle = internal global i8** null, align 8 @llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* bitcast (void (i8*)* @__cuda_module_ctor to void ()*), i8* null }] ; Function Attrs: noinline optnone uwtable define dso_local void @_Z6euclidP7latLongPfiff(%struct.latLong* %d_locations, float* %d_distances, i32 %numRecords, float %lat, float %lng) #0 { entry: %d_locations.addr = alloca %struct.latLong*, align 8 %d_distances.addr = alloca float*, align 8 %numRecords.addr = alloca i32, align 4 %lat.addr = alloca float, align 4 %lng.addr = alloca float, align 4 %grid_dim = alloca %struct.dim3, align 8 %block_dim = alloca %struct.dim3, align 8 %shmem_size = alloca i64, align 8 %stream = alloca i8*, align 8 %grid_dim.coerce = alloca { i64, i32 }, align 8 %block_dim.coerce = alloca { i64, i32 }, align 8 store %struct.latLong* %d_locations, %struct.latLong** %d_locations.addr, align 8 store float* %d_distances, float** %d_distances.addr, align 8 store i32 %numRecords, i32* %numRecords.addr, align 4 store float %lat, float* %lat.addr, align 4 store float %lng, float* %lng.addr, align 4 %kernel_args = alloca i8*, i64 5, align 16 %0 = bitcast %struct.latLong** %d_locations.addr to i8* %1 = getelementptr i8*, i8** %kernel_args, i32 0 store i8* %0, i8** %1 %2 = bitcast float** %d_distances.addr to i8* %3 = getelementptr i8*, i8** %kernel_args, i32 1 store i8* %2, i8** %3 %4 = bitcast i32* %numRecords.addr to i8* %5 = getelementptr i8*, i8** %kernel_args, i32 2 store i8* %4, i8** %5 %6 = bitcast float* %lat.addr to i8* %7 = getelementptr i8*, i8** %kernel_args, i32 3 store i8* %6, i8** %7 %8 = bitcast float* %lng.addr to i8* %9 = getelementptr i8*, i8** %kernel_args, i32 4 store i8* %8, i8** %9 %10 = call i32 @__cudaPopCallConfiguration(%struct.dim3* %grid_dim, %struct.dim3* %block_dim, i64* %shmem_size, i8** %stream) %11 = load i64, i64* %shmem_size, align 8 %12 = load i8*, i8** %stream, align 8 %13 = bitcast { i64, i32 }* %grid_dim.coerce to i8* %14 = bitcast %struct.dim3* %grid_dim to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %13, i8* align 8 %14, i64 12, i1 false) %15 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %grid_dim.coerce, i32 0, i32 0 %16 = load i64, i64* %15, align 8 %17 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %grid_dim.coerce, i32 0, i32 1 %18 = load i32, i32* %17, align 8 %19 = bitcast { i64, i32 }* %block_dim.coerce to i8* %20 = bitcast %struct.dim3* %block_dim to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 %19, i8* align 8 %20, i64 12, i1 false) %21 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %block_dim.coerce, i32 0, i32 0 %22 = load i64, i64* %21, align 8 %23 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %block_dim.coerce, i32 0, i32 1 %24 = load i32, i32* %23, align 8 %25 = bitcast i8* %12 to %struct.CUstream_st* %call = call i32 @cudaLaunchKernel(i8* bitcast (void (%struct.latLong*, float*, i32, float, float)* @_Z6euclidP7latLongPfiff to i8*), i64 %16, i32 %18, i64 %22, i32 %24, i8** %kernel_args, i64 %11, %struct.CUstream_st* %25) br label %setup.end setup.end: ; preds = %entry ret void } declare dso_local i32 @__cudaPopCallConfiguration(%struct.dim3*, %struct.dim3*, i64*, i8**) declare dso_local i32 @cudaLaunchKernel(i8*, i64, i32, i64, i32, i8**, i64, %struct.CUstream_st*) ; Function Attrs: argmemonly nounwind willreturn declare void @llvm.memcpy.p0i8.p0i8.i64(i8* noalias nocapture writeonly, i8* noalias nocapture readonly, i64, i1 immarg) #1 ; Function Attrs: noinline norecurse optnone uwtable define dso_local i32 @main(i32 %argc, i8** %argv) #2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %retval = alloca i32, align 4 %argc.addr = alloca i32, align 4 %argv.addr = alloca i8**, align 8 %i = alloca i32, align 4 %lat = alloca float, align 4 %lng = alloca float, align 4 %quiet = alloca i32, align 4 %timing = alloca i32, align 4 %platform = alloca i32, align 4 %device = alloca i32, align 4 %records = alloca %"class.std::vector", align 8 %locations = alloca %"class.std::vector.0", align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %filename = alloca [100 x i8], align 16 %resultsCount = alloca i32, align 4 %cleanup.dest.slot = alloca i32, align 4 %numRecords = alloca i32, align 4 %distances = alloca float*, align 8 %d_locations = alloca %struct.latLong*, align 8 %d_distances = alloca float*, align 8 %deviceProp = alloca %struct.cudaDeviceProp, align 8 %maxGridX = alloca i64, align 8 %threadsPerBlock = alloca i64, align 8 %totalDeviceMemory = alloca i64, align 8 %freeDeviceMemory = alloca i64, align 8 %blocks = alloca i64, align 8 %gridY = alloca i64, align 8 %gridX = alloca i64, align 8 %gridDim = alloca %struct.dim3, align 4 %agg.tmp = alloca %struct.dim3, align 4 %agg.tmp46 = alloca %struct.dim3, align 4 %agg.tmp.coerce = alloca { i64, i32 }, align 4 %agg.tmp46.coerce = alloca { i64, i32 }, align 4 store i32 0, i32* %retval, align 4 store i32 %argc, i32* %argc.addr, align 4 store i8** %argv, i8*** %argv.addr, align 8 %call = call i32 @cudaSetDevice(i32 0) store i32 0, i32* %i, align 4 store i32 0, i32* %quiet, align 4 store i32 0, i32* %timing, align 4 store i32 0, i32* %platform, align 4 store i32 0, i32* %device, align 4 call void @_ZNSt6vectorI6recordSaIS0_EEC2Ev(%"class.std::vector"* %records) invoke void @_ZNSt6vectorI7latLongSaIS0_EEC2Ev(%"class.std::vector.0"* %locations) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry store i32 10, i32* %resultsCount, align 4 %0 = load i32, i32* %argc.addr, align 4 %1 = load i8**, i8*** %argv.addr, align 8 %arraydecay = getelementptr inbounds [100 x i8], [100 x i8]* %filename, i64 0, i64 0 %call3 = invoke i32 @_Z16parseCommandlineiPPcS_PiPfS2_S1_S1_S1_S1_(i32 %0, i8** %1, i8* %arraydecay, i32* %resultsCount, float* %lat, float* %lng, i32* %quiet, i32* %timing, i32* %platform, i32* %device) to label %invoke.cont2 unwind label %lpad1 invoke.cont2: ; preds = %invoke.cont %tobool = icmp ne i32 %call3, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %invoke.cont2 invoke void @_Z10printUsagev() to label %invoke.cont4 unwind label %lpad1 invoke.cont4: ; preds = %if.then store i32 0, i32* %retval, align 4 store i32 1, i32* %cleanup.dest.slot, align 4 br label %cleanup lpad: ; preds = %cleanup, %entry %2 = landingpad { i8*, i32 } cleanup %3 = extractvalue { i8*, i32 } %2, 0 store i8* %3, i8** %exn.slot, align 8 %4 = extractvalue { i8*, i32 } %2, 1 store i32 %4, i32* %ehselector.slot, align 4 br label %ehcleanup lpad1: ; preds = %invoke.cont80, %if.end79, %invoke.cont74, %invoke.cont70, %for.body, %invoke.cont63, %invoke.cont61, %invoke.cont59, %invoke.cont55, %invoke.cont53, %kcall.end, %kcall.configok, %invoke.cont48, %invoke.cont44, %invoke.cont42, %invoke.cont38, %invoke.cont36, %invoke.cont32, %invoke.cont27, %invoke.cont16, %invoke.cont14, %invoke.cont12, %if.end11, %invoke.cont5, %if.end, %if.then, %invoke.cont %5 = landingpad { i8*, i32 } cleanup %6 = extractvalue { i8*, i32 } %5, 0 store i8* %6, i8** %exn.slot, align 8 %7 = extractvalue { i8*, i32 } %5, 1 store i32 %7, i32* %ehselector.slot, align 4 invoke void @_ZNSt6vectorI7latLongSaIS0_EED2Ev(%"class.std::vector.0"* %locations) to label %invoke.cont85 unwind label %terminate.lpad if.end: ; preds = %invoke.cont2 %call6 = invoke i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str, i64 0, i64 0)) to label %invoke.cont5 unwind label %lpad1 invoke.cont5: ; preds = %if.end %arraydecay7 = getelementptr inbounds [100 x i8], [100 x i8]* %filename, i64 0, i64 0 %call9 = invoke i32 @_Z8loadDataPcRSt6vectorI6recordSaIS1_EERS0_I7latLongSaIS5_EE(i8* %arraydecay7, %"class.std::vector"* dereferenceable(24) %records, %"class.std::vector.0"* dereferenceable(24) %locations) to label %invoke.cont8 unwind label %lpad1 invoke.cont8: ; preds = %invoke.cont5 store i32 %call9, i32* %numRecords, align 4 %8 = load i32, i32* %resultsCount, align 4 %9 = load i32, i32* %numRecords, align 4 %cmp = icmp sgt i32 %8, %9 br i1 %cmp, label %if.then10, label %if.end11 if.then10: ; preds = %invoke.cont8 %10 = load i32, i32* %numRecords, align 4 store i32 %10, i32* %resultsCount, align 4 br label %if.end11 if.end11: ; preds = %if.then10, %invoke.cont8 %call13 = invoke i32 (i8*, ...) @printf(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @.str.1, i64 0, i64 0)) to label %invoke.cont12 unwind label %lpad1 invoke.cont12: ; preds = %if.end11 %call15 = invoke i32 @cudaGetDeviceProperties(%struct.cudaDeviceProp* %deviceProp, i32 0) to label %invoke.cont14 unwind label %lpad1 invoke.cont14: ; preds = %invoke.cont12 %call17 = invoke i32 @cudaDeviceSynchronize() to label %invoke.cont16 unwind label %lpad1 invoke.cont16: ; preds = %invoke.cont14 %maxGridSize = getelementptr inbounds %struct.cudaDeviceProp, %struct.cudaDeviceProp* %deviceProp, i32 0, i32 11 %arrayidx = getelementptr inbounds [3 x i32], [3 x i32]* %maxGridSize, i64 0, i64 0 %11 = load i32, i32* %arrayidx, align 8 %conv = sext i32 %11 to i64 store i64 %conv, i64* %maxGridX, align 8 store i64 256, i64* %threadsPerBlock, align 8 %12 = load i32, i32* %numRecords, align 4 %conv18 = sext i32 %12 to i64 %13 = load i64, i64* %threadsPerBlock, align 8 %add = add i64 %conv18, %13 %sub = sub i64 %add, 1 %14 = load i64, i64* %threadsPerBlock, align 8 %div = udiv i64 %sub, %14 store i64 %div, i64* %blocks, align 8 %15 = load i64, i64* %blocks, align 8 %16 = load i64, i64* %maxGridX, align 8 %add19 = add i64 %15, %16 %sub20 = sub i64 %add19, 1 %17 = load i64, i64* %maxGridX, align 8 %div21 = udiv i64 %sub20, %17 store i64 %div21, i64* %gridY, align 8 %18 = load i64, i64* %blocks, align 8 %19 = load i64, i64* %gridY, align 8 %add22 = add i64 %18, %19 %sub23 = sub i64 %add22, 1 %20 = load i64, i64* %gridY, align 8 %div24 = udiv i64 %sub23, %20 store i64 %div24, i64* %gridX, align 8 %21 = load i64, i64* %gridX, align 8 %conv25 = trunc i64 %21 to i32 %22 = load i64, i64* %gridY, align 8 %conv26 = trunc i64 %22 to i32 invoke void @_ZN4dim3C2Ejjj(%struct.dim3* %gridDim, i32 %conv25, i32 %conv26, i32 1) to label %invoke.cont27 unwind label %lpad1 invoke.cont27: ; preds = %invoke.cont16 %23 = load i32, i32* %numRecords, align 4 %conv28 = sext i32 %23 to i64 %mul = mul i64 4, %conv28 %call29 = call noalias i8* @malloc(i64 %mul) #12 %24 = bitcast i8* %call29 to float* store float* %24, float** %distances, align 8 %25 = bitcast %struct.latLong** %d_locations to i8** %26 = load i32, i32* %numRecords, align 4 %conv30 = sext i32 %26 to i64 %mul31 = mul i64 8, %conv30 %call33 = invoke i32 @cudaMalloc(i8** %25, i64 %mul31) to label %invoke.cont32 unwind label %lpad1 invoke.cont32: ; preds = %invoke.cont27 %27 = bitcast float** %d_distances to i8** %28 = load i32, i32* %numRecords, align 4 %conv34 = sext i32 %28 to i64 %mul35 = mul i64 4, %conv34 %call37 = invoke i32 @cudaMalloc(i8** %27, i64 %mul35) to label %invoke.cont36 unwind label %lpad1 invoke.cont36: ; preds = %invoke.cont32 %29 = load %struct.latLong*, %struct.latLong** %d_locations, align 8 %30 = bitcast %struct.latLong* %29 to i8* %call39 = invoke dereferenceable(8) %struct.latLong* @_ZNSt6vectorI7latLongSaIS0_EEixEm(%"class.std::vector.0"* %locations, i64 0) to label %invoke.cont38 unwind label %lpad1 invoke.cont38: ; preds = %invoke.cont36 %31 = bitcast %struct.latLong* %call39 to i8* %32 = load i32, i32* %numRecords, align 4 %conv40 = sext i32 %32 to i64 %mul41 = mul i64 8, %conv40 %call43 = invoke i32 @cudaMemcpy(i8* %30, i8* %31, i64 %mul41, i32 1) to label %invoke.cont42 unwind label %lpad1 invoke.cont42: ; preds = %invoke.cont38 %call45 = invoke i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.2, i64 0, i64 0)) to label %invoke.cont44 unwind label %lpad1 invoke.cont44: ; preds = %invoke.cont42 %33 = bitcast %struct.dim3* %agg.tmp to i8* %34 = bitcast %struct.dim3* %gridDim to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %33, i8* align 4 %34, i64 12, i1 false) %35 = load i64, i64* %threadsPerBlock, align 8 %conv47 = trunc i64 %35 to i32 invoke void @_ZN4dim3C2Ejjj(%struct.dim3* %agg.tmp46, i32 %conv47, i32 1, i32 1) to label %invoke.cont48 unwind label %lpad1 invoke.cont48: ; preds = %invoke.cont44 %36 = bitcast { i64, i32 }* %agg.tmp.coerce to i8* %37 = bitcast %struct.dim3* %agg.tmp to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %36, i8* align 4 %37, i64 12, i1 false) %38 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 0 %39 = load i64, i64* %38, align 4 %40 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp.coerce, i32 0, i32 1 %41 = load i32, i32* %40, align 4 %42 = bitcast { i64, i32 }* %agg.tmp46.coerce to i8* %43 = bitcast %struct.dim3* %agg.tmp46 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %42, i8* align 4 %43, i64 12, i1 false) %44 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp46.coerce, i32 0, i32 0 %45 = load i64, i64* %44, align 4 %46 = getelementptr inbounds { i64, i32 }, { i64, i32 }* %agg.tmp46.coerce, i32 0, i32 1 %47 = load i32, i32* %46, align 4 %call50 = invoke i32 @__cudaPushCallConfiguration(i64 %39, i32 %41, i64 %45, i32 %47, i64 0, i8* null) to label %invoke.cont49 unwind label %lpad1 invoke.cont49: ; preds = %invoke.cont48 %tobool51 = icmp ne i32 %call50, 0 br i1 %tobool51, label %kcall.end, label %kcall.configok kcall.configok: ; preds = %invoke.cont49 %48 = load %struct.latLong*, %struct.latLong** %d_locations, align 8 %49 = load float*, float** %d_distances, align 8 %50 = load i32, i32* %numRecords, align 4 %51 = load float, float* %lat, align 4 %52 = load float, float* %lng, align 4 invoke void @_Z6euclidP7latLongPfiff(%struct.latLong* %48, float* %49, i32 %50, float %51, float %52) to label %invoke.cont52 unwind label %lpad1 invoke.cont52: ; preds = %kcall.configok br label %kcall.end kcall.end: ; preds = %invoke.cont52, %invoke.cont49 %call54 = invoke i32 @cudaDeviceSynchronize() to label %invoke.cont53 unwind label %lpad1 invoke.cont53: ; preds = %kcall.end %call56 = invoke i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.3, i64 0, i64 0)) to label %invoke.cont55 unwind label %lpad1 invoke.cont55: ; preds = %invoke.cont53 %53 = load float*, float** %distances, align 8 %54 = bitcast float* %53 to i8* %55 = load float*, float** %d_distances, align 8 %56 = bitcast float* %55 to i8* %57 = load i32, i32* %numRecords, align 4 %conv57 = sext i32 %57 to i64 %mul58 = mul i64 4, %conv57 %call60 = invoke i32 @cudaMemcpy(i8* %54, i8* %56, i64 %mul58, i32 2) to label %invoke.cont59 unwind label %lpad1 invoke.cont59: ; preds = %invoke.cont55 %call62 = invoke i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.4, i64 0, i64 0)) to label %invoke.cont61 unwind label %lpad1 invoke.cont61: ; preds = %invoke.cont59 %58 = load float*, float** %distances, align 8 %59 = load i32, i32* %numRecords, align 4 %60 = load i32, i32* %resultsCount, align 4 invoke void @_Z10findLowestRSt6vectorI6recordSaIS0_EEPfii(%"class.std::vector"* dereferenceable(24) %records, float* %58, i32 %59, i32 %60) to label %invoke.cont63 unwind label %lpad1 invoke.cont63: ; preds = %invoke.cont61 %call65 = invoke i32 (i8*, ...) @printf(i8* getelementptr inbounds ([12 x i8], [12 x i8]* @.str.5, i64 0, i64 0)) to label %invoke.cont64 unwind label %lpad1 invoke.cont64: ; preds = %invoke.cont63 %61 = load i32, i32* %quiet, align 4 %tobool66 = icmp ne i32 %61, 0 br i1 %tobool66, label %if.end79, label %if.then67 if.then67: ; preds = %invoke.cont64 store i32 0, i32* %i, align 4 br label %for.cond for.cond: ; preds = %for.inc, %if.then67 %62 = load i32, i32* %i, align 4 %63 = load i32, i32* %resultsCount, align 4 %cmp68 = icmp slt i32 %62, %63 br i1 %cmp68, label %for.body, label %for.end for.body: ; preds = %for.cond %64 = load i32, i32* %i, align 4 %conv69 = sext i32 %64 to i64 %call71 = invoke dereferenceable(60) %struct.record* @_ZNSt6vectorI6recordSaIS0_EEixEm(%"class.std::vector"* %records, i64 %conv69) to label %invoke.cont70 unwind label %lpad1 invoke.cont70: ; preds = %for.body %recString = getelementptr inbounds %struct.record, %struct.record* %call71, i32 0, i32 0 %arraydecay72 = getelementptr inbounds [53 x i8], [53 x i8]* %recString, i64 0, i64 0 %65 = load i32, i32* %i, align 4 %conv73 = sext i32 %65 to i64 %call75 = invoke dereferenceable(60) %struct.record* @_ZNSt6vectorI6recordSaIS0_EEixEm(%"class.std::vector"* %records, i64 %conv73) to label %invoke.cont74 unwind label %lpad1 invoke.cont74: ; preds = %invoke.cont70 %distance = getelementptr inbounds %struct.record, %struct.record* %call75, i32 0, i32 1 %66 = load float, float* %distance, align 4 %conv76 = fpext float %66 to double %call78 = invoke i32 (i8*, ...) @printf(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.6, i64 0, i64 0), i8* %arraydecay72, double %conv76) to label %invoke.cont77 unwind label %lpad1 invoke.cont77: ; preds = %invoke.cont74 br label %for.inc for.inc: ; preds = %invoke.cont77 %67 = load i32, i32* %i, align 4 %inc = add nsw i32 %67, 1 store i32 %inc, i32* %i, align 4 br label %for.cond for.end: ; preds = %for.cond br label %if.end79 if.end79: ; preds = %for.end, %invoke.cont64 %68 = load float*, float** %distances, align 8 %69 = bitcast float* %68 to i8* call void @free(i8* %69) #12 %70 = load %struct.latLong*, %struct.latLong** %d_locations, align 8 %71 = bitcast %struct.latLong* %70 to i8* %call81 = invoke i32 @cudaFree(i8* %71) to label %invoke.cont80 unwind label %lpad1 invoke.cont80: ; preds = %if.end79 %72 = load float*, float** %d_distances, align 8 %73 = bitcast float* %72 to i8* %call83 = invoke i32 @cudaFree(i8* %73) to label %invoke.cont82 unwind label %lpad1 invoke.cont82: ; preds = %invoke.cont80 store i32 0, i32* %cleanup.dest.slot, align 4 br label %cleanup cleanup: ; preds = %invoke.cont82, %invoke.cont4 invoke void @_ZNSt6vectorI7latLongSaIS0_EED2Ev(%"class.std::vector.0"* %locations) to label %invoke.cont84 unwind label %lpad invoke.cont84: ; preds = %cleanup call void @_ZNSt6vectorI6recordSaIS0_EED2Ev(%"class.std::vector"* %records) %cleanup.dest = load i32, i32* %cleanup.dest.slot, align 4 switch i32 %cleanup.dest, label %unreachable [ i32 0, label %cleanup.cont i32 1, label %cleanup.cont ] cleanup.cont: ; preds = %invoke.cont84, %invoke.cont84 %74 = load i32, i32* %retval, align 4 ret i32 %74 invoke.cont85: ; preds = %lpad1 br label %ehcleanup ehcleanup: ; preds = %invoke.cont85, %lpad invoke void @_ZNSt6vectorI6recordSaIS0_EED2Ev(%"class.std::vector"* %records) to label %invoke.cont87 unwind label %terminate.lpad invoke.cont87: ; preds = %ehcleanup br label %eh.resume eh.resume: ; preds = %invoke.cont87 %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val88 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val88 terminate.lpad: ; preds = %ehcleanup, %lpad1 %75 = landingpad { i8*, i32 } catch i8* null %76 = extractvalue { i8*, i32 } %75, 0 call void @__clang_call_terminate(i8* %76) #13 unreachable unreachable: ; preds = %invoke.cont84 unreachable } declare dso_local i32 @cudaSetDevice(i32) #3 ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt6vectorI6recordSaIS0_EEC2Ev(%"class.std::vector"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.std::vector"*, align 8 store %"class.std::vector"* %this, %"class.std::vector"** %this.addr, align 8 %this1 = load %"class.std::vector"*, %"class.std::vector"** %this.addr, align 8 %0 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* call void @_ZNSt12_Vector_baseI6recordSaIS0_EEC2Ev(%"struct.std::_Vector_base"* %0) ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt6vectorI7latLongSaIS0_EEC2Ev(%"class.std::vector.0"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"class.std::vector.0"*, align 8 store %"class.std::vector.0"* %this, %"class.std::vector.0"** %this.addr, align 8 %this1 = load %"class.std::vector.0"*, %"class.std::vector.0"** %this.addr, align 8 %0 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Vector_base.1"* call void @_ZNSt12_Vector_baseI7latLongSaIS0_EEC2Ev(%"struct.std::_Vector_base.1"* %0) ret void } declare dso_local i32 @__gxx_personality_v0(...) ; Function Attrs: noinline optnone uwtable define dso_local i32 @_Z16parseCommandlineiPPcS_PiPfS2_S1_S1_S1_S1_(i32 %argc, i8** %argv, i8* %filename, i32* %r, float* %lat, float* %lng, i32* %q, i32* %t, i32* %p, i32* %d) #0 { entry: %retval = alloca i32, align 4 %argc.addr = alloca i32, align 4 %argv.addr = alloca i8**, align 8 %filename.addr = alloca i8*, align 8 %r.addr = alloca i32*, align 8 %lat.addr = alloca float*, align 8 %lng.addr = alloca float*, align 8 %q.addr = alloca i32*, align 8 %t.addr = alloca i32*, align 8 %p.addr = alloca i32*, align 8 %d.addr = alloca i32*, align 8 %i = alloca i32, align 4 %flag = alloca i8, align 1 store i32 %argc, i32* %argc.addr, align 4 store i8** %argv, i8*** %argv.addr, align 8 store i8* %filename, i8** %filename.addr, align 8 store i32* %r, i32** %r.addr, align 8 store float* %lat, float** %lat.addr, align 8 store float* %lng, float** %lng.addr, align 8 store i32* %q, i32** %q.addr, align 8 store i32* %t, i32** %t.addr, align 8 store i32* %p, i32** %p.addr, align 8 store i32* %d, i32** %d.addr, align 8 %0 = load i32, i32* %argc.addr, align 4 %cmp = icmp slt i32 %0, 2 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry store i32 1, i32* %retval, align 4 br label %return if.end: ; preds = %entry %1 = load i8*, i8** %filename.addr, align 8 %2 = load i8**, i8*** %argv.addr, align 8 %arrayidx = getelementptr inbounds i8*, i8** %2, i64 1 %3 = load i8*, i8** %arrayidx, align 8 %call = call i8* @strncpy(i8* %1, i8* %3, i64 100) store i32 1, i32* %i, align 4 br label %for.cond for.cond: ; preds = %for.inc, %if.end %4 = load i32, i32* %i, align 4 %5 = load i32, i32* %argc.addr, align 4 %cmp1 = icmp slt i32 %4, %5 br i1 %cmp1, label %for.body, label %for.end for.body: ; preds = %for.cond %6 = load i8**, i8*** %argv.addr, align 8 %7 = load i32, i32* %i, align 4 %idxprom = sext i32 %7 to i64 %arrayidx2 = getelementptr inbounds i8*, i8** %6, i64 %idxprom %8 = load i8*, i8** %arrayidx2, align 8 %arrayidx3 = getelementptr inbounds i8, i8* %8, i64 0 %9 = load i8, i8* %arrayidx3, align 1 %conv = sext i8 %9 to i32 %cmp4 = icmp eq i32 %conv, 45 br i1 %cmp4, label %if.then5, label %if.end44 if.then5: ; preds = %for.body %10 = load i8**, i8*** %argv.addr, align 8 %11 = load i32, i32* %i, align 4 %idxprom6 = sext i32 %11 to i64 %arrayidx7 = getelementptr inbounds i8*, i8** %10, i64 %idxprom6 %12 = load i8*, i8** %arrayidx7, align 8 %arrayidx8 = getelementptr inbounds i8, i8* %12, i64 1 %13 = load i8, i8* %arrayidx8, align 1 store i8 %13, i8* %flag, align 1 %14 = load i8, i8* %flag, align 1 %conv9 = sext i8 %14 to i32 switch i32 %conv9, label %sw.epilog [ i32 114, label %sw.bb i32 108, label %sw.bb13 i32 104, label %sw.bb31 i32 113, label %sw.bb32 i32 116, label %sw.bb33 i32 112, label %sw.bb34 i32 100, label %sw.bb39 ] sw.bb: ; preds = %if.then5 %15 = load i32, i32* %i, align 4 %inc = add nsw i32 %15, 1 store i32 %inc, i32* %i, align 4 %16 = load i8**, i8*** %argv.addr, align 8 %17 = load i32, i32* %i, align 4 %idxprom10 = sext i32 %17 to i64 %arrayidx11 = getelementptr inbounds i8*, i8** %16, i64 %idxprom10 %18 = load i8*, i8** %arrayidx11, align 8 %call12 = call i32 @atoi(i8* %18) #14 %19 = load i32*, i32** %r.addr, align 8 store i32 %call12, i32* %19, align 4 br label %sw.epilog sw.bb13: ; preds = %if.then5 %20 = load i8**, i8*** %argv.addr, align 8 %21 = load i32, i32* %i, align 4 %idxprom14 = sext i32 %21 to i64 %arrayidx15 = getelementptr inbounds i8*, i8** %20, i64 %idxprom14 %22 = load i8*, i8** %arrayidx15, align 8 %arrayidx16 = getelementptr inbounds i8, i8* %22, i64 2 %23 = load i8, i8* %arrayidx16, align 1 %conv17 = sext i8 %23 to i32 %cmp18 = icmp eq i32 %conv17, 97 br i1 %cmp18, label %if.then19, label %if.else if.then19: ; preds = %sw.bb13 %24 = load i8**, i8*** %argv.addr, align 8 %25 = load i32, i32* %i, align 4 %add = add nsw i32 %25, 1 %idxprom20 = sext i32 %add to i64 %arrayidx21 = getelementptr inbounds i8*, i8** %24, i64 %idxprom20 %26 = load i8*, i8** %arrayidx21, align 8 %call22 = call double @atof(i8* %26) #14 %conv23 = fptrunc double %call22 to float %27 = load float*, float** %lat.addr, align 8 store float %conv23, float* %27, align 4 br label %if.end29 if.else: ; preds = %sw.bb13 %28 = load i8**, i8*** %argv.addr, align 8 %29 = load i32, i32* %i, align 4 %add24 = add nsw i32 %29, 1 %idxprom25 = sext i32 %add24 to i64 %arrayidx26 = getelementptr inbounds i8*, i8** %28, i64 %idxprom25 %30 = load i8*, i8** %arrayidx26, align 8 %call27 = call double @atof(i8* %30) #14 %conv28 = fptrunc double %call27 to float %31 = load float*, float** %lng.addr, align 8 store float %conv28, float* %31, align 4 br label %if.end29 if.end29: ; preds = %if.else, %if.then19 %32 = load i32, i32* %i, align 4 %inc30 = add nsw i32 %32, 1 store i32 %inc30, i32* %i, align 4 br label %sw.epilog sw.bb31: ; preds = %if.then5 store i32 1, i32* %retval, align 4 br label %return sw.bb32: ; preds = %if.then5 %33 = load i32*, i32** %q.addr, align 8 store i32 1, i32* %33, align 4 br label %sw.epilog sw.bb33: ; preds = %if.then5 %34 = load i32*, i32** %t.addr, align 8 store i32 1, i32* %34, align 4 br label %sw.epilog sw.bb34: ; preds = %if.then5 %35 = load i32, i32* %i, align 4 %inc35 = add nsw i32 %35, 1 store i32 %inc35, i32* %i, align 4 %36 = load i8**, i8*** %argv.addr, align 8 %37 = load i32, i32* %i, align 4 %idxprom36 = sext i32 %37 to i64 %arrayidx37 = getelementptr inbounds i8*, i8** %36, i64 %idxprom36 %38 = load i8*, i8** %arrayidx37, align 8 %call38 = call i32 @atoi(i8* %38) #14 %39 = load i32*, i32** %p.addr, align 8 store i32 %call38, i32* %39, align 4 br label %sw.epilog sw.bb39: ; preds = %if.then5 %40 = load i32, i32* %i, align 4 %inc40 = add nsw i32 %40, 1 store i32 %inc40, i32* %i, align 4 %41 = load i8**, i8*** %argv.addr, align 8 %42 = load i32, i32* %i, align 4 %idxprom41 = sext i32 %42 to i64 %arrayidx42 = getelementptr inbounds i8*, i8** %41, i64 %idxprom41 %43 = load i8*, i8** %arrayidx42, align 8 %call43 = call i32 @atoi(i8* %43) #14 %44 = load i32*, i32** %d.addr, align 8 store i32 %call43, i32* %44, align 4 br label %sw.epilog sw.epilog: ; preds = %sw.bb39, %sw.bb34, %sw.bb33, %sw.bb32, %if.end29, %sw.bb, %if.then5 br label %if.end44 if.end44: ; preds = %sw.epilog, %for.body br label %for.inc for.inc: ; preds = %if.end44 %45 = load i32, i32* %i, align 4 %inc45 = add nsw i32 %45, 1 store i32 %inc45, i32* %i, align 4 br label %for.cond for.end: ; preds = %for.cond %46 = load i32*, i32** %d.addr, align 8 %47 = load i32, i32* %46, align 4 %cmp46 = icmp sge i32 %47, 0 br i1 %cmp46, label %land.lhs.true, label %lor.lhs.false land.lhs.true: ; preds = %for.end %48 = load i32*, i32** %p.addr, align 8 %49 = load i32, i32* %48, align 4 %cmp47 = icmp slt i32 %49, 0 br i1 %cmp47, label %if.then51, label %lor.lhs.false lor.lhs.false: ; preds = %land.lhs.true, %for.end %50 = load i32*, i32** %p.addr, align 8 %51 = load i32, i32* %50, align 4 %cmp48 = icmp sge i32 %51, 0 br i1 %cmp48, label %land.lhs.true49, label %if.end52 land.lhs.true49: ; preds = %lor.lhs.false %52 = load i32*, i32** %d.addr, align 8 %53 = load i32, i32* %52, align 4 %cmp50 = icmp slt i32 %53, 0 br i1 %cmp50, label %if.then51, label %if.end52 if.then51: ; preds = %land.lhs.true49, %land.lhs.true store i32 1, i32* %retval, align 4 br label %return if.end52: ; preds = %land.lhs.true49, %lor.lhs.false store i32 0, i32* %retval, align 4 br label %return return: ; preds = %if.end52, %if.then51, %sw.bb31, %if.then %54 = load i32, i32* %retval, align 4 ret i32 %54 } ; Function Attrs: noinline optnone uwtable define dso_local void @_Z10printUsagev() #0 { entry: %call = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.11, i64 0, i64 0)) %call1 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.12, i64 0, i64 0)) %call2 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([90 x i8], [90 x i8]* @.str.13, i64 0, i64 0)) %call3 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.12, i64 0, i64 0)) %call4 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([10 x i8], [10 x i8]* @.str.14, i64 0, i64 0)) %call5 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([55 x i8], [55 x i8]* @.str.15, i64 0, i64 0)) %call6 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.12, i64 0, i64 0)) %call7 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([59 x i8], [59 x i8]* @.str.16, i64 0, i64 0)) %call8 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([60 x i8], [60 x i8]* @.str.17, i64 0, i64 0)) %call9 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([62 x i8], [62 x i8]* @.str.18, i64 0, i64 0)) %call10 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([63 x i8], [63 x i8]* @.str.19, i64 0, i64 0)) %call11 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.12, i64 0, i64 0)) %call12 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([36 x i8], [36 x i8]* @.str.20, i64 0, i64 0)) %call13 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([52 x i8], [52 x i8]* @.str.21, i64 0, i64 0)) %call14 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([40 x i8], [40 x i8]* @.str.22, i64 0, i64 0)) %call15 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.12, i64 0, i64 0)) %call16 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([73 x i8], [73 x i8]* @.str.23, i64 0, i64 0)) %call17 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([71 x i8], [71 x i8]* @.str.24, i64 0, i64 0)) %call18 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.12, i64 0, i64 0)) %call19 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.12, i64 0, i64 0)) %call20 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([60 x i8], [60 x i8]* @.str.25, i64 0, i64 0)) %call21 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([61 x i8], [61 x i8]* @.str.26, i64 0, i64 0)) %call22 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([35 x i8], [35 x i8]* @.str.27, i64 0, i64 0)) ret void } declare dso_local i32 @printf(i8*, ...) #3 ; Function Attrs: noinline optnone uwtable define dso_local i32 @_Z8loadDataPcRSt6vectorI6recordSaIS1_EERS0_I7latLongSaIS5_EE(i8* %filename, %"class.std::vector"* dereferenceable(24) %records, %"class.std::vector.0"* dereferenceable(24) %locations) #0 { entry: %filename.addr = alloca i8*, align 8 %records.addr = alloca %"class.std::vector"*, align 8 %locations.addr = alloca %"class.std::vector.0"*, align 8 %flist = alloca %struct._IO_FILE*, align 8 %fp = alloca %struct._IO_FILE*, align 8 %i = alloca i32, align 4 %dbname = alloca [64 x i8], align 16 %recNum = alloca i32, align 4 %record = alloca %struct.record, align 4 %latLong = alloca %struct.latLong, align 4 %substr = alloca [6 x i8], align 1 store i8* %filename, i8** %filename.addr, align 8 store %"class.std::vector"* %records, %"class.std::vector"** %records.addr, align 8 store %"class.std::vector.0"* %locations, %"class.std::vector.0"** %locations.addr, align 8 store i32 0, i32* %i, align 4 store i32 0, i32* %recNum, align 4 %0 = load i8*, i8** %filename.addr, align 8 %call = call %struct._IO_FILE* @fopen(i8* %0, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.7, i64 0, i64 0)) store %struct._IO_FILE* %call, %struct._IO_FILE** %flist, align 8 br label %while.cond while.cond: ; preds = %while.end, %entry %1 = load %struct._IO_FILE*, %struct._IO_FILE** %flist, align 8 %call1 = call i32 @feof(%struct._IO_FILE* %1) #12 %tobool = icmp ne i32 %call1, 0 %lnot = xor i1 %tobool, true br i1 %lnot, label %while.body, label %while.end48 while.body: ; preds = %while.cond %2 = load %struct._IO_FILE*, %struct._IO_FILE** %flist, align 8 %arraydecay = getelementptr inbounds [64 x i8], [64 x i8]* %dbname, i64 0, i64 0 %call2 = call i32 (%struct._IO_FILE*, i8*, ...) @fscanf(%struct._IO_FILE* %2, i8* getelementptr inbounds ([4 x i8], [4 x i8]* @.str.8, i64 0, i64 0), i8* %arraydecay) %cmp = icmp ne i32 %call2, 1 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %while.body %3 = load %struct._IO_FILE*, %struct._IO_FILE** @stderr, align 8 %call3 = call i32 (%struct._IO_FILE*, i8*, ...) @fprintf(%struct._IO_FILE* %3, i8* getelementptr inbounds ([24 x i8], [24 x i8]* @.str.9, i64 0, i64 0)) call void @exit(i32 0) #13 unreachable if.end: ; preds = %while.body %arraydecay4 = getelementptr inbounds [64 x i8], [64 x i8]* %dbname, i64 0, i64 0 %call5 = call %struct._IO_FILE* @fopen(i8* %arraydecay4, i8* getelementptr inbounds ([2 x i8], [2 x i8]* @.str.7, i64 0, i64 0)) store %struct._IO_FILE* %call5, %struct._IO_FILE** %fp, align 8 %4 = load %struct._IO_FILE*, %struct._IO_FILE** %fp, align 8 %tobool6 = icmp ne %struct._IO_FILE* %4, null br i1 %tobool6, label %if.end9, label %if.then7 if.then7: ; preds = %if.end %call8 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([20 x i8], [20 x i8]* @.str.10, i64 0, i64 0)) call void @exit(i32 1) #13 unreachable if.end9: ; preds = %if.end br label %while.cond10 while.cond10: ; preds = %for.end41, %if.end9 %5 = load %struct._IO_FILE*, %struct._IO_FILE** %fp, align 8 %call11 = call i32 @feof(%struct._IO_FILE* %5) #12 %tobool12 = icmp ne i32 %call11, 0 %lnot13 = xor i1 %tobool12, true br i1 %lnot13, label %while.body14, label %while.end while.body14: ; preds = %while.cond10 %recString = getelementptr inbounds %struct.record, %struct.record* %record, i32 0, i32 0 %arraydecay15 = getelementptr inbounds [53 x i8], [53 x i8]* %recString, i64 0, i64 0 %6 = load %struct._IO_FILE*, %struct._IO_FILE** %fp, align 8 %call16 = call i8* @fgets(i8* %arraydecay15, i32 49, %struct._IO_FILE* %6) %7 = load %struct._IO_FILE*, %struct._IO_FILE** %fp, align 8 %call17 = call i32 @fgetc(%struct._IO_FILE* %7) %8 = load %struct._IO_FILE*, %struct._IO_FILE** %fp, align 8 %call18 = call i32 @feof(%struct._IO_FILE* %8) #12 %tobool19 = icmp ne i32 %call18, 0 br i1 %tobool19, label %if.then20, label %if.end21 if.then20: ; preds = %while.body14 br label %while.end if.end21: ; preds = %while.body14 store i32 0, i32* %i, align 4 br label %for.cond for.cond: ; preds = %for.inc, %if.end21 %9 = load i32, i32* %i, align 4 %cmp22 = icmp slt i32 %9, 5 br i1 %cmp22, label %for.body, label %for.end for.body: ; preds = %for.cond %recString23 = getelementptr inbounds %struct.record, %struct.record* %record, i32 0, i32 0 %arraydecay24 = getelementptr inbounds [53 x i8], [53 x i8]* %recString23, i64 0, i64 0 %10 = load i32, i32* %i, align 4 %idx.ext = sext i32 %10 to i64 %add.ptr = getelementptr inbounds i8, i8* %arraydecay24, i64 %idx.ext %add.ptr25 = getelementptr inbounds i8, i8* %add.ptr, i64 28 %11 = load i8, i8* %add.ptr25, align 1 %12 = load i32, i32* %i, align 4 %idxprom = sext i32 %12 to i64 %arrayidx = getelementptr inbounds [6 x i8], [6 x i8]* %substr, i64 0, i64 %idxprom store i8 %11, i8* %arrayidx, align 1 br label %for.inc for.inc: ; preds = %for.body %13 = load i32, i32* %i, align 4 %inc = add nsw i32 %13, 1 store i32 %inc, i32* %i, align 4 br label %for.cond for.end: ; preds = %for.cond %arrayidx26 = getelementptr inbounds [6 x i8], [6 x i8]* %substr, i64 0, i64 5 store i8 0, i8* %arrayidx26, align 1 %arraydecay27 = getelementptr inbounds [6 x i8], [6 x i8]* %substr, i64 0, i64 0 %call28 = call double @atof(i8* %arraydecay27) #14 %conv = fptrunc double %call28 to float %lat = getelementptr inbounds %struct.latLong, %struct.latLong* %latLong, i32 0, i32 0 store float %conv, float* %lat, align 4 store i32 0, i32* %i, align 4 br label %for.cond29 for.cond29: ; preds = %for.inc39, %for.end %14 = load i32, i32* %i, align 4 %cmp30 = icmp slt i32 %14, 5 br i1 %cmp30, label %for.body31, label %for.end41 for.body31: ; preds = %for.cond29 %recString32 = getelementptr inbounds %struct.record, %struct.record* %record, i32 0, i32 0 %arraydecay33 = getelementptr inbounds [53 x i8], [53 x i8]* %recString32, i64 0, i64 0 %15 = load i32, i32* %i, align 4 %idx.ext34 = sext i32 %15 to i64 %add.ptr35 = getelementptr inbounds i8, i8* %arraydecay33, i64 %idx.ext34 %add.ptr36 = getelementptr inbounds i8, i8* %add.ptr35, i64 33 %16 = load i8, i8* %add.ptr36, align 1 %17 = load i32, i32* %i, align 4 %idxprom37 = sext i32 %17 to i64 %arrayidx38 = getelementptr inbounds [6 x i8], [6 x i8]* %substr, i64 0, i64 %idxprom37 store i8 %16, i8* %arrayidx38, align 1 br label %for.inc39 for.inc39: ; preds = %for.body31 %18 = load i32, i32* %i, align 4 %inc40 = add nsw i32 %18, 1 store i32 %inc40, i32* %i, align 4 br label %for.cond29 for.end41: ; preds = %for.cond29 %arrayidx42 = getelementptr inbounds [6 x i8], [6 x i8]* %substr, i64 0, i64 5 store i8 0, i8* %arrayidx42, align 1 %arraydecay43 = getelementptr inbounds [6 x i8], [6 x i8]* %substr, i64 0, i64 0 %call44 = call double @atof(i8* %arraydecay43) #14 %conv45 = fptrunc double %call44 to float %lng = getelementptr inbounds %struct.latLong, %struct.latLong* %latLong, i32 0, i32 1 store float %conv45, float* %lng, align 4 %19 = load %"class.std::vector.0"*, %"class.std::vector.0"** %locations.addr, align 8 call void @_ZNSt6vectorI7latLongSaIS0_EE9push_backERKS0_(%"class.std::vector.0"* %19, %struct.latLong* dereferenceable(8) %latLong) %20 = load %"class.std::vector"*, %"class.std::vector"** %records.addr, align 8 call void @_ZNSt6vectorI6recordSaIS0_EE9push_backERKS0_(%"class.std::vector"* %20, %struct.record* dereferenceable(60) %record) %21 = load i32, i32* %recNum, align 4 %inc46 = add nsw i32 %21, 1 store i32 %inc46, i32* %recNum, align 4 br label %while.cond10 while.end: ; preds = %if.then20, %while.cond10 %22 = load %struct._IO_FILE*, %struct._IO_FILE** %fp, align 8 %call47 = call i32 @fclose(%struct._IO_FILE* %22) br label %while.cond while.end48: ; preds = %while.cond %23 = load %struct._IO_FILE*, %struct._IO_FILE** %flist, align 8 %call49 = call i32 @fclose(%struct._IO_FILE* %23) %24 = load i32, i32* %recNum, align 4 ret i32 %24 } declare dso_local i32 @cudaGetDeviceProperties(%struct.cudaDeviceProp*, i32) #3 declare dso_local i32 @cudaDeviceSynchronize() #3 ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZN4dim3C2Ejjj(%struct.dim3* %this, i32 %vx, i32 %vy, i32 %vz) unnamed_addr #4 comdat align 2 { entry: %this.addr = alloca %struct.dim3*, align 8 %vx.addr = alloca i32, align 4 %vy.addr = alloca i32, align 4 %vz.addr = alloca i32, align 4 store %struct.dim3* %this, %struct.dim3** %this.addr, align 8 store i32 %vx, i32* %vx.addr, align 4 store i32 %vy, i32* %vy.addr, align 4 store i32 %vz, i32* %vz.addr, align 4 %this1 = load %struct.dim3*, %struct.dim3** %this.addr, align 8 %x = getelementptr inbounds %struct.dim3, %struct.dim3* %this1, i32 0, i32 0 %0 = load i32, i32* %vx.addr, align 4 store i32 %0, i32* %x, align 4 %y = getelementptr inbounds %struct.dim3, %struct.dim3* %this1, i32 0, i32 1 %1 = load i32, i32* %vy.addr, align 4 store i32 %1, i32* %y, align 4 %z = getelementptr inbounds %struct.dim3, %struct.dim3* %this1, i32 0, i32 2 %2 = load i32, i32* %vz.addr, align 4 store i32 %2, i32* %z, align 4 ret void } ; Function Attrs: nounwind declare dso_local noalias i8* @malloc(i64) #5 declare dso_local i32 @cudaMalloc(i8**, i64) #3 declare dso_local i32 @cudaMemcpy(i8*, i8*, i64, i32) #3 ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local dereferenceable(8) %struct.latLong* @_ZNSt6vectorI7latLongSaIS0_EEixEm(%"class.std::vector.0"* %this, i64 %__n) #4 comdat align 2 { entry: %this.addr = alloca %"class.std::vector.0"*, align 8 %__n.addr = alloca i64, align 8 store %"class.std::vector.0"* %this, %"class.std::vector.0"** %this.addr, align 8 store i64 %__n, i64* %__n.addr, align 8 %this1 = load %"class.std::vector.0"*, %"class.std::vector.0"** %this.addr, align 8 %0 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Vector_base.1"* %_M_impl = getelementptr inbounds %"struct.std::_Vector_base.1", %"struct.std::_Vector_base.1"* %0, i32 0, i32 0 %_M_start = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl, i32 0, i32 0 %1 = load %struct.latLong*, %struct.latLong** %_M_start, align 8 %2 = load i64, i64* %__n.addr, align 8 %add.ptr = getelementptr inbounds %struct.latLong, %struct.latLong* %1, i64 %2 ret %struct.latLong* %add.ptr } declare dso_local i32 @__cudaPushCallConfiguration(i64, i32, i64, i32, i64, i8*) #3 ; Function Attrs: noinline optnone uwtable define dso_local void @_Z10findLowestRSt6vectorI6recordSaIS0_EEPfii(%"class.std::vector"* dereferenceable(24) %records, float* %distances, i32 %numRecords, i32 %topN) #0 { entry: %records.addr = alloca %"class.std::vector"*, align 8 %distances.addr = alloca float*, align 8 %numRecords.addr = alloca i32, align 4 %topN.addr = alloca i32, align 4 %i = alloca i32, align 4 %j = alloca i32, align 4 %val = alloca float, align 4 %minLoc = alloca i32, align 4 %tempRec = alloca %struct.record*, align 8 %tempDist = alloca float, align 4 store %"class.std::vector"* %records, %"class.std::vector"** %records.addr, align 8 store float* %distances, float** %distances.addr, align 8 store i32 %numRecords, i32* %numRecords.addr, align 4 store i32 %topN, i32* %topN.addr, align 4 store i32 0, i32* %i, align 4 br label %for.cond for.cond: ; preds = %for.inc25, %entry %0 = load i32, i32* %i, align 4 %1 = load i32, i32* %topN.addr, align 4 %cmp = icmp slt i32 %0, %1 br i1 %cmp, label %for.body, label %for.end27 for.body: ; preds = %for.cond %2 = load i32, i32* %i, align 4 store i32 %2, i32* %minLoc, align 4 %3 = load i32, i32* %i, align 4 store i32 %3, i32* %j, align 4 br label %for.cond1 for.cond1: ; preds = %for.inc, %for.body %4 = load i32, i32* %j, align 4 %5 = load i32, i32* %numRecords.addr, align 4 %cmp2 = icmp slt i32 %4, %5 br i1 %cmp2, label %for.body3, label %for.end for.body3: ; preds = %for.cond1 %6 = load float*, float** %distances.addr, align 8 %7 = load i32, i32* %j, align 4 %idxprom = sext i32 %7 to i64 %arrayidx = getelementptr inbounds float, float* %6, i64 %idxprom %8 = load float, float* %arrayidx, align 4 store float %8, float* %val, align 4 %9 = load float, float* %val, align 4 %10 = load float*, float** %distances.addr, align 8 %11 = load i32, i32* %minLoc, align 4 %idxprom4 = sext i32 %11 to i64 %arrayidx5 = getelementptr inbounds float, float* %10, i64 %idxprom4 %12 = load float, float* %arrayidx5, align 4 %cmp6 = fcmp olt float %9, %12 br i1 %cmp6, label %if.then, label %if.end if.then: ; preds = %for.body3 %13 = load i32, i32* %j, align 4 store i32 %13, i32* %minLoc, align 4 br label %if.end if.end: ; preds = %if.then, %for.body3 br label %for.inc for.inc: ; preds = %if.end %14 = load i32, i32* %j, align 4 %inc = add nsw i32 %14, 1 store i32 %inc, i32* %j, align 4 br label %for.cond1 for.end: ; preds = %for.cond1 %15 = load %"class.std::vector"*, %"class.std::vector"** %records.addr, align 8 %16 = load i32, i32* %i, align 4 %conv = sext i32 %16 to i64 %call = call dereferenceable(60) %struct.record* @_ZNSt6vectorI6recordSaIS0_EEixEm(%"class.std::vector"* %15, i64 %conv) store %struct.record* %call, %struct.record** %tempRec, align 8 %17 = load %"class.std::vector"*, %"class.std::vector"** %records.addr, align 8 %18 = load i32, i32* %minLoc, align 4 %conv7 = sext i32 %18 to i64 %call8 = call dereferenceable(60) %struct.record* @_ZNSt6vectorI6recordSaIS0_EEixEm(%"class.std::vector"* %17, i64 %conv7) %19 = load %"class.std::vector"*, %"class.std::vector"** %records.addr, align 8 %20 = load i32, i32* %i, align 4 %conv9 = sext i32 %20 to i64 %call10 = call dereferenceable(60) %struct.record* @_ZNSt6vectorI6recordSaIS0_EEixEm(%"class.std::vector"* %19, i64 %conv9) %21 = bitcast %struct.record* %call10 to i8* %22 = bitcast %struct.record* %call8 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %21, i8* align 4 %22, i64 60, i1 false) %23 = load %struct.record*, %struct.record** %tempRec, align 8 %24 = load %"class.std::vector"*, %"class.std::vector"** %records.addr, align 8 %25 = load i32, i32* %minLoc, align 4 %conv11 = sext i32 %25 to i64 %call12 = call dereferenceable(60) %struct.record* @_ZNSt6vectorI6recordSaIS0_EEixEm(%"class.std::vector"* %24, i64 %conv11) %26 = bitcast %struct.record* %call12 to i8* %27 = bitcast %struct.record* %23 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %26, i8* align 4 %27, i64 60, i1 false) %28 = load float*, float** %distances.addr, align 8 %29 = load i32, i32* %i, align 4 %idxprom13 = sext i32 %29 to i64 %arrayidx14 = getelementptr inbounds float, float* %28, i64 %idxprom13 %30 = load float, float* %arrayidx14, align 4 store float %30, float* %tempDist, align 4 %31 = load float*, float** %distances.addr, align 8 %32 = load i32, i32* %minLoc, align 4 %idxprom15 = sext i32 %32 to i64 %arrayidx16 = getelementptr inbounds float, float* %31, i64 %idxprom15 %33 = load float, float* %arrayidx16, align 4 %34 = load float*, float** %distances.addr, align 8 %35 = load i32, i32* %i, align 4 %idxprom17 = sext i32 %35 to i64 %arrayidx18 = getelementptr inbounds float, float* %34, i64 %idxprom17 store float %33, float* %arrayidx18, align 4 %36 = load float, float* %tempDist, align 4 %37 = load float*, float** %distances.addr, align 8 %38 = load i32, i32* %minLoc, align 4 %idxprom19 = sext i32 %38 to i64 %arrayidx20 = getelementptr inbounds float, float* %37, i64 %idxprom19 store float %36, float* %arrayidx20, align 4 %39 = load float*, float** %distances.addr, align 8 %40 = load i32, i32* %i, align 4 %idxprom21 = sext i32 %40 to i64 %arrayidx22 = getelementptr inbounds float, float* %39, i64 %idxprom21 %41 = load float, float* %arrayidx22, align 4 %42 = load %"class.std::vector"*, %"class.std::vector"** %records.addr, align 8 %43 = load i32, i32* %i, align 4 %conv23 = sext i32 %43 to i64 %call24 = call dereferenceable(60) %struct.record* @_ZNSt6vectorI6recordSaIS0_EEixEm(%"class.std::vector"* %42, i64 %conv23) %distance = getelementptr inbounds %struct.record, %struct.record* %call24, i32 0, i32 1 store float %41, float* %distance, align 4 br label %for.inc25 for.inc25: ; preds = %for.end %44 = load i32, i32* %i, align 4 %inc26 = add nsw i32 %44, 1 store i32 %inc26, i32* %i, align 4 br label %for.cond for.end27: ; preds = %for.cond ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local dereferenceable(60) %struct.record* @_ZNSt6vectorI6recordSaIS0_EEixEm(%"class.std::vector"* %this, i64 %__n) #4 comdat align 2 { entry: %this.addr = alloca %"class.std::vector"*, align 8 %__n.addr = alloca i64, align 8 store %"class.std::vector"* %this, %"class.std::vector"** %this.addr, align 8 store i64 %__n, i64* %__n.addr, align 8 %this1 = load %"class.std::vector"*, %"class.std::vector"** %this.addr, align 8 %0 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %0, i32 0, i32 0 %_M_start = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl, i32 0, i32 0 %1 = load %struct.record*, %struct.record** %_M_start, align 8 %2 = load i64, i64* %__n.addr, align 8 %add.ptr = getelementptr inbounds %struct.record, %struct.record* %1, i64 %2 ret %struct.record* %add.ptr } ; Function Attrs: nounwind declare dso_local void @free(i8*) #5 declare dso_local i32 @cudaFree(i8*) #3 ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt6vectorI7latLongSaIS0_EED2Ev(%"class.std::vector.0"* %this) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.std::vector.0"*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.std::vector.0"* %this, %"class.std::vector.0"** %this.addr, align 8 %this1 = load %"class.std::vector.0"*, %"class.std::vector.0"** %this.addr, align 8 %0 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Vector_base.1"* %_M_impl = getelementptr inbounds %"struct.std::_Vector_base.1", %"struct.std::_Vector_base.1"* %0, i32 0, i32 0 %_M_start = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl, i32 0, i32 0 %1 = load %struct.latLong*, %struct.latLong** %_M_start, align 8 %2 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Vector_base.1"* %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base.1", %"struct.std::_Vector_base.1"* %2, i32 0, i32 0 %_M_finish = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl2, i32 0, i32 1 %3 = load %struct.latLong*, %struct.latLong** %_M_finish, align 8 %4 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Vector_base.1"* %call = invoke dereferenceable(1) %"class.std::allocator.2"* @_ZNSt12_Vector_baseI7latLongSaIS0_EE19_M_get_Tp_allocatorEv(%"struct.std::_Vector_base.1"* %4) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry invoke void @_ZSt8_DestroyIP7latLongS0_EvT_S2_RSaIT0_E(%struct.latLong* %1, %struct.latLong* %3, %"class.std::allocator.2"* dereferenceable(1) %call) to label %invoke.cont3 unwind label %lpad invoke.cont3: ; preds = %invoke.cont %5 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Vector_base.1"* call void @_ZNSt12_Vector_baseI7latLongSaIS0_EED2Ev(%"struct.std::_Vector_base.1"* %5) ret void lpad: ; preds = %invoke.cont, %entry %6 = landingpad { i8*, i32 } cleanup %7 = extractvalue { i8*, i32 } %6, 0 store i8* %7, i8** %exn.slot, align 8 %8 = extractvalue { i8*, i32 } %6, 1 store i32 %8, i32* %ehselector.slot, align 4 %9 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Vector_base.1"* invoke void @_ZNSt12_Vector_baseI7latLongSaIS0_EED2Ev(%"struct.std::_Vector_base.1"* %9) to label %invoke.cont4 unwind label %terminate.lpad invoke.cont4: ; preds = %lpad br label %eh.resume eh.resume: ; preds = %invoke.cont4 %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val5 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val5 terminate.lpad: ; preds = %lpad %10 = landingpad { i8*, i32 } catch i8* null %11 = extractvalue { i8*, i32 } %10, 0 call void @__clang_call_terminate(i8* %11) #13 unreachable } ; Function Attrs: noinline noreturn nounwind define linkonce_odr hidden void @__clang_call_terminate(i8* %0) #6 comdat { %2 = call i8* @__cxa_begin_catch(i8* %0) #12 call void @_ZSt9terminatev() #13 unreachable } declare dso_local i8* @__cxa_begin_catch(i8*) declare dso_local void @_ZSt9terminatev() ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt6vectorI6recordSaIS0_EED2Ev(%"class.std::vector"* %this) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"class.std::vector"*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"class.std::vector"* %this, %"class.std::vector"** %this.addr, align 8 %this1 = load %"class.std::vector"*, %"class.std::vector"** %this.addr, align 8 %0 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %0, i32 0, i32 0 %_M_start = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl, i32 0, i32 0 %1 = load %struct.record*, %struct.record** %_M_start, align 8 %2 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %2, i32 0, i32 0 %_M_finish = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl2, i32 0, i32 1 %3 = load %struct.record*, %struct.record** %_M_finish, align 8 %4 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %call = invoke dereferenceable(1) %"class.std::allocator"* @_ZNSt12_Vector_baseI6recordSaIS0_EE19_M_get_Tp_allocatorEv(%"struct.std::_Vector_base"* %4) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry invoke void @_ZSt8_DestroyIP6recordS0_EvT_S2_RSaIT0_E(%struct.record* %1, %struct.record* %3, %"class.std::allocator"* dereferenceable(1) %call) to label %invoke.cont3 unwind label %lpad invoke.cont3: ; preds = %invoke.cont %5 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* call void @_ZNSt12_Vector_baseI6recordSaIS0_EED2Ev(%"struct.std::_Vector_base"* %5) ret void lpad: ; preds = %invoke.cont, %entry %6 = landingpad { i8*, i32 } cleanup %7 = extractvalue { i8*, i32 } %6, 0 store i8* %7, i8** %exn.slot, align 8 %8 = extractvalue { i8*, i32 } %6, 1 store i32 %8, i32* %ehselector.slot, align 4 %9 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* invoke void @_ZNSt12_Vector_baseI6recordSaIS0_EED2Ev(%"struct.std::_Vector_base"* %9) to label %invoke.cont4 unwind label %terminate.lpad invoke.cont4: ; preds = %lpad br label %eh.resume eh.resume: ; preds = %invoke.cont4 %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val5 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val5 terminate.lpad: ; preds = %lpad %10 = landingpad { i8*, i32 } catch i8* null %11 = extractvalue { i8*, i32 } %10, 0 call void @__clang_call_terminate(i8* %11) #13 unreachable } declare dso_local %struct._IO_FILE* @fopen(i8*, i8*) #3 ; Function Attrs: nounwind declare dso_local i32 @feof(%struct._IO_FILE*) #5 declare dso_local i32 @fscanf(%struct._IO_FILE*, i8*, ...) #3 declare dso_local i32 @fprintf(%struct._IO_FILE*, i8*, ...) #3 ; Function Attrs: noreturn nounwind declare dso_local void @exit(i32) #7 declare dso_local i8* @fgets(i8*, i32, %struct._IO_FILE*) #3 declare dso_local i32 @fgetc(%struct._IO_FILE*) #3 ; Function Attrs: nounwind readonly declare dso_local double @atof(i8*) #8 ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt6vectorI7latLongSaIS0_EE9push_backERKS0_(%"class.std::vector.0"* %this, %struct.latLong* dereferenceable(8) %__x) #0 comdat align 2 { entry: %this.addr = alloca %"class.std::vector.0"*, align 8 %__x.addr = alloca %struct.latLong*, align 8 %agg.tmp = alloca %"class.__gnu_cxx::__normal_iterator", align 8 store %"class.std::vector.0"* %this, %"class.std::vector.0"** %this.addr, align 8 store %struct.latLong* %__x, %struct.latLong** %__x.addr, align 8 %this1 = load %"class.std::vector.0"*, %"class.std::vector.0"** %this.addr, align 8 %0 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Vector_base.1"* %_M_impl = getelementptr inbounds %"struct.std::_Vector_base.1", %"struct.std::_Vector_base.1"* %0, i32 0, i32 0 %_M_finish = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl, i32 0, i32 1 %1 = load %struct.latLong*, %struct.latLong** %_M_finish, align 8 %2 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Vector_base.1"* %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base.1", %"struct.std::_Vector_base.1"* %2, i32 0, i32 0 %_M_end_of_storage = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl2, i32 0, i32 2 %3 = load %struct.latLong*, %struct.latLong** %_M_end_of_storage, align 8 %cmp = icmp ne %struct.latLong* %1, %3 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry %4 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Vector_base.1"* %_M_impl3 = getelementptr inbounds %"struct.std::_Vector_base.1", %"struct.std::_Vector_base.1"* %4, i32 0, i32 0 %5 = bitcast %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl3 to %"class.std::allocator.2"* %6 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Vector_base.1"* %_M_impl4 = getelementptr inbounds %"struct.std::_Vector_base.1", %"struct.std::_Vector_base.1"* %6, i32 0, i32 0 %_M_finish5 = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl4, i32 0, i32 1 %7 = load %struct.latLong*, %struct.latLong** %_M_finish5, align 8 %8 = load %struct.latLong*, %struct.latLong** %__x.addr, align 8 call void @_ZN9__gnu_cxx14__alloc_traitsISaI7latLongEE9constructIS1_EEvRS2_PS1_RKT_(%"class.std::allocator.2"* dereferenceable(1) %5, %struct.latLong* %7, %struct.latLong* dereferenceable(8) %8) %9 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Vector_base.1"* %_M_impl6 = getelementptr inbounds %"struct.std::_Vector_base.1", %"struct.std::_Vector_base.1"* %9, i32 0, i32 0 %_M_finish7 = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl6, i32 0, i32 1 %10 = load %struct.latLong*, %struct.latLong** %_M_finish7, align 8 %incdec.ptr = getelementptr inbounds %struct.latLong, %struct.latLong* %10, i32 1 store %struct.latLong* %incdec.ptr, %struct.latLong** %_M_finish7, align 8 br label %if.end if.else: ; preds = %entry %call = call %struct.latLong* @_ZNSt6vectorI7latLongSaIS0_EE3endEv(%"class.std::vector.0"* %this1) %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %agg.tmp, i32 0, i32 0 store %struct.latLong* %call, %struct.latLong** %coerce.dive, align 8 %11 = load %struct.latLong*, %struct.latLong** %__x.addr, align 8 %coerce.dive8 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %agg.tmp, i32 0, i32 0 %12 = load %struct.latLong*, %struct.latLong** %coerce.dive8, align 8 call void @_ZNSt6vectorI7latLongSaIS0_EE17_M_realloc_insertEN9__gnu_cxx17__normal_iteratorIPS0_S2_EERKS0_(%"class.std::vector.0"* %this1, %struct.latLong* %12, %struct.latLong* dereferenceable(8) %11) br label %if.end if.end: ; preds = %if.else, %if.then ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt6vectorI6recordSaIS0_EE9push_backERKS0_(%"class.std::vector"* %this, %struct.record* dereferenceable(60) %__x) #0 comdat align 2 { entry: %this.addr = alloca %"class.std::vector"*, align 8 %__x.addr = alloca %struct.record*, align 8 %agg.tmp = alloca %"class.__gnu_cxx::__normal_iterator.5", align 8 store %"class.std::vector"* %this, %"class.std::vector"** %this.addr, align 8 store %struct.record* %__x, %struct.record** %__x.addr, align 8 %this1 = load %"class.std::vector"*, %"class.std::vector"** %this.addr, align 8 %0 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %0, i32 0, i32 0 %_M_finish = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl, i32 0, i32 1 %1 = load %struct.record*, %struct.record** %_M_finish, align 8 %2 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %2, i32 0, i32 0 %_M_end_of_storage = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl2, i32 0, i32 2 %3 = load %struct.record*, %struct.record** %_M_end_of_storage, align 8 %cmp = icmp ne %struct.record* %1, %3 br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry %4 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl3 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %4, i32 0, i32 0 %5 = bitcast %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl3 to %"class.std::allocator"* %6 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl4 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %6, i32 0, i32 0 %_M_finish5 = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl4, i32 0, i32 1 %7 = load %struct.record*, %struct.record** %_M_finish5, align 8 %8 = load %struct.record*, %struct.record** %__x.addr, align 8 call void @_ZN9__gnu_cxx14__alloc_traitsISaI6recordEE9constructIS1_EEvRS2_PS1_RKT_(%"class.std::allocator"* dereferenceable(1) %5, %struct.record* %7, %struct.record* dereferenceable(60) %8) %9 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl6 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %9, i32 0, i32 0 %_M_finish7 = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl6, i32 0, i32 1 %10 = load %struct.record*, %struct.record** %_M_finish7, align 8 %incdec.ptr = getelementptr inbounds %struct.record, %struct.record* %10, i32 1 store %struct.record* %incdec.ptr, %struct.record** %_M_finish7, align 8 br label %if.end if.else: ; preds = %entry %call = call %struct.record* @_ZNSt6vectorI6recordSaIS0_EE3endEv(%"class.std::vector"* %this1) %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.5", %"class.__gnu_cxx::__normal_iterator.5"* %agg.tmp, i32 0, i32 0 store %struct.record* %call, %struct.record** %coerce.dive, align 8 %11 = load %struct.record*, %struct.record** %__x.addr, align 8 %coerce.dive8 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.5", %"class.__gnu_cxx::__normal_iterator.5"* %agg.tmp, i32 0, i32 0 %12 = load %struct.record*, %struct.record** %coerce.dive8, align 8 call void @_ZNSt6vectorI6recordSaIS0_EE17_M_realloc_insertEN9__gnu_cxx17__normal_iteratorIPS0_S2_EERKS0_(%"class.std::vector"* %this1, %struct.record* %12, %struct.record* dereferenceable(60) %11) br label %if.end if.end: ; preds = %if.else, %if.then ret void } declare dso_local i32 @fclose(%struct._IO_FILE*) #3 declare dso_local i8* @strncpy(i8*, i8*, i64) #3 ; Function Attrs: nounwind readonly declare dso_local i32 @atoi(i8*) #8 ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt12_Vector_baseI6recordSaIS0_EEC2Ev(%"struct.std::_Vector_base"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Vector_base"*, align 8 store %"struct.std::_Vector_base"* %this, %"struct.std::_Vector_base"** %this.addr, align 8 %this1 = load %"struct.std::_Vector_base"*, %"struct.std::_Vector_base"** %this.addr, align 8 %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %this1, i32 0, i32 0 call void @_ZNSt12_Vector_baseI6recordSaIS0_EE12_Vector_implC2Ev(%"struct.std::_Vector_base >::_Vector_impl"* %_M_impl) ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZNSt12_Vector_baseI6recordSaIS0_EE12_Vector_implC2Ev(%"struct.std::_Vector_base >::_Vector_impl"* %this) unnamed_addr #4 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Vector_base >::_Vector_impl"*, align 8 store %"struct.std::_Vector_base >::_Vector_impl"* %this, %"struct.std::_Vector_base >::_Vector_impl"** %this.addr, align 8 %this1 = load %"struct.std::_Vector_base >::_Vector_impl"*, %"struct.std::_Vector_base >::_Vector_impl"** %this.addr, align 8 %0 = bitcast %"struct.std::_Vector_base >::_Vector_impl"* %this1 to %"class.std::allocator"* call void @_ZNSaI6recordEC2Ev(%"class.std::allocator"* %0) #12 %_M_start = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %this1, i32 0, i32 0 store %struct.record* null, %struct.record** %_M_start, align 8 %_M_finish = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %this1, i32 0, i32 1 store %struct.record* null, %struct.record** %_M_finish, align 8 %_M_end_of_storage = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %this1, i32 0, i32 2 store %struct.record* null, %struct.record** %_M_end_of_storage, align 8 ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZNSaI6recordEC2Ev(%"class.std::allocator"* %this) unnamed_addr #4 comdat align 2 { entry: %this.addr = alloca %"class.std::allocator"*, align 8 store %"class.std::allocator"* %this, %"class.std::allocator"** %this.addr, align 8 %this1 = load %"class.std::allocator"*, %"class.std::allocator"** %this.addr, align 8 %0 = bitcast %"class.std::allocator"* %this1 to %"class.__gnu_cxx::new_allocator"* call void @_ZN9__gnu_cxx13new_allocatorI6recordEC2Ev(%"class.__gnu_cxx::new_allocator"* %0) #12 ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorI6recordEC2Ev(%"class.__gnu_cxx::new_allocator"* %this) unnamed_addr #4 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator"*, align 8 store %"class.__gnu_cxx::new_allocator"* %this, %"class.__gnu_cxx::new_allocator"** %this.addr, align 8 %this1 = load %"class.__gnu_cxx::new_allocator"*, %"class.__gnu_cxx::new_allocator"** %this.addr, align 8 ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZSt8_DestroyIP6recordS0_EvT_S2_RSaIT0_E(%struct.record* %__first, %struct.record* %__last, %"class.std::allocator"* dereferenceable(1) %0) #0 comdat { entry: %__first.addr = alloca %struct.record*, align 8 %__last.addr = alloca %struct.record*, align 8 %.addr = alloca %"class.std::allocator"*, align 8 store %struct.record* %__first, %struct.record** %__first.addr, align 8 store %struct.record* %__last, %struct.record** %__last.addr, align 8 store %"class.std::allocator"* %0, %"class.std::allocator"** %.addr, align 8 %1 = load %struct.record*, %struct.record** %__first.addr, align 8 %2 = load %struct.record*, %struct.record** %__last.addr, align 8 call void @_ZSt8_DestroyIP6recordEvT_S2_(%struct.record* %1, %struct.record* %2) ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local dereferenceable(1) %"class.std::allocator"* @_ZNSt12_Vector_baseI6recordSaIS0_EE19_M_get_Tp_allocatorEv(%"struct.std::_Vector_base"* %this) #4 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Vector_base"*, align 8 store %"struct.std::_Vector_base"* %this, %"struct.std::_Vector_base"** %this.addr, align 8 %this1 = load %"struct.std::_Vector_base"*, %"struct.std::_Vector_base"** %this.addr, align 8 %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %this1, i32 0, i32 0 %0 = bitcast %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl to %"class.std::allocator"* ret %"class.std::allocator"* %0 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt12_Vector_baseI6recordSaIS0_EED2Ev(%"struct.std::_Vector_base"* %this) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"struct.std::_Vector_base"*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"struct.std::_Vector_base"* %this, %"struct.std::_Vector_base"** %this.addr, align 8 %this1 = load %"struct.std::_Vector_base"*, %"struct.std::_Vector_base"** %this.addr, align 8 %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %this1, i32 0, i32 0 %_M_start = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl, i32 0, i32 0 %0 = load %struct.record*, %struct.record** %_M_start, align 8 %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %this1, i32 0, i32 0 %_M_end_of_storage = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl2, i32 0, i32 2 %1 = load %struct.record*, %struct.record** %_M_end_of_storage, align 8 %_M_impl3 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %this1, i32 0, i32 0 %_M_start4 = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl3, i32 0, i32 0 %2 = load %struct.record*, %struct.record** %_M_start4, align 8 %sub.ptr.lhs.cast = ptrtoint %struct.record* %1 to i64 %sub.ptr.rhs.cast = ptrtoint %struct.record* %2 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 60 invoke void @_ZNSt12_Vector_baseI6recordSaIS0_EE13_M_deallocateEPS0_m(%"struct.std::_Vector_base"* %this1, %struct.record* %0, i64 %sub.ptr.div) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %_M_impl5 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %this1, i32 0, i32 0 call void @_ZNSt12_Vector_baseI6recordSaIS0_EE12_Vector_implD2Ev(%"struct.std::_Vector_base >::_Vector_impl"* %_M_impl5) #12 ret void lpad: ; preds = %entry %3 = landingpad { i8*, i32 } cleanup %4 = extractvalue { i8*, i32 } %3, 0 store i8* %4, i8** %exn.slot, align 8 %5 = extractvalue { i8*, i32 } %3, 1 store i32 %5, i32* %ehselector.slot, align 4 %_M_impl6 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %this1, i32 0, i32 0 call void @_ZNSt12_Vector_baseI6recordSaIS0_EE12_Vector_implD2Ev(%"struct.std::_Vector_base >::_Vector_impl"* %_M_impl6) #12 br label %eh.resume eh.resume: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val7 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val7 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZSt8_DestroyIP6recordEvT_S2_(%struct.record* %__first, %struct.record* %__last) #0 comdat { entry: %__first.addr = alloca %struct.record*, align 8 %__last.addr = alloca %struct.record*, align 8 store %struct.record* %__first, %struct.record** %__first.addr, align 8 store %struct.record* %__last, %struct.record** %__last.addr, align 8 %0 = load %struct.record*, %struct.record** %__first.addr, align 8 %1 = load %struct.record*, %struct.record** %__last.addr, align 8 call void @_ZNSt12_Destroy_auxILb1EE9__destroyIP6recordEEvT_S4_(%struct.record* %0, %struct.record* %1) ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZNSt12_Destroy_auxILb1EE9__destroyIP6recordEEvT_S4_(%struct.record* %0, %struct.record* %1) #4 comdat align 2 { entry: %.addr = alloca %struct.record*, align 8 %.addr1 = alloca %struct.record*, align 8 store %struct.record* %0, %struct.record** %.addr, align 8 store %struct.record* %1, %struct.record** %.addr1, align 8 ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt12_Vector_baseI6recordSaIS0_EE13_M_deallocateEPS0_m(%"struct.std::_Vector_base"* %this, %struct.record* %__p, i64 %__n) #0 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Vector_base"*, align 8 %__p.addr = alloca %struct.record*, align 8 %__n.addr = alloca i64, align 8 store %"struct.std::_Vector_base"* %this, %"struct.std::_Vector_base"** %this.addr, align 8 store %struct.record* %__p, %struct.record** %__p.addr, align 8 store i64 %__n, i64* %__n.addr, align 8 %this1 = load %"struct.std::_Vector_base"*, %"struct.std::_Vector_base"** %this.addr, align 8 %0 = load %struct.record*, %struct.record** %__p.addr, align 8 %tobool = icmp ne %struct.record* %0, null br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %entry %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %this1, i32 0, i32 0 %1 = bitcast %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl to %"class.std::allocator"* %2 = load %struct.record*, %struct.record** %__p.addr, align 8 %3 = load i64, i64* %__n.addr, align 8 call void @_ZN9__gnu_cxx14__alloc_traitsISaI6recordEE10deallocateERS2_PS1_m(%"class.std::allocator"* dereferenceable(1) %1, %struct.record* %2, i64 %3) br label %if.end if.end: ; preds = %if.then, %entry ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZNSt12_Vector_baseI6recordSaIS0_EE12_Vector_implD2Ev(%"struct.std::_Vector_base >::_Vector_impl"* %this) unnamed_addr #4 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Vector_base >::_Vector_impl"*, align 8 store %"struct.std::_Vector_base >::_Vector_impl"* %this, %"struct.std::_Vector_base >::_Vector_impl"** %this.addr, align 8 %this1 = load %"struct.std::_Vector_base >::_Vector_impl"*, %"struct.std::_Vector_base >::_Vector_impl"** %this.addr, align 8 %0 = bitcast %"struct.std::_Vector_base >::_Vector_impl"* %this1 to %"class.std::allocator"* call void @_ZNSaI6recordED2Ev(%"class.std::allocator"* %0) #12 ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZN9__gnu_cxx14__alloc_traitsISaI6recordEE10deallocateERS2_PS1_m(%"class.std::allocator"* dereferenceable(1) %__a, %struct.record* %__p, i64 %__n) #0 comdat align 2 { entry: %__a.addr = alloca %"class.std::allocator"*, align 8 %__p.addr = alloca %struct.record*, align 8 %__n.addr = alloca i64, align 8 store %"class.std::allocator"* %__a, %"class.std::allocator"** %__a.addr, align 8 store %struct.record* %__p, %struct.record** %__p.addr, align 8 store i64 %__n, i64* %__n.addr, align 8 %0 = load %"class.std::allocator"*, %"class.std::allocator"** %__a.addr, align 8 %1 = bitcast %"class.std::allocator"* %0 to %"class.__gnu_cxx::new_allocator"* %2 = load %struct.record*, %struct.record** %__p.addr, align 8 %3 = load i64, i64* %__n.addr, align 8 call void @_ZN9__gnu_cxx13new_allocatorI6recordE10deallocateEPS1_m(%"class.__gnu_cxx::new_allocator"* %1, %struct.record* %2, i64 %3) ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorI6recordE10deallocateEPS1_m(%"class.__gnu_cxx::new_allocator"* %this, %struct.record* %__p, i64 %0) #4 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator"*, align 8 %__p.addr = alloca %struct.record*, align 8 %.addr = alloca i64, align 8 store %"class.__gnu_cxx::new_allocator"* %this, %"class.__gnu_cxx::new_allocator"** %this.addr, align 8 store %struct.record* %__p, %struct.record** %__p.addr, align 8 store i64 %0, i64* %.addr, align 8 %this1 = load %"class.__gnu_cxx::new_allocator"*, %"class.__gnu_cxx::new_allocator"** %this.addr, align 8 %1 = load %struct.record*, %struct.record** %__p.addr, align 8 %2 = bitcast %struct.record* %1 to i8* call void @_ZdlPv(i8* %2) #12 ret void } ; Function Attrs: nobuiltin nounwind declare dso_local void @_ZdlPv(i8*) #9 ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZNSaI6recordED2Ev(%"class.std::allocator"* %this) unnamed_addr #4 comdat align 2 { entry: %this.addr = alloca %"class.std::allocator"*, align 8 store %"class.std::allocator"* %this, %"class.std::allocator"** %this.addr, align 8 %this1 = load %"class.std::allocator"*, %"class.std::allocator"** %this.addr, align 8 %0 = bitcast %"class.std::allocator"* %this1 to %"class.__gnu_cxx::new_allocator"* call void @_ZN9__gnu_cxx13new_allocatorI6recordED2Ev(%"class.__gnu_cxx::new_allocator"* %0) #12 ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorI6recordED2Ev(%"class.__gnu_cxx::new_allocator"* %this) unnamed_addr #4 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator"*, align 8 store %"class.__gnu_cxx::new_allocator"* %this, %"class.__gnu_cxx::new_allocator"** %this.addr, align 8 %this1 = load %"class.__gnu_cxx::new_allocator"*, %"class.__gnu_cxx::new_allocator"** %this.addr, align 8 ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt12_Vector_baseI7latLongSaIS0_EEC2Ev(%"struct.std::_Vector_base.1"* %this) unnamed_addr #0 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Vector_base.1"*, align 8 store %"struct.std::_Vector_base.1"* %this, %"struct.std::_Vector_base.1"** %this.addr, align 8 %this1 = load %"struct.std::_Vector_base.1"*, %"struct.std::_Vector_base.1"** %this.addr, align 8 %_M_impl = getelementptr inbounds %"struct.std::_Vector_base.1", %"struct.std::_Vector_base.1"* %this1, i32 0, i32 0 call void @_ZNSt12_Vector_baseI7latLongSaIS0_EE12_Vector_implC2Ev(%"struct.std::_Vector_base >::_Vector_impl"* %_M_impl) ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZNSt12_Vector_baseI7latLongSaIS0_EE12_Vector_implC2Ev(%"struct.std::_Vector_base >::_Vector_impl"* %this) unnamed_addr #4 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Vector_base >::_Vector_impl"*, align 8 store %"struct.std::_Vector_base >::_Vector_impl"* %this, %"struct.std::_Vector_base >::_Vector_impl"** %this.addr, align 8 %this1 = load %"struct.std::_Vector_base >::_Vector_impl"*, %"struct.std::_Vector_base >::_Vector_impl"** %this.addr, align 8 %0 = bitcast %"struct.std::_Vector_base >::_Vector_impl"* %this1 to %"class.std::allocator.2"* call void @_ZNSaI7latLongEC2Ev(%"class.std::allocator.2"* %0) #12 %_M_start = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %this1, i32 0, i32 0 store %struct.latLong* null, %struct.latLong** %_M_start, align 8 %_M_finish = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %this1, i32 0, i32 1 store %struct.latLong* null, %struct.latLong** %_M_finish, align 8 %_M_end_of_storage = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %this1, i32 0, i32 2 store %struct.latLong* null, %struct.latLong** %_M_end_of_storage, align 8 ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZNSaI7latLongEC2Ev(%"class.std::allocator.2"* %this) unnamed_addr #4 comdat align 2 { entry: %this.addr = alloca %"class.std::allocator.2"*, align 8 store %"class.std::allocator.2"* %this, %"class.std::allocator.2"** %this.addr, align 8 %this1 = load %"class.std::allocator.2"*, %"class.std::allocator.2"** %this.addr, align 8 %0 = bitcast %"class.std::allocator.2"* %this1 to %"class.__gnu_cxx::new_allocator.3"* call void @_ZN9__gnu_cxx13new_allocatorI7latLongEC2Ev(%"class.__gnu_cxx::new_allocator.3"* %0) #12 ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorI7latLongEC2Ev(%"class.__gnu_cxx::new_allocator.3"* %this) unnamed_addr #4 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.3"*, align 8 store %"class.__gnu_cxx::new_allocator.3"* %this, %"class.__gnu_cxx::new_allocator.3"** %this.addr, align 8 %this1 = load %"class.__gnu_cxx::new_allocator.3"*, %"class.__gnu_cxx::new_allocator.3"** %this.addr, align 8 ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZSt8_DestroyIP7latLongS0_EvT_S2_RSaIT0_E(%struct.latLong* %__first, %struct.latLong* %__last, %"class.std::allocator.2"* dereferenceable(1) %0) #0 comdat { entry: %__first.addr = alloca %struct.latLong*, align 8 %__last.addr = alloca %struct.latLong*, align 8 %.addr = alloca %"class.std::allocator.2"*, align 8 store %struct.latLong* %__first, %struct.latLong** %__first.addr, align 8 store %struct.latLong* %__last, %struct.latLong** %__last.addr, align 8 store %"class.std::allocator.2"* %0, %"class.std::allocator.2"** %.addr, align 8 %1 = load %struct.latLong*, %struct.latLong** %__first.addr, align 8 %2 = load %struct.latLong*, %struct.latLong** %__last.addr, align 8 call void @_ZSt8_DestroyIP7latLongEvT_S2_(%struct.latLong* %1, %struct.latLong* %2) ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local dereferenceable(1) %"class.std::allocator.2"* @_ZNSt12_Vector_baseI7latLongSaIS0_EE19_M_get_Tp_allocatorEv(%"struct.std::_Vector_base.1"* %this) #4 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Vector_base.1"*, align 8 store %"struct.std::_Vector_base.1"* %this, %"struct.std::_Vector_base.1"** %this.addr, align 8 %this1 = load %"struct.std::_Vector_base.1"*, %"struct.std::_Vector_base.1"** %this.addr, align 8 %_M_impl = getelementptr inbounds %"struct.std::_Vector_base.1", %"struct.std::_Vector_base.1"* %this1, i32 0, i32 0 %0 = bitcast %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl to %"class.std::allocator.2"* ret %"class.std::allocator.2"* %0 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt12_Vector_baseI7latLongSaIS0_EED2Ev(%"struct.std::_Vector_base.1"* %this) unnamed_addr #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %this.addr = alloca %"struct.std::_Vector_base.1"*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 store %"struct.std::_Vector_base.1"* %this, %"struct.std::_Vector_base.1"** %this.addr, align 8 %this1 = load %"struct.std::_Vector_base.1"*, %"struct.std::_Vector_base.1"** %this.addr, align 8 %_M_impl = getelementptr inbounds %"struct.std::_Vector_base.1", %"struct.std::_Vector_base.1"* %this1, i32 0, i32 0 %_M_start = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl, i32 0, i32 0 %0 = load %struct.latLong*, %struct.latLong** %_M_start, align 8 %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base.1", %"struct.std::_Vector_base.1"* %this1, i32 0, i32 0 %_M_end_of_storage = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl2, i32 0, i32 2 %1 = load %struct.latLong*, %struct.latLong** %_M_end_of_storage, align 8 %_M_impl3 = getelementptr inbounds %"struct.std::_Vector_base.1", %"struct.std::_Vector_base.1"* %this1, i32 0, i32 0 %_M_start4 = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl3, i32 0, i32 0 %2 = load %struct.latLong*, %struct.latLong** %_M_start4, align 8 %sub.ptr.lhs.cast = ptrtoint %struct.latLong* %1 to i64 %sub.ptr.rhs.cast = ptrtoint %struct.latLong* %2 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 invoke void @_ZNSt12_Vector_baseI7latLongSaIS0_EE13_M_deallocateEPS0_m(%"struct.std::_Vector_base.1"* %this1, %struct.latLong* %0, i64 %sub.ptr.div) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry %_M_impl5 = getelementptr inbounds %"struct.std::_Vector_base.1", %"struct.std::_Vector_base.1"* %this1, i32 0, i32 0 call void @_ZNSt12_Vector_baseI7latLongSaIS0_EE12_Vector_implD2Ev(%"struct.std::_Vector_base >::_Vector_impl"* %_M_impl5) #12 ret void lpad: ; preds = %entry %3 = landingpad { i8*, i32 } cleanup %4 = extractvalue { i8*, i32 } %3, 0 store i8* %4, i8** %exn.slot, align 8 %5 = extractvalue { i8*, i32 } %3, 1 store i32 %5, i32* %ehselector.slot, align 4 %_M_impl6 = getelementptr inbounds %"struct.std::_Vector_base.1", %"struct.std::_Vector_base.1"* %this1, i32 0, i32 0 call void @_ZNSt12_Vector_baseI7latLongSaIS0_EE12_Vector_implD2Ev(%"struct.std::_Vector_base >::_Vector_impl"* %_M_impl6) #12 br label %eh.resume eh.resume: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn, 0 %lpad.val7 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val7 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZSt8_DestroyIP7latLongEvT_S2_(%struct.latLong* %__first, %struct.latLong* %__last) #0 comdat { entry: %__first.addr = alloca %struct.latLong*, align 8 %__last.addr = alloca %struct.latLong*, align 8 store %struct.latLong* %__first, %struct.latLong** %__first.addr, align 8 store %struct.latLong* %__last, %struct.latLong** %__last.addr, align 8 %0 = load %struct.latLong*, %struct.latLong** %__first.addr, align 8 %1 = load %struct.latLong*, %struct.latLong** %__last.addr, align 8 call void @_ZNSt12_Destroy_auxILb1EE9__destroyIP7latLongEEvT_S4_(%struct.latLong* %0, %struct.latLong* %1) ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZNSt12_Destroy_auxILb1EE9__destroyIP7latLongEEvT_S4_(%struct.latLong* %0, %struct.latLong* %1) #4 comdat align 2 { entry: %.addr = alloca %struct.latLong*, align 8 %.addr1 = alloca %struct.latLong*, align 8 store %struct.latLong* %0, %struct.latLong** %.addr, align 8 store %struct.latLong* %1, %struct.latLong** %.addr1, align 8 ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt12_Vector_baseI7latLongSaIS0_EE13_M_deallocateEPS0_m(%"struct.std::_Vector_base.1"* %this, %struct.latLong* %__p, i64 %__n) #0 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Vector_base.1"*, align 8 %__p.addr = alloca %struct.latLong*, align 8 %__n.addr = alloca i64, align 8 store %"struct.std::_Vector_base.1"* %this, %"struct.std::_Vector_base.1"** %this.addr, align 8 store %struct.latLong* %__p, %struct.latLong** %__p.addr, align 8 store i64 %__n, i64* %__n.addr, align 8 %this1 = load %"struct.std::_Vector_base.1"*, %"struct.std::_Vector_base.1"** %this.addr, align 8 %0 = load %struct.latLong*, %struct.latLong** %__p.addr, align 8 %tobool = icmp ne %struct.latLong* %0, null br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %entry %_M_impl = getelementptr inbounds %"struct.std::_Vector_base.1", %"struct.std::_Vector_base.1"* %this1, i32 0, i32 0 %1 = bitcast %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl to %"class.std::allocator.2"* %2 = load %struct.latLong*, %struct.latLong** %__p.addr, align 8 %3 = load i64, i64* %__n.addr, align 8 call void @_ZN9__gnu_cxx14__alloc_traitsISaI7latLongEE10deallocateERS2_PS1_m(%"class.std::allocator.2"* dereferenceable(1) %1, %struct.latLong* %2, i64 %3) br label %if.end if.end: ; preds = %if.then, %entry ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZNSt12_Vector_baseI7latLongSaIS0_EE12_Vector_implD2Ev(%"struct.std::_Vector_base >::_Vector_impl"* %this) unnamed_addr #4 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Vector_base >::_Vector_impl"*, align 8 store %"struct.std::_Vector_base >::_Vector_impl"* %this, %"struct.std::_Vector_base >::_Vector_impl"** %this.addr, align 8 %this1 = load %"struct.std::_Vector_base >::_Vector_impl"*, %"struct.std::_Vector_base >::_Vector_impl"** %this.addr, align 8 %0 = bitcast %"struct.std::_Vector_base >::_Vector_impl"* %this1 to %"class.std::allocator.2"* call void @_ZNSaI7latLongED2Ev(%"class.std::allocator.2"* %0) #12 ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZN9__gnu_cxx14__alloc_traitsISaI7latLongEE10deallocateERS2_PS1_m(%"class.std::allocator.2"* dereferenceable(1) %__a, %struct.latLong* %__p, i64 %__n) #0 comdat align 2 { entry: %__a.addr = alloca %"class.std::allocator.2"*, align 8 %__p.addr = alloca %struct.latLong*, align 8 %__n.addr = alloca i64, align 8 store %"class.std::allocator.2"* %__a, %"class.std::allocator.2"** %__a.addr, align 8 store %struct.latLong* %__p, %struct.latLong** %__p.addr, align 8 store i64 %__n, i64* %__n.addr, align 8 %0 = load %"class.std::allocator.2"*, %"class.std::allocator.2"** %__a.addr, align 8 %1 = bitcast %"class.std::allocator.2"* %0 to %"class.__gnu_cxx::new_allocator.3"* %2 = load %struct.latLong*, %struct.latLong** %__p.addr, align 8 %3 = load i64, i64* %__n.addr, align 8 call void @_ZN9__gnu_cxx13new_allocatorI7latLongE10deallocateEPS1_m(%"class.__gnu_cxx::new_allocator.3"* %1, %struct.latLong* %2, i64 %3) ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorI7latLongE10deallocateEPS1_m(%"class.__gnu_cxx::new_allocator.3"* %this, %struct.latLong* %__p, i64 %0) #4 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.3"*, align 8 %__p.addr = alloca %struct.latLong*, align 8 %.addr = alloca i64, align 8 store %"class.__gnu_cxx::new_allocator.3"* %this, %"class.__gnu_cxx::new_allocator.3"** %this.addr, align 8 store %struct.latLong* %__p, %struct.latLong** %__p.addr, align 8 store i64 %0, i64* %.addr, align 8 %this1 = load %"class.__gnu_cxx::new_allocator.3"*, %"class.__gnu_cxx::new_allocator.3"** %this.addr, align 8 %1 = load %struct.latLong*, %struct.latLong** %__p.addr, align 8 %2 = bitcast %struct.latLong* %1 to i8* call void @_ZdlPv(i8* %2) #12 ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZNSaI7latLongED2Ev(%"class.std::allocator.2"* %this) unnamed_addr #4 comdat align 2 { entry: %this.addr = alloca %"class.std::allocator.2"*, align 8 store %"class.std::allocator.2"* %this, %"class.std::allocator.2"** %this.addr, align 8 %this1 = load %"class.std::allocator.2"*, %"class.std::allocator.2"** %this.addr, align 8 %0 = bitcast %"class.std::allocator.2"* %this1 to %"class.__gnu_cxx::new_allocator.3"* call void @_ZN9__gnu_cxx13new_allocatorI7latLongED2Ev(%"class.__gnu_cxx::new_allocator.3"* %0) #12 ret void } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorI7latLongED2Ev(%"class.__gnu_cxx::new_allocator.3"* %this) unnamed_addr #4 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.3"*, align 8 store %"class.__gnu_cxx::new_allocator.3"* %this, %"class.__gnu_cxx::new_allocator.3"** %this.addr, align 8 %this1 = load %"class.__gnu_cxx::new_allocator.3"*, %"class.__gnu_cxx::new_allocator.3"** %this.addr, align 8 ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZN9__gnu_cxx14__alloc_traitsISaI7latLongEE9constructIS1_EEvRS2_PS1_RKT_(%"class.std::allocator.2"* dereferenceable(1) %__a, %struct.latLong* %__p, %struct.latLong* dereferenceable(8) %__arg) #0 comdat align 2 { entry: %__a.addr = alloca %"class.std::allocator.2"*, align 8 %__p.addr = alloca %struct.latLong*, align 8 %__arg.addr = alloca %struct.latLong*, align 8 store %"class.std::allocator.2"* %__a, %"class.std::allocator.2"** %__a.addr, align 8 store %struct.latLong* %__p, %struct.latLong** %__p.addr, align 8 store %struct.latLong* %__arg, %struct.latLong** %__arg.addr, align 8 %0 = load %"class.std::allocator.2"*, %"class.std::allocator.2"** %__a.addr, align 8 %1 = bitcast %"class.std::allocator.2"* %0 to %"class.__gnu_cxx::new_allocator.3"* %2 = load %struct.latLong*, %struct.latLong** %__p.addr, align 8 %3 = load %struct.latLong*, %struct.latLong** %__arg.addr, align 8 call void @_ZN9__gnu_cxx13new_allocatorI7latLongE9constructEPS1_RKS1_(%"class.__gnu_cxx::new_allocator.3"* %1, %struct.latLong* %2, %struct.latLong* dereferenceable(8) %3) ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt6vectorI7latLongSaIS0_EE17_M_realloc_insertEN9__gnu_cxx17__normal_iteratorIPS0_S2_EERKS0_(%"class.std::vector.0"* %this, %struct.latLong* %__position.coerce, %struct.latLong* dereferenceable(8) %__x) #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %__position = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %this.addr = alloca %"class.std::vector.0"*, align 8 %__x.addr = alloca %struct.latLong*, align 8 %__len = alloca i64, align 8 %__elems_before = alloca i64, align 8 %ref.tmp = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %__new_start = alloca %struct.latLong*, align 8 %__new_finish = alloca %struct.latLong*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %__position, i32 0, i32 0 store %struct.latLong* %__position.coerce, %struct.latLong** %coerce.dive, align 8 store %"class.std::vector.0"* %this, %"class.std::vector.0"** %this.addr, align 8 store %struct.latLong* %__x, %struct.latLong** %__x.addr, align 8 %this1 = load %"class.std::vector.0"*, %"class.std::vector.0"** %this.addr, align 8 %call = call i64 @_ZNKSt6vectorI7latLongSaIS0_EE12_M_check_lenEmPKc(%"class.std::vector.0"* %this1, i64 1, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.28, i64 0, i64 0)) store i64 %call, i64* %__len, align 8 %call2 = call %struct.latLong* @_ZNSt6vectorI7latLongSaIS0_EE5beginEv(%"class.std::vector.0"* %this1) %coerce.dive3 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %ref.tmp, i32 0, i32 0 store %struct.latLong* %call2, %struct.latLong** %coerce.dive3, align 8 %call4 = call i64 @_ZN9__gnu_cxxmiIP7latLongSt6vectorIS1_SaIS1_EEEENS_17__normal_iteratorIT_T0_E15difference_typeERKS9_SC_(%"class.__gnu_cxx::__normal_iterator"* dereferenceable(8) %__position, %"class.__gnu_cxx::__normal_iterator"* dereferenceable(8) %ref.tmp) store i64 %call4, i64* %__elems_before, align 8 %0 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Vector_base.1"* %1 = load i64, i64* %__len, align 8 %call5 = call %struct.latLong* @_ZNSt12_Vector_baseI7latLongSaIS0_EE11_M_allocateEm(%"struct.std::_Vector_base.1"* %0, i64 %1) store %struct.latLong* %call5, %struct.latLong** %__new_start, align 8 %2 = load %struct.latLong*, %struct.latLong** %__new_start, align 8 store %struct.latLong* %2, %struct.latLong** %__new_finish, align 8 %3 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Vector_base.1"* %_M_impl = getelementptr inbounds %"struct.std::_Vector_base.1", %"struct.std::_Vector_base.1"* %3, i32 0, i32 0 %4 = bitcast %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl to %"class.std::allocator.2"* %5 = load %struct.latLong*, %struct.latLong** %__new_start, align 8 %6 = load i64, i64* %__elems_before, align 8 %add.ptr = getelementptr inbounds %struct.latLong, %struct.latLong* %5, i64 %6 %7 = load %struct.latLong*, %struct.latLong** %__x.addr, align 8 invoke void @_ZN9__gnu_cxx14__alloc_traitsISaI7latLongEE9constructIS1_EEvRS2_PS1_RKT_(%"class.std::allocator.2"* dereferenceable(1) %4, %struct.latLong* %add.ptr, %struct.latLong* dereferenceable(8) %7) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry store %struct.latLong* null, %struct.latLong** %__new_finish, align 8 %8 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Vector_base.1"* %_M_impl6 = getelementptr inbounds %"struct.std::_Vector_base.1", %"struct.std::_Vector_base.1"* %8, i32 0, i32 0 %_M_start = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl6, i32 0, i32 0 %9 = load %struct.latLong*, %struct.latLong** %_M_start, align 8 %call8 = invoke dereferenceable(8) %struct.latLong** @_ZNK9__gnu_cxx17__normal_iteratorIP7latLongSt6vectorIS1_SaIS1_EEE4baseEv(%"class.__gnu_cxx::__normal_iterator"* %__position) to label %invoke.cont7 unwind label %lpad invoke.cont7: ; preds = %invoke.cont %10 = load %struct.latLong*, %struct.latLong** %call8, align 8 %11 = load %struct.latLong*, %struct.latLong** %__new_start, align 8 %12 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Vector_base.1"* %call10 = invoke dereferenceable(1) %"class.std::allocator.2"* @_ZNSt12_Vector_baseI7latLongSaIS0_EE19_M_get_Tp_allocatorEv(%"struct.std::_Vector_base.1"* %12) to label %invoke.cont9 unwind label %lpad invoke.cont9: ; preds = %invoke.cont7 %call12 = invoke %struct.latLong* @_ZSt34__uninitialized_move_if_noexcept_aIP7latLongS1_SaIS0_EET0_T_S4_S3_RT1_(%struct.latLong* %9, %struct.latLong* %10, %struct.latLong* %11, %"class.std::allocator.2"* dereferenceable(1) %call10) to label %invoke.cont11 unwind label %lpad invoke.cont11: ; preds = %invoke.cont9 store %struct.latLong* %call12, %struct.latLong** %__new_finish, align 8 %13 = load %struct.latLong*, %struct.latLong** %__new_finish, align 8 %incdec.ptr = getelementptr inbounds %struct.latLong, %struct.latLong* %13, i32 1 store %struct.latLong* %incdec.ptr, %struct.latLong** %__new_finish, align 8 %call14 = invoke dereferenceable(8) %struct.latLong** @_ZNK9__gnu_cxx17__normal_iteratorIP7latLongSt6vectorIS1_SaIS1_EEE4baseEv(%"class.__gnu_cxx::__normal_iterator"* %__position) to label %invoke.cont13 unwind label %lpad invoke.cont13: ; preds = %invoke.cont11 %14 = load %struct.latLong*, %struct.latLong** %call14, align 8 %15 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Vector_base.1"* %_M_impl15 = getelementptr inbounds %"struct.std::_Vector_base.1", %"struct.std::_Vector_base.1"* %15, i32 0, i32 0 %_M_finish = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl15, i32 0, i32 1 %16 = load %struct.latLong*, %struct.latLong** %_M_finish, align 8 %17 = load %struct.latLong*, %struct.latLong** %__new_finish, align 8 %18 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Vector_base.1"* %call17 = invoke dereferenceable(1) %"class.std::allocator.2"* @_ZNSt12_Vector_baseI7latLongSaIS0_EE19_M_get_Tp_allocatorEv(%"struct.std::_Vector_base.1"* %18) to label %invoke.cont16 unwind label %lpad invoke.cont16: ; preds = %invoke.cont13 %call19 = invoke %struct.latLong* @_ZSt34__uninitialized_move_if_noexcept_aIP7latLongS1_SaIS0_EET0_T_S4_S3_RT1_(%struct.latLong* %14, %struct.latLong* %16, %struct.latLong* %17, %"class.std::allocator.2"* dereferenceable(1) %call17) to label %invoke.cont18 unwind label %lpad invoke.cont18: ; preds = %invoke.cont16 store %struct.latLong* %call19, %struct.latLong** %__new_finish, align 8 br label %try.cont lpad: ; preds = %invoke.cont16, %invoke.cont13, %invoke.cont11, %invoke.cont9, %invoke.cont7, %invoke.cont, %entry %19 = landingpad { i8*, i32 } catch i8* null %20 = extractvalue { i8*, i32 } %19, 0 store i8* %20, i8** %exn.slot, align 8 %21 = extractvalue { i8*, i32 } %19, 1 store i32 %21, i32* %ehselector.slot, align 4 br label %catch catch: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %22 = call i8* @__cxa_begin_catch(i8* %exn) #12 %23 = load %struct.latLong*, %struct.latLong** %__new_finish, align 8 %tobool = icmp ne %struct.latLong* %23, null br i1 %tobool, label %if.else, label %if.then if.then: ; preds = %catch %24 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Vector_base.1"* %_M_impl20 = getelementptr inbounds %"struct.std::_Vector_base.1", %"struct.std::_Vector_base.1"* %24, i32 0, i32 0 %25 = bitcast %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl20 to %"class.std::allocator.2"* %26 = load %struct.latLong*, %struct.latLong** %__new_start, align 8 %27 = load i64, i64* %__elems_before, align 8 %add.ptr21 = getelementptr inbounds %struct.latLong, %struct.latLong* %26, i64 %27 invoke void @_ZN9__gnu_cxx14__alloc_traitsISaI7latLongEE7destroyERS2_PS1_(%"class.std::allocator.2"* dereferenceable(1) %25, %struct.latLong* %add.ptr21) to label %invoke.cont23 unwind label %lpad22 invoke.cont23: ; preds = %if.then br label %if.end lpad22: ; preds = %invoke.cont27, %if.end, %invoke.cont24, %if.else, %if.then %28 = landingpad { i8*, i32 } cleanup %29 = extractvalue { i8*, i32 } %28, 0 store i8* %29, i8** %exn.slot, align 8 %30 = extractvalue { i8*, i32 } %28, 1 store i32 %30, i32* %ehselector.slot, align 4 invoke void @__cxa_end_catch() to label %invoke.cont28 unwind label %terminate.lpad if.else: ; preds = %catch %31 = load %struct.latLong*, %struct.latLong** %__new_start, align 8 %32 = load %struct.latLong*, %struct.latLong** %__new_finish, align 8 %33 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Vector_base.1"* %call25 = invoke dereferenceable(1) %"class.std::allocator.2"* @_ZNSt12_Vector_baseI7latLongSaIS0_EE19_M_get_Tp_allocatorEv(%"struct.std::_Vector_base.1"* %33) to label %invoke.cont24 unwind label %lpad22 invoke.cont24: ; preds = %if.else invoke void @_ZSt8_DestroyIP7latLongS0_EvT_S2_RSaIT0_E(%struct.latLong* %31, %struct.latLong* %32, %"class.std::allocator.2"* dereferenceable(1) %call25) to label %invoke.cont26 unwind label %lpad22 invoke.cont26: ; preds = %invoke.cont24 br label %if.end if.end: ; preds = %invoke.cont26, %invoke.cont23 %34 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Vector_base.1"* %35 = load %struct.latLong*, %struct.latLong** %__new_start, align 8 %36 = load i64, i64* %__len, align 8 invoke void @_ZNSt12_Vector_baseI7latLongSaIS0_EE13_M_deallocateEPS0_m(%"struct.std::_Vector_base.1"* %34, %struct.latLong* %35, i64 %36) to label %invoke.cont27 unwind label %lpad22 invoke.cont27: ; preds = %if.end invoke void @__cxa_rethrow() #15 to label %unreachable unwind label %lpad22 invoke.cont28: ; preds = %lpad22 br label %eh.resume try.cont: ; preds = %invoke.cont18 %37 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Vector_base.1"* %_M_impl29 = getelementptr inbounds %"struct.std::_Vector_base.1", %"struct.std::_Vector_base.1"* %37, i32 0, i32 0 %_M_start30 = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl29, i32 0, i32 0 %38 = load %struct.latLong*, %struct.latLong** %_M_start30, align 8 %39 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Vector_base.1"* %_M_impl31 = getelementptr inbounds %"struct.std::_Vector_base.1", %"struct.std::_Vector_base.1"* %39, i32 0, i32 0 %_M_finish32 = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl31, i32 0, i32 1 %40 = load %struct.latLong*, %struct.latLong** %_M_finish32, align 8 %41 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Vector_base.1"* %call33 = call dereferenceable(1) %"class.std::allocator.2"* @_ZNSt12_Vector_baseI7latLongSaIS0_EE19_M_get_Tp_allocatorEv(%"struct.std::_Vector_base.1"* %41) call void @_ZSt8_DestroyIP7latLongS0_EvT_S2_RSaIT0_E(%struct.latLong* %38, %struct.latLong* %40, %"class.std::allocator.2"* dereferenceable(1) %call33) %42 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Vector_base.1"* %43 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Vector_base.1"* %_M_impl34 = getelementptr inbounds %"struct.std::_Vector_base.1", %"struct.std::_Vector_base.1"* %43, i32 0, i32 0 %_M_start35 = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl34, i32 0, i32 0 %44 = load %struct.latLong*, %struct.latLong** %_M_start35, align 8 %45 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Vector_base.1"* %_M_impl36 = getelementptr inbounds %"struct.std::_Vector_base.1", %"struct.std::_Vector_base.1"* %45, i32 0, i32 0 %_M_end_of_storage = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl36, i32 0, i32 2 %46 = load %struct.latLong*, %struct.latLong** %_M_end_of_storage, align 8 %47 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Vector_base.1"* %_M_impl37 = getelementptr inbounds %"struct.std::_Vector_base.1", %"struct.std::_Vector_base.1"* %47, i32 0, i32 0 %_M_start38 = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl37, i32 0, i32 0 %48 = load %struct.latLong*, %struct.latLong** %_M_start38, align 8 %sub.ptr.lhs.cast = ptrtoint %struct.latLong* %46 to i64 %sub.ptr.rhs.cast = ptrtoint %struct.latLong* %48 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 call void @_ZNSt12_Vector_baseI7latLongSaIS0_EE13_M_deallocateEPS0_m(%"struct.std::_Vector_base.1"* %42, %struct.latLong* %44, i64 %sub.ptr.div) %49 = load %struct.latLong*, %struct.latLong** %__new_start, align 8 %50 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Vector_base.1"* %_M_impl39 = getelementptr inbounds %"struct.std::_Vector_base.1", %"struct.std::_Vector_base.1"* %50, i32 0, i32 0 %_M_start40 = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl39, i32 0, i32 0 store %struct.latLong* %49, %struct.latLong** %_M_start40, align 8 %51 = load %struct.latLong*, %struct.latLong** %__new_finish, align 8 %52 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Vector_base.1"* %_M_impl41 = getelementptr inbounds %"struct.std::_Vector_base.1", %"struct.std::_Vector_base.1"* %52, i32 0, i32 0 %_M_finish42 = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl41, i32 0, i32 1 store %struct.latLong* %51, %struct.latLong** %_M_finish42, align 8 %53 = load %struct.latLong*, %struct.latLong** %__new_start, align 8 %54 = load i64, i64* %__len, align 8 %add.ptr43 = getelementptr inbounds %struct.latLong, %struct.latLong* %53, i64 %54 %55 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Vector_base.1"* %_M_impl44 = getelementptr inbounds %"struct.std::_Vector_base.1", %"struct.std::_Vector_base.1"* %55, i32 0, i32 0 %_M_end_of_storage45 = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl44, i32 0, i32 2 store %struct.latLong* %add.ptr43, %struct.latLong** %_M_end_of_storage45, align 8 ret void eh.resume: ; preds = %invoke.cont28 %exn46 = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn46, 0 %lpad.val47 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val47 terminate.lpad: ; preds = %lpad22 %56 = landingpad { i8*, i32 } catch i8* null %57 = extractvalue { i8*, i32 } %56, 0 call void @__clang_call_terminate(i8* %57) #13 unreachable unreachable: ; preds = %invoke.cont27 unreachable } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %struct.latLong* @_ZNSt6vectorI7latLongSaIS0_EE3endEv(%"class.std::vector.0"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %this.addr = alloca %"class.std::vector.0"*, align 8 store %"class.std::vector.0"* %this, %"class.std::vector.0"** %this.addr, align 8 %this1 = load %"class.std::vector.0"*, %"class.std::vector.0"** %this.addr, align 8 %0 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Vector_base.1"* %_M_impl = getelementptr inbounds %"struct.std::_Vector_base.1", %"struct.std::_Vector_base.1"* %0, i32 0, i32 0 %_M_finish = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl, i32 0, i32 1 call void @_ZN9__gnu_cxx17__normal_iteratorIP7latLongSt6vectorIS1_SaIS1_EEEC2ERKS2_(%"class.__gnu_cxx::__normal_iterator"* %retval, %struct.latLong** dereferenceable(8) %_M_finish) %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %retval, i32 0, i32 0 %1 = load %struct.latLong*, %struct.latLong** %coerce.dive, align 8 ret %struct.latLong* %1 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorI7latLongE9constructEPS1_RKS1_(%"class.__gnu_cxx::new_allocator.3"* %this, %struct.latLong* %__p, %struct.latLong* dereferenceable(8) %__val) #4 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.3"*, align 8 %__p.addr = alloca %struct.latLong*, align 8 %__val.addr = alloca %struct.latLong*, align 8 store %"class.__gnu_cxx::new_allocator.3"* %this, %"class.__gnu_cxx::new_allocator.3"** %this.addr, align 8 store %struct.latLong* %__p, %struct.latLong** %__p.addr, align 8 store %struct.latLong* %__val, %struct.latLong** %__val.addr, align 8 %this1 = load %"class.__gnu_cxx::new_allocator.3"*, %"class.__gnu_cxx::new_allocator.3"** %this.addr, align 8 %0 = load %struct.latLong*, %struct.latLong** %__p.addr, align 8 %1 = bitcast %struct.latLong* %0 to i8* %2 = bitcast i8* %1 to %struct.latLong* %3 = load %struct.latLong*, %struct.latLong** %__val.addr, align 8 %4 = bitcast %struct.latLong* %2 to i8* %5 = bitcast %struct.latLong* %3 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %4, i8* align 4 %5, i64 8, i1 false) ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local i64 @_ZNKSt6vectorI7latLongSaIS0_EE12_M_check_lenEmPKc(%"class.std::vector.0"* %this, i64 %__n, i8* %__s) #0 comdat align 2 { entry: %this.addr = alloca %"class.std::vector.0"*, align 8 %__n.addr = alloca i64, align 8 %__s.addr = alloca i8*, align 8 %__len = alloca i64, align 8 %ref.tmp = alloca i64, align 8 store %"class.std::vector.0"* %this, %"class.std::vector.0"** %this.addr, align 8 store i64 %__n, i64* %__n.addr, align 8 store i8* %__s, i8** %__s.addr, align 8 %this1 = load %"class.std::vector.0"*, %"class.std::vector.0"** %this.addr, align 8 %call = call i64 @_ZNKSt6vectorI7latLongSaIS0_EE8max_sizeEv(%"class.std::vector.0"* %this1) %call2 = call i64 @_ZNKSt6vectorI7latLongSaIS0_EE4sizeEv(%"class.std::vector.0"* %this1) %sub = sub i64 %call, %call2 %0 = load i64, i64* %__n.addr, align 8 %cmp = icmp ult i64 %sub, %0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = load i8*, i8** %__s.addr, align 8 call void @_ZSt20__throw_length_errorPKc(i8* %1) #15 unreachable if.end: ; preds = %entry %call3 = call i64 @_ZNKSt6vectorI7latLongSaIS0_EE4sizeEv(%"class.std::vector.0"* %this1) %call4 = call i64 @_ZNKSt6vectorI7latLongSaIS0_EE4sizeEv(%"class.std::vector.0"* %this1) store i64 %call4, i64* %ref.tmp, align 8 %call5 = call dereferenceable(8) i64* @_ZSt3maxImERKT_S2_S2_(i64* dereferenceable(8) %ref.tmp, i64* dereferenceable(8) %__n.addr) %2 = load i64, i64* %call5, align 8 %add = add i64 %call3, %2 store i64 %add, i64* %__len, align 8 %3 = load i64, i64* %__len, align 8 %call6 = call i64 @_ZNKSt6vectorI7latLongSaIS0_EE4sizeEv(%"class.std::vector.0"* %this1) %cmp7 = icmp ult i64 %3, %call6 br i1 %cmp7, label %cond.true, label %lor.lhs.false lor.lhs.false: ; preds = %if.end %4 = load i64, i64* %__len, align 8 %call8 = call i64 @_ZNKSt6vectorI7latLongSaIS0_EE8max_sizeEv(%"class.std::vector.0"* %this1) %cmp9 = icmp ugt i64 %4, %call8 br i1 %cmp9, label %cond.true, label %cond.false cond.true: ; preds = %lor.lhs.false, %if.end %call10 = call i64 @_ZNKSt6vectorI7latLongSaIS0_EE8max_sizeEv(%"class.std::vector.0"* %this1) br label %cond.end cond.false: ; preds = %lor.lhs.false %5 = load i64, i64* %__len, align 8 br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i64 [ %call10, %cond.true ], [ %5, %cond.false ] ret i64 %cond } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local i64 @_ZN9__gnu_cxxmiIP7latLongSt6vectorIS1_SaIS1_EEEENS_17__normal_iteratorIT_T0_E15difference_typeERKS9_SC_(%"class.__gnu_cxx::__normal_iterator"* dereferenceable(8) %__lhs, %"class.__gnu_cxx::__normal_iterator"* dereferenceable(8) %__rhs) #0 comdat { entry: %__lhs.addr = alloca %"class.__gnu_cxx::__normal_iterator"*, align 8 %__rhs.addr = alloca %"class.__gnu_cxx::__normal_iterator"*, align 8 store %"class.__gnu_cxx::__normal_iterator"* %__lhs, %"class.__gnu_cxx::__normal_iterator"** %__lhs.addr, align 8 store %"class.__gnu_cxx::__normal_iterator"* %__rhs, %"class.__gnu_cxx::__normal_iterator"** %__rhs.addr, align 8 %0 = load %"class.__gnu_cxx::__normal_iterator"*, %"class.__gnu_cxx::__normal_iterator"** %__lhs.addr, align 8 %call = call dereferenceable(8) %struct.latLong** @_ZNK9__gnu_cxx17__normal_iteratorIP7latLongSt6vectorIS1_SaIS1_EEE4baseEv(%"class.__gnu_cxx::__normal_iterator"* %0) %1 = load %struct.latLong*, %struct.latLong** %call, align 8 %2 = load %"class.__gnu_cxx::__normal_iterator"*, %"class.__gnu_cxx::__normal_iterator"** %__rhs.addr, align 8 %call1 = call dereferenceable(8) %struct.latLong** @_ZNK9__gnu_cxx17__normal_iteratorIP7latLongSt6vectorIS1_SaIS1_EEE4baseEv(%"class.__gnu_cxx::__normal_iterator"* %2) %3 = load %struct.latLong*, %struct.latLong** %call1, align 8 %sub.ptr.lhs.cast = ptrtoint %struct.latLong* %1 to i64 %sub.ptr.rhs.cast = ptrtoint %struct.latLong* %3 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 ret i64 %sub.ptr.div } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %struct.latLong* @_ZNSt6vectorI7latLongSaIS0_EE5beginEv(%"class.std::vector.0"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.__gnu_cxx::__normal_iterator", align 8 %this.addr = alloca %"class.std::vector.0"*, align 8 store %"class.std::vector.0"* %this, %"class.std::vector.0"** %this.addr, align 8 %this1 = load %"class.std::vector.0"*, %"class.std::vector.0"** %this.addr, align 8 %0 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Vector_base.1"* %_M_impl = getelementptr inbounds %"struct.std::_Vector_base.1", %"struct.std::_Vector_base.1"* %0, i32 0, i32 0 %_M_start = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl, i32 0, i32 0 call void @_ZN9__gnu_cxx17__normal_iteratorIP7latLongSt6vectorIS1_SaIS1_EEEC2ERKS2_(%"class.__gnu_cxx::__normal_iterator"* %retval, %struct.latLong** dereferenceable(8) %_M_start) %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %retval, i32 0, i32 0 %1 = load %struct.latLong*, %struct.latLong** %coerce.dive, align 8 ret %struct.latLong* %1 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %struct.latLong* @_ZNSt12_Vector_baseI7latLongSaIS0_EE11_M_allocateEm(%"struct.std::_Vector_base.1"* %this, i64 %__n) #0 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Vector_base.1"*, align 8 %__n.addr = alloca i64, align 8 store %"struct.std::_Vector_base.1"* %this, %"struct.std::_Vector_base.1"** %this.addr, align 8 store i64 %__n, i64* %__n.addr, align 8 %this1 = load %"struct.std::_Vector_base.1"*, %"struct.std::_Vector_base.1"** %this.addr, align 8 %0 = load i64, i64* %__n.addr, align 8 %cmp = icmp ne i64 %0, 0 br i1 %cmp, label %cond.true, label %cond.false cond.true: ; preds = %entry %_M_impl = getelementptr inbounds %"struct.std::_Vector_base.1", %"struct.std::_Vector_base.1"* %this1, i32 0, i32 0 %1 = bitcast %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl to %"class.std::allocator.2"* %2 = load i64, i64* %__n.addr, align 8 %call = call %struct.latLong* @_ZN9__gnu_cxx14__alloc_traitsISaI7latLongEE8allocateERS2_m(%"class.std::allocator.2"* dereferenceable(1) %1, i64 %2) br label %cond.end cond.false: ; preds = %entry br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi %struct.latLong* [ %call, %cond.true ], [ null, %cond.false ] ret %struct.latLong* %cond } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %struct.latLong* @_ZSt34__uninitialized_move_if_noexcept_aIP7latLongS1_SaIS0_EET0_T_S4_S3_RT1_(%struct.latLong* %__first, %struct.latLong* %__last, %struct.latLong* %__result, %"class.std::allocator.2"* dereferenceable(1) %__alloc) #0 comdat { entry: %__first.addr = alloca %struct.latLong*, align 8 %__last.addr = alloca %struct.latLong*, align 8 %__result.addr = alloca %struct.latLong*, align 8 %__alloc.addr = alloca %"class.std::allocator.2"*, align 8 store %struct.latLong* %__first, %struct.latLong** %__first.addr, align 8 store %struct.latLong* %__last, %struct.latLong** %__last.addr, align 8 store %struct.latLong* %__result, %struct.latLong** %__result.addr, align 8 store %"class.std::allocator.2"* %__alloc, %"class.std::allocator.2"** %__alloc.addr, align 8 %0 = load %struct.latLong*, %struct.latLong** %__first.addr, align 8 %1 = load %struct.latLong*, %struct.latLong** %__last.addr, align 8 %2 = load %struct.latLong*, %struct.latLong** %__result.addr, align 8 %3 = load %"class.std::allocator.2"*, %"class.std::allocator.2"** %__alloc.addr, align 8 %call = call %struct.latLong* @_ZSt22__uninitialized_copy_aIP7latLongS1_S0_ET0_T_S3_S2_RSaIT1_E(%struct.latLong* %0, %struct.latLong* %1, %struct.latLong* %2, %"class.std::allocator.2"* dereferenceable(1) %3) ret %struct.latLong* %call } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local dereferenceable(8) %struct.latLong** @_ZNK9__gnu_cxx17__normal_iteratorIP7latLongSt6vectorIS1_SaIS1_EEE4baseEv(%"class.__gnu_cxx::__normal_iterator"* %this) #4 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::__normal_iterator"*, align 8 store %"class.__gnu_cxx::__normal_iterator"* %this, %"class.__gnu_cxx::__normal_iterator"** %this.addr, align 8 %this1 = load %"class.__gnu_cxx::__normal_iterator"*, %"class.__gnu_cxx::__normal_iterator"** %this.addr, align 8 %_M_current = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %this1, i32 0, i32 0 ret %struct.latLong** %_M_current } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZN9__gnu_cxx14__alloc_traitsISaI7latLongEE7destroyERS2_PS1_(%"class.std::allocator.2"* dereferenceable(1) %__a, %struct.latLong* %__p) #0 comdat align 2 { entry: %__a.addr = alloca %"class.std::allocator.2"*, align 8 %__p.addr = alloca %struct.latLong*, align 8 store %"class.std::allocator.2"* %__a, %"class.std::allocator.2"** %__a.addr, align 8 store %struct.latLong* %__p, %struct.latLong** %__p.addr, align 8 %0 = load %"class.std::allocator.2"*, %"class.std::allocator.2"** %__a.addr, align 8 %1 = bitcast %"class.std::allocator.2"* %0 to %"class.__gnu_cxx::new_allocator.3"* %2 = load %struct.latLong*, %struct.latLong** %__p.addr, align 8 call void @_ZN9__gnu_cxx13new_allocatorI7latLongE7destroyEPS1_(%"class.__gnu_cxx::new_allocator.3"* %1, %struct.latLong* %2) ret void } declare dso_local void @__cxa_rethrow() declare dso_local void @__cxa_end_catch() ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local i64 @_ZNKSt6vectorI7latLongSaIS0_EE8max_sizeEv(%"class.std::vector.0"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.std::vector.0"*, align 8 store %"class.std::vector.0"* %this, %"class.std::vector.0"** %this.addr, align 8 %this1 = load %"class.std::vector.0"*, %"class.std::vector.0"** %this.addr, align 8 %0 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Vector_base.1"* %call = call dereferenceable(1) %"class.std::allocator.2"* @_ZNKSt12_Vector_baseI7latLongSaIS0_EE19_M_get_Tp_allocatorEv(%"struct.std::_Vector_base.1"* %0) %call2 = call i64 @_ZN9__gnu_cxx14__alloc_traitsISaI7latLongEE8max_sizeERKS2_(%"class.std::allocator.2"* dereferenceable(1) %call) ret i64 %call2 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local i64 @_ZNKSt6vectorI7latLongSaIS0_EE4sizeEv(%"class.std::vector.0"* %this) #4 comdat align 2 { entry: %this.addr = alloca %"class.std::vector.0"*, align 8 store %"class.std::vector.0"* %this, %"class.std::vector.0"** %this.addr, align 8 %this1 = load %"class.std::vector.0"*, %"class.std::vector.0"** %this.addr, align 8 %0 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Vector_base.1"* %_M_impl = getelementptr inbounds %"struct.std::_Vector_base.1", %"struct.std::_Vector_base.1"* %0, i32 0, i32 0 %_M_finish = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl, i32 0, i32 1 %1 = load %struct.latLong*, %struct.latLong** %_M_finish, align 8 %2 = bitcast %"class.std::vector.0"* %this1 to %"struct.std::_Vector_base.1"* %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base.1", %"struct.std::_Vector_base.1"* %2, i32 0, i32 0 %_M_start = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl2, i32 0, i32 0 %3 = load %struct.latLong*, %struct.latLong** %_M_start, align 8 %sub.ptr.lhs.cast = ptrtoint %struct.latLong* %1 to i64 %sub.ptr.rhs.cast = ptrtoint %struct.latLong* %3 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 ret i64 %sub.ptr.div } ; Function Attrs: noreturn declare dso_local void @_ZSt20__throw_length_errorPKc(i8*) #10 ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local dereferenceable(8) i64* @_ZSt3maxImERKT_S2_S2_(i64* dereferenceable(8) %__a, i64* dereferenceable(8) %__b) #4 comdat { entry: %retval = alloca i64*, align 8 %__a.addr = alloca i64*, align 8 %__b.addr = alloca i64*, align 8 store i64* %__a, i64** %__a.addr, align 8 store i64* %__b, i64** %__b.addr, align 8 %0 = load i64*, i64** %__a.addr, align 8 %1 = load i64, i64* %0, align 8 %2 = load i64*, i64** %__b.addr, align 8 %3 = load i64, i64* %2, align 8 %cmp = icmp ult i64 %1, %3 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %4 = load i64*, i64** %__b.addr, align 8 store i64* %4, i64** %retval, align 8 br label %return if.end: ; preds = %entry %5 = load i64*, i64** %__a.addr, align 8 store i64* %5, i64** %retval, align 8 br label %return return: ; preds = %if.end, %if.then %6 = load i64*, i64** %retval, align 8 ret i64* %6 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local i64 @_ZN9__gnu_cxx14__alloc_traitsISaI7latLongEE8max_sizeERKS2_(%"class.std::allocator.2"* dereferenceable(1) %__a) #4 comdat align 2 { entry: %__a.addr = alloca %"class.std::allocator.2"*, align 8 store %"class.std::allocator.2"* %__a, %"class.std::allocator.2"** %__a.addr, align 8 %0 = load %"class.std::allocator.2"*, %"class.std::allocator.2"** %__a.addr, align 8 %1 = bitcast %"class.std::allocator.2"* %0 to %"class.__gnu_cxx::new_allocator.3"* %call = call i64 @_ZNK9__gnu_cxx13new_allocatorI7latLongE8max_sizeEv(%"class.__gnu_cxx::new_allocator.3"* %1) #12 ret i64 %call } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local dereferenceable(1) %"class.std::allocator.2"* @_ZNKSt12_Vector_baseI7latLongSaIS0_EE19_M_get_Tp_allocatorEv(%"struct.std::_Vector_base.1"* %this) #4 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Vector_base.1"*, align 8 store %"struct.std::_Vector_base.1"* %this, %"struct.std::_Vector_base.1"** %this.addr, align 8 %this1 = load %"struct.std::_Vector_base.1"*, %"struct.std::_Vector_base.1"** %this.addr, align 8 %_M_impl = getelementptr inbounds %"struct.std::_Vector_base.1", %"struct.std::_Vector_base.1"* %this1, i32 0, i32 0 %0 = bitcast %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl to %"class.std::allocator.2"* ret %"class.std::allocator.2"* %0 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local i64 @_ZNK9__gnu_cxx13new_allocatorI7latLongE8max_sizeEv(%"class.__gnu_cxx::new_allocator.3"* %this) #4 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.3"*, align 8 store %"class.__gnu_cxx::new_allocator.3"* %this, %"class.__gnu_cxx::new_allocator.3"** %this.addr, align 8 %this1 = load %"class.__gnu_cxx::new_allocator.3"*, %"class.__gnu_cxx::new_allocator.3"** %this.addr, align 8 ret i64 2305843009213693951 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZN9__gnu_cxx17__normal_iteratorIP7latLongSt6vectorIS1_SaIS1_EEEC2ERKS2_(%"class.__gnu_cxx::__normal_iterator"* %this, %struct.latLong** dereferenceable(8) %__i) unnamed_addr #4 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::__normal_iterator"*, align 8 %__i.addr = alloca %struct.latLong**, align 8 store %"class.__gnu_cxx::__normal_iterator"* %this, %"class.__gnu_cxx::__normal_iterator"** %this.addr, align 8 store %struct.latLong** %__i, %struct.latLong*** %__i.addr, align 8 %this1 = load %"class.__gnu_cxx::__normal_iterator"*, %"class.__gnu_cxx::__normal_iterator"** %this.addr, align 8 %_M_current = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator"* %this1, i32 0, i32 0 %0 = load %struct.latLong**, %struct.latLong*** %__i.addr, align 8 %1 = load %struct.latLong*, %struct.latLong** %0, align 8 store %struct.latLong* %1, %struct.latLong** %_M_current, align 8 ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %struct.latLong* @_ZN9__gnu_cxx14__alloc_traitsISaI7latLongEE8allocateERS2_m(%"class.std::allocator.2"* dereferenceable(1) %__a, i64 %__n) #0 comdat align 2 { entry: %__a.addr = alloca %"class.std::allocator.2"*, align 8 %__n.addr = alloca i64, align 8 store %"class.std::allocator.2"* %__a, %"class.std::allocator.2"** %__a.addr, align 8 store i64 %__n, i64* %__n.addr, align 8 %0 = load %"class.std::allocator.2"*, %"class.std::allocator.2"** %__a.addr, align 8 %1 = bitcast %"class.std::allocator.2"* %0 to %"class.__gnu_cxx::new_allocator.3"* %2 = load i64, i64* %__n.addr, align 8 %call = call %struct.latLong* @_ZN9__gnu_cxx13new_allocatorI7latLongE8allocateEmPKv(%"class.__gnu_cxx::new_allocator.3"* %1, i64 %2, i8* null) ret %struct.latLong* %call } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %struct.latLong* @_ZN9__gnu_cxx13new_allocatorI7latLongE8allocateEmPKv(%"class.__gnu_cxx::new_allocator.3"* %this, i64 %__n, i8* %0) #0 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.3"*, align 8 %__n.addr = alloca i64, align 8 %.addr = alloca i8*, align 8 store %"class.__gnu_cxx::new_allocator.3"* %this, %"class.__gnu_cxx::new_allocator.3"** %this.addr, align 8 store i64 %__n, i64* %__n.addr, align 8 store i8* %0, i8** %.addr, align 8 %this1 = load %"class.__gnu_cxx::new_allocator.3"*, %"class.__gnu_cxx::new_allocator.3"** %this.addr, align 8 %1 = load i64, i64* %__n.addr, align 8 %call = call i64 @_ZNK9__gnu_cxx13new_allocatorI7latLongE8max_sizeEv(%"class.__gnu_cxx::new_allocator.3"* %this1) #12 %cmp = icmp ugt i64 %1, %call br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry call void @_ZSt17__throw_bad_allocv() #15 unreachable if.end: ; preds = %entry %2 = load i64, i64* %__n.addr, align 8 %mul = mul i64 %2, 8 %call2 = call i8* @_Znwm(i64 %mul) %3 = bitcast i8* %call2 to %struct.latLong* ret %struct.latLong* %3 } ; Function Attrs: noreturn declare dso_local void @_ZSt17__throw_bad_allocv() #10 ; Function Attrs: nobuiltin declare dso_local noalias i8* @_Znwm(i64) #11 ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %struct.latLong* @_ZSt22__uninitialized_copy_aIP7latLongS1_S0_ET0_T_S3_S2_RSaIT1_E(%struct.latLong* %__first, %struct.latLong* %__last, %struct.latLong* %__result, %"class.std::allocator.2"* dereferenceable(1) %0) #0 comdat { entry: %__first.addr = alloca %struct.latLong*, align 8 %__last.addr = alloca %struct.latLong*, align 8 %__result.addr = alloca %struct.latLong*, align 8 %.addr = alloca %"class.std::allocator.2"*, align 8 store %struct.latLong* %__first, %struct.latLong** %__first.addr, align 8 store %struct.latLong* %__last, %struct.latLong** %__last.addr, align 8 store %struct.latLong* %__result, %struct.latLong** %__result.addr, align 8 store %"class.std::allocator.2"* %0, %"class.std::allocator.2"** %.addr, align 8 %1 = load %struct.latLong*, %struct.latLong** %__first.addr, align 8 %2 = load %struct.latLong*, %struct.latLong** %__last.addr, align 8 %3 = load %struct.latLong*, %struct.latLong** %__result.addr, align 8 %call = call %struct.latLong* @_ZSt18uninitialized_copyIP7latLongS1_ET0_T_S3_S2_(%struct.latLong* %1, %struct.latLong* %2, %struct.latLong* %3) ret %struct.latLong* %call } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %struct.latLong* @_ZSt18uninitialized_copyIP7latLongS1_ET0_T_S3_S2_(%struct.latLong* %__first, %struct.latLong* %__last, %struct.latLong* %__result) #0 comdat { entry: %__first.addr = alloca %struct.latLong*, align 8 %__last.addr = alloca %struct.latLong*, align 8 %__result.addr = alloca %struct.latLong*, align 8 %__assignable = alloca i8, align 1 store %struct.latLong* %__first, %struct.latLong** %__first.addr, align 8 store %struct.latLong* %__last, %struct.latLong** %__last.addr, align 8 store %struct.latLong* %__result, %struct.latLong** %__result.addr, align 8 store i8 1, i8* %__assignable, align 1 %0 = load %struct.latLong*, %struct.latLong** %__first.addr, align 8 %1 = load %struct.latLong*, %struct.latLong** %__last.addr, align 8 %2 = load %struct.latLong*, %struct.latLong** %__result.addr, align 8 %call = call %struct.latLong* @_ZNSt20__uninitialized_copyILb1EE13__uninit_copyIP7latLongS3_EET0_T_S5_S4_(%struct.latLong* %0, %struct.latLong* %1, %struct.latLong* %2) ret %struct.latLong* %call } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %struct.latLong* @_ZNSt20__uninitialized_copyILb1EE13__uninit_copyIP7latLongS3_EET0_T_S5_S4_(%struct.latLong* %__first, %struct.latLong* %__last, %struct.latLong* %__result) #0 comdat align 2 { entry: %__first.addr = alloca %struct.latLong*, align 8 %__last.addr = alloca %struct.latLong*, align 8 %__result.addr = alloca %struct.latLong*, align 8 store %struct.latLong* %__first, %struct.latLong** %__first.addr, align 8 store %struct.latLong* %__last, %struct.latLong** %__last.addr, align 8 store %struct.latLong* %__result, %struct.latLong** %__result.addr, align 8 %0 = load %struct.latLong*, %struct.latLong** %__first.addr, align 8 %1 = load %struct.latLong*, %struct.latLong** %__last.addr, align 8 %2 = load %struct.latLong*, %struct.latLong** %__result.addr, align 8 %call = call %struct.latLong* @_ZSt4copyIP7latLongS1_ET0_T_S3_S2_(%struct.latLong* %0, %struct.latLong* %1, %struct.latLong* %2) ret %struct.latLong* %call } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %struct.latLong* @_ZSt4copyIP7latLongS1_ET0_T_S3_S2_(%struct.latLong* %__first, %struct.latLong* %__last, %struct.latLong* %__result) #0 comdat { entry: %__first.addr = alloca %struct.latLong*, align 8 %__last.addr = alloca %struct.latLong*, align 8 %__result.addr = alloca %struct.latLong*, align 8 store %struct.latLong* %__first, %struct.latLong** %__first.addr, align 8 store %struct.latLong* %__last, %struct.latLong** %__last.addr, align 8 store %struct.latLong* %__result, %struct.latLong** %__result.addr, align 8 %0 = load %struct.latLong*, %struct.latLong** %__first.addr, align 8 %call = call %struct.latLong* @_ZSt12__miter_baseIP7latLongET_S2_(%struct.latLong* %0) %1 = load %struct.latLong*, %struct.latLong** %__last.addr, align 8 %call1 = call %struct.latLong* @_ZSt12__miter_baseIP7latLongET_S2_(%struct.latLong* %1) %2 = load %struct.latLong*, %struct.latLong** %__result.addr, align 8 %call2 = call %struct.latLong* @_ZSt14__copy_move_a2ILb0EP7latLongS1_ET1_T0_S3_S2_(%struct.latLong* %call, %struct.latLong* %call1, %struct.latLong* %2) ret %struct.latLong* %call2 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %struct.latLong* @_ZSt14__copy_move_a2ILb0EP7latLongS1_ET1_T0_S3_S2_(%struct.latLong* %__first, %struct.latLong* %__last, %struct.latLong* %__result) #0 comdat { entry: %__first.addr = alloca %struct.latLong*, align 8 %__last.addr = alloca %struct.latLong*, align 8 %__result.addr = alloca %struct.latLong*, align 8 store %struct.latLong* %__first, %struct.latLong** %__first.addr, align 8 store %struct.latLong* %__last, %struct.latLong** %__last.addr, align 8 store %struct.latLong* %__result, %struct.latLong** %__result.addr, align 8 %0 = load %struct.latLong*, %struct.latLong** %__first.addr, align 8 %call = call %struct.latLong* @_ZSt12__niter_baseIP7latLongET_S2_(%struct.latLong* %0) %1 = load %struct.latLong*, %struct.latLong** %__last.addr, align 8 %call1 = call %struct.latLong* @_ZSt12__niter_baseIP7latLongET_S2_(%struct.latLong* %1) %2 = load %struct.latLong*, %struct.latLong** %__result.addr, align 8 %call2 = call %struct.latLong* @_ZSt12__niter_baseIP7latLongET_S2_(%struct.latLong* %2) %call3 = call %struct.latLong* @_ZSt13__copy_move_aILb0EP7latLongS1_ET1_T0_S3_S2_(%struct.latLong* %call, %struct.latLong* %call1, %struct.latLong* %call2) ret %struct.latLong* %call3 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local %struct.latLong* @_ZSt12__miter_baseIP7latLongET_S2_(%struct.latLong* %__it) #4 comdat { entry: %__it.addr = alloca %struct.latLong*, align 8 store %struct.latLong* %__it, %struct.latLong** %__it.addr, align 8 %0 = load %struct.latLong*, %struct.latLong** %__it.addr, align 8 ret %struct.latLong* %0 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %struct.latLong* @_ZSt13__copy_move_aILb0EP7latLongS1_ET1_T0_S3_S2_(%struct.latLong* %__first, %struct.latLong* %__last, %struct.latLong* %__result) #0 comdat { entry: %__first.addr = alloca %struct.latLong*, align 8 %__last.addr = alloca %struct.latLong*, align 8 %__result.addr = alloca %struct.latLong*, align 8 %__simple = alloca i8, align 1 store %struct.latLong* %__first, %struct.latLong** %__first.addr, align 8 store %struct.latLong* %__last, %struct.latLong** %__last.addr, align 8 store %struct.latLong* %__result, %struct.latLong** %__result.addr, align 8 store i8 1, i8* %__simple, align 1 %0 = load %struct.latLong*, %struct.latLong** %__first.addr, align 8 %1 = load %struct.latLong*, %struct.latLong** %__last.addr, align 8 %2 = load %struct.latLong*, %struct.latLong** %__result.addr, align 8 %call = call %struct.latLong* @_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mI7latLongEEPT_PKS4_S7_S5_(%struct.latLong* %0, %struct.latLong* %1, %struct.latLong* %2) ret %struct.latLong* %call } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local %struct.latLong* @_ZSt12__niter_baseIP7latLongET_S2_(%struct.latLong* %__it) #4 comdat { entry: %__it.addr = alloca %struct.latLong*, align 8 store %struct.latLong* %__it, %struct.latLong** %__it.addr, align 8 %0 = load %struct.latLong*, %struct.latLong** %__it.addr, align 8 ret %struct.latLong* %0 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local %struct.latLong* @_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mI7latLongEEPT_PKS4_S7_S5_(%struct.latLong* %__first, %struct.latLong* %__last, %struct.latLong* %__result) #4 comdat align 2 { entry: %__first.addr = alloca %struct.latLong*, align 8 %__last.addr = alloca %struct.latLong*, align 8 %__result.addr = alloca %struct.latLong*, align 8 %_Num = alloca i64, align 8 store %struct.latLong* %__first, %struct.latLong** %__first.addr, align 8 store %struct.latLong* %__last, %struct.latLong** %__last.addr, align 8 store %struct.latLong* %__result, %struct.latLong** %__result.addr, align 8 %0 = load %struct.latLong*, %struct.latLong** %__last.addr, align 8 %1 = load %struct.latLong*, %struct.latLong** %__first.addr, align 8 %sub.ptr.lhs.cast = ptrtoint %struct.latLong* %0 to i64 %sub.ptr.rhs.cast = ptrtoint %struct.latLong* %1 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 8 store i64 %sub.ptr.div, i64* %_Num, align 8 %2 = load i64, i64* %_Num, align 8 %tobool = icmp ne i64 %2, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %entry %3 = load %struct.latLong*, %struct.latLong** %__result.addr, align 8 %4 = bitcast %struct.latLong* %3 to i8* %5 = load %struct.latLong*, %struct.latLong** %__first.addr, align 8 %6 = bitcast %struct.latLong* %5 to i8* %7 = load i64, i64* %_Num, align 8 %mul = mul i64 8, %7 call void @llvm.memmove.p0i8.p0i8.i64(i8* align 4 %4, i8* align 4 %6, i64 %mul, i1 false) br label %if.end if.end: ; preds = %if.then, %entry %8 = load %struct.latLong*, %struct.latLong** %__result.addr, align 8 %9 = load i64, i64* %_Num, align 8 %add.ptr = getelementptr inbounds %struct.latLong, %struct.latLong* %8, i64 %9 ret %struct.latLong* %add.ptr } ; Function Attrs: argmemonly nounwind willreturn declare void @llvm.memmove.p0i8.p0i8.i64(i8* nocapture, i8* nocapture readonly, i64, i1 immarg) #1 ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorI7latLongE7destroyEPS1_(%"class.__gnu_cxx::new_allocator.3"* %this, %struct.latLong* %__p) #4 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator.3"*, align 8 %__p.addr = alloca %struct.latLong*, align 8 store %"class.__gnu_cxx::new_allocator.3"* %this, %"class.__gnu_cxx::new_allocator.3"** %this.addr, align 8 store %struct.latLong* %__p, %struct.latLong** %__p.addr, align 8 %this1 = load %"class.__gnu_cxx::new_allocator.3"*, %"class.__gnu_cxx::new_allocator.3"** %this.addr, align 8 %0 = load %struct.latLong*, %struct.latLong** %__p.addr, align 8 ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZN9__gnu_cxx14__alloc_traitsISaI6recordEE9constructIS1_EEvRS2_PS1_RKT_(%"class.std::allocator"* dereferenceable(1) %__a, %struct.record* %__p, %struct.record* dereferenceable(60) %__arg) #0 comdat align 2 { entry: %__a.addr = alloca %"class.std::allocator"*, align 8 %__p.addr = alloca %struct.record*, align 8 %__arg.addr = alloca %struct.record*, align 8 store %"class.std::allocator"* %__a, %"class.std::allocator"** %__a.addr, align 8 store %struct.record* %__p, %struct.record** %__p.addr, align 8 store %struct.record* %__arg, %struct.record** %__arg.addr, align 8 %0 = load %"class.std::allocator"*, %"class.std::allocator"** %__a.addr, align 8 %1 = bitcast %"class.std::allocator"* %0 to %"class.__gnu_cxx::new_allocator"* %2 = load %struct.record*, %struct.record** %__p.addr, align 8 %3 = load %struct.record*, %struct.record** %__arg.addr, align 8 call void @_ZN9__gnu_cxx13new_allocatorI6recordE9constructEPS1_RKS1_(%"class.__gnu_cxx::new_allocator"* %1, %struct.record* %2, %struct.record* dereferenceable(60) %3) ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZNSt6vectorI6recordSaIS0_EE17_M_realloc_insertEN9__gnu_cxx17__normal_iteratorIPS0_S2_EERKS0_(%"class.std::vector"* %this, %struct.record* %__position.coerce, %struct.record* dereferenceable(60) %__x) #0 comdat align 2 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { entry: %__position = alloca %"class.__gnu_cxx::__normal_iterator.5", align 8 %this.addr = alloca %"class.std::vector"*, align 8 %__x.addr = alloca %struct.record*, align 8 %__len = alloca i64, align 8 %__elems_before = alloca i64, align 8 %ref.tmp = alloca %"class.__gnu_cxx::__normal_iterator.5", align 8 %__new_start = alloca %struct.record*, align 8 %__new_finish = alloca %struct.record*, align 8 %exn.slot = alloca i8* %ehselector.slot = alloca i32 %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.5", %"class.__gnu_cxx::__normal_iterator.5"* %__position, i32 0, i32 0 store %struct.record* %__position.coerce, %struct.record** %coerce.dive, align 8 store %"class.std::vector"* %this, %"class.std::vector"** %this.addr, align 8 store %struct.record* %__x, %struct.record** %__x.addr, align 8 %this1 = load %"class.std::vector"*, %"class.std::vector"** %this.addr, align 8 %call = call i64 @_ZNKSt6vectorI6recordSaIS0_EE12_M_check_lenEmPKc(%"class.std::vector"* %this1, i64 1, i8* getelementptr inbounds ([26 x i8], [26 x i8]* @.str.28, i64 0, i64 0)) store i64 %call, i64* %__len, align 8 %call2 = call %struct.record* @_ZNSt6vectorI6recordSaIS0_EE5beginEv(%"class.std::vector"* %this1) %coerce.dive3 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.5", %"class.__gnu_cxx::__normal_iterator.5"* %ref.tmp, i32 0, i32 0 store %struct.record* %call2, %struct.record** %coerce.dive3, align 8 %call4 = call i64 @_ZN9__gnu_cxxmiIP6recordSt6vectorIS1_SaIS1_EEEENS_17__normal_iteratorIT_T0_E15difference_typeERKS9_SC_(%"class.__gnu_cxx::__normal_iterator.5"* dereferenceable(8) %__position, %"class.__gnu_cxx::__normal_iterator.5"* dereferenceable(8) %ref.tmp) store i64 %call4, i64* %__elems_before, align 8 %0 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %1 = load i64, i64* %__len, align 8 %call5 = call %struct.record* @_ZNSt12_Vector_baseI6recordSaIS0_EE11_M_allocateEm(%"struct.std::_Vector_base"* %0, i64 %1) store %struct.record* %call5, %struct.record** %__new_start, align 8 %2 = load %struct.record*, %struct.record** %__new_start, align 8 store %struct.record* %2, %struct.record** %__new_finish, align 8 %3 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %3, i32 0, i32 0 %4 = bitcast %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl to %"class.std::allocator"* %5 = load %struct.record*, %struct.record** %__new_start, align 8 %6 = load i64, i64* %__elems_before, align 8 %add.ptr = getelementptr inbounds %struct.record, %struct.record* %5, i64 %6 %7 = load %struct.record*, %struct.record** %__x.addr, align 8 invoke void @_ZN9__gnu_cxx14__alloc_traitsISaI6recordEE9constructIS1_EEvRS2_PS1_RKT_(%"class.std::allocator"* dereferenceable(1) %4, %struct.record* %add.ptr, %struct.record* dereferenceable(60) %7) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry store %struct.record* null, %struct.record** %__new_finish, align 8 %8 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl6 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %8, i32 0, i32 0 %_M_start = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl6, i32 0, i32 0 %9 = load %struct.record*, %struct.record** %_M_start, align 8 %call8 = invoke dereferenceable(8) %struct.record** @_ZNK9__gnu_cxx17__normal_iteratorIP6recordSt6vectorIS1_SaIS1_EEE4baseEv(%"class.__gnu_cxx::__normal_iterator.5"* %__position) to label %invoke.cont7 unwind label %lpad invoke.cont7: ; preds = %invoke.cont %10 = load %struct.record*, %struct.record** %call8, align 8 %11 = load %struct.record*, %struct.record** %__new_start, align 8 %12 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %call10 = invoke dereferenceable(1) %"class.std::allocator"* @_ZNSt12_Vector_baseI6recordSaIS0_EE19_M_get_Tp_allocatorEv(%"struct.std::_Vector_base"* %12) to label %invoke.cont9 unwind label %lpad invoke.cont9: ; preds = %invoke.cont7 %call12 = invoke %struct.record* @_ZSt34__uninitialized_move_if_noexcept_aIP6recordS1_SaIS0_EET0_T_S4_S3_RT1_(%struct.record* %9, %struct.record* %10, %struct.record* %11, %"class.std::allocator"* dereferenceable(1) %call10) to label %invoke.cont11 unwind label %lpad invoke.cont11: ; preds = %invoke.cont9 store %struct.record* %call12, %struct.record** %__new_finish, align 8 %13 = load %struct.record*, %struct.record** %__new_finish, align 8 %incdec.ptr = getelementptr inbounds %struct.record, %struct.record* %13, i32 1 store %struct.record* %incdec.ptr, %struct.record** %__new_finish, align 8 %call14 = invoke dereferenceable(8) %struct.record** @_ZNK9__gnu_cxx17__normal_iteratorIP6recordSt6vectorIS1_SaIS1_EEE4baseEv(%"class.__gnu_cxx::__normal_iterator.5"* %__position) to label %invoke.cont13 unwind label %lpad invoke.cont13: ; preds = %invoke.cont11 %14 = load %struct.record*, %struct.record** %call14, align 8 %15 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl15 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %15, i32 0, i32 0 %_M_finish = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl15, i32 0, i32 1 %16 = load %struct.record*, %struct.record** %_M_finish, align 8 %17 = load %struct.record*, %struct.record** %__new_finish, align 8 %18 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %call17 = invoke dereferenceable(1) %"class.std::allocator"* @_ZNSt12_Vector_baseI6recordSaIS0_EE19_M_get_Tp_allocatorEv(%"struct.std::_Vector_base"* %18) to label %invoke.cont16 unwind label %lpad invoke.cont16: ; preds = %invoke.cont13 %call19 = invoke %struct.record* @_ZSt34__uninitialized_move_if_noexcept_aIP6recordS1_SaIS0_EET0_T_S4_S3_RT1_(%struct.record* %14, %struct.record* %16, %struct.record* %17, %"class.std::allocator"* dereferenceable(1) %call17) to label %invoke.cont18 unwind label %lpad invoke.cont18: ; preds = %invoke.cont16 store %struct.record* %call19, %struct.record** %__new_finish, align 8 br label %try.cont lpad: ; preds = %invoke.cont16, %invoke.cont13, %invoke.cont11, %invoke.cont9, %invoke.cont7, %invoke.cont, %entry %19 = landingpad { i8*, i32 } catch i8* null %20 = extractvalue { i8*, i32 } %19, 0 store i8* %20, i8** %exn.slot, align 8 %21 = extractvalue { i8*, i32 } %19, 1 store i32 %21, i32* %ehselector.slot, align 4 br label %catch catch: ; preds = %lpad %exn = load i8*, i8** %exn.slot, align 8 %22 = call i8* @__cxa_begin_catch(i8* %exn) #12 %23 = load %struct.record*, %struct.record** %__new_finish, align 8 %tobool = icmp ne %struct.record* %23, null br i1 %tobool, label %if.else, label %if.then if.then: ; preds = %catch %24 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl20 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %24, i32 0, i32 0 %25 = bitcast %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl20 to %"class.std::allocator"* %26 = load %struct.record*, %struct.record** %__new_start, align 8 %27 = load i64, i64* %__elems_before, align 8 %add.ptr21 = getelementptr inbounds %struct.record, %struct.record* %26, i64 %27 invoke void @_ZN9__gnu_cxx14__alloc_traitsISaI6recordEE7destroyERS2_PS1_(%"class.std::allocator"* dereferenceable(1) %25, %struct.record* %add.ptr21) to label %invoke.cont23 unwind label %lpad22 invoke.cont23: ; preds = %if.then br label %if.end lpad22: ; preds = %invoke.cont27, %if.end, %invoke.cont24, %if.else, %if.then %28 = landingpad { i8*, i32 } cleanup %29 = extractvalue { i8*, i32 } %28, 0 store i8* %29, i8** %exn.slot, align 8 %30 = extractvalue { i8*, i32 } %28, 1 store i32 %30, i32* %ehselector.slot, align 4 invoke void @__cxa_end_catch() to label %invoke.cont28 unwind label %terminate.lpad if.else: ; preds = %catch %31 = load %struct.record*, %struct.record** %__new_start, align 8 %32 = load %struct.record*, %struct.record** %__new_finish, align 8 %33 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %call25 = invoke dereferenceable(1) %"class.std::allocator"* @_ZNSt12_Vector_baseI6recordSaIS0_EE19_M_get_Tp_allocatorEv(%"struct.std::_Vector_base"* %33) to label %invoke.cont24 unwind label %lpad22 invoke.cont24: ; preds = %if.else invoke void @_ZSt8_DestroyIP6recordS0_EvT_S2_RSaIT0_E(%struct.record* %31, %struct.record* %32, %"class.std::allocator"* dereferenceable(1) %call25) to label %invoke.cont26 unwind label %lpad22 invoke.cont26: ; preds = %invoke.cont24 br label %if.end if.end: ; preds = %invoke.cont26, %invoke.cont23 %34 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %35 = load %struct.record*, %struct.record** %__new_start, align 8 %36 = load i64, i64* %__len, align 8 invoke void @_ZNSt12_Vector_baseI6recordSaIS0_EE13_M_deallocateEPS0_m(%"struct.std::_Vector_base"* %34, %struct.record* %35, i64 %36) to label %invoke.cont27 unwind label %lpad22 invoke.cont27: ; preds = %if.end invoke void @__cxa_rethrow() #15 to label %unreachable unwind label %lpad22 invoke.cont28: ; preds = %lpad22 br label %eh.resume try.cont: ; preds = %invoke.cont18 %37 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl29 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %37, i32 0, i32 0 %_M_start30 = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl29, i32 0, i32 0 %38 = load %struct.record*, %struct.record** %_M_start30, align 8 %39 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl31 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %39, i32 0, i32 0 %_M_finish32 = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl31, i32 0, i32 1 %40 = load %struct.record*, %struct.record** %_M_finish32, align 8 %41 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %call33 = call dereferenceable(1) %"class.std::allocator"* @_ZNSt12_Vector_baseI6recordSaIS0_EE19_M_get_Tp_allocatorEv(%"struct.std::_Vector_base"* %41) call void @_ZSt8_DestroyIP6recordS0_EvT_S2_RSaIT0_E(%struct.record* %38, %struct.record* %40, %"class.std::allocator"* dereferenceable(1) %call33) %42 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %43 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl34 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %43, i32 0, i32 0 %_M_start35 = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl34, i32 0, i32 0 %44 = load %struct.record*, %struct.record** %_M_start35, align 8 %45 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl36 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %45, i32 0, i32 0 %_M_end_of_storage = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl36, i32 0, i32 2 %46 = load %struct.record*, %struct.record** %_M_end_of_storage, align 8 %47 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl37 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %47, i32 0, i32 0 %_M_start38 = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl37, i32 0, i32 0 %48 = load %struct.record*, %struct.record** %_M_start38, align 8 %sub.ptr.lhs.cast = ptrtoint %struct.record* %46 to i64 %sub.ptr.rhs.cast = ptrtoint %struct.record* %48 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 60 call void @_ZNSt12_Vector_baseI6recordSaIS0_EE13_M_deallocateEPS0_m(%"struct.std::_Vector_base"* %42, %struct.record* %44, i64 %sub.ptr.div) %49 = load %struct.record*, %struct.record** %__new_start, align 8 %50 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl39 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %50, i32 0, i32 0 %_M_start40 = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl39, i32 0, i32 0 store %struct.record* %49, %struct.record** %_M_start40, align 8 %51 = load %struct.record*, %struct.record** %__new_finish, align 8 %52 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl41 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %52, i32 0, i32 0 %_M_finish42 = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl41, i32 0, i32 1 store %struct.record* %51, %struct.record** %_M_finish42, align 8 %53 = load %struct.record*, %struct.record** %__new_start, align 8 %54 = load i64, i64* %__len, align 8 %add.ptr43 = getelementptr inbounds %struct.record, %struct.record* %53, i64 %54 %55 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl44 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %55, i32 0, i32 0 %_M_end_of_storage45 = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl44, i32 0, i32 2 store %struct.record* %add.ptr43, %struct.record** %_M_end_of_storage45, align 8 ret void eh.resume: ; preds = %invoke.cont28 %exn46 = load i8*, i8** %exn.slot, align 8 %sel = load i32, i32* %ehselector.slot, align 4 %lpad.val = insertvalue { i8*, i32 } undef, i8* %exn46, 0 %lpad.val47 = insertvalue { i8*, i32 } %lpad.val, i32 %sel, 1 resume { i8*, i32 } %lpad.val47 terminate.lpad: ; preds = %lpad22 %56 = landingpad { i8*, i32 } catch i8* null %57 = extractvalue { i8*, i32 } %56, 0 call void @__clang_call_terminate(i8* %57) #13 unreachable unreachable: ; preds = %invoke.cont27 unreachable } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %struct.record* @_ZNSt6vectorI6recordSaIS0_EE3endEv(%"class.std::vector"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.__gnu_cxx::__normal_iterator.5", align 8 %this.addr = alloca %"class.std::vector"*, align 8 store %"class.std::vector"* %this, %"class.std::vector"** %this.addr, align 8 %this1 = load %"class.std::vector"*, %"class.std::vector"** %this.addr, align 8 %0 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %0, i32 0, i32 0 %_M_finish = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl, i32 0, i32 1 call void @_ZN9__gnu_cxx17__normal_iteratorIP6recordSt6vectorIS1_SaIS1_EEEC2ERKS2_(%"class.__gnu_cxx::__normal_iterator.5"* %retval, %struct.record** dereferenceable(8) %_M_finish) %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.5", %"class.__gnu_cxx::__normal_iterator.5"* %retval, i32 0, i32 0 %1 = load %struct.record*, %struct.record** %coerce.dive, align 8 ret %struct.record* %1 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorI6recordE9constructEPS1_RKS1_(%"class.__gnu_cxx::new_allocator"* %this, %struct.record* %__p, %struct.record* dereferenceable(60) %__val) #4 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator"*, align 8 %__p.addr = alloca %struct.record*, align 8 %__val.addr = alloca %struct.record*, align 8 store %"class.__gnu_cxx::new_allocator"* %this, %"class.__gnu_cxx::new_allocator"** %this.addr, align 8 store %struct.record* %__p, %struct.record** %__p.addr, align 8 store %struct.record* %__val, %struct.record** %__val.addr, align 8 %this1 = load %"class.__gnu_cxx::new_allocator"*, %"class.__gnu_cxx::new_allocator"** %this.addr, align 8 %0 = load %struct.record*, %struct.record** %__p.addr, align 8 %1 = bitcast %struct.record* %0 to i8* %2 = bitcast i8* %1 to %struct.record* %3 = load %struct.record*, %struct.record** %__val.addr, align 8 %4 = bitcast %struct.record* %2 to i8* %5 = bitcast %struct.record* %3 to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 4 %4, i8* align 4 %5, i64 60, i1 false) ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local i64 @_ZNKSt6vectorI6recordSaIS0_EE12_M_check_lenEmPKc(%"class.std::vector"* %this, i64 %__n, i8* %__s) #0 comdat align 2 { entry: %this.addr = alloca %"class.std::vector"*, align 8 %__n.addr = alloca i64, align 8 %__s.addr = alloca i8*, align 8 %__len = alloca i64, align 8 %ref.tmp = alloca i64, align 8 store %"class.std::vector"* %this, %"class.std::vector"** %this.addr, align 8 store i64 %__n, i64* %__n.addr, align 8 store i8* %__s, i8** %__s.addr, align 8 %this1 = load %"class.std::vector"*, %"class.std::vector"** %this.addr, align 8 %call = call i64 @_ZNKSt6vectorI6recordSaIS0_EE8max_sizeEv(%"class.std::vector"* %this1) %call2 = call i64 @_ZNKSt6vectorI6recordSaIS0_EE4sizeEv(%"class.std::vector"* %this1) %sub = sub i64 %call, %call2 %0 = load i64, i64* %__n.addr, align 8 %cmp = icmp ult i64 %sub, %0 br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry %1 = load i8*, i8** %__s.addr, align 8 call void @_ZSt20__throw_length_errorPKc(i8* %1) #15 unreachable if.end: ; preds = %entry %call3 = call i64 @_ZNKSt6vectorI6recordSaIS0_EE4sizeEv(%"class.std::vector"* %this1) %call4 = call i64 @_ZNKSt6vectorI6recordSaIS0_EE4sizeEv(%"class.std::vector"* %this1) store i64 %call4, i64* %ref.tmp, align 8 %call5 = call dereferenceable(8) i64* @_ZSt3maxImERKT_S2_S2_(i64* dereferenceable(8) %ref.tmp, i64* dereferenceable(8) %__n.addr) %2 = load i64, i64* %call5, align 8 %add = add i64 %call3, %2 store i64 %add, i64* %__len, align 8 %3 = load i64, i64* %__len, align 8 %call6 = call i64 @_ZNKSt6vectorI6recordSaIS0_EE4sizeEv(%"class.std::vector"* %this1) %cmp7 = icmp ult i64 %3, %call6 br i1 %cmp7, label %cond.true, label %lor.lhs.false lor.lhs.false: ; preds = %if.end %4 = load i64, i64* %__len, align 8 %call8 = call i64 @_ZNKSt6vectorI6recordSaIS0_EE8max_sizeEv(%"class.std::vector"* %this1) %cmp9 = icmp ugt i64 %4, %call8 br i1 %cmp9, label %cond.true, label %cond.false cond.true: ; preds = %lor.lhs.false, %if.end %call10 = call i64 @_ZNKSt6vectorI6recordSaIS0_EE8max_sizeEv(%"class.std::vector"* %this1) br label %cond.end cond.false: ; preds = %lor.lhs.false %5 = load i64, i64* %__len, align 8 br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi i64 [ %call10, %cond.true ], [ %5, %cond.false ] ret i64 %cond } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local i64 @_ZN9__gnu_cxxmiIP6recordSt6vectorIS1_SaIS1_EEEENS_17__normal_iteratorIT_T0_E15difference_typeERKS9_SC_(%"class.__gnu_cxx::__normal_iterator.5"* dereferenceable(8) %__lhs, %"class.__gnu_cxx::__normal_iterator.5"* dereferenceable(8) %__rhs) #0 comdat { entry: %__lhs.addr = alloca %"class.__gnu_cxx::__normal_iterator.5"*, align 8 %__rhs.addr = alloca %"class.__gnu_cxx::__normal_iterator.5"*, align 8 store %"class.__gnu_cxx::__normal_iterator.5"* %__lhs, %"class.__gnu_cxx::__normal_iterator.5"** %__lhs.addr, align 8 store %"class.__gnu_cxx::__normal_iterator.5"* %__rhs, %"class.__gnu_cxx::__normal_iterator.5"** %__rhs.addr, align 8 %0 = load %"class.__gnu_cxx::__normal_iterator.5"*, %"class.__gnu_cxx::__normal_iterator.5"** %__lhs.addr, align 8 %call = call dereferenceable(8) %struct.record** @_ZNK9__gnu_cxx17__normal_iteratorIP6recordSt6vectorIS1_SaIS1_EEE4baseEv(%"class.__gnu_cxx::__normal_iterator.5"* %0) %1 = load %struct.record*, %struct.record** %call, align 8 %2 = load %"class.__gnu_cxx::__normal_iterator.5"*, %"class.__gnu_cxx::__normal_iterator.5"** %__rhs.addr, align 8 %call1 = call dereferenceable(8) %struct.record** @_ZNK9__gnu_cxx17__normal_iteratorIP6recordSt6vectorIS1_SaIS1_EEE4baseEv(%"class.__gnu_cxx::__normal_iterator.5"* %2) %3 = load %struct.record*, %struct.record** %call1, align 8 %sub.ptr.lhs.cast = ptrtoint %struct.record* %1 to i64 %sub.ptr.rhs.cast = ptrtoint %struct.record* %3 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 60 ret i64 %sub.ptr.div } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %struct.record* @_ZNSt6vectorI6recordSaIS0_EE5beginEv(%"class.std::vector"* %this) #0 comdat align 2 { entry: %retval = alloca %"class.__gnu_cxx::__normal_iterator.5", align 8 %this.addr = alloca %"class.std::vector"*, align 8 store %"class.std::vector"* %this, %"class.std::vector"** %this.addr, align 8 %this1 = load %"class.std::vector"*, %"class.std::vector"** %this.addr, align 8 %0 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %0, i32 0, i32 0 %_M_start = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl, i32 0, i32 0 call void @_ZN9__gnu_cxx17__normal_iteratorIP6recordSt6vectorIS1_SaIS1_EEEC2ERKS2_(%"class.__gnu_cxx::__normal_iterator.5"* %retval, %struct.record** dereferenceable(8) %_M_start) %coerce.dive = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.5", %"class.__gnu_cxx::__normal_iterator.5"* %retval, i32 0, i32 0 %1 = load %struct.record*, %struct.record** %coerce.dive, align 8 ret %struct.record* %1 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %struct.record* @_ZNSt12_Vector_baseI6recordSaIS0_EE11_M_allocateEm(%"struct.std::_Vector_base"* %this, i64 %__n) #0 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Vector_base"*, align 8 %__n.addr = alloca i64, align 8 store %"struct.std::_Vector_base"* %this, %"struct.std::_Vector_base"** %this.addr, align 8 store i64 %__n, i64* %__n.addr, align 8 %this1 = load %"struct.std::_Vector_base"*, %"struct.std::_Vector_base"** %this.addr, align 8 %0 = load i64, i64* %__n.addr, align 8 %cmp = icmp ne i64 %0, 0 br i1 %cmp, label %cond.true, label %cond.false cond.true: ; preds = %entry %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %this1, i32 0, i32 0 %1 = bitcast %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl to %"class.std::allocator"* %2 = load i64, i64* %__n.addr, align 8 %call = call %struct.record* @_ZN9__gnu_cxx14__alloc_traitsISaI6recordEE8allocateERS2_m(%"class.std::allocator"* dereferenceable(1) %1, i64 %2) br label %cond.end cond.false: ; preds = %entry br label %cond.end cond.end: ; preds = %cond.false, %cond.true %cond = phi %struct.record* [ %call, %cond.true ], [ null, %cond.false ] ret %struct.record* %cond } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %struct.record* @_ZSt34__uninitialized_move_if_noexcept_aIP6recordS1_SaIS0_EET0_T_S4_S3_RT1_(%struct.record* %__first, %struct.record* %__last, %struct.record* %__result, %"class.std::allocator"* dereferenceable(1) %__alloc) #0 comdat { entry: %__first.addr = alloca %struct.record*, align 8 %__last.addr = alloca %struct.record*, align 8 %__result.addr = alloca %struct.record*, align 8 %__alloc.addr = alloca %"class.std::allocator"*, align 8 store %struct.record* %__first, %struct.record** %__first.addr, align 8 store %struct.record* %__last, %struct.record** %__last.addr, align 8 store %struct.record* %__result, %struct.record** %__result.addr, align 8 store %"class.std::allocator"* %__alloc, %"class.std::allocator"** %__alloc.addr, align 8 %0 = load %struct.record*, %struct.record** %__first.addr, align 8 %1 = load %struct.record*, %struct.record** %__last.addr, align 8 %2 = load %struct.record*, %struct.record** %__result.addr, align 8 %3 = load %"class.std::allocator"*, %"class.std::allocator"** %__alloc.addr, align 8 %call = call %struct.record* @_ZSt22__uninitialized_copy_aIP6recordS1_S0_ET0_T_S3_S2_RSaIT1_E(%struct.record* %0, %struct.record* %1, %struct.record* %2, %"class.std::allocator"* dereferenceable(1) %3) ret %struct.record* %call } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local dereferenceable(8) %struct.record** @_ZNK9__gnu_cxx17__normal_iteratorIP6recordSt6vectorIS1_SaIS1_EEE4baseEv(%"class.__gnu_cxx::__normal_iterator.5"* %this) #4 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::__normal_iterator.5"*, align 8 store %"class.__gnu_cxx::__normal_iterator.5"* %this, %"class.__gnu_cxx::__normal_iterator.5"** %this.addr, align 8 %this1 = load %"class.__gnu_cxx::__normal_iterator.5"*, %"class.__gnu_cxx::__normal_iterator.5"** %this.addr, align 8 %_M_current = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.5", %"class.__gnu_cxx::__normal_iterator.5"* %this1, i32 0, i32 0 ret %struct.record** %_M_current } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local void @_ZN9__gnu_cxx14__alloc_traitsISaI6recordEE7destroyERS2_PS1_(%"class.std::allocator"* dereferenceable(1) %__a, %struct.record* %__p) #0 comdat align 2 { entry: %__a.addr = alloca %"class.std::allocator"*, align 8 %__p.addr = alloca %struct.record*, align 8 store %"class.std::allocator"* %__a, %"class.std::allocator"** %__a.addr, align 8 store %struct.record* %__p, %struct.record** %__p.addr, align 8 %0 = load %"class.std::allocator"*, %"class.std::allocator"** %__a.addr, align 8 %1 = bitcast %"class.std::allocator"* %0 to %"class.__gnu_cxx::new_allocator"* %2 = load %struct.record*, %struct.record** %__p.addr, align 8 call void @_ZN9__gnu_cxx13new_allocatorI6recordE7destroyEPS1_(%"class.__gnu_cxx::new_allocator"* %1, %struct.record* %2) ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local i64 @_ZNKSt6vectorI6recordSaIS0_EE8max_sizeEv(%"class.std::vector"* %this) #0 comdat align 2 { entry: %this.addr = alloca %"class.std::vector"*, align 8 store %"class.std::vector"* %this, %"class.std::vector"** %this.addr, align 8 %this1 = load %"class.std::vector"*, %"class.std::vector"** %this.addr, align 8 %0 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %call = call dereferenceable(1) %"class.std::allocator"* @_ZNKSt12_Vector_baseI6recordSaIS0_EE19_M_get_Tp_allocatorEv(%"struct.std::_Vector_base"* %0) %call2 = call i64 @_ZN9__gnu_cxx14__alloc_traitsISaI6recordEE8max_sizeERKS2_(%"class.std::allocator"* dereferenceable(1) %call) ret i64 %call2 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local i64 @_ZNKSt6vectorI6recordSaIS0_EE4sizeEv(%"class.std::vector"* %this) #4 comdat align 2 { entry: %this.addr = alloca %"class.std::vector"*, align 8 store %"class.std::vector"* %this, %"class.std::vector"** %this.addr, align 8 %this1 = load %"class.std::vector"*, %"class.std::vector"** %this.addr, align 8 %0 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %0, i32 0, i32 0 %_M_finish = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl, i32 0, i32 1 %1 = load %struct.record*, %struct.record** %_M_finish, align 8 %2 = bitcast %"class.std::vector"* %this1 to %"struct.std::_Vector_base"* %_M_impl2 = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %2, i32 0, i32 0 %_M_start = getelementptr inbounds %"struct.std::_Vector_base >::_Vector_impl", %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl2, i32 0, i32 0 %3 = load %struct.record*, %struct.record** %_M_start, align 8 %sub.ptr.lhs.cast = ptrtoint %struct.record* %1 to i64 %sub.ptr.rhs.cast = ptrtoint %struct.record* %3 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 60 ret i64 %sub.ptr.div } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local i64 @_ZN9__gnu_cxx14__alloc_traitsISaI6recordEE8max_sizeERKS2_(%"class.std::allocator"* dereferenceable(1) %__a) #4 comdat align 2 { entry: %__a.addr = alloca %"class.std::allocator"*, align 8 store %"class.std::allocator"* %__a, %"class.std::allocator"** %__a.addr, align 8 %0 = load %"class.std::allocator"*, %"class.std::allocator"** %__a.addr, align 8 %1 = bitcast %"class.std::allocator"* %0 to %"class.__gnu_cxx::new_allocator"* %call = call i64 @_ZNK9__gnu_cxx13new_allocatorI6recordE8max_sizeEv(%"class.__gnu_cxx::new_allocator"* %1) #12 ret i64 %call } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local dereferenceable(1) %"class.std::allocator"* @_ZNKSt12_Vector_baseI6recordSaIS0_EE19_M_get_Tp_allocatorEv(%"struct.std::_Vector_base"* %this) #4 comdat align 2 { entry: %this.addr = alloca %"struct.std::_Vector_base"*, align 8 store %"struct.std::_Vector_base"* %this, %"struct.std::_Vector_base"** %this.addr, align 8 %this1 = load %"struct.std::_Vector_base"*, %"struct.std::_Vector_base"** %this.addr, align 8 %_M_impl = getelementptr inbounds %"struct.std::_Vector_base", %"struct.std::_Vector_base"* %this1, i32 0, i32 0 %0 = bitcast %"struct.std::_Vector_base >::_Vector_impl"* %_M_impl to %"class.std::allocator"* ret %"class.std::allocator"* %0 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local i64 @_ZNK9__gnu_cxx13new_allocatorI6recordE8max_sizeEv(%"class.__gnu_cxx::new_allocator"* %this) #4 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator"*, align 8 store %"class.__gnu_cxx::new_allocator"* %this, %"class.__gnu_cxx::new_allocator"** %this.addr, align 8 %this1 = load %"class.__gnu_cxx::new_allocator"*, %"class.__gnu_cxx::new_allocator"** %this.addr, align 8 ret i64 307445734561825860 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZN9__gnu_cxx17__normal_iteratorIP6recordSt6vectorIS1_SaIS1_EEEC2ERKS2_(%"class.__gnu_cxx::__normal_iterator.5"* %this, %struct.record** dereferenceable(8) %__i) unnamed_addr #4 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::__normal_iterator.5"*, align 8 %__i.addr = alloca %struct.record**, align 8 store %"class.__gnu_cxx::__normal_iterator.5"* %this, %"class.__gnu_cxx::__normal_iterator.5"** %this.addr, align 8 store %struct.record** %__i, %struct.record*** %__i.addr, align 8 %this1 = load %"class.__gnu_cxx::__normal_iterator.5"*, %"class.__gnu_cxx::__normal_iterator.5"** %this.addr, align 8 %_M_current = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.5", %"class.__gnu_cxx::__normal_iterator.5"* %this1, i32 0, i32 0 %0 = load %struct.record**, %struct.record*** %__i.addr, align 8 %1 = load %struct.record*, %struct.record** %0, align 8 store %struct.record* %1, %struct.record** %_M_current, align 8 ret void } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %struct.record* @_ZN9__gnu_cxx14__alloc_traitsISaI6recordEE8allocateERS2_m(%"class.std::allocator"* dereferenceable(1) %__a, i64 %__n) #0 comdat align 2 { entry: %__a.addr = alloca %"class.std::allocator"*, align 8 %__n.addr = alloca i64, align 8 store %"class.std::allocator"* %__a, %"class.std::allocator"** %__a.addr, align 8 store i64 %__n, i64* %__n.addr, align 8 %0 = load %"class.std::allocator"*, %"class.std::allocator"** %__a.addr, align 8 %1 = bitcast %"class.std::allocator"* %0 to %"class.__gnu_cxx::new_allocator"* %2 = load i64, i64* %__n.addr, align 8 %call = call %struct.record* @_ZN9__gnu_cxx13new_allocatorI6recordE8allocateEmPKv(%"class.__gnu_cxx::new_allocator"* %1, i64 %2, i8* null) ret %struct.record* %call } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %struct.record* @_ZN9__gnu_cxx13new_allocatorI6recordE8allocateEmPKv(%"class.__gnu_cxx::new_allocator"* %this, i64 %__n, i8* %0) #0 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator"*, align 8 %__n.addr = alloca i64, align 8 %.addr = alloca i8*, align 8 store %"class.__gnu_cxx::new_allocator"* %this, %"class.__gnu_cxx::new_allocator"** %this.addr, align 8 store i64 %__n, i64* %__n.addr, align 8 store i8* %0, i8** %.addr, align 8 %this1 = load %"class.__gnu_cxx::new_allocator"*, %"class.__gnu_cxx::new_allocator"** %this.addr, align 8 %1 = load i64, i64* %__n.addr, align 8 %call = call i64 @_ZNK9__gnu_cxx13new_allocatorI6recordE8max_sizeEv(%"class.__gnu_cxx::new_allocator"* %this1) #12 %cmp = icmp ugt i64 %1, %call br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry call void @_ZSt17__throw_bad_allocv() #15 unreachable if.end: ; preds = %entry %2 = load i64, i64* %__n.addr, align 8 %mul = mul i64 %2, 60 %call2 = call i8* @_Znwm(i64 %mul) %3 = bitcast i8* %call2 to %struct.record* ret %struct.record* %3 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %struct.record* @_ZSt22__uninitialized_copy_aIP6recordS1_S0_ET0_T_S3_S2_RSaIT1_E(%struct.record* %__first, %struct.record* %__last, %struct.record* %__result, %"class.std::allocator"* dereferenceable(1) %0) #0 comdat { entry: %__first.addr = alloca %struct.record*, align 8 %__last.addr = alloca %struct.record*, align 8 %__result.addr = alloca %struct.record*, align 8 %.addr = alloca %"class.std::allocator"*, align 8 store %struct.record* %__first, %struct.record** %__first.addr, align 8 store %struct.record* %__last, %struct.record** %__last.addr, align 8 store %struct.record* %__result, %struct.record** %__result.addr, align 8 store %"class.std::allocator"* %0, %"class.std::allocator"** %.addr, align 8 %1 = load %struct.record*, %struct.record** %__first.addr, align 8 %2 = load %struct.record*, %struct.record** %__last.addr, align 8 %3 = load %struct.record*, %struct.record** %__result.addr, align 8 %call = call %struct.record* @_ZSt18uninitialized_copyIP6recordS1_ET0_T_S3_S2_(%struct.record* %1, %struct.record* %2, %struct.record* %3) ret %struct.record* %call } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %struct.record* @_ZSt18uninitialized_copyIP6recordS1_ET0_T_S3_S2_(%struct.record* %__first, %struct.record* %__last, %struct.record* %__result) #0 comdat { entry: %__first.addr = alloca %struct.record*, align 8 %__last.addr = alloca %struct.record*, align 8 %__result.addr = alloca %struct.record*, align 8 %__assignable = alloca i8, align 1 store %struct.record* %__first, %struct.record** %__first.addr, align 8 store %struct.record* %__last, %struct.record** %__last.addr, align 8 store %struct.record* %__result, %struct.record** %__result.addr, align 8 store i8 1, i8* %__assignable, align 1 %0 = load %struct.record*, %struct.record** %__first.addr, align 8 %1 = load %struct.record*, %struct.record** %__last.addr, align 8 %2 = load %struct.record*, %struct.record** %__result.addr, align 8 %call = call %struct.record* @_ZNSt20__uninitialized_copyILb1EE13__uninit_copyIP6recordS3_EET0_T_S5_S4_(%struct.record* %0, %struct.record* %1, %struct.record* %2) ret %struct.record* %call } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %struct.record* @_ZNSt20__uninitialized_copyILb1EE13__uninit_copyIP6recordS3_EET0_T_S5_S4_(%struct.record* %__first, %struct.record* %__last, %struct.record* %__result) #0 comdat align 2 { entry: %__first.addr = alloca %struct.record*, align 8 %__last.addr = alloca %struct.record*, align 8 %__result.addr = alloca %struct.record*, align 8 store %struct.record* %__first, %struct.record** %__first.addr, align 8 store %struct.record* %__last, %struct.record** %__last.addr, align 8 store %struct.record* %__result, %struct.record** %__result.addr, align 8 %0 = load %struct.record*, %struct.record** %__first.addr, align 8 %1 = load %struct.record*, %struct.record** %__last.addr, align 8 %2 = load %struct.record*, %struct.record** %__result.addr, align 8 %call = call %struct.record* @_ZSt4copyIP6recordS1_ET0_T_S3_S2_(%struct.record* %0, %struct.record* %1, %struct.record* %2) ret %struct.record* %call } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %struct.record* @_ZSt4copyIP6recordS1_ET0_T_S3_S2_(%struct.record* %__first, %struct.record* %__last, %struct.record* %__result) #0 comdat { entry: %__first.addr = alloca %struct.record*, align 8 %__last.addr = alloca %struct.record*, align 8 %__result.addr = alloca %struct.record*, align 8 store %struct.record* %__first, %struct.record** %__first.addr, align 8 store %struct.record* %__last, %struct.record** %__last.addr, align 8 store %struct.record* %__result, %struct.record** %__result.addr, align 8 %0 = load %struct.record*, %struct.record** %__first.addr, align 8 %call = call %struct.record* @_ZSt12__miter_baseIP6recordET_S2_(%struct.record* %0) %1 = load %struct.record*, %struct.record** %__last.addr, align 8 %call1 = call %struct.record* @_ZSt12__miter_baseIP6recordET_S2_(%struct.record* %1) %2 = load %struct.record*, %struct.record** %__result.addr, align 8 %call2 = call %struct.record* @_ZSt14__copy_move_a2ILb0EP6recordS1_ET1_T0_S3_S2_(%struct.record* %call, %struct.record* %call1, %struct.record* %2) ret %struct.record* %call2 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %struct.record* @_ZSt14__copy_move_a2ILb0EP6recordS1_ET1_T0_S3_S2_(%struct.record* %__first, %struct.record* %__last, %struct.record* %__result) #0 comdat { entry: %__first.addr = alloca %struct.record*, align 8 %__last.addr = alloca %struct.record*, align 8 %__result.addr = alloca %struct.record*, align 8 store %struct.record* %__first, %struct.record** %__first.addr, align 8 store %struct.record* %__last, %struct.record** %__last.addr, align 8 store %struct.record* %__result, %struct.record** %__result.addr, align 8 %0 = load %struct.record*, %struct.record** %__first.addr, align 8 %call = call %struct.record* @_ZSt12__niter_baseIP6recordET_S2_(%struct.record* %0) %1 = load %struct.record*, %struct.record** %__last.addr, align 8 %call1 = call %struct.record* @_ZSt12__niter_baseIP6recordET_S2_(%struct.record* %1) %2 = load %struct.record*, %struct.record** %__result.addr, align 8 %call2 = call %struct.record* @_ZSt12__niter_baseIP6recordET_S2_(%struct.record* %2) %call3 = call %struct.record* @_ZSt13__copy_move_aILb0EP6recordS1_ET1_T0_S3_S2_(%struct.record* %call, %struct.record* %call1, %struct.record* %call2) ret %struct.record* %call3 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local %struct.record* @_ZSt12__miter_baseIP6recordET_S2_(%struct.record* %__it) #4 comdat { entry: %__it.addr = alloca %struct.record*, align 8 store %struct.record* %__it, %struct.record** %__it.addr, align 8 %0 = load %struct.record*, %struct.record** %__it.addr, align 8 ret %struct.record* %0 } ; Function Attrs: noinline optnone uwtable define linkonce_odr dso_local %struct.record* @_ZSt13__copy_move_aILb0EP6recordS1_ET1_T0_S3_S2_(%struct.record* %__first, %struct.record* %__last, %struct.record* %__result) #0 comdat { entry: %__first.addr = alloca %struct.record*, align 8 %__last.addr = alloca %struct.record*, align 8 %__result.addr = alloca %struct.record*, align 8 %__simple = alloca i8, align 1 store %struct.record* %__first, %struct.record** %__first.addr, align 8 store %struct.record* %__last, %struct.record** %__last.addr, align 8 store %struct.record* %__result, %struct.record** %__result.addr, align 8 store i8 1, i8* %__simple, align 1 %0 = load %struct.record*, %struct.record** %__first.addr, align 8 %1 = load %struct.record*, %struct.record** %__last.addr, align 8 %2 = load %struct.record*, %struct.record** %__result.addr, align 8 %call = call %struct.record* @_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mI6recordEEPT_PKS4_S7_S5_(%struct.record* %0, %struct.record* %1, %struct.record* %2) ret %struct.record* %call } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local %struct.record* @_ZSt12__niter_baseIP6recordET_S2_(%struct.record* %__it) #4 comdat { entry: %__it.addr = alloca %struct.record*, align 8 store %struct.record* %__it, %struct.record** %__it.addr, align 8 %0 = load %struct.record*, %struct.record** %__it.addr, align 8 ret %struct.record* %0 } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local %struct.record* @_ZNSt11__copy_moveILb0ELb1ESt26random_access_iterator_tagE8__copy_mI6recordEEPT_PKS4_S7_S5_(%struct.record* %__first, %struct.record* %__last, %struct.record* %__result) #4 comdat align 2 { entry: %__first.addr = alloca %struct.record*, align 8 %__last.addr = alloca %struct.record*, align 8 %__result.addr = alloca %struct.record*, align 8 %_Num = alloca i64, align 8 store %struct.record* %__first, %struct.record** %__first.addr, align 8 store %struct.record* %__last, %struct.record** %__last.addr, align 8 store %struct.record* %__result, %struct.record** %__result.addr, align 8 %0 = load %struct.record*, %struct.record** %__last.addr, align 8 %1 = load %struct.record*, %struct.record** %__first.addr, align 8 %sub.ptr.lhs.cast = ptrtoint %struct.record* %0 to i64 %sub.ptr.rhs.cast = ptrtoint %struct.record* %1 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast %sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 60 store i64 %sub.ptr.div, i64* %_Num, align 8 %2 = load i64, i64* %_Num, align 8 %tobool = icmp ne i64 %2, 0 br i1 %tobool, label %if.then, label %if.end if.then: ; preds = %entry %3 = load %struct.record*, %struct.record** %__result.addr, align 8 %4 = bitcast %struct.record* %3 to i8* %5 = load %struct.record*, %struct.record** %__first.addr, align 8 %6 = bitcast %struct.record* %5 to i8* %7 = load i64, i64* %_Num, align 8 %mul = mul i64 60, %7 call void @llvm.memmove.p0i8.p0i8.i64(i8* align 4 %4, i8* align 4 %6, i64 %mul, i1 false) br label %if.end if.end: ; preds = %if.then, %entry %8 = load %struct.record*, %struct.record** %__result.addr, align 8 %9 = load i64, i64* %_Num, align 8 %add.ptr = getelementptr inbounds %struct.record, %struct.record* %8, i64 %9 ret %struct.record* %add.ptr } ; Function Attrs: noinline nounwind optnone uwtable define linkonce_odr dso_local void @_ZN9__gnu_cxx13new_allocatorI6recordE7destroyEPS1_(%"class.__gnu_cxx::new_allocator"* %this, %struct.record* %__p) #4 comdat align 2 { entry: %this.addr = alloca %"class.__gnu_cxx::new_allocator"*, align 8 %__p.addr = alloca %struct.record*, align 8 store %"class.__gnu_cxx::new_allocator"* %this, %"class.__gnu_cxx::new_allocator"** %this.addr, align 8 store %struct.record* %__p, %struct.record** %__p.addr, align 8 %this1 = load %"class.__gnu_cxx::new_allocator"*, %"class.__gnu_cxx::new_allocator"** %this.addr, align 8 %0 = load %struct.record*, %struct.record** %__p.addr, align 8 ret void } define internal void @__cuda_register_globals(i8** %0) { entry: %1 = call i32 @__cudaRegisterFunction(i8** %0, i8* bitcast (void (%struct.latLong*, float*, i32, float, float)* @_Z6euclidP7latLongPfiff to i8*), i8* getelementptr inbounds ([24 x i8], [24 x i8]* @0, i64 0, i64 0), i8* getelementptr inbounds ([24 x i8], [24 x i8]* @0, i64 0, i64 0), i32 -1, i8* null, i8* null, i8* null, i8* null, i32* null) ret void } declare dso_local i32 @__cudaRegisterFunction(i8**, i8*, i8*, i8*, i32, i8*, i8*, i8*, i8*, i32*) declare dso_local i32 @__cudaRegisterVar(i8**, i8*, i8*, i8*, i32, i32, i32, i32) declare dso_local i8** @__cudaRegisterFatBinary(i8*) define internal void @__cuda_module_ctor(i8* %0) { entry: %1 = call i8** @__cudaRegisterFatBinary(i8* bitcast ({ i32, i32, i8*, i8* }* @__cuda_fatbin_wrapper to i8*)) store i8** %1, i8*** @__cuda_gpubin_handle, align 8 call void @__cuda_register_globals(i8** %1) call void @__cudaRegisterFatBinaryEnd(i8** %1) %2 = call i32 @atexit(void (i8*)* @__cuda_module_dtor) ret void } declare dso_local void @__cudaRegisterFatBinaryEnd(i8**) declare dso_local void @__cudaUnregisterFatBinary(i8**) define internal void @__cuda_module_dtor(i8* %0) { entry: %1 = load i8**, i8*** @__cuda_gpubin_handle, align 8 call void @__cudaUnregisterFatBinary(i8** %1) ret void } declare dso_local i32 @atexit(void (i8*)*) attributes #0 = { noinline optnone uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #1 = { argmemonly nounwind willreturn } attributes #2 = { noinline norecurse optnone uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #3 = { "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #4 = { noinline nounwind optnone uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #5 = { nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #6 = { noinline noreturn nounwind } attributes #7 = { noreturn nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #8 = { nounwind readonly "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #9 = { nobuiltin nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #10 = { noreturn "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #11 = { nobuiltin "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #12 = { nounwind } attributes #13 = { noreturn nounwind } attributes #14 = { nounwind readonly } attributes #15 = { noreturn } !llvm.module.flags = !{!0, !1} !llvm.ident = !{!2} !0 = !{i32 2, !"SDK Version", [2 x i32] [i32 10, i32 1]} !1 = !{i32 1, !"wchar_size", i32 4} !2 = !{!"clang version 10.0.1 (https://github.com/llvm/llvm-project.git ef32c611aa214dea855364efd7ba451ec5ec3f74)"}