; ModuleID = 'main.cpp' target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-pc-linux-gnu" %"class.std::unique_ptr.18" = type { %"class.std::tuple.19" } %"class.std::tuple.19" = type { %"struct.std::_Tuple_impl.20" } %"struct.std::_Tuple_impl.20" = type { %"struct.std::_Head_base.23" } %"struct.std::_Head_base.23" = type { %"struct.std::thread::_State"* } %"struct.std::thread::_State" = type { i32 (...)** } %"class.std::thread" = type { %"class.std::thread::id" } %"class.std::thread::id" = type { i64 } %"class.std::shared_ptr" = type { %"class.std::__shared_ptr" } %"class.std::__shared_ptr" = type { %"class.std::__future_base::_State_baseV2"*, %"class.std::__shared_count" } %"class.std::__future_base::_State_baseV2" = type <{ i32 (...)**, %"class.std::unique_ptr", %"class.std::__atomic_futex_unsigned", %"struct.std::atomic_flag", [3 x i8], %"struct.std::once_flag", [4 x i8] }> %"class.std::unique_ptr" = type { %"class.std::tuple" } %"class.std::tuple" = type { %"struct.std::_Tuple_impl" } %"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.1" } %"struct.std::_Head_base.1" = type { %"struct.std::__future_base::_Result_base"* } %"struct.std::__future_base::_Result_base" = type { i32 (...)**, %"class.std::__exception_ptr::exception_ptr" } %"class.std::__exception_ptr::exception_ptr" = type { i8* } %"class.std::__atomic_futex_unsigned" = type { %"struct.std::atomic" } %"struct.std::atomic" = type { %"struct.std::__atomic_base" } %"struct.std::__atomic_base" = type { i32 } %"struct.std::atomic_flag" = type { %struct.__atomic_flag_base } %struct.__atomic_flag_base = type { i8 } %"struct.std::once_flag" = type { i32 } %"class.std::__shared_count" = type { %"class.std::_Sp_counted_base"* } %"class.std::_Sp_counted_base" = type { i32 (...)**, i32, i32 } %"struct.std::error_condition" = type { i32, %"class.std::_V2::error_category"* } %"class.std::_V2::error_category" = type { i32 (...)** } %"class.std::future" = type { %"class.std::__basic_future" } %"class.std::__basic_future" = type { %"class.std::shared_ptr" } %"class.std::__future_base::_Async_state_commonV2" = type <{ %"class.std::__future_base::_State_baseV2.base", [4 x i8], %"class.std::thread", %"struct.std::once_flag", [4 x i8] }> %"class.std::__future_base::_State_baseV2.base" = type <{ i32 (...)**, %"class.std::unique_ptr", %"class.std::__atomic_futex_unsigned", %"struct.std::atomic_flag", [3 x i8], %"struct.std::once_flag" }> %"class.std::unique_ptr.7" = type { %"class.std::tuple.8" } %"class.std::tuple.8" = type { %"struct.std::_Tuple_impl.9" } %"struct.std::_Tuple_impl.9" = type { %"struct.std::_Head_base.10" } %"struct.std::_Head_base.10" = type { %"struct.std::__future_base::_Result"* } %"struct.std::__future_base::_Result" = type <{ %"struct.std::__future_base::_Result_base", %"struct.__gnu_cxx::__aligned_buffer", i8, [3 x i8] }> %"struct.__gnu_cxx::__aligned_buffer" = type { %"union.std::aligned_storage<4, 4>::type" } %"union.std::aligned_storage<4, 4>::type" = type { [4 x i8] } %"struct.std::error_code" = type { i32, %"class.std::_V2::error_category"* } %"class.std::type_info" = type { i32 (...)**, i8* } %"class.std::_Sp_counted_ptr_inplace" = type { %"class.std::_Sp_counted_base", %"class.std::_Sp_counted_ptr_inplace, int>, std::allocator, int> >, __gnu_cxx::_Lock_policy::_S_atomic>::_Impl" } %"class.std::_Sp_counted_ptr_inplace, int>, std::allocator, int> >, __gnu_cxx::_Lock_policy::_S_atomic>::_Impl" = type { %"struct.__gnu_cxx::__aligned_buffer.14" } %"struct.__gnu_cxx::__aligned_buffer.14" = type { %"union.std::aligned_storage<64, 8>::type" } %"union.std::aligned_storage<64, 8>::type" = type { [64 x i8] } %"class.std::__future_base::_Async_state_impl" = type <{ %"class.std::__future_base::_Async_state_commonV2.base", [4 x i8], %"class.std::unique_ptr.7", %"struct.std::_Bind_simple", [7 x i8] }> %"class.std::__future_base::_Async_state_commonV2.base" = type <{ %"class.std::__future_base::_State_baseV2.base", [4 x i8], %"class.std::thread", %"struct.std::once_flag" }> %"struct.std::_Bind_simple" = type { %"class.std::tuple.2" } %"class.std::tuple.2" = type { i8 } %union.pthread_attr_t = type { i64, [48 x i8] } %"struct.std::thread::_State_impl" = type { %"struct.std::thread::_State", %"struct.std::_Bind_simple.24" } %"struct.std::_Bind_simple.24" = type { %"class.std::tuple.25" } %"class.std::tuple.25" = type { %"struct.std::_Tuple_impl.26" } %"struct.std::_Tuple_impl.26" = type { %"struct.std::_Head_base.27" } %"struct.std::_Head_base.27" = type { %class.anon.17 } %class.anon.17 = type { %"class.std::__future_base::_Async_state_impl"* } %"class.std::function" = type { %"class.std::_Function_base", void (%"class.std::unique_ptr"*, %"union.std::_Any_data"*)* } %"class.std::_Function_base" = type { %"union.std::_Any_data", i1 (%"union.std::_Any_data"*, %"union.std::_Any_data"*, i32)* } %"union.std::_Any_data" = type { %"union.std::_Nocopy_types" } %"union.std::_Nocopy_types" = type { { i64, i64 } } %"class.std::future_error" = type { %"class.std::logic_error", %"struct.std::error_code" } %"class.std::logic_error" = type { %"class.std::exception", %"struct.std::__cow_string" } %"class.std::exception" = type { i32 (...)** } %"struct.std::__cow_string" = type { %union.anon } %union.anon = type { i8* } %"struct.std::_Bind_simple.28" = type { %"class.std::tuple.29" } %"class.std::tuple.29" = type { %"struct.std::_Tuple_impl.30" } %"struct.std::_Tuple_impl.30" = type { %"struct.std::_Tuple_impl.31", %"struct.std::_Head_base.37" } %"struct.std::_Tuple_impl.31" = type { %"struct.std::_Tuple_impl.32", %"struct.std::_Head_base.36" } %"struct.std::_Tuple_impl.32" = type { %"struct.std::_Tuple_impl.33", %"struct.std::_Head_base.35" } %"struct.std::_Tuple_impl.33" = type { %"struct.std::_Head_base.34" } %"struct.std::_Head_base.34" = type { i8* } %"struct.std::_Head_base.35" = type { %"class.std::function"* } %"struct.std::_Head_base.36" = type { %"class.std::__future_base::_State_baseV2"* } %"struct.std::_Head_base.37" = type { %"struct.std::_Mem_fn" } %"struct.std::_Mem_fn" = type { %"class.std::_Mem_fn_base" } %"class.std::_Mem_fn_base" = type { { i64, i64 } } %"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string, std::allocator >::_Alloc_hider", i64, %union.anon.43 } %"struct.std::__cxx11::basic_string, std::allocator >::_Alloc_hider" = type { i8* } %union.anon.43 = type { i64, [8 x i8] } %"struct.std::_Bind_simple.44" = type { %"class.std::tuple.45" } %"class.std::tuple.45" = type { %"struct.std::_Tuple_impl.46" } %"struct.std::_Tuple_impl.46" = type { %"struct.std::_Tuple_impl.47", %"struct.std::_Head_base.49" } %"struct.std::_Tuple_impl.47" = type { %"struct.std::_Head_base.48" } %"struct.std::_Head_base.48" = type { %"class.std::thread"* } %"struct.std::_Head_base.49" = type { %"struct.std::_Mem_fn.50" } %"struct.std::_Mem_fn.50" = type { %"class.std::_Mem_fn_base.51" } %"class.std::_Mem_fn_base.51" = type { { i64, i64 } } %"class.std::_Sp_counted_ptr_inplace.63" = type { %"class.std::_Sp_counted_base", %"class.std::_Sp_counted_ptr_inplace, int>, std::allocator, int> >, __gnu_cxx::_Lock_policy::_S_atomic>::_Impl" } %"class.std::_Sp_counted_ptr_inplace, int>, std::allocator, int> >, __gnu_cxx::_Lock_policy::_S_atomic>::_Impl" = type { %"struct.__gnu_cxx::__aligned_buffer.65" } %"struct.__gnu_cxx::__aligned_buffer.65" = type { %"union.std::aligned_storage<48, 8>::type" } %"union.std::aligned_storage<48, 8>::type" = type { [48 x i8] } %"class.std::__future_base::_Deferred_state" = type <{ %"class.std::__future_base::_State_baseV2.base", [4 x i8], %"class.std::unique_ptr.7", %"struct.std::_Bind_simple", [7 x i8] }> %"struct.std::__atomic_futex_unsigned_base" = type { i8 } $_ZNSt6futureIiE3getEv = comdat any $_ZNSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE10_M_releaseEv = comdat any $__clang_call_terminate = comdat any $_ZNSt13__future_base7_ResultIiEC2Ev = comdat any $_ZNSt10unique_ptrINSt13__future_base7_ResultIiEENS0_12_Result_base8_DeleterEED2Ev = comdat any $_ZNSt13__future_base21_Async_state_commonV217_M_complete_asyncEv = comdat any $_ZNKSt13__future_base13_State_baseV221_M_is_deferred_futureEv = comdat any $_ZNSt13__future_base21_Async_state_commonV2D2Ev = comdat any $_ZNSt13__future_base21_Async_state_commonV2D0Ev = comdat any $_ZNSt10unique_ptrINSt13__future_base12_Result_baseENS1_8_DeleterEED2Ev = comdat any $_ZNSt13__future_base13_State_baseV2D2Ev = comdat any $_ZNSt13__future_base13_State_baseV2D0Ev = comdat any $_ZNSt13__future_base13_State_baseV217_M_complete_asyncEv = comdat any $_ZNSt13__future_base7_ResultIiE10_M_destroyEv = comdat any $_ZNSt13__future_base7_ResultIiED2Ev = comdat any $_ZNSt13__future_base7_ResultIiED0Ev = comdat any $_ZNSt13__future_base13_State_baseV213_M_set_resultESt8functionIFSt10unique_ptrINS_12_Result_baseENS3_8_DeleterEEvEEb = comdat any $_ZNSt13__future_base13_State_baseV216_M_break_promiseESt10unique_ptrINS_12_Result_baseENS2_8_DeleterEE = comdat any $_ZSt9call_onceIMNSt13__future_base13_State_baseV2EFvPSt8functionIFSt10unique_ptrINS0_12_Result_baseENS4_8_DeleterEEvEEPbEJPS1_S9_SA_EEvRSt9once_flagOT_DpOT0_ = comdat any $_ZNSt13__future_base13_State_baseV29_M_do_setEPSt8functionIFSt10unique_ptrINS_12_Result_baseENS3_8_DeleterEEvEEPb = comdat any $_ZSt16__once_call_implISt12_Bind_simpleIFSt7_Mem_fnIMNSt13__future_base13_State_baseV2EFvPSt8functionIFSt10unique_ptrINS2_12_Result_baseENS6_8_DeleterEEvEEPbEEPS3_SB_SC_EEEvv = comdat any $_ZNSt12_Bind_simpleIFSt7_Mem_fnIMNSt13__future_base13_State_baseV2EFvPSt8functionIFSt10unique_ptrINS1_12_Result_baseENS5_8_DeleterEEvEEPbEEPS2_SA_SB_EE9_M_invokeIJLm0ELm1ELm2EEEEvSt12_Index_tupleIJXspT_EEE = comdat any $_ZSt18make_exception_ptrISt12future_errorENSt15__exception_ptr13exception_ptrET_ = comdat any $_ZNSt12future_errorC2ESt10error_code = comdat any $_ZSt9call_onceIMSt6threadFvvEJPS0_EEvRSt9once_flagOT_DpOT0_ = comdat any $_ZSt16__once_call_implISt12_Bind_simpleIFSt7_Mem_fnIMSt6threadFvvEEPS2_EEEvv = comdat any $_ZNSt14__basic_futureIiEC2ERKSt10shared_ptrINSt13__future_base13_State_baseV2EE = comdat any $_ZNKSt14__basic_futureIiE13_M_get_resultEv = comdat any $_ZNSt13__future_base13_State_baseV24waitEv = comdat any $_ZTSSt19_Sp_make_shared_tag = comdat any $_ZTISt19_Sp_make_shared_tag = comdat any $_ZTSSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE = comdat any $_ZTSSt11_Mutex_baseILN9__gnu_cxx12_Lock_policyE2EE = comdat any $_ZTISt11_Mutex_baseILN9__gnu_cxx12_Lock_policyE2EE = comdat any $_ZTISt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE = comdat any $_ZTSNSt13__future_base21_Async_state_commonV2E = comdat any $_ZTSNSt13__future_base13_State_baseV2E = comdat any $_ZTINSt13__future_base13_State_baseV2E = comdat any $_ZTINSt13__future_base21_Async_state_commonV2E = comdat any $_ZTVNSt13__future_base21_Async_state_commonV2E = comdat any $_ZTVNSt13__future_base13_State_baseV2E = comdat any $_ZTVNSt13__future_base7_ResultIiEE = comdat any $_ZTSNSt13__future_base7_ResultIiEE = comdat any $_ZTINSt13__future_base7_ResultIiEE = comdat any @_ZTISt12system_error = external constant i8* @_ZTVN10__cxxabiv117__class_type_infoE = external global i8* @_ZTSSt19_Sp_make_shared_tag = linkonce_odr constant [24 x i8] c"St19_Sp_make_shared_tag\00", comdat @_ZTISt19_Sp_make_shared_tag = linkonce_odr constant { i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv117__class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([24 x i8], [24 x i8]* @_ZTSSt19_Sp_make_shared_tag, i32 0, i32 0) }, comdat @"_ZTVSt23_Sp_counted_ptr_inplaceINSt13__future_base17_Async_state_implISt12_Bind_simpleIFZ4mainE3$_0vEEiEESaIS6_ELN9__gnu_cxx12_Lock_policyE2EE" = internal unnamed_addr constant [7 x i8*] [i8* null, i8* bitcast ({ i8*, i8*, i8* }* @"_ZTISt23_Sp_counted_ptr_inplaceINSt13__future_base17_Async_state_implISt12_Bind_simpleIFZ4mainE3$_0vEEiEESaIS6_ELN9__gnu_cxx12_Lock_policyE2EE" to i8*), i8* bitcast (void (%"class.std::_Sp_counted_ptr_inplace"*)* @"_ZNSt23_Sp_counted_ptr_inplaceINSt13__future_base17_Async_state_implISt12_Bind_simpleIFZ4mainE3$_0vEEiEESaIS6_ELN9__gnu_cxx12_Lock_policyE2EED2Ev" to i8*), i8* bitcast (void (%"class.std::_Sp_counted_ptr_inplace"*)* @"_ZNSt23_Sp_counted_ptr_inplaceINSt13__future_base17_Async_state_implISt12_Bind_simpleIFZ4mainE3$_0vEEiEESaIS6_ELN9__gnu_cxx12_Lock_policyE2EED0Ev" to i8*), i8* bitcast (void (%"class.std::_Sp_counted_ptr_inplace"*)* @"_ZNSt23_Sp_counted_ptr_inplaceINSt13__future_base17_Async_state_implISt12_Bind_simpleIFZ4mainE3$_0vEEiEESaIS6_ELN9__gnu_cxx12_Lock_policyE2EE10_M_disposeEv" to i8*), i8* bitcast (void (%"class.std::_Sp_counted_ptr_inplace"*)* @"_ZNSt23_Sp_counted_ptr_inplaceINSt13__future_base17_Async_state_implISt12_Bind_simpleIFZ4mainE3$_0vEEiEESaIS6_ELN9__gnu_cxx12_Lock_policyE2EE10_M_destroyEv" to i8*), i8* bitcast (i8* (%"class.std::_Sp_counted_ptr_inplace"*, %"class.std::type_info"*)* @"_ZNSt23_Sp_counted_ptr_inplaceINSt13__future_base17_Async_state_implISt12_Bind_simpleIFZ4mainE3$_0vEEiEESaIS6_ELN9__gnu_cxx12_Lock_policyE2EE14_M_get_deleterERKSt9type_info" to i8*)], align 8 @_ZTVN10__cxxabiv120__si_class_type_infoE = external global i8* @"_ZTSSt23_Sp_counted_ptr_inplaceINSt13__future_base17_Async_state_implISt12_Bind_simpleIFZ4mainE3$_0vEEiEESaIS6_ELN9__gnu_cxx12_Lock_policyE2EE" = internal constant [139 x i8] c"St23_Sp_counted_ptr_inplaceINSt13__future_base17_Async_state_implISt12_Bind_simpleIFZ4mainE3$_0vEEiEESaIS6_ELN9__gnu_cxx12_Lock_policyE2EE\00" @_ZTSSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE = linkonce_odr constant [52 x i8] c"St16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE\00", comdat @_ZTSSt11_Mutex_baseILN9__gnu_cxx12_Lock_policyE2EE = linkonce_odr constant [47 x i8] c"St11_Mutex_baseILN9__gnu_cxx12_Lock_policyE2EE\00", comdat @_ZTISt11_Mutex_baseILN9__gnu_cxx12_Lock_policyE2EE = linkonce_odr constant { i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv117__class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([47 x i8], [47 x i8]* @_ZTSSt11_Mutex_baseILN9__gnu_cxx12_Lock_policyE2EE, i32 0, i32 0) }, comdat @_ZTISt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE = linkonce_odr constant { i8*, i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([52 x i8], [52 x i8]* @_ZTSSt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE, i32 0, i32 0), i8* bitcast ({ i8*, i8* }* @_ZTISt11_Mutex_baseILN9__gnu_cxx12_Lock_policyE2EE to i8*) }, comdat @"_ZTISt23_Sp_counted_ptr_inplaceINSt13__future_base17_Async_state_implISt12_Bind_simpleIFZ4mainE3$_0vEEiEESaIS6_ELN9__gnu_cxx12_Lock_policyE2EE" = internal constant { i8*, i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([139 x i8], [139 x i8]* @"_ZTSSt23_Sp_counted_ptr_inplaceINSt13__future_base17_Async_state_implISt12_Bind_simpleIFZ4mainE3$_0vEEiEESaIS6_ELN9__gnu_cxx12_Lock_policyE2EE", i32 0, i32 0), i8* bitcast ({ i8*, i8*, i8* }* @_ZTISt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE to i8*) } @"_ZTVNSt13__future_base17_Async_state_implISt12_Bind_simpleIFZ4mainE3$_0vEEiEE" = internal unnamed_addr constant [6 x i8*] [i8* null, i8* bitcast ({ i8*, i8*, i8* }* @"_ZTINSt13__future_base17_Async_state_implISt12_Bind_simpleIFZ4mainE3$_0vEEiEE" to i8*), i8* bitcast (void (%"class.std::__future_base::_Async_state_impl"*)* @"_ZNSt13__future_base17_Async_state_implISt12_Bind_simpleIFZ4mainE3$_0vEEiED2Ev" to i8*), i8* bitcast (void (%"class.std::__future_base::_Async_state_impl"*)* @"_ZNSt13__future_base17_Async_state_implISt12_Bind_simpleIFZ4mainE3$_0vEEiED0Ev" to i8*), i8* bitcast (void (%"class.std::__future_base::_Async_state_commonV2"*)* @_ZNSt13__future_base21_Async_state_commonV217_M_complete_asyncEv to i8*), i8* bitcast (i1 (%"class.std::__future_base::_State_baseV2"*)* @_ZNKSt13__future_base13_State_baseV221_M_is_deferred_futureEv to i8*)], align 8 @"_ZTSNSt13__future_base17_Async_state_implISt12_Bind_simpleIFZ4mainE3$_0vEEiEE" = internal constant [74 x i8] c"NSt13__future_base17_Async_state_implISt12_Bind_simpleIFZ4mainE3$_0vEEiEE\00" @_ZTSNSt13__future_base21_Async_state_commonV2E = linkonce_odr constant [43 x i8] c"NSt13__future_base21_Async_state_commonV2E\00", comdat @_ZTSNSt13__future_base13_State_baseV2E = linkonce_odr constant [35 x i8] c"NSt13__future_base13_State_baseV2E\00", comdat @_ZTINSt13__future_base13_State_baseV2E = linkonce_odr constant { i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv117__class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([35 x i8], [35 x i8]* @_ZTSNSt13__future_base13_State_baseV2E, i32 0, i32 0) }, comdat @_ZTINSt13__future_base21_Async_state_commonV2E = linkonce_odr constant { i8*, i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([43 x i8], [43 x i8]* @_ZTSNSt13__future_base21_Async_state_commonV2E, i32 0, i32 0), i8* bitcast ({ i8*, i8* }* @_ZTINSt13__future_base13_State_baseV2E to i8*) }, comdat @"_ZTINSt13__future_base17_Async_state_implISt12_Bind_simpleIFZ4mainE3$_0vEEiEE" = internal constant { i8*, i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([74 x i8], [74 x i8]* @"_ZTSNSt13__future_base17_Async_state_implISt12_Bind_simpleIFZ4mainE3$_0vEEiEE", i32 0, i32 0), i8* bitcast ({ i8*, i8*, i8* }* @_ZTINSt13__future_base21_Async_state_commonV2E to i8*) } @_ZTVNSt13__future_base21_Async_state_commonV2E = linkonce_odr unnamed_addr constant [6 x i8*] [i8* null, i8* bitcast ({ i8*, i8*, i8* }* @_ZTINSt13__future_base21_Async_state_commonV2E to i8*), i8* bitcast (void (%"class.std::__future_base::_Async_state_commonV2"*)* @_ZNSt13__future_base21_Async_state_commonV2D2Ev to i8*), i8* bitcast (void (%"class.std::__future_base::_Async_state_commonV2"*)* @_ZNSt13__future_base21_Async_state_commonV2D0Ev to i8*), i8* bitcast (void (%"class.std::__future_base::_Async_state_commonV2"*)* @_ZNSt13__future_base21_Async_state_commonV217_M_complete_asyncEv to i8*), i8* bitcast (i1 (%"class.std::__future_base::_State_baseV2"*)* @_ZNKSt13__future_base13_State_baseV221_M_is_deferred_futureEv to i8*)], comdat, align 8 @_ZTVNSt13__future_base13_State_baseV2E = linkonce_odr unnamed_addr constant [6 x i8*] [i8* null, i8* bitcast ({ i8*, i8* }* @_ZTINSt13__future_base13_State_baseV2E to i8*), i8* bitcast (void (%"class.std::__future_base::_State_baseV2"*)* @_ZNSt13__future_base13_State_baseV2D2Ev to i8*), i8* bitcast (void (%"class.std::__future_base::_State_baseV2"*)* @_ZNSt13__future_base13_State_baseV2D0Ev to i8*), i8* bitcast (void (%"class.std::__future_base::_State_baseV2"*)* @_ZNSt13__future_base13_State_baseV217_M_complete_asyncEv to i8*), i8* bitcast (i1 (%"class.std::__future_base::_State_baseV2"*)* @_ZNKSt13__future_base13_State_baseV221_M_is_deferred_futureEv to i8*)], comdat, align 8 @_ZTVNSt13__future_base7_ResultIiEE = linkonce_odr unnamed_addr constant [5 x i8*] [i8* null, i8* bitcast ({ i8*, i8*, i8* }* @_ZTINSt13__future_base7_ResultIiEE to i8*), i8* bitcast (void (%"struct.std::__future_base::_Result"*)* @_ZNSt13__future_base7_ResultIiE10_M_destroyEv to i8*), i8* bitcast (void (%"struct.std::__future_base::_Result"*)* @_ZNSt13__future_base7_ResultIiED2Ev to i8*), i8* bitcast (void (%"struct.std::__future_base::_Result"*)* @_ZNSt13__future_base7_ResultIiED0Ev to i8*)], comdat, align 8 @_ZTSNSt13__future_base7_ResultIiEE = linkonce_odr constant [31 x i8] c"NSt13__future_base7_ResultIiEE\00", comdat @_ZTINSt13__future_base12_Result_baseE = external constant i8* @_ZTINSt13__future_base7_ResultIiEE = linkonce_odr constant { i8*, i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([31 x i8], [31 x i8]* @_ZTSNSt13__future_base7_ResultIiEE, i32 0, i32 0), i8* bitcast (i8** @_ZTINSt13__future_base12_Result_baseE to i8*) }, comdat @"_ZTVNSt6thread11_State_implISt12_Bind_simpleIFZNSt13__future_base17_Async_state_implIS1_IFZ4mainE3$_0vEEiEC1EOS6_EUlvE_vEEEE" = internal unnamed_addr constant [5 x i8*] [i8* null, i8* bitcast ({ i8*, i8*, i8* }* @"_ZTINSt6thread11_State_implISt12_Bind_simpleIFZNSt13__future_base17_Async_state_implIS1_IFZ4mainE3$_0vEEiEC1EOS6_EUlvE_vEEEE" to i8*), i8* bitcast (void (%"struct.std::thread::_State"*)* @_ZNSt6thread6_StateD2Ev to i8*), i8* bitcast (void (%"struct.std::thread::_State_impl"*)* @"_ZNSt6thread11_State_implISt12_Bind_simpleIFZNSt13__future_base17_Async_state_implIS1_IFZ4mainE3$_0vEEiEC1EOS6_EUlvE_vEEED0Ev" to i8*), i8* bitcast (void (%"struct.std::thread::_State_impl"*)* @"_ZNSt6thread11_State_implISt12_Bind_simpleIFZNSt13__future_base17_Async_state_implIS1_IFZ4mainE3$_0vEEiEC1EOS6_EUlvE_vEEE6_M_runEv" to i8*)], align 8 @"_ZTSNSt6thread11_State_implISt12_Bind_simpleIFZNSt13__future_base17_Async_state_implIS1_IFZ4mainE3$_0vEEiEC1EOS6_EUlvE_vEEEE" = internal constant [121 x i8] c"NSt6thread11_State_implISt12_Bind_simpleIFZNSt13__future_base17_Async_state_implIS1_IFZ4mainE3$_0vEEiEC1EOS6_EUlvE_vEEEE\00" @_ZTINSt6thread6_StateE = external constant i8* @"_ZTINSt6thread11_State_implISt12_Bind_simpleIFZNSt13__future_base17_Async_state_implIS1_IFZ4mainE3$_0vEEiEC1EOS6_EUlvE_vEEEE" = internal constant { i8*, i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([121 x i8], [121 x i8]* @"_ZTSNSt6thread11_State_implISt12_Bind_simpleIFZNSt13__future_base17_Async_state_implIS1_IFZ4mainE3$_0vEEiEC1EOS6_EUlvE_vEEEE", i32 0, i32 0), i8* bitcast (i8** @_ZTINSt6thread6_StateE to i8*) } @_ZTIN10__cxxabiv115__forced_unwindE = external constant i8* @_ZSt15__once_callable = external thread_local global i8*, align 8 @_ZSt11__once_call = external thread_local global void ()*, align 8 @"_ZTSNSt13__future_base12_Task_setterISt10unique_ptrINS_7_ResultIiEENS_12_Result_base8_DeleterEESt12_Bind_simpleIFZ4mainE3$_0vEEiEE" = internal constant [127 x i8] c"NSt13__future_base12_Task_setterISt10unique_ptrINS_7_ResultIiEENS_12_Result_base8_DeleterEESt12_Bind_simpleIFZ4mainE3$_0vEEiEE\00" @"_ZTINSt13__future_base12_Task_setterISt10unique_ptrINS_7_ResultIiEENS_12_Result_base8_DeleterEESt12_Bind_simpleIFZ4mainE3$_0vEEiEE" = internal constant { i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv117__class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([127 x i8], [127 x i8]* @"_ZTSNSt13__future_base12_Task_setterISt10unique_ptrINS_7_ResultIiEENS_12_Result_base8_DeleterEESt12_Bind_simpleIFZ4mainE3$_0vEEiEE", i32 0, i32 0) } @_ZTISt12future_error = external constant i8* @_ZTVSt12future_error = external unnamed_addr constant [5 x i8*], align 8 @.str = private unnamed_addr constant [20 x i8] c"std::future_error: \00", align 1 @"_ZTVSt23_Sp_counted_ptr_inplaceINSt13__future_base15_Deferred_stateISt12_Bind_simpleIFZ4mainE3$_0vEEiEESaIS6_ELN9__gnu_cxx12_Lock_policyE2EE" = internal unnamed_addr constant [7 x i8*] [i8* null, i8* bitcast ({ i8*, i8*, i8* }* @"_ZTISt23_Sp_counted_ptr_inplaceINSt13__future_base15_Deferred_stateISt12_Bind_simpleIFZ4mainE3$_0vEEiEESaIS6_ELN9__gnu_cxx12_Lock_policyE2EE" to i8*), i8* bitcast (void (%"class.std::_Sp_counted_ptr_inplace.63"*)* @"_ZNSt23_Sp_counted_ptr_inplaceINSt13__future_base15_Deferred_stateISt12_Bind_simpleIFZ4mainE3$_0vEEiEESaIS6_ELN9__gnu_cxx12_Lock_policyE2EED2Ev" to i8*), i8* bitcast (void (%"class.std::_Sp_counted_ptr_inplace.63"*)* @"_ZNSt23_Sp_counted_ptr_inplaceINSt13__future_base15_Deferred_stateISt12_Bind_simpleIFZ4mainE3$_0vEEiEESaIS6_ELN9__gnu_cxx12_Lock_policyE2EED0Ev" to i8*), i8* bitcast (void (%"class.std::_Sp_counted_ptr_inplace.63"*)* @"_ZNSt23_Sp_counted_ptr_inplaceINSt13__future_base15_Deferred_stateISt12_Bind_simpleIFZ4mainE3$_0vEEiEESaIS6_ELN9__gnu_cxx12_Lock_policyE2EE10_M_disposeEv" to i8*), i8* bitcast (void (%"class.std::_Sp_counted_ptr_inplace.63"*)* @"_ZNSt23_Sp_counted_ptr_inplaceINSt13__future_base15_Deferred_stateISt12_Bind_simpleIFZ4mainE3$_0vEEiEESaIS6_ELN9__gnu_cxx12_Lock_policyE2EE10_M_destroyEv" to i8*), i8* bitcast (i8* (%"class.std::_Sp_counted_ptr_inplace.63"*, %"class.std::type_info"*)* @"_ZNSt23_Sp_counted_ptr_inplaceINSt13__future_base15_Deferred_stateISt12_Bind_simpleIFZ4mainE3$_0vEEiEESaIS6_ELN9__gnu_cxx12_Lock_policyE2EE14_M_get_deleterERKSt9type_info" to i8*)], align 8 @"_ZTSSt23_Sp_counted_ptr_inplaceINSt13__future_base15_Deferred_stateISt12_Bind_simpleIFZ4mainE3$_0vEEiEESaIS6_ELN9__gnu_cxx12_Lock_policyE2EE" = internal constant [137 x i8] c"St23_Sp_counted_ptr_inplaceINSt13__future_base15_Deferred_stateISt12_Bind_simpleIFZ4mainE3$_0vEEiEESaIS6_ELN9__gnu_cxx12_Lock_policyE2EE\00" @"_ZTISt23_Sp_counted_ptr_inplaceINSt13__future_base15_Deferred_stateISt12_Bind_simpleIFZ4mainE3$_0vEEiEESaIS6_ELN9__gnu_cxx12_Lock_policyE2EE" = internal constant { i8*, i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([137 x i8], [137 x i8]* @"_ZTSSt23_Sp_counted_ptr_inplaceINSt13__future_base15_Deferred_stateISt12_Bind_simpleIFZ4mainE3$_0vEEiEESaIS6_ELN9__gnu_cxx12_Lock_policyE2EE", i32 0, i32 0), i8* bitcast ({ i8*, i8*, i8* }* @_ZTISt16_Sp_counted_baseILN9__gnu_cxx12_Lock_policyE2EE to i8*) } @"_ZTVNSt13__future_base15_Deferred_stateISt12_Bind_simpleIFZ4mainE3$_0vEEiEE" = internal unnamed_addr constant [6 x i8*] [i8* null, i8* bitcast ({ i8*, i8*, i8* }* @"_ZTINSt13__future_base15_Deferred_stateISt12_Bind_simpleIFZ4mainE3$_0vEEiEE" to i8*), i8* bitcast (void (%"class.std::__future_base::_Deferred_state"*)* @"_ZNSt13__future_base15_Deferred_stateISt12_Bind_simpleIFZ4mainE3$_0vEEiED2Ev" to i8*), i8* bitcast (void (%"class.std::__future_base::_Deferred_state"*)* @"_ZNSt13__future_base15_Deferred_stateISt12_Bind_simpleIFZ4mainE3$_0vEEiED0Ev" to i8*), i8* bitcast (void (%"class.std::__future_base::_Deferred_state"*)* @"_ZNSt13__future_base15_Deferred_stateISt12_Bind_simpleIFZ4mainE3$_0vEEiE17_M_complete_asyncEv" to i8*), i8* bitcast (i1 (%"class.std::__future_base::_Deferred_state"*)* @"_ZNKSt13__future_base15_Deferred_stateISt12_Bind_simpleIFZ4mainE3$_0vEEiE21_M_is_deferred_futureEv" to i8*)], align 8 @"_ZTSNSt13__future_base15_Deferred_stateISt12_Bind_simpleIFZ4mainE3$_0vEEiEE" = internal constant [72 x i8] c"NSt13__future_base15_Deferred_stateISt12_Bind_simpleIFZ4mainE3$_0vEEiEE\00" @"_ZTINSt13__future_base15_Deferred_stateISt12_Bind_simpleIFZ4mainE3$_0vEEiEE" = internal constant { i8*, i8*, i8* } { i8* bitcast (i8** getelementptr inbounds (i8*, i8** @_ZTVN10__cxxabiv120__si_class_type_infoE, i64 2) to i8*), i8* getelementptr inbounds ([72 x i8], [72 x i8]* @"_ZTSNSt13__future_base15_Deferred_stateISt12_Bind_simpleIFZ4mainE3$_0vEEiEE", i32 0, i32 0), i8* bitcast ({ i8*, i8* }* @_ZTINSt13__future_base13_State_baseV2E to i8*) } ; Function Attrs: norecurse optsize uwtable define i32 @main() #0 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*) { %1 = alloca %"class.std::unique_ptr.18", align 8 %2 = alloca %"class.std::thread", align 8 %__state.i.i = alloca %"class.std::shared_ptr", align 8 %3 = alloca %"struct.std::error_condition", align 8 %4 = alloca %"class.std::future", align 8 %5 = bitcast %"struct.std::error_condition"* %3 to i8* call void @llvm.lifetime.start(i64 16, i8* %5), !noalias !2 %6 = bitcast %"class.std::shared_ptr"* %__state.i.i to i8* call void @llvm.lifetime.start(i64 16, i8* %6) #18, !noalias !5 call void @llvm.memset.p0i8.i64(i8* %6, i8 0, i64 16, i32 8, i1 false) #18, !noalias !5 %7 = invoke noalias i8* @_Znwm(i64 80) #19 to label %8 unwind label %74, !noalias !8 ;