diff --git a/bench/abc/optimized/abcLut.c.ll b/bench/abc/optimized/abcLut.c.ll index ea3fc29f3ef..6a9ce9d8f14 100644 --- a/bench/abc/optimized/abcLut.c.ll +++ b/bench/abc/optimized/abcLut.c.ll @@ -144,11 +144,10 @@ define range(i32 0, 2) i32 @Abc_NtkSuperChoiceLut(ptr noundef %0, i32 noundef %1 br i1 %exitcond37.not.i, label %Abc_ManSclStart.exit, label %.preheader.i, !llvm.loop !7 Abc_ManSclStart.exit: ; preds = %63 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(80) getelementptr inbounds (i8, ptr @Abc_NtkStartCutManForScl.Params, i64 8), i8 0, i64 68, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(80) getelementptr inbounds (i8, ptr @Abc_NtkStartCutManForScl.Params, i64 8), i8 0, i64 72, i1 false) store i32 %1, ptr @Abc_NtkStartCutManForScl.Params, align 4 store i32 500, ptr getelementptr inbounds (i8, ptr @Abc_NtkStartCutManForScl.Params, i64 4), align 4 store i32 1, ptr getelementptr inbounds (i8, ptr @Abc_NtkStartCutManForScl.Params, i64 24), align 4 - store i32 0, ptr getelementptr inbounds (i8, ptr @Abc_NtkStartCutManForScl.Params, i64 76), align 4 %64 = getelementptr i8, ptr %0, i64 32 %.val13.i = load ptr, ptr %64, align 8 %65 = getelementptr i8, ptr %.val13.i, i64 4 diff --git a/bench/abc/optimized/amapCore.c.ll b/bench/abc/optimized/amapCore.c.ll index 678bb4028fb..278dae73849 100644 --- a/bench/abc/optimized/amapCore.c.ll +++ b/bench/abc/optimized/amapCore.c.ll @@ -16,7 +16,7 @@ target triple = "x86_64-pc-linux-gnu" ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: write) uwtable define void @Amap_ManSetDefaultParams(ptr nocapture noundef writeonly %0) local_unnamed_addr #0 { %2 = getelementptr inbounds i8, ptr %0, i64 28 - store i32 0, ptr %2, align 4 + store i64 0, ptr %2, align 4 store i32 1, ptr %0, align 4 %3 = getelementptr inbounds i8, ptr %0, i64 4 store i32 4, ptr %3, align 4 @@ -30,8 +30,6 @@ define void @Amap_ManSetDefaultParams(ptr nocapture noundef writeonly %0) local_ store i32 0, ptr %7, align 4 %8 = getelementptr inbounds i8, ptr %0, i64 24 store float 0x3F50624DE0000000, ptr %8, align 4 - %9 = getelementptr inbounds i8, ptr %0, i64 32 - store i32 0, ptr %9, align 4 ret void } diff --git a/bench/abseil-cpp/optimized/hash_policy_traits_test.cc.ll b/bench/abseil-cpp/optimized/hash_policy_traits_test.cc.ll index 818e905fa48..ca560101f9e 100644 --- a/bench/abseil-cpp/optimized/hash_policy_traits_test.cc.ll +++ b/bench/abseil-cpp/optimized/hash_policy_traits_test.cc.ll @@ -1084,7 +1084,7 @@ invoke.cont3: ; preds = %invoke.cont %_M_manager.i.i.i = getelementptr inbounds i8, ptr %ref.tmp.i, i64 16 %_M_invoker.i.i = getelementptr inbounds i8, ptr %ref.tmp.i, i64 24 %1 = getelementptr inbounds i8, ptr %ref.tmp.i, i64 8 - store i64 0, ptr %1, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %1, i8 0, i64 24, i1 false) store i64 %0, ptr %ref.tmp.i, align 8 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %__tmp.sroa.0.i.i.i) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %__tmp.sroa.0.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i, i64 16, i1 false) @@ -1117,7 +1117,7 @@ _ZNSt8functionIFiiEEaSIZN4absl18container_internal12_GLOBAL__N_14TestC1EvEUliE_E %_M_manager.i.i.i4 = getelementptr inbounds i8, ptr %ref.tmp.i3, i64 16 %_M_invoker.i.i5 = getelementptr inbounds i8, ptr %ref.tmp.i3, i64 24 %6 = getelementptr inbounds i8, ptr %ref.tmp.i3, i64 8 - store i64 0, ptr %6, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %6, i8 0, i64 24, i1 false) store i64 %0, ptr %ref.tmp.i3, align 8 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %__tmp.sroa.0.i.i.i2) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %__tmp.sroa.0.i.i.i2, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i3, i64 16, i1 false) @@ -7726,6 +7726,7 @@ eh.resume: ; preds = %ehcleanup25, %ehcle ; Function Attrs: mustprogress uwtable define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(352) ptr @_ZN7testing8internal16TypedExpectationIFiiEE8WillOnceENS_10OnceActionIS2_EE(ptr noundef nonnull align 8 dereferenceable(352) %this, ptr noundef %once_action) local_unnamed_addr #4 comdat align 2 personality ptr @__gxx_personality_v0 { entry: + %ref.tmp.i.i.i.sroa.4 = alloca [24 x i8], align 8 %agg.tmp = alloca %"class.testing::Action", align 8 %ref.tmp = alloca %"struct.testing::internal::TypedExpectation::ActionAdaptor", align 8 tail call void @llvm.experimental.noalias.scope.decl(metadata !62) @@ -7758,6 +7759,8 @@ _ZSt11make_sharedIN7testing10OnceActionIFiiEEEJS3_EESt10shared_ptrINSt9enable_if store ptr %call5.i.i.i2.i.i.i.i, ptr %_M_refcount.i.i.i, align 8, !alias.scope !62 store ptr %_M_impl.i.i.i.i.i.i, ptr %ref.tmp, align 8, !alias.scope !62 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp, i8 0, i64 32, i1 false) + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %ref.tmp.i.i.i.sroa.4) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp.i.i.i.sroa.4, i8 0, i64 24, i1 false) %call.i.i2.i.i.i1.i2 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #28 to label %invoke.cont unwind label %lpad @@ -7769,58 +7772,60 @@ invoke.cont: ; preds = %_ZSt11make_sharedIN store ptr null, ptr %ref.tmp, align 8 store ptr %call.i.i2.i.i.i1.i2, ptr %agg.tmp, align 8 %ref.tmp.i.i.i.sroa.4.0.agg.tmp.sroa_idx = getelementptr inbounds i8, ptr %agg.tmp, i64 8 - store i64 0, ptr %ref.tmp.i.i.i.sroa.4.0.agg.tmp.sroa_idx, align 8 + %2 = load i64, ptr %ref.tmp.i.i.i.sroa.4, align 8 + store i64 %2, ptr %ref.tmp.i.i.i.sroa.4.0.agg.tmp.sroa_idx, align 8 %_M_manager3.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp, i64 16 store ptr @_ZNSt17_Function_handlerIFiiEN7testing8internal16TypedExpectationIS0_E13ActionAdaptorEE10_M_managerERSt9_Any_dataRKS7_St18_Manager_operation, ptr %_M_manager3.i.i.i.i, align 8 %_M_invoker4.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp, i64 24 store ptr @_ZNSt17_Function_handlerIFiiEN7testing8internal16TypedExpectationIS0_E13ActionAdaptorEE9_M_invokeERKSt9_Any_dataOi, ptr %_M_invoker4.i.i.i.i, align 8 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %ref.tmp.i.i.i.sroa.4) %call = invoke noundef nonnull align 8 dereferenceable(352) ptr @_ZN7testing8internal16TypedExpectationIFiiEE8WillOnceITpTnRiJEvEERS3_NS_6ActionIS2_EE(ptr noundef nonnull align 8 dereferenceable(352) %this, ptr noundef nonnull %agg.tmp) to label %invoke.cont4 unwind label %lpad3 invoke.cont4: ; preds = %invoke.cont - %2 = load ptr, ptr %_M_manager3.i.i.i.i, align 8 - %tobool.not.i.i.i = icmp eq ptr %2, null + %3 = load ptr, ptr %_M_manager3.i.i.i.i, align 8 + %tobool.not.i.i.i = icmp eq ptr %3, null br i1 %tobool.not.i.i.i, label %_ZN7testing8internal16TypedExpectationIFiiEE13ActionAdaptorD2Ev.exit, label %if.then.i.i.i if.then.i.i.i: ; preds = %invoke.cont4 - %call.i.i.i = invoke noundef zeroext i1 %2(ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp, ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp, i32 noundef 3) + %call.i.i.i = invoke noundef zeroext i1 %3(ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp, ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp, i32 noundef 3) to label %_ZN7testing8internal16TypedExpectationIFiiEE13ActionAdaptorD2Ev.exit unwind label %terminate.lpad.i.i.i terminate.lpad.i.i.i: ; preds = %if.then.i.i.i - %3 = landingpad { ptr, i32 } + %4 = landingpad { ptr, i32 } catch ptr null - %4 = extractvalue { ptr, i32 } %3, 0 - call void @__clang_call_terminate(ptr %4) #25 + %5 = extractvalue { ptr, i32 } %4, 0 + call void @__clang_call_terminate(ptr %5) #25 unreachable _ZN7testing8internal16TypedExpectationIFiiEE13ActionAdaptorD2Ev.exit: ; preds = %if.then.i.i.i, %invoke.cont4 ret ptr %call lpad: ; preds = %_ZSt11make_sharedIN7testing10OnceActionIFiiEEEJS3_EESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueES6_E4typeEEDpOT0_.exit - %5 = landingpad { ptr, i32 } + %6 = landingpad { ptr, i32 } cleanup br label %ehcleanup lpad3: ; preds = %invoke.cont - %6 = landingpad { ptr, i32 } + %7 = landingpad { ptr, i32 } cleanup - %7 = load ptr, ptr %_M_manager3.i.i.i.i, align 8 - %tobool.not.i.i.i6 = icmp eq ptr %7, null + %8 = load ptr, ptr %_M_manager3.i.i.i.i, align 8 + %tobool.not.i.i.i6 = icmp eq ptr %8, null br i1 %tobool.not.i.i.i6, label %ehcleanup, label %if.then.i.i.i7 if.then.i.i.i7: ; preds = %lpad3 - %call.i.i.i8 = invoke noundef zeroext i1 %7(ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp, ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp, i32 noundef 3) + %call.i.i.i8 = invoke noundef zeroext i1 %8(ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp, ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp, i32 noundef 3) to label %ehcleanup unwind label %terminate.lpad.i.i.i9 terminate.lpad.i.i.i9: ; preds = %if.then.i.i.i7 - %8 = landingpad { ptr, i32 } + %9 = landingpad { ptr, i32 } catch ptr null - %9 = extractvalue { ptr, i32 } %8, 0 - call void @__clang_call_terminate(ptr %9) #25 + %10 = extractvalue { ptr, i32 } %9, 0 + call void @__clang_call_terminate(ptr %10) #25 unreachable ehcleanup: ; preds = %if.then.i.i.i7, %lpad3, %lpad - %.pn = phi { ptr, i32 } [ %5, %lpad ], [ %6, %lpad3 ], [ %6, %if.then.i.i.i7 ] + %.pn = phi { ptr, i32 } [ %6, %lpad ], [ %7, %lpad3 ], [ %7, %if.then.i.i.i7 ] call void @_ZN7testing8internal16TypedExpectationIFiiEE13ActionAdaptorD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp) #26 resume { ptr, i32 } %.pn } diff --git a/bench/abseil-cpp/optimized/log_basic_test.cc.ll b/bench/abseil-cpp/optimized/log_basic_test.cc.ll index ecb5ffbc9a3..eb44526d308 100644 --- a/bench/abseil-cpp/optimized/log_basic_test.cc.ll +++ b/bench/abseil-cpp/optimized/log_basic_test.cc.ll @@ -8083,7 +8083,7 @@ invoke.cont48: ; preds = %invoke.cont44 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp46, i8 0, i64 32, i1 false) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i.i.i) %38 = getelementptr inbounds i8, ptr %ref.tmp.i.i.i, i64 8 - store i64 0, ptr %38, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %38, i8 0, i64 24, i1 false) %call.i.i2.i.i.i1.i80 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #34 to label %call.i.i2.i.i.i1.i.noexc unwind label %lpad49 @@ -9855,6 +9855,7 @@ declare void @_ZN7testing10InSequenceC1Ev(ptr noundef nonnull align 1 dereferenc ; Function Attrs: mustprogress uwtable define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(352) ptr @_ZN7testing8internal16TypedExpectationIFvRKN4absl8LogEntryEEE8WillOnceENS_10OnceActionIS6_EE(ptr noundef nonnull align 8 dereferenceable(352) %this, ptr noundef %once_action) local_unnamed_addr #3 comdat align 2 personality ptr @__gxx_personality_v0 { entry: + %ref.tmp.i.i.i.sroa.4 = alloca [24 x i8], align 8 %agg.tmp = alloca %"class.testing::Action", align 8 %ref.tmp = alloca %"struct.testing::internal::TypedExpectation::ActionAdaptor", align 8 tail call void @llvm.experimental.noalias.scope.decl(metadata !99) @@ -9887,6 +9888,8 @@ _ZSt11make_sharedIN7testing10OnceActionIFvRKN4absl8LogEntryEEEEJS7_EESt10shared_ store ptr %call5.i.i.i2.i.i.i.i, ptr %_M_refcount.i.i.i, align 8, !alias.scope !99 store ptr %_M_impl.i.i.i.i.i.i, ptr %ref.tmp, align 8, !alias.scope !99 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp, i8 0, i64 32, i1 false) + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %ref.tmp.i.i.i.sroa.4) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp.i.i.i.sroa.4, i8 0, i64 24, i1 false) %call.i.i2.i.i.i1.i2 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #34 to label %invoke.cont unwind label %lpad @@ -9898,58 +9901,60 @@ invoke.cont: ; preds = %_ZSt11make_sharedIN store ptr null, ptr %ref.tmp, align 8 store ptr %call.i.i2.i.i.i1.i2, ptr %agg.tmp, align 8 %ref.tmp.i.i.i.sroa.4.0.agg.tmp.sroa_idx = getelementptr inbounds i8, ptr %agg.tmp, i64 8 - store i64 0, ptr %ref.tmp.i.i.i.sroa.4.0.agg.tmp.sroa_idx, align 8 + %2 = load i64, ptr %ref.tmp.i.i.i.sroa.4, align 8 + store i64 %2, ptr %ref.tmp.i.i.i.sroa.4.0.agg.tmp.sroa_idx, align 8 %_M_manager3.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp, i64 16 store ptr @_ZNSt17_Function_handlerIFvRKN4absl8LogEntryEEN7testing8internal16TypedExpectationIS4_E13ActionAdaptorEE10_M_managerERSt9_Any_dataRKSB_St18_Manager_operation, ptr %_M_manager3.i.i.i.i, align 8 %_M_invoker4.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp, i64 24 store ptr @_ZNSt17_Function_handlerIFvRKN4absl8LogEntryEEN7testing8internal16TypedExpectationIS4_E13ActionAdaptorEE9_M_invokeERKSt9_Any_dataS3_, ptr %_M_invoker4.i.i.i.i, align 8 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %ref.tmp.i.i.i.sroa.4) %call = invoke noundef nonnull align 8 dereferenceable(352) ptr @_ZN7testing8internal16TypedExpectationIFvRKN4absl8LogEntryEEE8WillOnceITpTnRiJEvEERS7_NS_6ActionIS6_EE(ptr noundef nonnull align 8 dereferenceable(352) %this, ptr noundef nonnull %agg.tmp) to label %invoke.cont4 unwind label %lpad3 invoke.cont4: ; preds = %invoke.cont - %2 = load ptr, ptr %_M_manager3.i.i.i.i, align 8 - %tobool.not.i.i.i = icmp eq ptr %2, null + %3 = load ptr, ptr %_M_manager3.i.i.i.i, align 8 + %tobool.not.i.i.i = icmp eq ptr %3, null br i1 %tobool.not.i.i.i, label %_ZN7testing8internal16TypedExpectationIFvRKN4absl8LogEntryEEE13ActionAdaptorD2Ev.exit, label %if.then.i.i.i if.then.i.i.i: ; preds = %invoke.cont4 - %call.i.i.i = invoke noundef zeroext i1 %2(ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp, ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp, i32 noundef 3) + %call.i.i.i = invoke noundef zeroext i1 %3(ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp, ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp, i32 noundef 3) to label %_ZN7testing8internal16TypedExpectationIFvRKN4absl8LogEntryEEE13ActionAdaptorD2Ev.exit unwind label %terminate.lpad.i.i.i terminate.lpad.i.i.i: ; preds = %if.then.i.i.i - %3 = landingpad { ptr, i32 } + %4 = landingpad { ptr, i32 } catch ptr null - %4 = extractvalue { ptr, i32 } %3, 0 - call void @__clang_call_terminate(ptr %4) #36 + %5 = extractvalue { ptr, i32 } %4, 0 + call void @__clang_call_terminate(ptr %5) #36 unreachable _ZN7testing8internal16TypedExpectationIFvRKN4absl8LogEntryEEE13ActionAdaptorD2Ev.exit: ; preds = %if.then.i.i.i, %invoke.cont4 ret ptr %call lpad: ; preds = %_ZSt11make_sharedIN7testing10OnceActionIFvRKN4absl8LogEntryEEEEJS7_EESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueESA_E4typeEEDpOT0_.exit - %5 = landingpad { ptr, i32 } + %6 = landingpad { ptr, i32 } cleanup br label %ehcleanup lpad3: ; preds = %invoke.cont - %6 = landingpad { ptr, i32 } + %7 = landingpad { ptr, i32 } cleanup - %7 = load ptr, ptr %_M_manager3.i.i.i.i, align 8 - %tobool.not.i.i.i6 = icmp eq ptr %7, null + %8 = load ptr, ptr %_M_manager3.i.i.i.i, align 8 + %tobool.not.i.i.i6 = icmp eq ptr %8, null br i1 %tobool.not.i.i.i6, label %ehcleanup, label %if.then.i.i.i7 if.then.i.i.i7: ; preds = %lpad3 - %call.i.i.i8 = invoke noundef zeroext i1 %7(ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp, ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp, i32 noundef 3) + %call.i.i.i8 = invoke noundef zeroext i1 %8(ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp, ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp, i32 noundef 3) to label %ehcleanup unwind label %terminate.lpad.i.i.i9 terminate.lpad.i.i.i9: ; preds = %if.then.i.i.i7 - %8 = landingpad { ptr, i32 } + %9 = landingpad { ptr, i32 } catch ptr null - %9 = extractvalue { ptr, i32 } %8, 0 - call void @__clang_call_terminate(ptr %9) #36 + %10 = extractvalue { ptr, i32 } %9, 0 + call void @__clang_call_terminate(ptr %10) #36 unreachable ehcleanup: ; preds = %if.then.i.i.i7, %lpad3, %lpad - %.pn = phi { ptr, i32 } [ %5, %lpad ], [ %6, %lpad3 ], [ %6, %if.then.i.i.i7 ] + %.pn = phi { ptr, i32 } [ %6, %lpad ], [ %7, %lpad3 ], [ %7, %if.then.i.i.i7 ] call void @_ZN7testing8internal16TypedExpectationIFvRKN4absl8LogEntryEEE13ActionAdaptorD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp) #32 resume { ptr, i32 } %.pn } @@ -10595,7 +10600,7 @@ invoke.cont48: ; preds = %invoke.cont44 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp46, i8 0, i64 32, i1 false) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i.i.i) %38 = getelementptr inbounds i8, ptr %ref.tmp.i.i.i, i64 8 - store i64 0, ptr %38, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %38, i8 0, i64 24, i1 false) %call.i.i2.i.i.i1.i55 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #34 to label %call.i.i2.i.i.i1.i.noexc unwind label %lpad49 @@ -13515,7 +13520,7 @@ invoke.cont44: ; preds = %invoke.cont40 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp42, i8 0, i64 32, i1 false) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i.i.i) %36 = getelementptr inbounds i8, ptr %ref.tmp.i.i.i, i64 8 - store i64 0, ptr %36, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %36, i8 0, i64 24, i1 false) %call.i.i2.i.i.i1.i80 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #34 to label %call.i.i2.i.i.i1.i.noexc unwind label %lpad45 diff --git a/bench/abseil-cpp/optimized/log_modifier_methods_test.cc.ll b/bench/abseil-cpp/optimized/log_modifier_methods_test.cc.ll index 0f5af6c0921..6b4fb3a6a12 100644 --- a/bench/abseil-cpp/optimized/log_modifier_methods_test.cc.ll +++ b/bench/abseil-cpp/optimized/log_modifier_methods_test.cc.ll @@ -14747,7 +14747,7 @@ invoke.cont44: ; preds = %invoke.cont40 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp42, i8 0, i64 32, i1 false) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i.i.i) %36 = getelementptr inbounds i8, ptr %ref.tmp.i.i.i, i64 8 - store i64 0, ptr %36, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %36, i8 0, i64 24, i1 false) %call.i.i2.i.i.i1.i40 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #31 to label %call.i.i2.i.i.i1.i.noexc unwind label %lpad45 @@ -16335,6 +16335,7 @@ declare void @_ZN4absl12log_internal10StacktraceERKN7testing7MatcherISt17basic_s ; Function Attrs: mustprogress uwtable define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(352) ptr @_ZN7testing8internal16TypedExpectationIFvRKN4absl8LogEntryEEE8WillOnceENS_10OnceActionIS6_EE(ptr noundef nonnull align 8 dereferenceable(352) %this, ptr noundef %once_action) local_unnamed_addr #3 comdat align 2 personality ptr @__gxx_personality_v0 { entry: + %ref.tmp.i.i.i.sroa.4 = alloca [24 x i8], align 8 %agg.tmp = alloca %"class.testing::Action", align 8 %ref.tmp = alloca %"struct.testing::internal::TypedExpectation::ActionAdaptor", align 8 tail call void @llvm.experimental.noalias.scope.decl(metadata !452) @@ -16367,6 +16368,8 @@ _ZSt11make_sharedIN7testing10OnceActionIFvRKN4absl8LogEntryEEEEJS7_EESt10shared_ store ptr %call5.i.i.i2.i.i.i.i, ptr %_M_refcount.i.i.i, align 8, !alias.scope !452 store ptr %_M_impl.i.i.i.i.i.i, ptr %ref.tmp, align 8, !alias.scope !452 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp, i8 0, i64 32, i1 false) + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %ref.tmp.i.i.i.sroa.4) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp.i.i.i.sroa.4, i8 0, i64 24, i1 false) %call.i.i2.i.i.i1.i2 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #31 to label %invoke.cont unwind label %lpad @@ -16378,58 +16381,60 @@ invoke.cont: ; preds = %_ZSt11make_sharedIN store ptr null, ptr %ref.tmp, align 8 store ptr %call.i.i2.i.i.i1.i2, ptr %agg.tmp, align 8 %ref.tmp.i.i.i.sroa.4.0.agg.tmp.sroa_idx = getelementptr inbounds i8, ptr %agg.tmp, i64 8 - store i64 0, ptr %ref.tmp.i.i.i.sroa.4.0.agg.tmp.sroa_idx, align 8 + %2 = load i64, ptr %ref.tmp.i.i.i.sroa.4, align 8 + store i64 %2, ptr %ref.tmp.i.i.i.sroa.4.0.agg.tmp.sroa_idx, align 8 %_M_manager3.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp, i64 16 store ptr @_ZNSt17_Function_handlerIFvRKN4absl8LogEntryEEN7testing8internal16TypedExpectationIS4_E13ActionAdaptorEE10_M_managerERSt9_Any_dataRKSB_St18_Manager_operation, ptr %_M_manager3.i.i.i.i, align 8 %_M_invoker4.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp, i64 24 store ptr @_ZNSt17_Function_handlerIFvRKN4absl8LogEntryEEN7testing8internal16TypedExpectationIS4_E13ActionAdaptorEE9_M_invokeERKSt9_Any_dataS3_, ptr %_M_invoker4.i.i.i.i, align 8 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %ref.tmp.i.i.i.sroa.4) %call = invoke noundef nonnull align 8 dereferenceable(352) ptr @_ZN7testing8internal16TypedExpectationIFvRKN4absl8LogEntryEEE8WillOnceITpTnRiJEvEERS7_NS_6ActionIS6_EE(ptr noundef nonnull align 8 dereferenceable(352) %this, ptr noundef nonnull %agg.tmp) to label %invoke.cont4 unwind label %lpad3 invoke.cont4: ; preds = %invoke.cont - %2 = load ptr, ptr %_M_manager3.i.i.i.i, align 8 - %tobool.not.i.i.i = icmp eq ptr %2, null + %3 = load ptr, ptr %_M_manager3.i.i.i.i, align 8 + %tobool.not.i.i.i = icmp eq ptr %3, null br i1 %tobool.not.i.i.i, label %_ZN7testing8internal16TypedExpectationIFvRKN4absl8LogEntryEEE13ActionAdaptorD2Ev.exit, label %if.then.i.i.i if.then.i.i.i: ; preds = %invoke.cont4 - %call.i.i.i = invoke noundef zeroext i1 %2(ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp, ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp, i32 noundef 3) + %call.i.i.i = invoke noundef zeroext i1 %3(ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp, ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp, i32 noundef 3) to label %_ZN7testing8internal16TypedExpectationIFvRKN4absl8LogEntryEEE13ActionAdaptorD2Ev.exit unwind label %terminate.lpad.i.i.i terminate.lpad.i.i.i: ; preds = %if.then.i.i.i - %3 = landingpad { ptr, i32 } + %4 = landingpad { ptr, i32 } catch ptr null - %4 = extractvalue { ptr, i32 } %3, 0 - call void @__clang_call_terminate(ptr %4) #32 + %5 = extractvalue { ptr, i32 } %4, 0 + call void @__clang_call_terminate(ptr %5) #32 unreachable _ZN7testing8internal16TypedExpectationIFvRKN4absl8LogEntryEEE13ActionAdaptorD2Ev.exit: ; preds = %if.then.i.i.i, %invoke.cont4 ret ptr %call lpad: ; preds = %_ZSt11make_sharedIN7testing10OnceActionIFvRKN4absl8LogEntryEEEEJS7_EESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueESA_E4typeEEDpOT0_.exit - %5 = landingpad { ptr, i32 } + %6 = landingpad { ptr, i32 } cleanup br label %ehcleanup lpad3: ; preds = %invoke.cont - %6 = landingpad { ptr, i32 } + %7 = landingpad { ptr, i32 } cleanup - %7 = load ptr, ptr %_M_manager3.i.i.i.i, align 8 - %tobool.not.i.i.i6 = icmp eq ptr %7, null + %8 = load ptr, ptr %_M_manager3.i.i.i.i, align 8 + %tobool.not.i.i.i6 = icmp eq ptr %8, null br i1 %tobool.not.i.i.i6, label %ehcleanup, label %if.then.i.i.i7 if.then.i.i.i7: ; preds = %lpad3 - %call.i.i.i8 = invoke noundef zeroext i1 %7(ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp, ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp, i32 noundef 3) + %call.i.i.i8 = invoke noundef zeroext i1 %8(ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp, ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp, i32 noundef 3) to label %ehcleanup unwind label %terminate.lpad.i.i.i9 terminate.lpad.i.i.i9: ; preds = %if.then.i.i.i7 - %8 = landingpad { ptr, i32 } + %9 = landingpad { ptr, i32 } catch ptr null - %9 = extractvalue { ptr, i32 } %8, 0 - call void @__clang_call_terminate(ptr %9) #32 + %10 = extractvalue { ptr, i32 } %9, 0 + call void @__clang_call_terminate(ptr %10) #32 unreachable ehcleanup: ; preds = %if.then.i.i.i7, %lpad3, %lpad - %.pn = phi { ptr, i32 } [ %5, %lpad ], [ %6, %lpad3 ], [ %6, %if.then.i.i.i7 ] + %.pn = phi { ptr, i32 } [ %6, %lpad ], [ %7, %lpad3 ], [ %7, %if.then.i.i.i7 ] call void @_ZN7testing8internal16TypedExpectationIFvRKN4absl8LogEntryEEE13ActionAdaptorD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp) #29 resume { ptr, i32 } %.pn } diff --git a/bench/abseil-cpp/optimized/reflection.cc.ll b/bench/abseil-cpp/optimized/reflection.cc.ll index 0c424bac8d2..f69e61fa042 100644 --- a/bench/abseil-cpp/optimized/reflection.cc.ll +++ b/bench/abseil-cpp/optimized/reflection.cc.ll @@ -1443,9 +1443,8 @@ init.check: ; preds = %entry br i1 %tobool.not, label %init.end, label %invoke.cont invoke.cont: ; preds = %init.check - store i64 0, ptr getelementptr inbounds (i8, ptr @_ZZN4absl14flags_internal12FlagRegistry14GlobalRegistryEvE15global_registry, i64 56), align 8 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) getelementptr inbounds (i8, ptr @_ZZN4absl14flags_internal12FlagRegistry14GlobalRegistryEvE15global_registry, i64 56), i8 0, i64 16, i1 false) store ptr getelementptr inbounds (i8, ptr @_ZN4absl18container_internal11kEmptyGroupE, i64 16), ptr @_ZZN4absl14flags_internal12FlagRegistry14GlobalRegistryEvE15global_registry, align 8 - store i64 0, ptr getelementptr inbounds (i8, ptr @_ZZN4absl14flags_internal12FlagRegistry14GlobalRegistryEvE15global_registry, i64 64), align 8 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(49) getelementptr inbounds (i8, ptr @_ZZN4absl14flags_internal12FlagRegistry14GlobalRegistryEvE15global_registry, i64 8), i8 0, i64 49, i1 false) tail call void @__cxa_guard_release(ptr nonnull @_ZGVZN4absl14flags_internal12FlagRegistry14GlobalRegistryEvE15global_registry) #28 br label %init.end @@ -1473,9 +1472,8 @@ init.check.i: ; preds = %entry br i1 %tobool.not.i, label %_ZN4absl14flags_internal12FlagRegistry14GlobalRegistryEv.exit, label %invoke.cont.i invoke.cont.i: ; preds = %init.check.i - store i64 0, ptr getelementptr inbounds (i8, ptr @_ZZN4absl14flags_internal12FlagRegistry14GlobalRegistryEvE15global_registry, i64 56), align 8 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) getelementptr inbounds (i8, ptr @_ZZN4absl14flags_internal12FlagRegistry14GlobalRegistryEvE15global_registry, i64 56), i8 0, i64 16, i1 false) store ptr getelementptr inbounds (i8, ptr @_ZN4absl18container_internal11kEmptyGroupE, i64 16), ptr @_ZZN4absl14flags_internal12FlagRegistry14GlobalRegistryEvE15global_registry, align 8 - store i64 0, ptr getelementptr inbounds (i8, ptr @_ZZN4absl14flags_internal12FlagRegistry14GlobalRegistryEvE15global_registry, i64 64), align 8 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(49) getelementptr inbounds (i8, ptr @_ZZN4absl14flags_internal12FlagRegistry14GlobalRegistryEvE15global_registry, i64 8), i8 0, i64 49, i1 false) tail call void @__cxa_guard_release(ptr nonnull @_ZGVZN4absl14flags_internal12FlagRegistry14GlobalRegistryEvE15global_registry) #28 br label %_ZN4absl14flags_internal12FlagRegistry14GlobalRegistryEv.exit @@ -1654,9 +1652,8 @@ init.check.i: ; preds = %entry br i1 %tobool.not.i, label %_ZN4absl14flags_internal12FlagRegistry14GlobalRegistryEv.exit, label %invoke.cont.i invoke.cont.i: ; preds = %init.check.i - store i64 0, ptr getelementptr inbounds (i8, ptr @_ZZN4absl14flags_internal12FlagRegistry14GlobalRegistryEvE15global_registry, i64 56), align 8 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) getelementptr inbounds (i8, ptr @_ZZN4absl14flags_internal12FlagRegistry14GlobalRegistryEvE15global_registry, i64 56), i8 0, i64 16, i1 false) store ptr getelementptr inbounds (i8, ptr @_ZN4absl18container_internal11kEmptyGroupE, i64 16), ptr @_ZZN4absl14flags_internal12FlagRegistry14GlobalRegistryEvE15global_registry, align 8 - store i64 0, ptr getelementptr inbounds (i8, ptr @_ZZN4absl14flags_internal12FlagRegistry14GlobalRegistryEvE15global_registry, i64 64), align 8 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(49) getelementptr inbounds (i8, ptr @_ZZN4absl14flags_internal12FlagRegistry14GlobalRegistryEvE15global_registry, i64 8), i8 0, i64 49, i1 false) tail call void @__cxa_guard_release(ptr nonnull @_ZGVZN4absl14flags_internal12FlagRegistry14GlobalRegistryEvE15global_registry) #28 br label %_ZN4absl14flags_internal12FlagRegistry14GlobalRegistryEv.exit @@ -1679,9 +1676,8 @@ init.check.i: ; preds = %entry br i1 %tobool.not.i, label %_ZN4absl14flags_internal12FlagRegistry14GlobalRegistryEv.exit, label %invoke.cont.i invoke.cont.i: ; preds = %init.check.i - store i64 0, ptr getelementptr inbounds (i8, ptr @_ZZN4absl14flags_internal12FlagRegistry14GlobalRegistryEvE15global_registry, i64 56), align 8 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) getelementptr inbounds (i8, ptr @_ZZN4absl14flags_internal12FlagRegistry14GlobalRegistryEvE15global_registry, i64 56), i8 0, i64 16, i1 false) store ptr getelementptr inbounds (i8, ptr @_ZN4absl18container_internal11kEmptyGroupE, i64 16), ptr @_ZZN4absl14flags_internal12FlagRegistry14GlobalRegistryEvE15global_registry, align 8 - store i64 0, ptr getelementptr inbounds (i8, ptr @_ZZN4absl14flags_internal12FlagRegistry14GlobalRegistryEvE15global_registry, i64 64), align 8 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(49) getelementptr inbounds (i8, ptr @_ZZN4absl14flags_internal12FlagRegistry14GlobalRegistryEvE15global_registry, i64 8), i8 0, i64 49, i1 false) tail call void @__cxa_guard_release(ptr nonnull @_ZGVZN4absl14flags_internal12FlagRegistry14GlobalRegistryEvE15global_registry) #28 br label %_ZN4absl14flags_internal12FlagRegistry14GlobalRegistryEv.exit @@ -2055,9 +2051,8 @@ init.check.i: ; preds = %entry br i1 %tobool.not.i, label %_ZN4absl14flags_internal12FlagRegistry14GlobalRegistryEv.exit, label %invoke.cont.i invoke.cont.i: ; preds = %init.check.i - store i64 0, ptr getelementptr inbounds (i8, ptr @_ZZN4absl14flags_internal12FlagRegistry14GlobalRegistryEvE15global_registry, i64 56), align 8 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) getelementptr inbounds (i8, ptr @_ZZN4absl14flags_internal12FlagRegistry14GlobalRegistryEvE15global_registry, i64 56), i8 0, i64 16, i1 false) store ptr getelementptr inbounds (i8, ptr @_ZN4absl18container_internal11kEmptyGroupE, i64 16), ptr @_ZZN4absl14flags_internal12FlagRegistry14GlobalRegistryEvE15global_registry, align 8 - store i64 0, ptr getelementptr inbounds (i8, ptr @_ZZN4absl14flags_internal12FlagRegistry14GlobalRegistryEvE15global_registry, i64 64), align 8 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(49) getelementptr inbounds (i8, ptr @_ZZN4absl14flags_internal12FlagRegistry14GlobalRegistryEvE15global_registry, i64 8), i8 0, i64 49, i1 false) tail call void @__cxa_guard_release(ptr nonnull @_ZGVZN4absl14flags_internal12FlagRegistry14GlobalRegistryEvE15global_registry) #28 br label %_ZN4absl14flags_internal12FlagRegistry14GlobalRegistryEv.exit @@ -2251,9 +2246,8 @@ init.check.i: ; preds = %if.end br i1 %tobool.not.i, label %_ZN4absl14flags_internal12FlagRegistry14GlobalRegistryEv.exit, label %invoke.cont.i invoke.cont.i: ; preds = %init.check.i - store i64 0, ptr getelementptr inbounds (i8, ptr @_ZZN4absl14flags_internal12FlagRegistry14GlobalRegistryEvE15global_registry, i64 56), align 8 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) getelementptr inbounds (i8, ptr @_ZZN4absl14flags_internal12FlagRegistry14GlobalRegistryEvE15global_registry, i64 56), i8 0, i64 16, i1 false) store ptr getelementptr inbounds (i8, ptr @_ZN4absl18container_internal11kEmptyGroupE, i64 16), ptr @_ZZN4absl14flags_internal12FlagRegistry14GlobalRegistryEvE15global_registry, align 8 - store i64 0, ptr getelementptr inbounds (i8, ptr @_ZZN4absl14flags_internal12FlagRegistry14GlobalRegistryEvE15global_registry, i64 64), align 8 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(49) getelementptr inbounds (i8, ptr @_ZZN4absl14flags_internal12FlagRegistry14GlobalRegistryEvE15global_registry, i64 8), i8 0, i64 49, i1 false) tail call void @__cxa_guard_release(ptr nonnull @_ZGVZN4absl14flags_internal12FlagRegistry14GlobalRegistryEvE15global_registry) #28 br label %_ZN4absl14flags_internal12FlagRegistry14GlobalRegistryEv.exit diff --git a/bench/arrow/optimized/bridge.cc.ll b/bench/arrow/optimized/bridge.cc.ll index 32607298936..cfc2fab391a 100644 --- a/bench/arrow/optimized/bridge.cc.ll +++ b/bench/arrow/optimized/bridge.cc.ll @@ -2441,12 +2441,14 @@ if.end59: ; preds = %for.end, %_ZSt9tran if.then62: ; preds = %if.end59 %call.i = tail call noalias noundef nonnull dereferenceable(376) ptr @_Znwm(i64 noundef 376) #28, !noalias !124 %data_.i.i.i.i.i = getelementptr inbounds i8, ptr %call.i, i64 32 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(272) %call.i, i8 0, i64 272, i1 false), !noalias !124 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(264) %call.i, i8 0, i64 264, i1 false), !noalias !124 store ptr %call.i, ptr %data_.i.i.i.i.i, align 8, !noalias !124 %children_.i.i.i = getelementptr inbounds i8, ptr %call.i, i64 128 %data_.i.i2.i.i.i = getelementptr inbounds i8, ptr %call.i, i64 216 store ptr %children_.i.i.i, ptr %data_.i.i2.i.i.i, align 8, !noalias !124 %child_pointers_.i.i.i = getelementptr inbounds i8, ptr %call.i, i64 232 + %size_.i.i4.i.i.i = getelementptr inbounds i8, ptr %call.i, i64 264 + store i64 0, ptr %size_.i.i4.i.i.i, align 8, !noalias !124 %data_.i.i5.i.i.i = getelementptr inbounds i8, ptr %call.i, i64 272 store ptr %child_pointers_.i.i.i, ptr %data_.i.i5.i.i.i, align 8, !noalias !124 %dynamic_capacity_.i.i6.i.i.i = getelementptr inbounds i8, ptr %call.i, i64 280 diff --git a/bench/arrow/optimized/diff.cc.ll b/bench/arrow/optimized/diff.cc.ll index 0a6cf3f9da7..973f0dd1fa4 100644 --- a/bench/arrow/optimized/diff.cc.ll +++ b/bench/arrow/optimized/diff.cc.ll @@ -17672,10 +17672,10 @@ land.rhs.i: ; preds = %if.then %conv.i = sext i32 %32 to i64 %add.i48 = add nsw i64 %conv4.i, %conv.i %42 = getelementptr inbounds i8, ptr %ref.tmp.i, i64 8 - store i64 256, ptr %42, align 8, !alias.scope !501 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %42, i8 0, i64 16, i1 false), !alias.scope !501 store double 1.000000e-05, ptr %ref.tmp.i, align 8, !alias.scope !501 - %diff_sink_.i.i.i = getelementptr inbounds i8, ptr %ref.tmp.i, i64 16 - store ptr null, ptr %diff_sink_.i.i.i, align 8, !alias.scope !501 + %signed_zeros_equal_.i.i.i = getelementptr inbounds i8, ptr %ref.tmp.i, i64 9 + store i8 1, ptr %signed_zeros_equal_.i.i.i, align 1, !alias.scope !501 %call.i = call noundef zeroext i1 @_ZNK5arrow5Array11RangeEqualsElllRKS0_RKNS_12EqualOptionsE(ptr noundef nonnull align 8 dereferenceable(32) %27, i64 noundef %conv.i, i64 noundef %add.i48, i64 noundef %conv.i41, ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp.i) br label %_ZNK5arrow5SliceeqERKS0_.exit @@ -17873,10 +17873,10 @@ if.then: ; preds = %_ZNK5arrow5Array7Is land.rhs.i: ; preds = %if.then %42 = getelementptr inbounds i8, ptr %ref.tmp.i, i64 8 - store i64 256, ptr %42, align 8, !alias.scope !510 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %42, i8 0, i64 16, i1 false), !alias.scope !510 store double 1.000000e-05, ptr %ref.tmp.i, align 8, !alias.scope !510 - %diff_sink_.i.i.i = getelementptr inbounds i8, ptr %ref.tmp.i, i64 16 - store ptr null, ptr %diff_sink_.i.i.i, align 8, !alias.scope !510 + %signed_zeros_equal_.i.i.i = getelementptr inbounds i8, ptr %ref.tmp.i, i64 9 + store i8 1, ptr %signed_zeros_equal_.i.i.i, align 1, !alias.scope !510 %call.i = call noundef zeroext i1 @_ZNK5arrow5Array11RangeEqualsElllRKS0_RKNS_12EqualOptionsE(ptr noundef nonnull align 8 dereferenceable(32) %27, i64 noundef %32, i64 noundef %33, i64 noundef %40, ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp.i) br label %_ZNK5arrow5SliceeqERKS0_.exit @@ -18119,10 +18119,10 @@ land.rhs.i: ; preds = %if.then %conv.i = sext i32 %32 to i64 %add.i48 = add nsw i64 %conv4.i, %conv.i %42 = getelementptr inbounds i8, ptr %ref.tmp.i, i64 8 - store i64 256, ptr %42, align 8, !alias.scope !522 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %42, i8 0, i64 16, i1 false), !alias.scope !522 store double 1.000000e-05, ptr %ref.tmp.i, align 8, !alias.scope !522 - %diff_sink_.i.i.i = getelementptr inbounds i8, ptr %ref.tmp.i, i64 16 - store ptr null, ptr %diff_sink_.i.i.i, align 8, !alias.scope !522 + %signed_zeros_equal_.i.i.i = getelementptr inbounds i8, ptr %ref.tmp.i, i64 9 + store i8 1, ptr %signed_zeros_equal_.i.i.i, align 1, !alias.scope !522 %call.i = call noundef zeroext i1 @_ZNK5arrow5Array11RangeEqualsElllRKS0_RKNS_12EqualOptionsE(ptr noundef nonnull align 8 dereferenceable(32) %27, i64 noundef %conv.i, i64 noundef %add.i48, i64 noundef %conv.i41, ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp.i) br label %_ZNK5arrow5SliceeqERKS0_.exit @@ -18312,10 +18312,10 @@ land.rhs.i: ; preds = %if.then %mul.i.i = mul nsw i64 %add.i.i, %conv.i.i41 %add.i46 = add nsw i64 %mul.i.i, %conv.i.i41 %36 = getelementptr inbounds i8, ptr %ref.tmp.i, i64 8 - store i64 256, ptr %36, align 8, !alias.scope !531 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %36, i8 0, i64 16, i1 false), !alias.scope !531 store double 1.000000e-05, ptr %ref.tmp.i, align 8, !alias.scope !531 - %diff_sink_.i.i.i = getelementptr inbounds i8, ptr %ref.tmp.i, i64 16 - store ptr null, ptr %diff_sink_.i.i.i, align 8, !alias.scope !531 + %signed_zeros_equal_.i.i.i = getelementptr inbounds i8, ptr %ref.tmp.i, i64 9 + store i8 1, ptr %signed_zeros_equal_.i.i.i, align 1, !alias.scope !531 %call.i47 = call noundef zeroext i1 @_ZNK5arrow5Array11RangeEqualsElllRKS0_RKNS_12EqualOptionsE(ptr noundef nonnull align 8 dereferenceable(32) %27, i64 noundef %mul.i.i, i64 noundef %add.i46, i64 noundef %mul.i.i42, ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp.i) br label %_ZNK5arrow5SliceeqERKS0_.exit @@ -18482,10 +18482,10 @@ if.then: ; preds = %_ZNK5arrow5Array7Is call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %ref.tmp.i) %add.i35 = add nsw i64 %base_index, 1 %28 = getelementptr inbounds i8, ptr %ref.tmp.i, i64 8 - store i64 256, ptr %28, align 8, !alias.scope !534 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %28, i8 0, i64 16, i1 false), !alias.scope !534 store double 1.000000e-05, ptr %ref.tmp.i, align 8, !alias.scope !534 - %diff_sink_.i.i.i = getelementptr inbounds i8, ptr %ref.tmp.i, i64 16 - store ptr null, ptr %diff_sink_.i.i.i, align 8, !alias.scope !534 + %signed_zeros_equal_.i.i.i = getelementptr inbounds i8, ptr %ref.tmp.i, i64 9 + store i8 1, ptr %signed_zeros_equal_.i.i.i, align 1, !alias.scope !534 %call.i = call noundef zeroext i1 @_ZNK5arrow5Array11RangeEqualsElllRKS0_RKNS_12EqualOptionsE(ptr noundef nonnull align 8 dereferenceable(32) %26, i64 noundef %base_index, i64 noundef %add.i35, i64 noundef %target_index, ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp.i) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %ref.tmp.i) br label %return @@ -18646,10 +18646,10 @@ if.then: ; preds = %_ZNK5arrow5Array7Is call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %ref.tmp.i) %add.i35 = add nsw i64 %base_index, 1 %28 = getelementptr inbounds i8, ptr %ref.tmp.i, i64 8 - store i64 256, ptr %28, align 8, !alias.scope !537 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %28, i8 0, i64 16, i1 false), !alias.scope !537 store double 1.000000e-05, ptr %ref.tmp.i, align 8, !alias.scope !537 - %diff_sink_.i.i.i = getelementptr inbounds i8, ptr %ref.tmp.i, i64 16 - store ptr null, ptr %diff_sink_.i.i.i, align 8, !alias.scope !537 + %signed_zeros_equal_.i.i.i = getelementptr inbounds i8, ptr %ref.tmp.i, i64 9 + store i8 1, ptr %signed_zeros_equal_.i.i.i, align 1, !alias.scope !537 %call.i = call noundef zeroext i1 @_ZNK5arrow5Array11RangeEqualsElllRKS0_RKNS_12EqualOptionsE(ptr noundef nonnull align 8 dereferenceable(32) %26, i64 noundef %base_index, i64 noundef %add.i35, i64 noundef %target_index, ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp.i) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %ref.tmp.i) br label %return @@ -18810,10 +18810,10 @@ if.then: ; preds = %_ZNK5arrow5Array7Is call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %ref.tmp.i) %add.i35 = add nsw i64 %base_index, 1 %28 = getelementptr inbounds i8, ptr %ref.tmp.i, i64 8 - store i64 256, ptr %28, align 8, !alias.scope !540 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %28, i8 0, i64 16, i1 false), !alias.scope !540 store double 1.000000e-05, ptr %ref.tmp.i, align 8, !alias.scope !540 - %diff_sink_.i.i.i = getelementptr inbounds i8, ptr %ref.tmp.i, i64 16 - store ptr null, ptr %diff_sink_.i.i.i, align 8, !alias.scope !540 + %signed_zeros_equal_.i.i.i = getelementptr inbounds i8, ptr %ref.tmp.i, i64 9 + store i8 1, ptr %signed_zeros_equal_.i.i.i, align 1, !alias.scope !540 %call.i = call noundef zeroext i1 @_ZNK5arrow5Array11RangeEqualsElllRKS0_RKNS_12EqualOptionsE(ptr noundef nonnull align 8 dereferenceable(32) %26, i64 noundef %base_index, i64 noundef %add.i35, i64 noundef %target_index, ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp.i) call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %ref.tmp.i) br label %return @@ -23455,6 +23455,7 @@ define linkonce_odr void @_ZN5arrow17MakeFormatterImpl5VisitERKNS_13TimestampTyp entry: %ref.tmp.i6 = alloca %"class.std::function.58", align 8 %ref.tmp.i = alloca %class.anon.681, align 8 + %ref.tmp.sroa.2 = alloca [24 x i8], align 8 %ref.tmp2 = alloca %"class.std::__cxx11::basic_string", align 8 %ref.tmp3 = alloca %"class.std::allocator.27", align 1 call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp3) #20 @@ -23476,11 +23477,13 @@ lpad.i: ; preds = %.noexc br label %ehcleanup invoke.cont: ; preds = %.noexc + call void @llvm.experimental.noalias.scope.decl(metadata !717) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i) invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp.i, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp2) to label %.noexc4 unwind label %lpad4 .noexc4: ; preds = %invoke.cont + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp.sroa.2, i8 0, i64 24, i1 false), !alias.scope !717 %call.i.i2.i1.i = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #22 to label %call.i.i2.i.noexc.i unwind label %lpad.i3, !noalias !717 @@ -23509,31 +23512,34 @@ _ZNSt8functionIFvRKN5arrow5ArrayElPSoEEC2EOS6_.exit.i: ; preds = %call.i.i2.i.no call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp.i) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i6) %_M_invoker.i.i7 = getelementptr inbounds i8, ptr %ref.tmp.i6, i64 24 + %ref.tmp.sroa.2.8._M_manager.i.i.i.sroa_idx = getelementptr inbounds i8, ptr %ref.tmp.sroa.2, i64 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.sroa.2.8._M_manager.i.i.i.sroa_idx, i8 0, i64 16, i1 false) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i6, ptr noundef nonnull align 8 dereferenceable(16) %this, i64 16, i1 false) store ptr %call.i.i2.i1.i, ptr %this, align 8 %ref.tmp.sroa.2.0.this.sroa_idx = getelementptr inbounds i8, ptr %this, i64 8 - store i64 0, ptr %ref.tmp.sroa.2.0.this.sroa_idx, align 8 + %4 = load i64, ptr %ref.tmp.sroa.2, align 8 + store i64 %4, ptr %ref.tmp.sroa.2.0.this.sroa_idx, align 8 %_M_manager.i.i = getelementptr inbounds i8, ptr %ref.tmp.i6, i64 16 %_M_manager3.i.i = getelementptr inbounds i8, ptr %this, i64 16 - %4 = load ptr, ptr %_M_manager3.i.i, align 8 - store ptr %4, ptr %_M_manager.i.i, align 8 + %5 = load ptr, ptr %_M_manager3.i.i, align 8 + store ptr %5, ptr %_M_manager.i.i, align 8 store ptr @_ZNSt17_Function_handlerIFvRKN5arrow5ArrayElPSoEZNS0_17MakeFormatterImpl17MakeTimeFormatterINS0_13TimestampTypeELb1EEESt8functionIS5_ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEUlS3_lS4_E_E10_M_managerERSt9_Any_dataRKSL_St18_Manager_operation, ptr %_M_manager3.i.i, align 8 %_M_invoker4.i.i = getelementptr inbounds i8, ptr %this, i64 24 - %5 = load ptr, ptr %_M_invoker4.i.i, align 8 - store ptr %5, ptr %_M_invoker.i.i7, align 8 + %6 = load ptr, ptr %_M_invoker4.i.i, align 8 + store ptr %6, ptr %_M_invoker.i.i7, align 8 store ptr @_ZNSt17_Function_handlerIFvRKN5arrow5ArrayElPSoEZNS0_17MakeFormatterImpl17MakeTimeFormatterINS0_13TimestampTypeELb1EEESt8functionIS5_ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEUlS3_lS4_E_E9_M_invokeERKSt9_Any_dataS3_OlOS4_, ptr %_M_invoker4.i.i, align 8 - %tobool.not.i.i.i = icmp eq ptr %4, null + %tobool.not.i.i.i = icmp eq ptr %5, null br i1 %tobool.not.i.i.i, label %_ZNSt8functionIFvRKN5arrow5ArrayElPSoEED2Ev.exit, label %if.then.i.i.i if.then.i.i.i: ; preds = %_ZNSt8functionIFvRKN5arrow5ArrayElPSoEEC2EOS6_.exit.i - %call.i.i.i = invoke noundef zeroext i1 %4(ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i6, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i6, i32 noundef 3) + %call.i.i.i = invoke noundef zeroext i1 %5(ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i6, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i6, i32 noundef 3) to label %_ZNSt8functionIFvRKN5arrow5ArrayElPSoEED2Ev.exit unwind label %terminate.lpad.i.i.i terminate.lpad.i.i.i: ; preds = %if.then.i.i.i - %6 = landingpad { ptr, i32 } + %7 = landingpad { ptr, i32 } catch ptr null - %7 = extractvalue { ptr, i32 } %6, 0 - call void @__clang_call_terminate(ptr %7) #23 + %8 = extractvalue { ptr, i32 } %7, 0 + call void @__clang_call_terminate(ptr %8) #23 unreachable _ZNSt8functionIFvRKN5arrow5ArrayElPSoEED2Ev.exit: ; preds = %if.then.i.i.i, %_ZNSt8functionIFvRKN5arrow5ArrayElPSoEEC2EOS6_.exit.i @@ -23544,22 +23550,22 @@ _ZNSt8functionIFvRKN5arrow5ArrayElPSoEED2Ev.exit: ; preds = %if.then.i.i.i, %_ZN ret void lpad: ; preds = %call.i.noexc, %entry - %8 = landingpad { ptr, i32 } + %9 = landingpad { ptr, i32 } cleanup br label %ehcleanup lpad4: ; preds = %invoke.cont - %9 = landingpad { ptr, i32 } + %10 = landingpad { ptr, i32 } cleanup br label %lpad4.body lpad4.body: ; preds = %lpad.body.i, %lpad4 - %eh.lpad-body5 = phi { ptr, i32 } [ %9, %lpad4 ], [ %eh.lpad-body.i, %lpad.body.i ] + %eh.lpad-body5 = phi { ptr, i32 } [ %10, %lpad4 ], [ %eh.lpad-body.i, %lpad.body.i ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp2) #20 br label %ehcleanup ehcleanup: ; preds = %lpad, %lpad.i, %lpad4.body - %.pn = phi { ptr, i32 } [ %eh.lpad-body5, %lpad4.body ], [ %8, %lpad ], [ %1, %lpad.i ] + %.pn = phi { ptr, i32 } [ %eh.lpad-body5, %lpad4.body ], [ %9, %lpad ], [ %1, %lpad.i ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp3) #20 resume { ptr, i32 } %.pn } @@ -23569,6 +23575,7 @@ define linkonce_odr void @_ZN5arrow17MakeFormatterImpl5VisitINS_10Time32TypeEEEN entry: %ref.tmp.i6 = alloca %"class.std::function.58", align 8 %ref.tmp.i = alloca %class.anon.699, align 8 + %ref.tmp.sroa.2 = alloca [24 x i8], align 8 %ref.tmp2 = alloca %"class.std::__cxx11::basic_string", align 8 %ref.tmp3 = alloca %"class.std::allocator.27", align 1 call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp3) #20 @@ -23590,11 +23597,13 @@ lpad.i: ; preds = %.noexc br label %ehcleanup invoke.cont: ; preds = %.noexc + call void @llvm.experimental.noalias.scope.decl(metadata !723) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i) invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp.i, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp2) to label %.noexc4 unwind label %lpad4 .noexc4: ; preds = %invoke.cont + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp.sroa.2, i8 0, i64 24, i1 false), !alias.scope !723 %call.i.i2.i1.i = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #22 to label %call.i.i2.i.noexc.i unwind label %lpad.i3, !noalias !723 @@ -23623,31 +23632,34 @@ _ZNSt8functionIFvRKN5arrow5ArrayElPSoEEC2EOS6_.exit.i: ; preds = %call.i.i2.i.no call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp.i) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i6) %_M_invoker.i.i7 = getelementptr inbounds i8, ptr %ref.tmp.i6, i64 24 + %ref.tmp.sroa.2.8._M_manager.i.i.i.sroa_idx = getelementptr inbounds i8, ptr %ref.tmp.sroa.2, i64 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.sroa.2.8._M_manager.i.i.i.sroa_idx, i8 0, i64 16, i1 false) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i6, ptr noundef nonnull align 8 dereferenceable(16) %this, i64 16, i1 false) store ptr %call.i.i2.i1.i, ptr %this, align 8 %ref.tmp.sroa.2.0.this.sroa_idx = getelementptr inbounds i8, ptr %this, i64 8 - store i64 0, ptr %ref.tmp.sroa.2.0.this.sroa_idx, align 8 + %4 = load i64, ptr %ref.tmp.sroa.2, align 8 + store i64 %4, ptr %ref.tmp.sroa.2.0.this.sroa_idx, align 8 %_M_manager.i.i = getelementptr inbounds i8, ptr %ref.tmp.i6, i64 16 %_M_manager3.i.i = getelementptr inbounds i8, ptr %this, i64 16 - %4 = load ptr, ptr %_M_manager3.i.i, align 8 - store ptr %4, ptr %_M_manager.i.i, align 8 + %5 = load ptr, ptr %_M_manager3.i.i, align 8 + store ptr %5, ptr %_M_manager.i.i, align 8 store ptr @_ZNSt17_Function_handlerIFvRKN5arrow5ArrayElPSoEZNS0_17MakeFormatterImpl17MakeTimeFormatterINS0_10Time32TypeELb0EEESt8functionIS5_ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEUlS3_lS4_E_E10_M_managerERSt9_Any_dataRKSL_St18_Manager_operation, ptr %_M_manager3.i.i, align 8 %_M_invoker4.i.i = getelementptr inbounds i8, ptr %this, i64 24 - %5 = load ptr, ptr %_M_invoker4.i.i, align 8 - store ptr %5, ptr %_M_invoker.i.i7, align 8 + %6 = load ptr, ptr %_M_invoker4.i.i, align 8 + store ptr %6, ptr %_M_invoker.i.i7, align 8 store ptr @_ZNSt17_Function_handlerIFvRKN5arrow5ArrayElPSoEZNS0_17MakeFormatterImpl17MakeTimeFormatterINS0_10Time32TypeELb0EEESt8functionIS5_ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEUlS3_lS4_E_E9_M_invokeERKSt9_Any_dataS3_OlOS4_, ptr %_M_invoker4.i.i, align 8 - %tobool.not.i.i.i = icmp eq ptr %4, null + %tobool.not.i.i.i = icmp eq ptr %5, null br i1 %tobool.not.i.i.i, label %_ZNSt8functionIFvRKN5arrow5ArrayElPSoEED2Ev.exit, label %if.then.i.i.i if.then.i.i.i: ; preds = %_ZNSt8functionIFvRKN5arrow5ArrayElPSoEEC2EOS6_.exit.i - %call.i.i.i = invoke noundef zeroext i1 %4(ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i6, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i6, i32 noundef 3) + %call.i.i.i = invoke noundef zeroext i1 %5(ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i6, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i6, i32 noundef 3) to label %_ZNSt8functionIFvRKN5arrow5ArrayElPSoEED2Ev.exit unwind label %terminate.lpad.i.i.i terminate.lpad.i.i.i: ; preds = %if.then.i.i.i - %6 = landingpad { ptr, i32 } + %7 = landingpad { ptr, i32 } catch ptr null - %7 = extractvalue { ptr, i32 } %6, 0 - call void @__clang_call_terminate(ptr %7) #23 + %8 = extractvalue { ptr, i32 } %7, 0 + call void @__clang_call_terminate(ptr %8) #23 unreachable _ZNSt8functionIFvRKN5arrow5ArrayElPSoEED2Ev.exit: ; preds = %if.then.i.i.i, %_ZNSt8functionIFvRKN5arrow5ArrayElPSoEEC2EOS6_.exit.i @@ -23658,22 +23670,22 @@ _ZNSt8functionIFvRKN5arrow5ArrayElPSoEED2Ev.exit: ; preds = %if.then.i.i.i, %_ZN ret void lpad: ; preds = %call.i.noexc, %entry - %8 = landingpad { ptr, i32 } + %9 = landingpad { ptr, i32 } cleanup br label %ehcleanup lpad4: ; preds = %invoke.cont - %9 = landingpad { ptr, i32 } + %10 = landingpad { ptr, i32 } cleanup br label %lpad4.body lpad4.body: ; preds = %lpad.body.i, %lpad4 - %eh.lpad-body5 = phi { ptr, i32 } [ %9, %lpad4 ], [ %eh.lpad-body.i, %lpad.body.i ] + %eh.lpad-body5 = phi { ptr, i32 } [ %10, %lpad4 ], [ %eh.lpad-body.i, %lpad.body.i ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp2) #20 br label %ehcleanup ehcleanup: ; preds = %lpad, %lpad.i, %lpad4.body - %.pn = phi { ptr, i32 } [ %eh.lpad-body5, %lpad4.body ], [ %8, %lpad ], [ %1, %lpad.i ] + %.pn = phi { ptr, i32 } [ %eh.lpad-body5, %lpad4.body ], [ %9, %lpad ], [ %1, %lpad.i ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp3) #20 resume { ptr, i32 } %.pn } @@ -23683,6 +23695,7 @@ define linkonce_odr void @_ZN5arrow17MakeFormatterImpl5VisitINS_10Time64TypeEEEN entry: %ref.tmp.i6 = alloca %"class.std::function.58", align 8 %ref.tmp.i = alloca %class.anon.700, align 8 + %ref.tmp.sroa.2 = alloca [24 x i8], align 8 %ref.tmp2 = alloca %"class.std::__cxx11::basic_string", align 8 %ref.tmp3 = alloca %"class.std::allocator.27", align 1 call void @_ZNSaIcEC1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp3) #20 @@ -23704,11 +23717,13 @@ lpad.i: ; preds = %.noexc br label %ehcleanup invoke.cont: ; preds = %.noexc + call void @llvm.experimental.noalias.scope.decl(metadata !729) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i) invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp.i, ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp2) to label %.noexc4 unwind label %lpad4 .noexc4: ; preds = %invoke.cont + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp.sroa.2, i8 0, i64 24, i1 false), !alias.scope !729 %call.i.i2.i1.i = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #22 to label %call.i.i2.i.noexc.i unwind label %lpad.i3, !noalias !729 @@ -23737,31 +23752,34 @@ _ZNSt8functionIFvRKN5arrow5ArrayElPSoEEC2EOS6_.exit.i: ; preds = %call.i.i2.i.no call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ref.tmp.i) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i6) %_M_invoker.i.i7 = getelementptr inbounds i8, ptr %ref.tmp.i6, i64 24 + %ref.tmp.sroa.2.8._M_manager.i.i.i.sroa_idx = getelementptr inbounds i8, ptr %ref.tmp.sroa.2, i64 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.sroa.2.8._M_manager.i.i.i.sroa_idx, i8 0, i64 16, i1 false) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i6, ptr noundef nonnull align 8 dereferenceable(16) %this, i64 16, i1 false) store ptr %call.i.i2.i1.i, ptr %this, align 8 %ref.tmp.sroa.2.0.this.sroa_idx = getelementptr inbounds i8, ptr %this, i64 8 - store i64 0, ptr %ref.tmp.sroa.2.0.this.sroa_idx, align 8 + %4 = load i64, ptr %ref.tmp.sroa.2, align 8 + store i64 %4, ptr %ref.tmp.sroa.2.0.this.sroa_idx, align 8 %_M_manager.i.i = getelementptr inbounds i8, ptr %ref.tmp.i6, i64 16 %_M_manager3.i.i = getelementptr inbounds i8, ptr %this, i64 16 - %4 = load ptr, ptr %_M_manager3.i.i, align 8 - store ptr %4, ptr %_M_manager.i.i, align 8 + %5 = load ptr, ptr %_M_manager3.i.i, align 8 + store ptr %5, ptr %_M_manager.i.i, align 8 store ptr @_ZNSt17_Function_handlerIFvRKN5arrow5ArrayElPSoEZNS0_17MakeFormatterImpl17MakeTimeFormatterINS0_10Time64TypeELb0EEESt8functionIS5_ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEUlS3_lS4_E_E10_M_managerERSt9_Any_dataRKSL_St18_Manager_operation, ptr %_M_manager3.i.i, align 8 %_M_invoker4.i.i = getelementptr inbounds i8, ptr %this, i64 24 - %5 = load ptr, ptr %_M_invoker4.i.i, align 8 - store ptr %5, ptr %_M_invoker.i.i7, align 8 + %6 = load ptr, ptr %_M_invoker4.i.i, align 8 + store ptr %6, ptr %_M_invoker.i.i7, align 8 store ptr @_ZNSt17_Function_handlerIFvRKN5arrow5ArrayElPSoEZNS0_17MakeFormatterImpl17MakeTimeFormatterINS0_10Time64TypeELb0EEESt8functionIS5_ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEUlS3_lS4_E_E9_M_invokeERKSt9_Any_dataS3_OlOS4_, ptr %_M_invoker4.i.i, align 8 - %tobool.not.i.i.i = icmp eq ptr %4, null + %tobool.not.i.i.i = icmp eq ptr %5, null br i1 %tobool.not.i.i.i, label %_ZNSt8functionIFvRKN5arrow5ArrayElPSoEED2Ev.exit, label %if.then.i.i.i if.then.i.i.i: ; preds = %_ZNSt8functionIFvRKN5arrow5ArrayElPSoEEC2EOS6_.exit.i - %call.i.i.i = invoke noundef zeroext i1 %4(ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i6, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i6, i32 noundef 3) + %call.i.i.i = invoke noundef zeroext i1 %5(ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i6, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i6, i32 noundef 3) to label %_ZNSt8functionIFvRKN5arrow5ArrayElPSoEED2Ev.exit unwind label %terminate.lpad.i.i.i terminate.lpad.i.i.i: ; preds = %if.then.i.i.i - %6 = landingpad { ptr, i32 } + %7 = landingpad { ptr, i32 } catch ptr null - %7 = extractvalue { ptr, i32 } %6, 0 - call void @__clang_call_terminate(ptr %7) #23 + %8 = extractvalue { ptr, i32 } %7, 0 + call void @__clang_call_terminate(ptr %8) #23 unreachable _ZNSt8functionIFvRKN5arrow5ArrayElPSoEED2Ev.exit: ; preds = %if.then.i.i.i, %_ZNSt8functionIFvRKN5arrow5ArrayElPSoEEC2EOS6_.exit.i @@ -23772,22 +23790,22 @@ _ZNSt8functionIFvRKN5arrow5ArrayElPSoEED2Ev.exit: ; preds = %if.then.i.i.i, %_ZN ret void lpad: ; preds = %call.i.noexc, %entry - %8 = landingpad { ptr, i32 } + %9 = landingpad { ptr, i32 } cleanup br label %ehcleanup lpad4: ; preds = %invoke.cont - %9 = landingpad { ptr, i32 } + %10 = landingpad { ptr, i32 } cleanup br label %lpad4.body lpad4.body: ; preds = %lpad.body.i, %lpad4 - %eh.lpad-body5 = phi { ptr, i32 } [ %9, %lpad4 ], [ %eh.lpad-body.i, %lpad.body.i ] + %eh.lpad-body5 = phi { ptr, i32 } [ %10, %lpad4 ], [ %eh.lpad-body.i, %lpad.body.i ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp2) #20 br label %ehcleanup ehcleanup: ; preds = %lpad, %lpad.i, %lpad4.body - %.pn = phi { ptr, i32 } [ %eh.lpad-body5, %lpad4.body ], [ %8, %lpad ], [ %1, %lpad.i ] + %.pn = phi { ptr, i32 } [ %eh.lpad-body5, %lpad4.body ], [ %9, %lpad ], [ %1, %lpad.i ] call void @_ZNSaIcED1Ev(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp3) #20 resume { ptr, i32 } %.pn } @@ -23956,7 +23974,7 @@ _ZZN5arrow17MakeFormatterImpl5VisitINS_8ListTypeEEENSt9enable_ifIXsr17is_list_li %_M_manager.i.i.i.i654 = phi ptr [ %_M_manager.i.i.i.i6, %if.then.i.i ], [ %_M_manager.i.i.i.i651, %_ZNSt8functionIFvRKN5arrow5ArrayElPSoEEC2EOS6_.exit.thread ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i8) %21 = getelementptr inbounds i8, ptr %ref.tmp.i8, i64 8 - store i64 0, ptr %21, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %21, i8 0, i64 24, i1 false) %call.i.i2.i.i12 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #22 to label %call.i.i2.i.i.noexc unwind label %lpad13 @@ -24283,7 +24301,7 @@ _ZZN5arrow17MakeFormatterImpl5VisitINS_13LargeListTypeEEENSt9enable_ifIXsr17is_l %_M_manager.i.i.i.i654 = phi ptr [ %_M_manager.i.i.i.i6, %if.then.i.i ], [ %_M_manager.i.i.i.i651, %_ZNSt8functionIFvRKN5arrow5ArrayElPSoEEC2EOS6_.exit.thread ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i8) %21 = getelementptr inbounds i8, ptr %ref.tmp.i8, i64 8 - store i64 0, ptr %21, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %21, i8 0, i64 24, i1 false) %call.i.i2.i.i12 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #22 to label %call.i.i2.i.i.noexc unwind label %lpad13 @@ -24610,7 +24628,7 @@ _ZZN5arrow17MakeFormatterImpl5VisitINS_7MapTypeEEENSt9enable_ifIXsr17is_list_lik %_M_manager.i.i.i.i654 = phi ptr [ %_M_manager.i.i.i.i6, %if.then.i.i ], [ %_M_manager.i.i.i.i651, %_ZNSt8functionIFvRKN5arrow5ArrayElPSoEEC2EOS6_.exit.thread ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i8) %21 = getelementptr inbounds i8, ptr %ref.tmp.i8, i64 8 - store i64 0, ptr %21, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %21, i8 0, i64 24, i1 false) %call.i.i2.i.i12 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #22 to label %call.i.i2.i.i.noexc unwind label %lpad13 @@ -24937,7 +24955,7 @@ _ZZN5arrow17MakeFormatterImpl5VisitINS_17FixedSizeListTypeEEENSt9enable_ifIXsr17 %_M_manager.i.i.i.i654 = phi ptr [ %_M_manager.i.i.i.i6, %if.then.i.i ], [ %_M_manager.i.i.i.i651, %_ZNSt8functionIFvRKN5arrow5ArrayElPSoEEC2EOS6_.exit.thread ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i8) %21 = getelementptr inbounds i8, ptr %ref.tmp.i8, i64 8 - store i64 0, ptr %21, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %21, i8 0, i64 24, i1 false) %call.i.i2.i.i12 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #22 to label %call.i.i2.i.i.noexc unwind label %lpad13 @@ -25377,7 +25395,7 @@ for.end: ; preds = %for.inc, %invoke.co call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %agg.tmp, i8 0, i64 24, i1 false) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i31) %36 = getelementptr inbounds i8, ptr %ref.tmp.i31, i64 8 - store i64 0, ptr %36, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %36, i8 0, i64 24, i1 false) %call.i.i2.i.i39 = invoke noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #22 to label %call.i.i2.i.i.noexc unwind label %lpad29 @@ -25755,7 +25773,7 @@ invoke.cont35: ; preds = %invoke.cont29 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %agg.tmp, i8 0, i64 24, i1 false) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i29) %36 = getelementptr inbounds i8, ptr %ref.tmp.i29, i64 8 - store i64 0, ptr %36, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %36, i8 0, i64 24, i1 false) %call.i.i2.i.i37 = invoke noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #22 to label %call.i.i2.i.i.noexc unwind label %lpad36 @@ -25816,7 +25834,7 @@ if.else: ; preds = %invoke.cont29 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %agg.tmp40, i8 0, i64 24, i1 false) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i52) %42 = getelementptr inbounds i8, ptr %ref.tmp.i52, i64 8 - store i64 0, ptr %42, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %42, i8 0, i64 24, i1 false) %call.i.i2.i.i66 = invoke noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #22 to label %call.i.i2.i.i.noexc65 unwind label %lpad44 diff --git a/bench/assimp/optimized/ASEParser.cpp.ll b/bench/assimp/optimized/ASEParser.cpp.ll index 241bca9d9e5..a7cd90f4721 100644 --- a/bench/assimp/optimized/ASEParser.cpp.ll +++ b/bench/assimp/optimized/ASEParser.cpp.ll @@ -482,8 +482,7 @@ define hidden void @_ZN6Assimp3ASE6ParserC2EPKcj(ptr nocapture noundef nonnull w entry: %m_clrBackground = getelementptr inbounds i8, ptr %this, i64 8 %m_clrAmbient = getelementptr inbounds i8, ptr %this, i64 20 - %0 = getelementptr inbounds i8, ptr %this, i64 12 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(140) %0, i8 0, i64 140, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(144) %m_clrBackground, i8 0, i64 144, i1 false) store ptr %szFile, ptr %this, align 8 %iFileFormat = getelementptr inbounds i8, ptr %this, i64 176 store i32 %fileFormatDefault, ptr %iFileFormat, align 8 @@ -10835,7 +10834,7 @@ if.then5: ; preds = %land.lhs.true.i, %l %add.ptr.i = getelementptr inbounds i8, ptr %2, i64 14 %storemerge.i = select i1 %cmp.not.i, ptr %arrayidx.i, ptr %add.ptr.i store ptr %storemerge.i, ptr %this, align 8 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %vTemp, i8 0, i64 12, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %vTemp, i8 0, i64 16, i1 false) store float 1.000000e+00, ptr %a, align 4 call void @_ZN6Assimp3ASE6Parser23ParseLV4MeshFloatTripleEPfRj(ptr noundef nonnull align 8 dereferenceable(180) %this, ptr noundef nonnull %vTemp, ptr noundef nonnull align 4 dereferenceable(4) %iIndex) %4 = load i32, ptr %iIndex, align 4 diff --git a/bench/assimp/optimized/Assimp.cpp.ll b/bench/assimp/optimized/Assimp.cpp.ll index d07a394e610..eb19e1f4c55 100644 --- a/bench/assimp/optimized/Assimp.cpp.ll +++ b/bench/assimp/optimized/Assimp.cpp.ll @@ -5799,8 +5799,7 @@ entry: tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %ref.tmp.sroa.2.0.out.sroa_idx.i, i8 0, i64 16, i1 false) %ref.tmp.sroa.3.0.out.sroa_idx.i = getelementptr inbounds i8, ptr %mat, i64 20 %ref.tmp.sroa.4.0.out.sroa_idx.i = getelementptr inbounds i8, ptr %mat, i64 24 - %0 = getelementptr inbounds i8, ptr %mat, i64 28 - store i64 0, ptr %0, align 4 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %ref.tmp.sroa.4.0.out.sroa_idx.i, i8 0, i64 16, i1 false) %ref.tmp.sroa.5.0.out.sroa_idx.i = getelementptr inbounds i8, ptr %mat, i64 40 %ref.tmp.sroa.6.0.out.sroa_idx.i = getelementptr inbounds i8, ptr %mat, i64 44 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %ref.tmp.sroa.6.0.out.sroa_idx.i, i8 0, i64 16, i1 false) @@ -5847,8 +5846,7 @@ entry: define void @aiMatrix4RotationZ(ptr nocapture noundef writeonly %mat, float noundef %angle) local_unnamed_addr #17 { entry: %ref.tmp.sroa.2.0.out.sroa_idx.i = getelementptr inbounds i8, ptr %mat, i64 4 - %0 = getelementptr inbounds i8, ptr %mat, i64 8 - store i64 0, ptr %0, align 4 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %ref.tmp.sroa.2.0.out.sroa_idx.i, i8 0, i64 16, i1 false) %ref.tmp.sroa.3.0.out.sroa_idx.i = getelementptr inbounds i8, ptr %mat, i64 20 %ref.tmp.sroa.4.0.out.sroa_idx.i = getelementptr inbounds i8, ptr %mat, i64 24 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %ref.tmp.sroa.4.0.out.sroa_idx.i, i8 0, i64 16, i1 false) diff --git a/bench/assimp/optimized/MMDImporter.cpp.ll b/bench/assimp/optimized/MMDImporter.cpp.ll index a756018d528..896b910e8f5 100644 --- a/bench/assimp/optimized/MMDImporter.cpp.ll +++ b/bench/assimp/optimized/MMDImporter.cpp.ll @@ -1350,8 +1350,7 @@ invoke.cont101: ; preds = %if.else %ref.tmp.sroa.5.0.out.sroa_idx.i = getelementptr inbounds i8, ptr %54, i64 1068 store float 1.000000e+00, ptr %ref.tmp.sroa.5.0.out.sroa_idx.i, align 4 %ref.tmp.sroa.6.0.out.sroa_idx.i = getelementptr inbounds i8, ptr %54, i64 1072 - %55 = getelementptr inbounds i8, ptr %54, i64 1076 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %55, i8 0, i64 12, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %ref.tmp.sroa.6.0.out.sroa_idx.i, i8 0, i64 16, i1 false) %ref.tmp.sroa.7.0.out.sroa_idx.i = getelementptr inbounds i8, ptr %54, i64 1088 store float 1.000000e+00, ptr %ref.tmp.sroa.7.0.out.sroa_idx.i, align 4 %a4.i = getelementptr inbounds i8, ptr %54, i64 1040 @@ -1363,24 +1362,24 @@ invoke.cont101: ; preds = %if.else for.inc137: ; preds = %invoke.cont101, %if.then90 %indvars.iv.next144 = add nuw nsw i64 %indvars.iv143, 1 - %56 = load i32, ptr %bone_count, align 8 - %57 = sext i32 %56 to i64 - %cmp83 = icmp slt i64 %indvars.iv.next144, %57 + %55 = load i32, ptr %bone_count, align 8 + %56 = sext i32 %55 to i64 + %cmp83 = icmp slt i64 %indvars.iv.next144, %56 br i1 %cmp83, label %for.body84, label %for.end139, !llvm.loop !13 for.end139: ; preds = %for.inc137, %for.end57, %for.cond81.preheader - %58 = load i32, ptr %material_count, align 8 + %57 = load i32, ptr %material_count, align 8 %mNumMaterials = getelementptr inbounds i8, ptr %pScene, i64 32 - store i32 %58, ptr %mNumMaterials, align 8 - %conv142 = zext i32 %58 to i64 - %59 = shl nuw nsw i64 %conv142, 3 - %call144 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %59) #28 + store i32 %57, ptr %mNumMaterials, align 8 + %conv142 = zext i32 %57 to i64 + %58 = shl nuw nsw i64 %conv142, 3 + %call144 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %58) #28 to label %invoke.cont143 unwind label %lpad65.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp invoke.cont143: ; preds = %for.end139 %mMaterials = getelementptr inbounds i8, ptr %pScene, i64 40 store ptr %call144, ptr %mMaterials, align 8 - %cmp148133.not = icmp eq i32 %58, 0 + %cmp148133.not = icmp eq i32 %57, 0 br i1 %cmp148133.not, label %for.end161, label %for.body149.lr.ph for.body149.lr.ph: ; preds = %invoke.cont143 @@ -1389,19 +1388,19 @@ for.body149.lr.ph: ; preds = %invoke.cont143 for.body149: ; preds = %for.body149.lr.ph, %invoke.cont154 %indvars.iv146 = phi i64 [ 0, %for.body149.lr.ph ], [ %indvars.iv.next147, %invoke.cont154 ] - %60 = load ptr, ptr %materials150, align 8 - %arrayidx.i106 = getelementptr inbounds %"class.pmx::PmxMaterial", ptr %60, i64 %indvars.iv146 + %59 = load ptr, ptr %materials150, align 8 + %arrayidx.i106 = getelementptr inbounds %"class.pmx::PmxMaterial", ptr %59, i64 %indvars.iv146 %call155 = invoke noundef ptr @_ZN6Assimp11MMDImporter14CreateMaterialEPKN3pmx11PmxMaterialEPKNS1_8PmxModelE(ptr nonnull align 8 poison, ptr noundef nonnull %arrayidx.i106, ptr noundef nonnull %pModel) to label %invoke.cont154 unwind label %lpad65.loopexit invoke.cont154: ; preds = %for.body149 - %61 = load ptr, ptr %mMaterials, align 8 - %arrayidx158 = getelementptr inbounds ptr, ptr %61, i64 %indvars.iv146 + %60 = load ptr, ptr %mMaterials, align 8 + %arrayidx158 = getelementptr inbounds ptr, ptr %60, i64 %indvars.iv146 store ptr %call155, ptr %arrayidx158, align 8 %indvars.iv.next147 = add nuw nsw i64 %indvars.iv146, 1 - %62 = load i32, ptr %mNumMaterials, align 8 - %63 = zext i32 %62 to i64 - %cmp148 = icmp ult i64 %indvars.iv.next147, %63 + %61 = load i32, ptr %mNumMaterials, align 8 + %62 = zext i32 %61 to i64 + %cmp148 = icmp ult i64 %indvars.iv.next147, %62 br i1 %cmp148, label %for.body149, label %for.end161, !llvm.loop !14 for.end161: ; preds = %invoke.cont154, %invoke.cont143 @@ -1435,28 +1434,28 @@ return: ; preds = %entry, %_ZNSt10uniq ret void lpad162: ; preds = %invoke.cont163, %for.end161 - %64 = landingpad { ptr, i32 } + %63 = landingpad { ptr, i32 } cleanup br label %ehcleanup171 lpad165: ; preds = %invoke.cont164 - %65 = landingpad { ptr, i32 } + %64 = landingpad { ptr, i32 } cleanup br label %ehcleanup170 lpad167: ; preds = %invoke.cont166 - %66 = landingpad { ptr, i32 } + %65 = landingpad { ptr, i32 } cleanup call void @_ZN6Assimp11BaseProcessD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %windingFlipper) #25 br label %ehcleanup170 ehcleanup170: ; preds = %lpad167, %lpad165 - %.pn68 = phi { ptr, i32 } [ %66, %lpad167 ], [ %65, %lpad165 ] + %.pn68 = phi { ptr, i32 } [ %65, %lpad167 ], [ %64, %lpad165 ] call void @_ZN6Assimp14FlipUVsProcessD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %uvFlipper) #25 br label %ehcleanup171 ehcleanup171: ; preds = %ehcleanup170, %lpad162 - %.pn68.pn = phi { ptr, i32 } [ %.pn68, %ehcleanup170 ], [ %64, %lpad162 ] + %.pn68.pn = phi { ptr, i32 } [ %.pn68, %ehcleanup170 ], [ %63, %lpad162 ] call void @_ZN6Assimp11BaseProcessD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %convertProcess) #25 br label %_ZNSt10unique_ptrIA_P6aiNodeSt14default_deleteIS2_EED2Ev.exit111 @@ -3976,25 +3975,24 @@ invoke.cont265: ; preds = %if.end.i.i, %invoke store float 1.000000e+00, ptr %b2.i.i, align 4 call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %b3.i.i, i8 0, i64 16, i1 false) store float 1.000000e+00, ptr %c3.i.i, align 4 - %241 = getelementptr inbounds i8, ptr %call251, i64 1104 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %241, i8 0, i64 12, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %c4.i.i, i8 0, i64 16, i1 false) store float 1.000000e+00, ptr %d4.i.i, align 4 %a4.i = getelementptr inbounds i8, ptr %call251, i64 1068 store float %fneg.i, ptr %a4.i, align 4 %b4.i = getelementptr inbounds i8, ptr %call251, i64 1084 store float %fneg1.i, ptr %b4.i, align 4 store float %fneg2.i, ptr %c4.i.i, align 4 - %242 = load ptr, ptr %_M_parent.i.i.i.i.i1110, align 8 - %cmp.not5.i.i.i = icmp eq ptr %242, null + %241 = load ptr, ptr %_M_parent.i.i.i.i.i1110, align 8 + %cmp.not5.i.i.i = icmp eq ptr %241, null br i1 %cmp.not5.i.i.i, label %if.end, label %while.body.i.i.i while.body.i.i.i: ; preds = %invoke.cont265, %while.body.i.i.i - %__x.addr.07.i.i.i = phi ptr [ %__x.addr.1.i.i.i, %while.body.i.i.i ], [ %242, %invoke.cont265 ] + %__x.addr.07.i.i.i = phi ptr [ %__x.addr.1.i.i.i, %while.body.i.i.i ], [ %241, %invoke.cont265 ] %__y.addr.06.i.i.i = phi ptr [ %__y.addr.1.i.i.i, %while.body.i.i.i ], [ %231, %invoke.cont265 ] %_M_storage.i.i.i.i.i = getelementptr inbounds i8, ptr %__x.addr.07.i.i.i, i64 32 - %243 = load i32, ptr %_M_storage.i.i.i.i.i, align 4 - %244 = sext i32 %243 to i64 - %cmp.i.i.i.i = icmp sgt i64 %indvars.iv1073, %244 + %242 = load i32, ptr %_M_storage.i.i.i.i.i, align 4 + %243 = sext i32 %242 to i64 + %cmp.i.i.i.i = icmp sgt i64 %indvars.iv1073, %243 %__y.addr.1.i.i.i = select i1 %cmp.i.i.i.i, ptr %__y.addr.06.i.i.i, ptr %__x.addr.07.i.i.i %__x.addr.1.in.v.i.i.i = select i1 %cmp.i.i.i.i, i64 24, i64 16 %__x.addr.1.in.i.i.i = getelementptr inbounds i8, ptr %__x.addr.07.i.i.i, i64 %__x.addr.1.in.v.i.i.i @@ -4009,25 +4007,25 @@ _ZNSt8_Rb_treeIiSt4pairIKiSt6vectorI14aiVertexWeightSaIS3_EEESt10_Select1stIS6_E invoke.cont269: ; preds = %_ZNSt8_Rb_treeIiSt4pairIKiSt6vectorI14aiVertexWeightSaIS3_EEESt10_Select1stIS6_ESt4lessIiESaIS6_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS6_EPSt18_Rb_tree_node_baseRS1_.exit.i.i %__y.addr.1.i.i.i.sroa.sel.v.sroa.sel.v.sroa.sel.v = select i1 %cmp.i.i.i.i, ptr %__y.addr.06.i.i.i, ptr %__x.addr.07.i.i.i %__y.addr.1.i.i.i.sroa.sel.v.sroa.sel.v.sroa.sel = getelementptr inbounds i8, ptr %__y.addr.1.i.i.i.sroa.sel.v.sroa.sel.v.sroa.sel.v, i64 32 - %245 = load i32, ptr %__y.addr.1.i.i.i.sroa.sel.v.sroa.sel.v.sroa.sel, align 4 - %246 = sext i32 %245 to i64 - %cmp.i4.i.i = icmp slt i64 %indvars.iv1073, %246 + %244 = load i32, ptr %__y.addr.1.i.i.i.sroa.sel.v.sroa.sel.v.sroa.sel, align 4 + %245 = sext i32 %244 to i64 + %cmp.i4.i.i = icmp slt i64 %indvars.iv1073, %245 br i1 %cmp.i4.i.i, label %if.end, label %if.then if.then: ; preds = %invoke.cont269 %second = getelementptr inbounds i8, ptr %__y.addr.1.i.i.i, i64 40 %_M_finish.i979 = getelementptr inbounds i8, ptr %__y.addr.1.i.i.i, i64 48 - %247 = load ptr, ptr %_M_finish.i979, align 8 - %248 = load ptr, ptr %second, align 8 - %sub.ptr.lhs.cast.i = ptrtoint ptr %247 to i64 - %sub.ptr.rhs.cast.i = ptrtoint ptr %248 to i64 + %246 = load ptr, ptr %_M_finish.i979, align 8 + %247 = load ptr, ptr %second, align 8 + %sub.ptr.lhs.cast.i = ptrtoint ptr %246 to i64 + %sub.ptr.rhs.cast.i = ptrtoint ptr %247 to i64 %sub.ptr.sub.i = sub i64 %sub.ptr.lhs.cast.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i = ashr exact i64 %sub.ptr.sub.i, 3 %conv277 = trunc i64 %sub.ptr.div.i to i32 store i32 %conv277, ptr %mNumWeights.i, align 4 %conv279 = and i64 %sub.ptr.div.i, 4294967295 - %249 = shl nuw nsw i64 %conv279, 3 - %call281 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %249) #28 + %248 = shl nuw nsw i64 %conv279, 3 + %call281 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %248) #28 to label %invoke.cont280 unwind label %lpad.loopexit invoke.cont280: ; preds = %if.then @@ -4035,7 +4033,7 @@ invoke.cont280: ; preds = %if.then br i1 %isempty282, label %arrayctor.cont289, label %new.ctorloop283 new.ctorloop283: ; preds = %invoke.cont280 - call void @llvm.memset.p0.i64(ptr nonnull align 4 %call281, i8 0, i64 %249, i1 false) + call void @llvm.memset.p0.i64(ptr nonnull align 4 %call281, i8 0, i64 %248, i1 false) br label %arrayctor.cont289 arrayctor.cont289: ; preds = %new.ctorloop283, %invoke.cont280 @@ -4046,37 +4044,37 @@ arrayctor.cont289: ; preds = %new.ctorloop283, %i for.body293: ; preds = %arrayctor.cont289, %for.body293 %indvars.iv1070 = phi i64 [ %indvars.iv.next1071, %for.body293 ], [ 0, %arrayctor.cont289 ] - %250 = load ptr, ptr %second, align 8 - %add.ptr.i = getelementptr inbounds %struct.aiVertexWeight, ptr %250, i64 %indvars.iv1070 - %251 = load ptr, ptr %mWeights, align 8 - %arrayidx300 = getelementptr inbounds %struct.aiVertexWeight, ptr %251, i64 %indvars.iv1070 - %252 = load i64, ptr %add.ptr.i, align 4 - store i64 %252, ptr %arrayidx300, align 4 + %249 = load ptr, ptr %second, align 8 + %add.ptr.i = getelementptr inbounds %struct.aiVertexWeight, ptr %249, i64 %indvars.iv1070 + %250 = load ptr, ptr %mWeights, align 8 + %arrayidx300 = getelementptr inbounds %struct.aiVertexWeight, ptr %250, i64 %indvars.iv1070 + %251 = load i64, ptr %add.ptr.i, align 4 + store i64 %251, ptr %arrayidx300, align 4 %indvars.iv.next1071 = add nuw nsw i64 %indvars.iv1070, 1 - %253 = load i32, ptr %mNumWeights.i, align 4 - %254 = zext i32 %253 to i64 - %cmp292 = icmp ult i64 %indvars.iv.next1071, %254 + %252 = load i32, ptr %mNumWeights.i, align 4 + %253 = zext i32 %252 to i64 + %cmp292 = icmp ult i64 %indvars.iv.next1071, %253 br i1 %cmp292, label %for.body293, label %if.end, !llvm.loop !86 if.end: ; preds = %for.body293, %arrayctor.cont289, %invoke.cont265, %_ZNSt8_Rb_treeIiSt4pairIKiSt6vectorI14aiVertexWeightSaIS3_EEESt10_Select1stIS6_ESt4lessIiESaIS6_EE14_M_lower_boundEPSt13_Rb_tree_nodeIS6_EPSt18_Rb_tree_node_baseRS1_.exit.i.i, %invoke.cont269 %arrayidx305 = getelementptr inbounds ptr, ptr %call244, i64 %indvars.iv1073 store ptr %call251, ptr %arrayidx305, align 8 %indvars.iv.next1074 = add nuw nsw i64 %indvars.iv1073, 1 - %255 = load i32, ptr %bone_count, align 8 - %256 = sext i32 %255 to i64 - %cmp248 = icmp slt i64 %indvars.iv.next1074, %256 + %254 = load i32, ptr %bone_count, align 8 + %255 = sext i32 %254 to i64 + %cmp248 = icmp slt i64 %indvars.iv.next1074, %255 br i1 %cmp248, label %for.body249, label %for.end308, !llvm.loop !87 for.end308: ; preds = %if.end, %invoke.cont243 - %257 = load ptr, ptr %_M_parent.i.i.i.i.i1110, align 8 - invoke void @_ZNSt8_Rb_treeIiSt4pairIKiSt6vectorI14aiVertexWeightSaIS3_EEESt10_Select1stIS6_ESt4lessIiESaIS6_EE8_M_eraseEPSt13_Rb_tree_nodeIS6_E(ptr noundef nonnull align 8 dereferenceable(48) %bone_vertex_map, ptr noundef %257) + %256 = load ptr, ptr %_M_parent.i.i.i.i.i1110, align 8 + invoke void @_ZNSt8_Rb_treeIiSt4pairIKiSt6vectorI14aiVertexWeightSaIS3_EEESt10_Select1stIS6_ESt4lessIiESaIS6_EE8_M_eraseEPSt13_Rb_tree_nodeIS6_E(ptr noundef nonnull align 8 dereferenceable(48) %bone_vertex_map, ptr noundef %256) to label %_ZNSt3mapIiSt6vectorI14aiVertexWeightSaIS1_EESt4lessIiESaISt4pairIKiS3_EEED2Ev.exit unwind label %terminate.lpad.i.i terminate.lpad.i.i: ; preds = %for.end308 - %258 = landingpad { ptr, i32 } + %257 = landingpad { ptr, i32 } catch ptr null - %259 = extractvalue { ptr, i32 } %258, 0 - call void @__clang_call_terminate(ptr %259) #24 + %258 = extractvalue { ptr, i32 } %257, 0 + call void @__clang_call_terminate(ptr %258) #24 unreachable _ZNSt3mapIiSt6vectorI14aiVertexWeightSaIS1_EESt4lessIiESaISt4pairIKiS3_EEED2Ev.exit: ; preds = %for.end308 diff --git a/bench/bullet3/optimized/btDeformableBodySolver.ll b/bench/bullet3/optimized/btDeformableBodySolver.ll index 92c39896e6c..ae21ff68827 100644 --- a/bench/bullet3/optimized/btDeformableBodySolver.ll +++ b/bench/bullet3/optimized/btDeformableBodySolver.ll @@ -11373,7 +11373,7 @@ _ZN11btSparseSdfILi3EE5ResetEv.exit: ; preds = %for.inc.i, %if.then if.end40: ; preds = %_ZN11btSparseSdfILi3EE5ResetEv.exit, %if.then33 %call41 = tail call noalias noundef nonnull dereferenceable(296) ptr @_Znwm(i64 noundef 296) #25 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(296) %call41, i8 0, i64 288, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(296) %call41, i8 0, i64 280, i1 false) %28 = load ptr, ptr %arrayidx.i144, align 8 %next42 = getelementptr inbounds i8, ptr %call41, i64 288 store ptr %28, ptr %next42, align 8 diff --git a/bench/cjson/optimized/cJSON.c.ll b/bench/cjson/optimized/cJSON.c.ll index bd032a18768..3dac1188065 100644 --- a/bench/cjson/optimized/cJSON.c.ll +++ b/bench/cjson/optimized/cJSON.c.ll @@ -930,7 +930,7 @@ define ptr @cJSON_Print(ptr noundef %0) local_unnamed_addr #8 { define internal fastcc ptr @print(ptr noundef %0, i32 noundef range(i32 0, 2) %1) unnamed_addr #8 { %3 = alloca [1 x %struct.printbuffer], align 16 %4 = getelementptr inbounds i8, ptr %3, i64 16 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %4, i8 0, i64 32, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(64) %4, i8 0, i64 48, i1 false) %5 = load ptr, ptr @global_hooks, align 8 %6 = tail call ptr %5(i64 noundef 256) #31 store ptr %6, ptr %3, align 16 @@ -1024,7 +1024,7 @@ define ptr @cJSON_PrintUnformatted(ptr noundef %0) local_unnamed_addr #8 { define ptr @cJSON_PrintBuffered(ptr noundef %0, i32 noundef %1, i32 noundef %2) local_unnamed_addr #8 { %4 = alloca %struct.printbuffer, align 8 %5 = getelementptr inbounds i8, ptr %4, i64 24 - store i64 0, ptr %5, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %5, i8 0, i64 40, i1 false) %6 = icmp slt i32 %1, 0 br i1 %6, label %23, label %7 @@ -1927,7 +1927,7 @@ print_array.exit: ; preds = %update_offset.exit8 define range(i32 0, 2) i32 @cJSON_PrintPreallocated(ptr noundef %0, ptr noundef %1, i32 noundef %2, i32 noundef %3) local_unnamed_addr #8 { %5 = alloca %struct.printbuffer, align 8 %6 = getelementptr inbounds i8, ptr %5, i64 24 - store i64 0, ptr %6, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %6, i8 0, i64 40, i1 false) %7 = icmp slt i32 %2, 0 %8 = icmp eq ptr %1, null %or.cond = or i1 %8, %7 diff --git a/bench/clamav/optimized/asn1.c.ll b/bench/clamav/optimized/asn1.c.ll index d7269a0c709..0bf191a230d 100644 --- a/bench/clamav/optimized/asn1.c.ll +++ b/bench/clamav/optimized/asn1.c.ll @@ -4109,18 +4109,17 @@ define internal fastcc range(i32 0, 2) i32 @map_raw(ptr noundef %0, ptr noundef 16: ; preds = %4 tail call void (ptr, ...) @cli_dbgmsg(ptr noundef nonnull @.str.184) #11 - br label %21 + br label %20 17: ; preds = %4 - %18 = getelementptr inbounds i8, ptr %3, i64 1 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(64) %18, i8 0, i64 63, i1 false) - %19 = trunc nuw nsw i32 %5 to i8 - store i8 %19, ptr %3, align 1 - %20 = getelementptr inbounds i8, ptr %3, i64 1 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %20, ptr align 1 %1, i64 %6, i1 false) - br label %21 - -21: ; preds = %17, %16 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(64) %3, i8 0, i64 64, i1 false) + %18 = trunc nuw nsw i32 %5 to i8 + store i8 %18, ptr %3, align 1 + %19 = getelementptr inbounds i8, ptr %3, i64 1 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %19, ptr align 1 %1, i64 %6, i1 false) + br label %20 + +20: ; preds = %17, %16 %.0 = phi i32 [ 0, %17 ], [ 1, %16 ] ret i32 %.0 } diff --git a/bench/cmake/optimized/smb.c.ll b/bench/cmake/optimized/smb.c.ll index b5b140d2211..b754aba7cef 100644 --- a/bench/cmake/optimized/smb.c.ll +++ b/bench/cmake/optimized/smb.c.ll @@ -384,7 +384,7 @@ define internal i32 @smb_request_state(ptr noundef %0, ptr nocapture noundef wri 22: ; preds = %18 tail call void (ptr, ptr, ...) @Curl_failf(ptr noundef nonnull %0, ptr noundef nonnull @.str.7) #12 - br label %273 + br label %272 23: ; preds = %18, %2 %24 = load i32, ptr %14, align 8 @@ -443,7 +443,7 @@ smb_send_tree_connect.exit: ; preds = %26 56: ; preds = %smb_send_tree_connect.exit.thread, %smb_send_tree_connect.exit %.0.i115 = phi i32 [ 63, %smb_send_tree_connect.exit.thread ], [ %55, %smb_send_tree_connect.exit ] call void @Curl_conncontrol(ptr noundef nonnull %11, i32 noundef 1) #12 - br label %273 + br label %272 57: ; preds = %smb_send_tree_connect.exit %.val = load ptr, ptr %13, align 8 @@ -459,12 +459,12 @@ smb_send_tree_connect.exit: ; preds = %26 60: ; preds = %58 call void @Curl_conncontrol(ptr noundef %11, i32 noundef 1) #12 - br label %273 + br label %272 61: ; preds = %58, %58 %62 = load ptr, ptr %9, align 8 %.not97 = icmp eq ptr %62, null - br i1 %.not97, label %273, label %63 + br i1 %.not97, label %272, label %63 63: ; preds = %61 %64 = load i32, ptr %14, align 8 @@ -473,8 +473,8 @@ smb_send_tree_connect.exit: ; preds = %26 i32 2, label %72 i32 3, label %107 i32 4, label %135 - i32 5, label %265 - i32 6, label %268 + i32 5, label %264 + i32 6, label %267 ] 65: ; preds = %63 @@ -490,7 +490,7 @@ smb_send_tree_connect.exit: ; preds = %26 %71 = icmp eq i32 %70, 327681 %spec.store.select = select i1 %71, i32 9, i32 78 store i32 %spec.store.select, ptr %69, align 4 - br label %268 + br label %267 72: ; preds = %63 %73 = getelementptr inbounds i8, ptr %62, i64 9 @@ -511,7 +511,7 @@ smb_send_tree_connect.exit: ; preds = %26 %82 = icmp eq i32 %81, 327681 %spec.store.select108 = select i1 %82, i32 9, i32 78 store i32 %spec.store.select108, ptr %80, align 4 - br label %265 + br label %264 83: ; preds = %75 %84 = getelementptr inbounds i8, ptr %62, i64 42 @@ -637,7 +637,7 @@ smb_send_tree_connect.exit: ; preds = %26 154: ; preds = %63 %155 = getelementptr inbounds i8, ptr %11, i64 904 store i64 0, ptr %155, align 8 - br label %273 + br label %272 156: ; preds = %65 %157 = getelementptr inbounds i8, ptr %62, i64 28 @@ -832,52 +832,51 @@ select.unfold: ; preds = %select.unfold.sink. store i64 0, ptr %258, align 8 call void @llvm.lifetime.start.p0(i64 9, ptr nonnull %4) %259 = load ptr, ptr %13, align 8 - %260 = getelementptr inbounds i8, ptr %4, i64 3 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(9) %260, i8 0, i64 6, i1 false) + %260 = getelementptr inbounds i8, ptr %4, i64 1 + store i64 0, ptr %260, align 1 store i8 3, ptr %4, align 1 %261 = getelementptr inbounds i8, ptr %259, i64 18 %262 = load i16, ptr %261, align 2 - %263 = getelementptr inbounds i8, ptr %4, i64 1 - store i16 %262, ptr %263, align 1 - %264 = call fastcc i32 @smb_send_message(ptr noundef nonnull %0, i8 noundef zeroext 4, ptr noundef nonnull %4, i64 noundef 9) + store i16 %262, ptr %260, align 1 + %263 = call fastcc i32 @smb_send_message(ptr noundef nonnull %0, i8 noundef zeroext 4, ptr noundef nonnull %4, i64 noundef 9) call void @llvm.lifetime.end.p0(i64 9, ptr nonnull %4) br label %smb_send_write.exit -265: ; preds = %79, %63 - %266 = getelementptr inbounds i8, ptr %11, i64 904 - store i64 0, ptr %266, align 8 +264: ; preds = %79, %63 + %265 = getelementptr inbounds i8, ptr %11, i64 904 + store i64 0, ptr %265, align 8 call void @llvm.lifetime.start.p0(i64 3, ptr nonnull %3) call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %3, i8 0, i64 3, i1 false) - %267 = call fastcc i32 @smb_send_message(ptr noundef nonnull %0, i8 noundef zeroext 113, ptr noundef nonnull %3, i64 noundef 3) + %266 = call fastcc i32 @smb_send_message(ptr noundef nonnull %0, i8 noundef zeroext 113, ptr noundef nonnull %3, i64 noundef 3) call void @llvm.lifetime.end.p0(i64 3, ptr nonnull %3) br label %smb_send_write.exit -268: ; preds = %63, %68 - %269 = getelementptr inbounds i8, ptr %11, i64 904 - store i64 0, ptr %269, align 8 - %270 = getelementptr inbounds i8, ptr %14, i64 20 - %271 = load i32, ptr %270, align 4 +267: ; preds = %63, %68 + %268 = getelementptr inbounds i8, ptr %11, i64 904 + store i64 0, ptr %268, align 8 + %269 = getelementptr inbounds i8, ptr %14, i64 20 + %270 = load i32, ptr %269, align 4 store i8 1, ptr %1, align 1 br label %smb_send_write.exit -smb_send_write.exit: ; preds = %smb_send.exit.i, %268, %265, %select.unfold, %183, %smb_send_open.exit - %.091122 = phi i32 [ 7, %268 ], [ 6, %265 ], [ 5, %select.unfold ], [ 3, %183 ], [ 2, %smb_send_open.exit ], [ 4, %smb_send.exit.i ] - %.3 = phi i32 [ %271, %268 ], [ %267, %265 ], [ %264, %select.unfold ], [ %200, %183 ], [ %.0.i110, %smb_send_open.exit ], [ %249, %smb_send.exit.i ] +smb_send_write.exit: ; preds = %smb_send.exit.i, %267, %264, %select.unfold, %183, %smb_send_open.exit + %.091122 = phi i32 [ 7, %267 ], [ 6, %264 ], [ 5, %select.unfold ], [ 3, %183 ], [ 2, %smb_send_open.exit ], [ 4, %smb_send.exit.i ] + %.3 = phi i32 [ %270, %267 ], [ %266, %264 ], [ %263, %select.unfold ], [ %200, %183 ], [ %.0.i110, %smb_send_open.exit ], [ %249, %smb_send.exit.i ] %.not107 = icmp eq i32 %.3, 0 - br i1 %.not107, label %272, label %smb_send_write.exit.thread + br i1 %.not107, label %271, label %smb_send_write.exit.thread smb_send_write.exit.thread: ; preds = %select.unfold119, %smb_send_write.exit %.3143 = phi i32 [ %.3, %smb_send_write.exit ], [ %208, %select.unfold119 ] call void @Curl_conncontrol(ptr noundef nonnull %11, i32 noundef 1) #12 - br label %273 + br label %272 -272: ; preds = %smb_send_write.exit +271: ; preds = %smb_send_write.exit %.val109 = load ptr, ptr %13, align 8 store i32 %.091122, ptr %.val109, align 8 - br label %273 + br label %272 -273: ; preds = %61, %272, %smb_send_write.exit.thread, %154, %60, %56, %22 - %.0 = phi i32 [ 55, %22 ], [ %.0.i115, %56 ], [ %59, %60 ], [ 0, %154 ], [ %.3143, %smb_send_write.exit.thread ], [ 0, %272 ], [ 0, %61 ] +272: ; preds = %61, %271, %smb_send_write.exit.thread, %154, %60, %56, %22 + %.0 = phi i32 [ 55, %22 ], [ %.0.i115, %56 ], [ %59, %60 ], [ 0, %154 ], [ %.3143, %smb_send_write.exit.thread ], [ 0, %271 ], [ 0, %61 ] ret i32 %.0 } @@ -1124,8 +1123,8 @@ define internal fastcc i32 @smb_send_setup(ptr noundef %0) unnamed_addr #0 { %24 = load ptr, ptr %20, align 8 %25 = call i32 @Curl_ntlm_core_mk_nt_hash(ptr noundef %24, ptr noundef nonnull %5) #12 call void @Curl_ntlm_core_lm_resp(ptr noundef nonnull %5, ptr noundef nonnull %23, ptr noundef nonnull %6) #12 - %26 = getelementptr inbounds i8, ptr %2, i64 2 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1053) %26, i8 0, i64 1051, i1 false) + %26 = getelementptr inbounds i8, ptr %2, i64 1 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1053) %26, i8 0, i64 1052, i1 false) store i8 13, ptr %2, align 1 %27 = getelementptr inbounds i8, ptr %2, i64 1 store i8 -1, ptr %27, align 1 diff --git a/bench/cmake/optimized/uv-common.c.ll b/bench/cmake/optimized/uv-common.c.ll index e6105f06f6b..5ba67d497a9 100644 --- a/bench/cmake/optimized/uv-common.c.ll +++ b/bench/cmake/optimized/uv-common.c.ll @@ -1986,16 +1986,15 @@ define dso_local ptr @uv_strerror(i32 noundef %0) local_unnamed_addr #0 { ; Function Attrs: nounwind uwtable define dso_local i32 @uv_ip4_addr(ptr noundef %0, i32 noundef %1, ptr noundef %2) local_unnamed_addr #0 { - %4 = getelementptr inbounds i8, ptr %2, i64 4 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %4, i8 0, i64 12, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %2, i8 0, i64 16, i1 false) store i16 2, ptr %2, align 4 - %5 = trunc i32 %1 to i16 - %6 = tail call zeroext i16 @htons(i16 noundef zeroext %5) #26 - %7 = getelementptr inbounds i8, ptr %2, i64 2 - store i16 %6, ptr %7, align 2 - %8 = getelementptr inbounds i8, ptr %2, i64 4 - %9 = tail call i32 @uv_inet_pton(i32 noundef 2, ptr noundef %0, ptr noundef nonnull %8) #25 - ret i32 %9 + %4 = trunc i32 %1 to i16 + %5 = tail call zeroext i16 @htons(i16 noundef zeroext %4) #26 + %6 = getelementptr inbounds i8, ptr %2, i64 2 + store i16 %5, ptr %6, align 2 + %7 = getelementptr inbounds i8, ptr %2, i64 4 + %8 = tail call i32 @uv_inet_pton(i32 noundef 2, ptr noundef %0, ptr noundef nonnull %7) #25 + ret i32 %8 } ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write) diff --git a/bench/cpp-httplib/optimized/httplib.cc.ll b/bench/cpp-httplib/optimized/httplib.cc.ll index 79b7bd0be1b..8732cb0801d 100644 --- a/bench/cpp-httplib/optimized/httplib.cc.ll +++ b/bench/cpp-httplib/optimized/httplib.cc.ll @@ -17314,7 +17314,7 @@ _ZN7httplib6detail22ContentProviderAdapterC2EOSt8functionIFbmRNS_8DataSinkEEE.ex %content_provider_ = getelementptr inbounds i8, ptr %this, i64 192 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i) %10 = getelementptr inbounds i8, ptr %ref.tmp.i, i64 8 - store i64 0, ptr %10, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %10, i8 0, i64 24, i1 false) %call.i.i2.i.i12 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #45 to label %call.i.i2.i.i.noexc unwind label %lpad6 @@ -17578,7 +17578,7 @@ _ZN7httplib6detail22ContentProviderAdapterC2EOSt8functionIFbmRNS_8DataSinkEEE.ex %content_provider_ = getelementptr inbounds i8, ptr %this, i64 192 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i) %10 = getelementptr inbounds i8, ptr %ref.tmp.i, i64 8 - store i64 0, ptr %10, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %10, i8 0, i64 24, i1 false) %call.i.i2.i.i12 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #45 to label %call.i.i2.i.i.noexc unwind label %lpad6 @@ -21650,7 +21650,7 @@ _ZNSt8functionIFvRKN7httplib7RequestERNS0_8ResponseEEEC2ERKS7_.exit: ; preds = % %error_handler_ = getelementptr inbounds i8, ptr %this, i64 504 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i) %9 = getelementptr inbounds i8, ptr %ref.tmp.i, i64 8 - store i64 0, ptr %9, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %9, i8 0, i64 24, i1 false) %call.i.i2.i.i2 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #45 to label %call.i.i2.i.i.noexc unwind label %lpad @@ -22656,7 +22656,7 @@ if.end52: ; preds = %invoke.cont23 %23 = load i64, ptr %write_timeout_usec_, align 8 store i64 %23, ptr %tv_usec56, align 8 %call57 = call i32 @setsockopt(i32 noundef %call24, i32 noundef 1, i32 noundef 21, ptr noundef nonnull %tv54, i32 noundef 16) #39 - store i64 0, ptr %4, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %4, i8 0, i64 24, i1 false) store ptr %this, ptr %agg.tmp, align 8 store i32 %call24, ptr %ref.tmp59.sroa.2.0.agg.tmp.sroa_idx, align 8 store ptr @"_ZNSt17_Function_handlerIFvvEZN7httplib6Server15listen_internalEvE3$_1E9_M_invokeERKSt9_Any_data", ptr %_M_invoker.i18, align 8 @@ -22892,12 +22892,12 @@ land.rhs: ; preds = %invoke.cont4 land.end: ; preds = %land.rhs %.pre = load i8, ptr %execute_on_destruction.i, align 8 - %.pre9.pre = load ptr, ptr %_M_manager.i.i.i, align 8 + %.pre10.pre = load ptr, ptr %_M_manager.i.i.i, align 8 %1 = trunc i8 %.pre to i1 br i1 %1, label %if.then.i, label %if.end.i if.then.i: ; preds = %land.end - %tobool.not.i.i.i = icmp eq ptr %.pre9.pre, null + %tobool.not.i.i.i = icmp eq ptr %.pre10.pre, null br i1 %tobool.not.i.i.i, label %if.then.i.i7, label %if.end.i.i if.then.i.i7: ; preds = %if.then.i @@ -22914,12 +22914,12 @@ if.end.i.i: ; preds = %invoke.cont4, %if.t to label %if.end.i.i.if.end.i_crit_edge unwind label %terminate.lpad.i if.end.i.i.if.end.i_crit_edge: ; preds = %if.end.i.i - %.pre8 = load ptr, ptr %_M_manager.i.i.i, align 8 + %.pre9 = load ptr, ptr %_M_manager.i.i.i, align 8 br label %if.end.i if.end.i: ; preds = %if.end.i.i.if.end.i_crit_edge, %land.end %4 = phi i1 [ %2, %if.end.i.i.if.end.i_crit_edge ], [ %call6, %land.end ] - %5 = phi ptr [ %.pre8, %if.end.i.i.if.end.i_crit_edge ], [ %.pre9.pre, %land.end ] + %5 = phi ptr [ %.pre9, %if.end.i.i.if.end.i_crit_edge ], [ %.pre10.pre, %land.end ] %tobool.not.i.i3.i = icmp eq ptr %5, null br i1 %tobool.not.i.i3.i, label %_ZN7httplib6detail10scope_exitD2Ev.exit, label %if.then.i.i.i @@ -26864,7 +26864,7 @@ if.end31: ; preds = %if.then23, %if.then .noexc: ; preds = %if.end31 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i.i.i) %78 = getelementptr inbounds i8, ptr %ref.tmp.i.i.i, i64 8 - store i64 0, ptr %78, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %78, i8 0, i64 24, i1 false) %call.i.i2.i.i8.i.i = invoke noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef 40) #45 to label %call.i.i2.i.i.noexc.i.i unwind label %lpad.loopexit.split-lp.i.i @@ -26916,7 +26916,7 @@ invoke.cont.i.i54: ; preds = %if.then.i.i.i.i.i, %_M_manager.i.i.i11.i.i = getelementptr inbounds i8, ptr %ref.tmp.i10.i.i, i64 16 %_M_invoker.i.i12.i.i = getelementptr inbounds i8, ptr %ref.tmp.i10.i.i, i64 24 %84 = getelementptr inbounds i8, ptr %ref.tmp.i10.i.i, i64 8 - store i64 0, ptr %84, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %84, i8 0, i64 24, i1 false) store i64 %83, ptr %ref.tmp.i10.i.i, align 8 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %__tmp.sroa.0.i.i.i9.i.i) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %__tmp.sroa.0.i.i.i9.i.i, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i10.i.i, i64 16, i1 false) @@ -26960,7 +26960,7 @@ terminate.lpad.i.i.i18.i.i: ; preds = %if.then.i.i.i16.i.i %_M_manager.i.i.i21.i.i = getelementptr inbounds i8, ptr %ref.tmp.i20.i.i, i64 16 %_M_invoker.i.i22.i.i = getelementptr inbounds i8, ptr %ref.tmp.i20.i.i, i64 24 %93 = getelementptr inbounds i8, ptr %ref.tmp.i20.i.i, i64 8 - store i64 0, ptr %93, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %93, i8 0, i64 24, i1 false) store i64 %92, ptr %ref.tmp.i20.i.i, align 8 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %__tmp.sroa.0.i.i.i19.i.i) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %__tmp.sroa.0.i.i.i19.i.i, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i20.i.i, i64 16, i1 false) @@ -26996,7 +26996,7 @@ terminate.lpad.i.i.i28.i.i: ; preds = %if.then.i.i.i26.i.i %_M_manager.i.i.i31.i.i = getelementptr inbounds i8, ptr %ref.tmp.i30.i.i, i64 16 %_M_invoker.i.i32.i.i = getelementptr inbounds i8, ptr %ref.tmp.i30.i.i, i64 24 %98 = getelementptr inbounds i8, ptr %ref.tmp.i30.i.i, i64 8 - store i64 0, ptr %98, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %98, i8 0, i64 24, i1 false) store i64 %92, ptr %ref.tmp.i30.i.i, align 8 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %__tmp.sroa.0.i.i.i29.i.i) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %__tmp.sroa.0.i.i.i29.i.i, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i30.i.i, i64 16, i1 false) @@ -27125,7 +27125,7 @@ if.else36: ; preds = %if.else15 call void @_ZN7httplib8DataSinkC2Ev(ptr noundef nonnull align 8 dereferenceable(472) %data_sink.i) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i.i68) %111 = getelementptr inbounds i8, ptr %ref.tmp.i.i68, i64 8 - store i64 0, ptr %111, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %111, i8 0, i64 24, i1 false) %call.i.i2.i.i3.i = invoke noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #45 to label %call.i.i2.i.i.noexc.i unwind label %lpad.loopexit.split-lp.i @@ -27173,7 +27173,7 @@ invoke.cont.i: ; preds = %if.then.i.i.i.i, %c %_M_manager.i.i.i6.i = getelementptr inbounds i8, ptr %ref.tmp.i5.i, i64 16 %_M_invoker.i.i7.i = getelementptr inbounds i8, ptr %ref.tmp.i5.i, i64 24 %117 = getelementptr inbounds i8, ptr %ref.tmp.i5.i, i64 8 - store i64 0, ptr %117, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %117, i8 0, i64 24, i1 false) store i64 %116, ptr %ref.tmp.i5.i, align 8 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %__tmp.sroa.0.i.i.i4.i) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %__tmp.sroa.0.i.i.i4.i, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i5.i, i64 16, i1 false) @@ -27210,7 +27210,7 @@ terminate.lpad.i.i.i13.i: ; preds = %if.then.i.i.i11.i %_M_manager.i.i.i16.i = getelementptr inbounds i8, ptr %ref.tmp.i15.i, i64 16 %_M_invoker.i.i17.i = getelementptr inbounds i8, ptr %ref.tmp.i15.i, i64 24 %123 = getelementptr inbounds i8, ptr %ref.tmp.i15.i, i64 8 - store i64 0, ptr %123, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %123, i8 0, i64 24, i1 false) store i64 %122, ptr %ref.tmp.i15.i, align 8 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %__tmp.sroa.0.i.i.i14.i) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %__tmp.sroa.0.i.i.i14.i, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i15.i, i64 16, i1 false) @@ -27348,7 +27348,7 @@ entry: call void @_ZN7httplib8DataSinkC2Ev(ptr noundef nonnull align 8 dereferenceable(472) %data_sink.i) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i.i) %0 = getelementptr inbounds i8, ptr %ref.tmp.i.i, i64 8 - store i64 0, ptr %0, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %0, i8 0, i64 24, i1 false) %call.i.i2.i.i7.i = invoke noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #45 to label %call.i.i2.i.i.noexc.i unwind label %lpad.loopexit.split-lp.i @@ -27396,7 +27396,7 @@ invoke.cont.i: ; preds = %if.then.i.i.i.i, %c %_M_manager.i.i.i10.i = getelementptr inbounds i8, ptr %ref.tmp.i9.i, i64 16 %_M_invoker.i.i11.i = getelementptr inbounds i8, ptr %ref.tmp.i9.i, i64 24 %6 = getelementptr inbounds i8, ptr %ref.tmp.i9.i, i64 8 - store i64 0, ptr %6, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %6, i8 0, i64 24, i1 false) store i64 %5, ptr %ref.tmp.i9.i, align 8 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %__tmp.sroa.0.i.i.i8.i) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %__tmp.sroa.0.i.i.i8.i, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i9.i, i64 16, i1 false) @@ -27848,7 +27848,7 @@ if.end: ; preds = %invoke.cont9 invoke.cont12: ; preds = %if.end call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i) %5 = getelementptr inbounds i8, ptr %ref.tmp.i, i64 8 - store i64 0, ptr %5, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %5, i8 0, i64 24, i1 false) %call.i.i2.i.i16 = invoke noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #45 to label %call.i.i2.i.i.noexc unwind label %lpad8 @@ -27941,7 +27941,7 @@ invoke.cont20: ; preds = %invoke.cont.i, %if. %18 = phi ptr [ %12, %invoke.cont.i ], [ null, %if.else ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i22) %19 = getelementptr inbounds i8, ptr %ref.tmp.i22, i64 8 - store i64 0, ptr %19, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %19, i8 0, i64 24, i1 false) %call.i.i2.i.i32 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #45 to label %call.i.i2.i.i.noexc31 unwind label %lpad21 @@ -30214,12 +30214,12 @@ _ZN7httplib13ContentReaderD2Ev.exit371: ; preds = %_ZNSt8functionIFbS_ br i1 %cmp.i7.i350, label %cleanup, label %if.end68 lpad59.loopexit: ; preds = %for.body.i342 - %lpad.loopexit374 = landingpad { ptr, i32 } + %lpad.loopexit375 = landingpad { ptr, i32 } cleanup br label %ehcleanup69 lpad59.loopexit.split-lp: ; preds = %if.then.i.i, %_ZNKSt8functionIFvRKN7httplib7RequestERNS0_8ResponseERKNS0_13ContentReaderEEEclES3_S5_S8_.exit.i353 - %lpad.loopexit.split-lp375 = landingpad { ptr, i32 } + %lpad.loopexit.split-lp376 = landingpad { ptr, i32 } cleanup br label %ehcleanup69 @@ -30268,7 +30268,7 @@ cleanup.cont: ; preds = %_ZN7httplib13Conten ehcleanup69: ; preds = %lpad59.loopexit, %lpad59.loopexit.split-lp, %lpad47.loopexit, %lpad47.loopexit.split-lp, %lpad35.loopexit, %lpad35.loopexit.split-lp, %lpad24.loopexit, %lpad24.loopexit.split-lp %agg.tmp58.sink = phi ptr [ %agg.tmp23, %lpad24.loopexit.split-lp ], [ %agg.tmp23, %lpad24.loopexit ], [ %agg.tmp34, %lpad35.loopexit.split-lp ], [ %agg.tmp34, %lpad35.loopexit ], [ %agg.tmp46, %lpad47.loopexit.split-lp ], [ %agg.tmp46, %lpad47.loopexit ], [ %agg.tmp58, %lpad59.loopexit.split-lp ], [ %agg.tmp58, %lpad59.loopexit ] - %.pn = phi { ptr, i32 } [ %lpad.loopexit.split-lp, %lpad24.loopexit.split-lp ], [ %lpad.loopexit, %lpad24.loopexit ], [ %lpad.loopexit.split-lp302, %lpad35.loopexit.split-lp ], [ %lpad.loopexit301, %lpad35.loopexit ], [ %lpad.loopexit.split-lp305, %lpad47.loopexit.split-lp ], [ %lpad.loopexit304, %lpad47.loopexit ], [ %lpad.loopexit.split-lp375, %lpad59.loopexit.split-lp ], [ %lpad.loopexit374, %lpad59.loopexit ] + %.pn = phi { ptr, i32 } [ %lpad.loopexit.split-lp, %lpad24.loopexit.split-lp ], [ %lpad.loopexit, %lpad24.loopexit ], [ %lpad.loopexit.split-lp302, %lpad35.loopexit.split-lp ], [ %lpad.loopexit301, %lpad35.loopexit ], [ %lpad.loopexit.split-lp305, %lpad47.loopexit.split-lp ], [ %lpad.loopexit304, %lpad47.loopexit ], [ %lpad.loopexit.split-lp376, %lpad59.loopexit.split-lp ], [ %lpad.loopexit375, %lpad59.loopexit ] call void @_ZN7httplib13ContentReaderD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %agg.tmp58.sink) #39 call void @_ZN7httplib13ContentReaderD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %reader) #39 br label %eh.resume @@ -36363,10 +36363,10 @@ if.end46: ; preds = %_ZNKSt8functionIFbR %11 = load ptr, ptr %_M_manager.i.i34, align 8 %tobool.not.i.i35.not = icmp eq ptr %11, null %12 = getelementptr inbounds i8, ptr %out, i64 8 - store i64 0, ptr %12, align 8 - br i1 %tobool.not.i.i35.not, label %cond.end, label %cond.true + br i1 %tobool.not.i.i35.not, label %cond.false, label %cond.true cond.true: ; preds = %if.end46 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %12, i8 0, i64 24, i1 false) %call.i.i2.i = call noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #45 store ptr %redirect, ptr %call.i.i2.i, align 16 %ref.tmp.sroa.2.0.call.i.i2.i.sroa_idx = getelementptr inbounds i8, ptr %call.i.i2.i, i64 8 @@ -36375,10 +36375,14 @@ cond.true: ; preds = %if.end46 store ptr %error, ptr %ref.tmp.sroa.3.0.call.i.i2.i.sroa_idx, align 16 br label %cond.end -cond.end: ; preds = %if.end46, %cond.true - %call.i.i2.i.sink = phi ptr [ %call.i.i2.i, %cond.true ], [ %res, %if.end46 ] - %13 = phi ptr [ @"_ZNSt17_Function_handlerIFbPKcmmmEZN7httplib10ClientImpl15process_requestERNS3_6StreamERNS3_7RequestERNS3_8ResponseEbRNS3_5ErrorEE3$_0E9_M_invokeERKSt9_Any_dataOS1_OmSJ_SJ_", %cond.true ], [ @"_ZNSt17_Function_handlerIFbPKcmmmEZN7httplib10ClientImpl15process_requestERNS3_6StreamERNS3_7RequestERNS3_8ResponseEbRNS3_5ErrorEE3$_1E9_M_invokeERKSt9_Any_dataOS1_OmSJ_SJ_", %if.end46 ] - %14 = phi ptr [ @"_ZNSt17_Function_handlerIFbPKcmmmEZN7httplib10ClientImpl15process_requestERNS3_6StreamERNS3_7RequestERNS3_8ResponseEbRNS3_5ErrorEE3$_0E10_M_managerERSt9_Any_dataRKSF_St18_Manager_operation", %cond.true ], [ @"_ZNSt17_Function_handlerIFbPKcmmmEZN7httplib10ClientImpl15process_requestERNS3_6StreamERNS3_7RequestERNS3_8ResponseEbRNS3_5ErrorEE3$_1E10_M_managerERSt9_Any_dataRKSF_St18_Manager_operation", %if.end46 ] +cond.false: ; preds = %if.end46 + store i64 0, ptr %12, align 8 + br label %cond.end + +cond.end: ; preds = %cond.false, %cond.true + %call.i.i2.i.sink = phi ptr [ %res, %cond.false ], [ %call.i.i2.i, %cond.true ] + %13 = phi ptr [ @"_ZNSt17_Function_handlerIFbPKcmmmEZN7httplib10ClientImpl15process_requestERNS3_6StreamERNS3_7RequestERNS3_8ResponseEbRNS3_5ErrorEE3$_1E9_M_invokeERKSt9_Any_dataOS1_OmSJ_SJ_", %cond.false ], [ @"_ZNSt17_Function_handlerIFbPKcmmmEZN7httplib10ClientImpl15process_requestERNS3_6StreamERNS3_7RequestERNS3_8ResponseEbRNS3_5ErrorEE3$_0E9_M_invokeERKSt9_Any_dataOS1_OmSJ_SJ_", %cond.true ] + %14 = phi ptr [ @"_ZNSt17_Function_handlerIFbPKcmmmEZN7httplib10ClientImpl15process_requestERNS3_6StreamERNS3_7RequestERNS3_8ResponseEbRNS3_5ErrorEE3$_1E10_M_managerERSt9_Any_dataRKSF_St18_Manager_operation", %cond.false ], [ @"_ZNSt17_Function_handlerIFbPKcmmmEZN7httplib10ClientImpl15process_requestERNS3_6StreamERNS3_7RequestERNS3_8ResponseEbRNS3_5ErrorEE3$_0E10_M_managerERSt9_Any_dataRKSF_St18_Manager_operation", %cond.true ] store ptr %call.i.i2.i.sink, ptr %out, align 8 %15 = getelementptr inbounds i8, ptr %out, i64 24 store ptr %13, ptr %15, align 8 @@ -38229,7 +38233,7 @@ if.end: ; preds = %if.then3, %if.else .noexc: ; preds = %if.end call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i.i) %4 = getelementptr inbounds i8, ptr %ref.tmp.i.i, i64 8 - store i64 0, ptr %4, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %4, i8 0, i64 24, i1 false) %call.i.i2.i.i8.i = invoke noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef 40) #45 to label %call.i.i2.i.i.noexc.i unwind label %lpad.loopexit.split-lp.i @@ -38281,7 +38285,7 @@ invoke.cont.i: ; preds = %if.then.i.i.i.i, %c %_M_manager.i.i.i11.i = getelementptr inbounds i8, ptr %ref.tmp.i10.i, i64 16 %_M_invoker.i.i12.i = getelementptr inbounds i8, ptr %ref.tmp.i10.i, i64 24 %10 = getelementptr inbounds i8, ptr %ref.tmp.i10.i, i64 8 - store i64 0, ptr %10, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %10, i8 0, i64 24, i1 false) store i64 %9, ptr %ref.tmp.i10.i, align 8 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %__tmp.sroa.0.i.i.i9.i) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %__tmp.sroa.0.i.i.i9.i, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i10.i, i64 16, i1 false) @@ -38325,7 +38329,7 @@ terminate.lpad.i.i.i18.i: ; preds = %if.then.i.i.i16.i %_M_manager.i.i.i21.i = getelementptr inbounds i8, ptr %ref.tmp.i20.i, i64 16 %_M_invoker.i.i22.i = getelementptr inbounds i8, ptr %ref.tmp.i20.i, i64 24 %19 = getelementptr inbounds i8, ptr %ref.tmp.i20.i, i64 8 - store i64 0, ptr %19, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %19, i8 0, i64 24, i1 false) store i64 %18, ptr %ref.tmp.i20.i, align 8 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %__tmp.sroa.0.i.i.i19.i) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %__tmp.sroa.0.i.i.i19.i, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i20.i, i64 16, i1 false) @@ -38361,7 +38365,7 @@ terminate.lpad.i.i.i28.i: ; preds = %if.then.i.i.i26.i %_M_manager.i.i.i31.i = getelementptr inbounds i8, ptr %ref.tmp.i30.i, i64 16 %_M_invoker.i.i32.i = getelementptr inbounds i8, ptr %ref.tmp.i30.i, i64 24 %24 = getelementptr inbounds i8, ptr %ref.tmp.i30.i, i64 8 - store i64 0, ptr %24, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %24, i8 0, i64 24, i1 false) store i64 %18, ptr %ref.tmp.i30.i, align 8 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %__tmp.sroa.0.i.i.i29.i) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %__tmp.sroa.0.i.i.i29.i, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i30.i, i64 16, i1 false) @@ -38486,7 +38490,7 @@ if.else10: ; preds = %entry call void @_ZN7httplib8DataSinkC2Ev(ptr noundef nonnull align 8 dereferenceable(472) %data_sink.i33) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i.i31) %37 = getelementptr inbounds i8, ptr %ref.tmp.i.i31, i64 8 - store i64 0, ptr %37, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %37, i8 0, i64 24, i1 false) %call.i.i2.i.i7.i = invoke noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #45 to label %call.i.i2.i.i.noexc.i37 unwind label %lpad.loopexit.split-lp.i34 @@ -38534,7 +38538,7 @@ invoke.cont.i46: ; preds = %if.then.i.i.i.i43, %_M_manager.i.i.i10.i = getelementptr inbounds i8, ptr %ref.tmp.i9.i, i64 16 %_M_invoker.i.i11.i = getelementptr inbounds i8, ptr %ref.tmp.i9.i, i64 24 %43 = getelementptr inbounds i8, ptr %ref.tmp.i9.i, i64 8 - store i64 0, ptr %43, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %43, i8 0, i64 24, i1 false) store i64 %42, ptr %ref.tmp.i9.i, align 8 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %__tmp.sroa.0.i.i.i8.i) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %__tmp.sroa.0.i.i.i8.i, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i9.i, i64 16, i1 false) @@ -40533,7 +40537,7 @@ if.then26: ; preds = %if.then24 invoke.cont28: ; preds = %if.then26 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i) %12 = getelementptr inbounds i8, ptr %ref.tmp.i, i64 8 - store i64 0, ptr %12, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %12, i8 0, i64 24, i1 false) %call.i.i2.i.i49 = invoke noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef 40) #45 to label %call.i.i2.i.i.noexc unwind label %lpad30.loopexit.split-lp @@ -40909,7 +40913,7 @@ _ZN7httplib6detail22ContentProviderAdapterC2EOSt8functionIFbmRNS_8DataSinkEEE.ex %content_provider_60 = getelementptr inbounds i8, ptr %req, i64 616 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i100) %55 = getelementptr inbounds i8, ptr %ref.tmp.i100, i64 8 - store i64 0, ptr %55, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %55, i8 0, i64 24, i1 false) %call.i.i2.i.i110 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #45 to label %call.i.i2.i.i.noexc109 unwind label %lpad61 @@ -42526,7 +42530,7 @@ invoke.cont10: ; preds = %invoke.cont.i, %_ZN %content_receiver11 = getelementptr inbounds i8, ptr %req, i64 528 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i6) %18 = getelementptr inbounds i8, ptr %ref.tmp.i6, i64 8 - store i64 0, ptr %18, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %18, i8 0, i64 24, i1 false) %call.i.i2.i.i15 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #45 to label %call.i.i2.i.i.noexc unwind label %lpad12 @@ -66195,7 +66199,7 @@ entry: %_M_manager.i.i = getelementptr inbounds i8, ptr %agg.tmp, i64 16 %_M_invoker.i = getelementptr inbounds i8, ptr %agg.tmp, i64 24 %2 = getelementptr inbounds i8, ptr %agg.tmp, i64 8 - store i64 0, ptr %2, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %2, i8 0, i64 24, i1 false) %3 = ptrtoint ptr %1 to i64 store i64 %3, ptr %agg.tmp, align 8 store ptr @_ZNSt17_Function_handlerIFbcENSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb0ELb0ELb1EEEE9_M_invokeERKSt9_Any_dataOc, ptr %_M_invoker.i, align 8 @@ -66282,7 +66286,7 @@ entry: %_M_manager.i.i = getelementptr inbounds i8, ptr %agg.tmp, i64 16 %_M_invoker.i = getelementptr inbounds i8, ptr %agg.tmp, i64 24 %2 = getelementptr inbounds i8, ptr %agg.tmp, i64 8 - store i64 0, ptr %2, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %2, i8 0, i64 24, i1 false) %3 = ptrtoint ptr %1 to i64 store i64 %3, ptr %agg.tmp, align 8 store ptr @_ZNSt17_Function_handlerIFbcENSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb0ELb1ELb0EEEE9_M_invokeERKSt9_Any_dataOc, ptr %_M_invoker.i, align 8 @@ -66369,7 +66373,7 @@ entry: %_M_manager.i.i = getelementptr inbounds i8, ptr %agg.tmp, i64 16 %_M_invoker.i = getelementptr inbounds i8, ptr %agg.tmp, i64 24 %2 = getelementptr inbounds i8, ptr %agg.tmp, i64 8 - store i64 0, ptr %2, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %2, i8 0, i64 24, i1 false) %3 = ptrtoint ptr %1 to i64 store i64 %3, ptr %agg.tmp, align 8 store ptr @_ZNSt17_Function_handlerIFbcENSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb0ELb1ELb1EEEE9_M_invokeERKSt9_Any_dataOc, ptr %_M_invoker.i, align 8 @@ -66538,7 +66542,7 @@ entry: %_M_manager.i.i = getelementptr inbounds i8, ptr %agg.tmp, i64 16 %_M_invoker.i = getelementptr inbounds i8, ptr %agg.tmp, i64 24 %2 = getelementptr inbounds i8, ptr %agg.tmp, i64 8 - store i64 0, ptr %2, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %2, i8 0, i64 24, i1 false) %3 = ptrtoint ptr %1 to i64 store i64 %3, ptr %agg.tmp, align 8 store ptr @_ZNSt17_Function_handlerIFbcENSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb1ELb0ELb1EEEE9_M_invokeERKSt9_Any_dataOc, ptr %_M_invoker.i, align 8 @@ -66625,7 +66629,7 @@ entry: %_M_manager.i.i = getelementptr inbounds i8, ptr %agg.tmp, i64 16 %_M_invoker.i = getelementptr inbounds i8, ptr %agg.tmp, i64 24 %2 = getelementptr inbounds i8, ptr %agg.tmp, i64 8 - store i64 0, ptr %2, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %2, i8 0, i64 24, i1 false) %3 = ptrtoint ptr %1 to i64 store i64 %3, ptr %agg.tmp, align 8 store ptr @_ZNSt17_Function_handlerIFbcENSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb1ELb1ELb0EEEE9_M_invokeERKSt9_Any_dataOc, ptr %_M_invoker.i, align 8 @@ -66712,7 +66716,7 @@ entry: %_M_manager.i.i = getelementptr inbounds i8, ptr %agg.tmp, i64 16 %_M_invoker.i = getelementptr inbounds i8, ptr %agg.tmp, i64 24 %2 = getelementptr inbounds i8, ptr %agg.tmp, i64 8 - store i64 0, ptr %2, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %2, i8 0, i64 24, i1 false) %3 = ptrtoint ptr %1 to i64 store i64 %3, ptr %agg.tmp, align 8 store ptr @_ZNSt17_Function_handlerIFbcENSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb1ELb1ELb1EEEE9_M_invokeERKSt9_Any_dataOc, ptr %_M_invoker.i, align 8 @@ -67105,7 +67109,7 @@ entry: %_M_manager.i.i = getelementptr inbounds i8, ptr %agg.tmp, i64 16 %_M_invoker.i = getelementptr inbounds i8, ptr %agg.tmp, i64 24 %3 = getelementptr inbounds i8, ptr %agg.tmp, i64 8 - store i64 0, ptr %3, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %3, i8 0, i64 24, i1 false) store ptr %2, ptr %agg.tmp, align 8 %ref.tmp4.sroa.2.0.agg.tmp.sroa_idx = getelementptr inbounds i8, ptr %agg.tmp, i64 8 store i8 %1, ptr %ref.tmp4.sroa.2.0.agg.tmp.sroa_idx, align 8 @@ -67201,7 +67205,7 @@ entry: %_M_manager.i.i = getelementptr inbounds i8, ptr %agg.tmp, i64 16 %_M_invoker.i = getelementptr inbounds i8, ptr %agg.tmp, i64 24 %4 = getelementptr inbounds i8, ptr %agg.tmp, i64 8 - store i64 0, ptr %4, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %4, i8 0, i64 24, i1 false) store ptr %2, ptr %agg.tmp, align 8 %ref.tmp4.sroa.2.0.agg.tmp.sroa_idx = getelementptr inbounds i8, ptr %agg.tmp, i64 8 store i8 %call.i.i.i.i, ptr %ref.tmp4.sroa.2.0.agg.tmp.sroa_idx, align 8 @@ -67297,7 +67301,7 @@ entry: %_M_manager.i.i = getelementptr inbounds i8, ptr %agg.tmp, i64 16 %_M_invoker.i = getelementptr inbounds i8, ptr %agg.tmp, i64 24 %4 = getelementptr inbounds i8, ptr %agg.tmp, i64 8 - store i64 0, ptr %4, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %4, i8 0, i64 24, i1 false) store ptr %2, ptr %agg.tmp, align 8 %ref.tmp4.sroa.2.0.agg.tmp.sroa_idx = getelementptr inbounds i8, ptr %agg.tmp, i64 8 store i8 %call.i.i.i.i, ptr %ref.tmp4.sroa.2.0.agg.tmp.sroa_idx, align 8 @@ -99010,7 +99014,7 @@ if.end32: ; preds = %_ZNSt10unique_ptrIN %_M_manager.i.i42 = getelementptr inbounds i8, ptr %out33, i64 16 %_M_invoker.i43 = getelementptr inbounds i8, ptr %out33, i64 24 %17 = getelementptr inbounds i8, ptr %out33, i64 8 - store i64 0, ptr %17, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %17, i8 0, i64 24, i1 false) %18 = ptrtoint ptr %receiver to i64 store i64 %18, ptr %out33, align 8 store ptr @_ZNSt17_Function_handlerIFbPKcmmmEZN7httplib6detail24prepare_content_receiverINS3_7RequestEZNS4_12read_contentIS6_EEbRNS3_6StreamERT_mRiSt8functionIFbmmEESD_IS2_EbEUlRKSG_E_EEbSB_SC_SG_bT0_EUlS1_mmmE0_E9_M_invokeERKSt9_Any_dataOS1_OmSR_SR_, ptr %_M_invoker.i43, align 8 @@ -99739,7 +99743,7 @@ entry: %_M_manager.i.i = getelementptr inbounds i8, ptr %agg.tmp, i64 16 %_M_invoker.i = getelementptr inbounds i8, ptr %agg.tmp, i64 24 %4 = getelementptr inbounds i8, ptr %agg.tmp, i64 8 - store i64 0, ptr %4, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %4, i8 0, i64 24, i1 false) %call.i.i2.i = tail call noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #45 store ptr %3, ptr %call.i.i2.i, align 16 %ref.tmp.sroa.2.0.call.i.i2.i.sroa_idx = getelementptr inbounds i8, ptr %call.i.i2.i, i64 8 @@ -103606,7 +103610,7 @@ if.end32: ; preds = %_ZNSt10unique_ptrIN %_M_manager.i.i42 = getelementptr inbounds i8, ptr %out33, i64 16 %_M_invoker.i43 = getelementptr inbounds i8, ptr %out33, i64 24 %17 = getelementptr inbounds i8, ptr %out33, i64 8 - store i64 0, ptr %17, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %17, i8 0, i64 24, i1 false) %18 = ptrtoint ptr %receiver to i64 store i64 %18, ptr %out33, align 8 store ptr @_ZNSt17_Function_handlerIFbPKcmmmEZN7httplib6detail24prepare_content_receiverINS3_8ResponseEZNS4_12read_contentIS6_EEbRNS3_6StreamERT_mRiSt8functionIFbmmEESD_IS2_EbEUlRKSG_E_EEbSB_SC_SG_bT0_EUlS1_mmmE0_E9_M_invokeERKSt9_Any_dataOS1_OmSR_SR_, ptr %_M_invoker.i43, align 8 @@ -104335,7 +104339,7 @@ entry: %_M_manager.i.i = getelementptr inbounds i8, ptr %agg.tmp, i64 16 %_M_invoker.i = getelementptr inbounds i8, ptr %agg.tmp, i64 24 %4 = getelementptr inbounds i8, ptr %agg.tmp, i64 8 - store i64 0, ptr %4, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %4, i8 0, i64 24, i1 false) %call.i.i2.i = tail call noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #45 store ptr %3, ptr %call.i.i2.i, align 16 %ref.tmp.sroa.2.0.call.i.i2.i.sroa_idx = getelementptr inbounds i8, ptr %call.i.i2.i, i64 8 @@ -105544,7 +105548,7 @@ invoke.cont16.i.i.i: ; preds = %if.then.i.i5.i.i.i. %_M_manager.i.i.i14.i.i.i = getelementptr inbounds i8, ptr %ref.tmp.i13.i.i.i, i64 16 %_M_invoker.i.i15.i.i.i = getelementptr inbounds i8, ptr %ref.tmp.i13.i.i.i, i64 24 %31 = getelementptr inbounds i8, ptr %ref.tmp.i13.i.i.i, i64 8 - store i64 0, ptr %31, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %31, i8 0, i64 24, i1 false) store i64 %30, ptr %ref.tmp.i13.i.i.i, align 8 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %__tmp.sroa.0.i.i.i12.i.i.i) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %__tmp.sroa.0.i.i.i12.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i13.i.i.i, i64 16, i1 false) diff --git a/bench/cpython/optimized/instrumentation.ll b/bench/cpython/optimized/instrumentation.ll index 7fa757caeb7..8620a6a6129 100644 --- a/bench/cpython/optimized/instrumentation.ll +++ b/bench/cpython/optimized/instrumentation.ll @@ -1305,7 +1305,7 @@ return: ; preds = %if.end.i, %if.then1 define hidden range(i32 -1, 1) i32 @_Py_call_instrumentation_arg(ptr noundef %tstate, i32 noundef %event, ptr nocapture noundef readonly %frame, ptr noundef %instr, ptr noundef %arg) local_unnamed_addr #1 { entry: %args = alloca [4 x ptr], align 16 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %args, i8 0, i64 32, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %args, i8 0, i64 24, i1 false) %arrayinit.element2 = getelementptr inbounds i8, ptr %args, i64 24 store ptr %arg, ptr %arrayinit.element2, align 8 %call = call fastcc i32 @call_instrumentation_vector(ptr noundef %tstate, i32 noundef %event, ptr noundef %frame, ptr noundef %instr, i64 noundef 3, ptr noundef %args) @@ -1342,7 +1342,7 @@ entry: br i1 %cmp, label %return, label %if.end if.end: ; preds = %entry - call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %args, i8 0, i64 32, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %args, i8 0, i64 24, i1 false) %arrayinit.element5 = getelementptr inbounds i8, ptr %args, i64 24 store ptr %call2, ptr %arrayinit.element5, align 8 %call7 = call fastcc i32 @call_instrumentation_vector(ptr noundef %tstate, i32 noundef %event, ptr noundef nonnull %frame, ptr noundef %instr, i64 noundef 3, ptr noundef %args) diff --git a/bench/curl/optimized/libcurl_la-smb.ll b/bench/curl/optimized/libcurl_la-smb.ll index 6af8b12598d..06b6f68d53f 100644 --- a/bench/curl/optimized/libcurl_la-smb.ll +++ b/bench/curl/optimized/libcurl_la-smb.ll @@ -837,13 +837,12 @@ sw.bb157: ; preds = %sw.bb157.sink.split store i64 0, ptr %got.i82123, align 8 call void @llvm.lifetime.start.p0(i64 9, ptr nonnull %msg.i109) %56 = load ptr, ptr %p, align 8 - %57 = getelementptr inbounds i8, ptr %msg.i109, i64 3 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(9) %57, i8 0, i64 6, i1 false) + %57 = getelementptr inbounds i8, ptr %msg.i109, i64 1 + store i64 0, ptr %57, align 1 store i8 3, ptr %msg.i109, align 1 %fid.i111 = getelementptr inbounds i8, ptr %56, i64 18 %58 = load i16, ptr %fid.i111, align 2 - %fid2.i = getelementptr inbounds i8, ptr %msg.i109, i64 1 - store i16 %58, ptr %fid2.i, align 1 + store i16 %58, ptr %57, align 1 %call.i112 = call fastcc i32 @smb_send_message(ptr noundef nonnull %data, i8 noundef zeroext 4, ptr noundef nonnull %msg.i109, i64 noundef 9) call void @llvm.lifetime.end.p0(i64 9, ptr nonnull %msg.i109) br label %sw.epilog164 @@ -1133,8 +1132,8 @@ if.end: ; preds = %entry %5 = load ptr, ptr %passwd, align 8 %call12 = call i32 @Curl_ntlm_core_mk_nt_hash(ptr noundef %5, ptr noundef nonnull %nt_hash) #12 call void @Curl_ntlm_core_lm_resp(ptr noundef nonnull %nt_hash, ptr noundef nonnull %challenge, ptr noundef nonnull %nt) #12 - %6 = getelementptr inbounds i8, ptr %msg, i64 2 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1053) %6, i8 0, i64 1051, i1 false) + %6 = getelementptr inbounds i8, ptr %msg, i64 1 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1053) %6, i8 0, i64 1052, i1 false) store i8 13, ptr %msg, align 1 %andx = getelementptr inbounds i8, ptr %msg, i64 1 store i8 -1, ptr %andx, align 1 diff --git a/bench/cxxopts/optimized/example.cpp.ll b/bench/cxxopts/optimized/example.cpp.ll index 12db2b567c0..eae9977ce80 100644 --- a/bench/cxxopts/optimized/example.cpp.ll +++ b/bench/cxxopts/optimized/example.cpp.ll @@ -22564,7 +22564,7 @@ entry: %_M_manager.i.i = getelementptr inbounds i8, ptr %agg.tmp, i64 16 %_M_invoker.i = getelementptr inbounds i8, ptr %agg.tmp, i64 24 %2 = getelementptr inbounds i8, ptr %agg.tmp, i64 8 - store i64 0, ptr %2, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %2, i8 0, i64 24, i1 false) %3 = ptrtoint ptr %1 to i64 store i64 %3, ptr %agg.tmp, align 8 store ptr @_ZNSt17_Function_handlerIFbcENSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb0ELb0ELb1EEEE9_M_invokeERKSt9_Any_dataOc, ptr %_M_invoker.i, align 8 @@ -22651,7 +22651,7 @@ entry: %_M_manager.i.i = getelementptr inbounds i8, ptr %agg.tmp, i64 16 %_M_invoker.i = getelementptr inbounds i8, ptr %agg.tmp, i64 24 %2 = getelementptr inbounds i8, ptr %agg.tmp, i64 8 - store i64 0, ptr %2, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %2, i8 0, i64 24, i1 false) %3 = ptrtoint ptr %1 to i64 store i64 %3, ptr %agg.tmp, align 8 store ptr @_ZNSt17_Function_handlerIFbcENSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb0ELb1ELb0EEEE9_M_invokeERKSt9_Any_dataOc, ptr %_M_invoker.i, align 8 @@ -22738,7 +22738,7 @@ entry: %_M_manager.i.i = getelementptr inbounds i8, ptr %agg.tmp, i64 16 %_M_invoker.i = getelementptr inbounds i8, ptr %agg.tmp, i64 24 %2 = getelementptr inbounds i8, ptr %agg.tmp, i64 8 - store i64 0, ptr %2, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %2, i8 0, i64 24, i1 false) %3 = ptrtoint ptr %1 to i64 store i64 %3, ptr %agg.tmp, align 8 store ptr @_ZNSt17_Function_handlerIFbcENSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb0ELb1ELb1EEEE9_M_invokeERKSt9_Any_dataOc, ptr %_M_invoker.i, align 8 @@ -22907,7 +22907,7 @@ entry: %_M_manager.i.i = getelementptr inbounds i8, ptr %agg.tmp, i64 16 %_M_invoker.i = getelementptr inbounds i8, ptr %agg.tmp, i64 24 %2 = getelementptr inbounds i8, ptr %agg.tmp, i64 8 - store i64 0, ptr %2, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %2, i8 0, i64 24, i1 false) %3 = ptrtoint ptr %1 to i64 store i64 %3, ptr %agg.tmp, align 8 store ptr @_ZNSt17_Function_handlerIFbcENSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb1ELb0ELb1EEEE9_M_invokeERKSt9_Any_dataOc, ptr %_M_invoker.i, align 8 @@ -22994,7 +22994,7 @@ entry: %_M_manager.i.i = getelementptr inbounds i8, ptr %agg.tmp, i64 16 %_M_invoker.i = getelementptr inbounds i8, ptr %agg.tmp, i64 24 %2 = getelementptr inbounds i8, ptr %agg.tmp, i64 8 - store i64 0, ptr %2, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %2, i8 0, i64 24, i1 false) %3 = ptrtoint ptr %1 to i64 store i64 %3, ptr %agg.tmp, align 8 store ptr @_ZNSt17_Function_handlerIFbcENSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb1ELb1ELb0EEEE9_M_invokeERKSt9_Any_dataOc, ptr %_M_invoker.i, align 8 @@ -23081,7 +23081,7 @@ entry: %_M_manager.i.i = getelementptr inbounds i8, ptr %agg.tmp, i64 16 %_M_invoker.i = getelementptr inbounds i8, ptr %agg.tmp, i64 24 %2 = getelementptr inbounds i8, ptr %agg.tmp, i64 8 - store i64 0, ptr %2, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %2, i8 0, i64 24, i1 false) %3 = ptrtoint ptr %1 to i64 store i64 %3, ptr %agg.tmp, align 8 store ptr @_ZNSt17_Function_handlerIFbcENSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb1ELb1ELb1EEEE9_M_invokeERKSt9_Any_dataOc, ptr %_M_invoker.i, align 8 @@ -23474,7 +23474,7 @@ entry: %_M_manager.i.i = getelementptr inbounds i8, ptr %agg.tmp, i64 16 %_M_invoker.i = getelementptr inbounds i8, ptr %agg.tmp, i64 24 %3 = getelementptr inbounds i8, ptr %agg.tmp, i64 8 - store i64 0, ptr %3, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %3, i8 0, i64 24, i1 false) store ptr %2, ptr %agg.tmp, align 8 %ref.tmp4.sroa.2.0.agg.tmp.sroa_idx = getelementptr inbounds i8, ptr %agg.tmp, i64 8 store i8 %1, ptr %ref.tmp4.sroa.2.0.agg.tmp.sroa_idx, align 8 @@ -23570,7 +23570,7 @@ entry: %_M_manager.i.i = getelementptr inbounds i8, ptr %agg.tmp, i64 16 %_M_invoker.i = getelementptr inbounds i8, ptr %agg.tmp, i64 24 %4 = getelementptr inbounds i8, ptr %agg.tmp, i64 8 - store i64 0, ptr %4, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %4, i8 0, i64 24, i1 false) store ptr %2, ptr %agg.tmp, align 8 %ref.tmp4.sroa.2.0.agg.tmp.sroa_idx = getelementptr inbounds i8, ptr %agg.tmp, i64 8 store i8 %call.i.i.i.i, ptr %ref.tmp4.sroa.2.0.agg.tmp.sroa_idx, align 8 @@ -23666,7 +23666,7 @@ entry: %_M_manager.i.i = getelementptr inbounds i8, ptr %agg.tmp, i64 16 %_M_invoker.i = getelementptr inbounds i8, ptr %agg.tmp, i64 24 %4 = getelementptr inbounds i8, ptr %agg.tmp, i64 8 - store i64 0, ptr %4, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %4, i8 0, i64 24, i1 false) store ptr %2, ptr %agg.tmp, align 8 %ref.tmp4.sroa.2.0.agg.tmp.sroa_idx = getelementptr inbounds i8, ptr %agg.tmp, i64 8 store i8 %call.i.i.i.i, ptr %ref.tmp4.sroa.2.0.agg.tmp.sroa_idx, align 8 diff --git a/bench/eastl/optimized/TestBitset.cpp.ll b/bench/eastl/optimized/TestBitset.cpp.ll index 8a17faf5635..522383d2764 100644 --- a/bench/eastl/optimized/TestBitset.cpp.ll +++ b/bench/eastl/optimized/TestBitset.cpp.ll @@ -4368,11 +4368,9 @@ entry: define weak_odr dso_local void @_ZN5eastl6bitsetILm129EhEC2Ej(ptr noundef nonnull align 1 dereferenceable(17) %this, i32 noundef %value) unnamed_addr #1 comdat($_ZN5eastl6bitsetILm129EhEC5Ej) align 2 { entry: %0 = getelementptr inbounds i8, ptr %this, i64 1 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(17) %0, i8 0, i64 15, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(17) %0, i8 0, i64 16, i1 false) %conv.i = trunc i32 %value to i8 store i8 %conv.i, ptr %this, align 1 - %arrayidx = getelementptr inbounds i8, ptr %this, i64 16 - store i8 0, ptr %arrayidx, align 1 ret void } @@ -4768,11 +4766,9 @@ entry: define weak_odr dso_local void @_ZN5eastl6bitsetILm129EhE11from_uint32Ej(ptr noundef nonnull align 1 dereferenceable(17) %this, i32 noundef %value) local_unnamed_addr #1 comdat align 2 { entry: %0 = getelementptr inbounds i8, ptr %this, i64 1 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(17) %0, i8 0, i64 15, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(17) %0, i8 0, i64 16, i1 false) %conv.i = trunc i32 %value to i8 store i8 %conv.i, ptr %this, align 1 - %arrayidx = getelementptr inbounds i8, ptr %this, i64 16 - store i8 0, ptr %arrayidx, align 1 ret void } @@ -4780,11 +4776,9 @@ entry: define weak_odr dso_local void @_ZN5eastl6bitsetILm129EhE11from_uint64Em(ptr noundef nonnull align 1 dereferenceable(17) %this, i64 noundef %value) local_unnamed_addr #1 comdat align 2 { entry: %0 = getelementptr inbounds i8, ptr %this, i64 1 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(17) %0, i8 0, i64 15, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(17) %0, i8 0, i64 16, i1 false) %conv.i = trunc i64 %value to i8 store i8 %conv.i, ptr %this, align 1 - %arrayidx = getelementptr inbounds i8, ptr %this, i64 16 - store i8 0, ptr %arrayidx, align 1 ret void } @@ -8051,11 +8045,9 @@ entry: define weak_odr dso_local void @_ZN5eastl6bitsetILm129EtEC2Ej(ptr noundef nonnull align 2 dereferenceable(18) %this, i32 noundef %value) unnamed_addr #1 comdat($_ZN5eastl6bitsetILm129EtEC5Ej) align 2 { entry: %0 = getelementptr inbounds i8, ptr %this, i64 2 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 2 dereferenceable(18) %0, i8 0, i64 14, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 2 dereferenceable(18) %0, i8 0, i64 16, i1 false) %conv.i = trunc i32 %value to i16 store i16 %conv.i, ptr %this, align 2 - %arrayidx = getelementptr inbounds i8, ptr %this, i64 16 - store i16 0, ptr %arrayidx, align 2 ret void } @@ -8451,11 +8443,9 @@ entry: define weak_odr dso_local void @_ZN5eastl6bitsetILm129EtE11from_uint32Ej(ptr noundef nonnull align 2 dereferenceable(18) %this, i32 noundef %value) local_unnamed_addr #1 comdat align 2 { entry: %0 = getelementptr inbounds i8, ptr %this, i64 2 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 2 dereferenceable(18) %0, i8 0, i64 14, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 2 dereferenceable(18) %0, i8 0, i64 16, i1 false) %conv.i = trunc i32 %value to i16 store i16 %conv.i, ptr %this, align 2 - %arrayidx = getelementptr inbounds i8, ptr %this, i64 16 - store i16 0, ptr %arrayidx, align 2 ret void } @@ -8463,11 +8453,9 @@ entry: define weak_odr dso_local void @_ZN5eastl6bitsetILm129EtE11from_uint64Em(ptr noundef nonnull align 2 dereferenceable(18) %this, i64 noundef %value) local_unnamed_addr #1 comdat align 2 { entry: %0 = getelementptr inbounds i8, ptr %this, i64 2 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 2 dereferenceable(18) %0, i8 0, i64 14, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 2 dereferenceable(18) %0, i8 0, i64 16, i1 false) %conv.i = trunc i64 %value to i16 store i16 %conv.i, ptr %this, align 2 - %arrayidx = getelementptr inbounds i8, ptr %this, i64 16 - store i16 0, ptr %arrayidx, align 2 ret void } @@ -11820,10 +11808,8 @@ entry: define weak_odr dso_local void @_ZN5eastl6bitsetILm129EjEC2Ej(ptr noundef nonnull align 4 dereferenceable(20) %this, i32 noundef %value) unnamed_addr #1 comdat($_ZN5eastl6bitsetILm129EjEC5Ej) align 2 { entry: %0 = getelementptr inbounds i8, ptr %this, i64 4 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(20) %0, i8 0, i64 12, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(20) %0, i8 0, i64 16, i1 false) store i32 %value, ptr %this, align 4 - %arrayidx = getelementptr inbounds i8, ptr %this, i64 16 - store i32 0, ptr %arrayidx, align 4 ret void } @@ -12218,10 +12204,8 @@ entry: define weak_odr dso_local void @_ZN5eastl6bitsetILm129EjE11from_uint32Ej(ptr noundef nonnull align 4 dereferenceable(20) %this, i32 noundef %value) local_unnamed_addr #1 comdat align 2 { entry: %0 = getelementptr inbounds i8, ptr %this, i64 4 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(20) %0, i8 0, i64 12, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(20) %0, i8 0, i64 16, i1 false) store i32 %value, ptr %this, align 4 - %arrayidx = getelementptr inbounds i8, ptr %this, i64 16 - store i32 0, ptr %arrayidx, align 4 ret void } @@ -12229,11 +12213,9 @@ entry: define weak_odr dso_local void @_ZN5eastl6bitsetILm129EjE11from_uint64Em(ptr noundef nonnull align 4 dereferenceable(20) %this, i64 noundef %value) local_unnamed_addr #1 comdat align 2 { entry: %0 = getelementptr inbounds i8, ptr %this, i64 4 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(20) %0, i8 0, i64 12, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(20) %0, i8 0, i64 16, i1 false) %conv.i = trunc i64 %value to i32 store i32 %conv.i, ptr %this, align 4 - %arrayidx = getelementptr inbounds i8, ptr %this, i64 16 - store i32 0, ptr %arrayidx, align 4 ret void } diff --git a/bench/fmt/optimized/chrono-test.cc.ll b/bench/fmt/optimized/chrono-test.cc.ll index 9c4c52c9f9d..7e4f8d30ee1 100644 --- a/bench/fmt/optimized/chrono-test.cc.ll +++ b/bench/fmt/optimized/chrono-test.cc.ll @@ -129801,7 +129801,7 @@ return: ; preds = %_ZN3fmt3v1019basic_ ; Function Attrs: mustprogress uwtable define linkonce_odr hidden noundef ptr @_ZNK3fmt3v106detail14digit_groupingIcE5applyIPccEET_S6_NS0_17basic_string_viewIT0_EE(ptr noundef nonnull align 8 dereferenceable(64) %this, ptr noundef %out, ptr %digits.coerce0, i64 %digits.coerce1) local_unnamed_addr #5 comdat align 2 personality ptr @__gxx_personality_v0 { -invoke.cont4: +entry: %separators = alloca %"class.fmt::v10::basic_memory_buffer.384", align 8 %conv = trunc i64 %digits.coerce1 to i32 %ptr_.i.i = getelementptr inbounds i8, ptr %separators, i64 8 @@ -129818,9 +129818,9 @@ invoke.cont4: %call.i1144 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %thousands_sep_.i) #30 br i1 %call.i1144, label %while.end, label %if.end.i -if.end.i: ; preds = %invoke.cont4, %_ZN3fmt3v106detail6bufferIiE9push_backERKi.exit26 - %state.sroa.3.046 = phi i32 [ %add28.i, %_ZN3fmt3v106detail6bufferIiE9push_backERKi.exit26 ], [ 0, %invoke.cont4 ] - %state.sroa.0.045 = phi ptr [ %state.sroa.0.1, %_ZN3fmt3v106detail6bufferIiE9push_backERKi.exit26 ], [ %call.i, %invoke.cont4 ] +if.end.i: ; preds = %entry, %_ZN3fmt3v106detail6bufferIiE9push_backERKi.exit26 + %state.sroa.3.046 = phi i32 [ %add28.i, %_ZN3fmt3v106detail6bufferIiE9push_backERKi.exit26 ], [ 0, %entry ] + %state.sroa.0.045 = phi ptr [ %state.sroa.0.1, %_ZN3fmt3v106detail6bufferIiE9push_backERKi.exit26 ], [ %call.i, %entry ] %call3.i = call ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE3endEv(ptr noundef nonnull align 8 dereferenceable(32) %this) #30 %cmp.i.i12 = icmp eq ptr %state.sroa.0.045, %call3.i br i1 %cmp.i.i12, label %if.then5.i, label %if.end8.i @@ -129892,7 +129892,7 @@ _ZN3fmt3v106detail6bufferIiE9push_backERKi.exit26: ; preds = %if.end, %.noexc25 %call.i11 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %thousands_sep_.i) #30 br i1 %call.i11, label %while.end, label %if.end.i -while.end: ; preds = %invoke.cont6, %_ZN3fmt3v106detail6bufferIiE9push_backERKi.exit26, %if.end8.i, %invoke.cont4 +while.end: ; preds = %invoke.cont6, %_ZN3fmt3v106detail6bufferIiE9push_backERKi.exit26, %if.end8.i, %entry %cmp1249 = icmp sgt i32 %conv, 0 br i1 %cmp1249, label %for.body.preheader, label %for.end diff --git a/bench/glog/optimized/mock-log_unittest.cc.ll b/bench/glog/optimized/mock-log_unittest.cc.ll index fe2d1361726..27c154d2397 100644 --- a/bench/glog/optimized/mock-log_unittest.cc.ll +++ b/bench/glog/optimized/mock-log_unittest.cc.ll @@ -9626,6 +9626,7 @@ _ZN6google12glog_testing13ScopedMockLogD2Ev.exit: ; preds = %579 ; Function Attrs: mustprogress uwtable define linkonce_odr hidden noundef nonnull align 8 dereferenceable(400) ptr @_ZN7testing8internal16TypedExpectationIFvN6google11LogSeverityERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESB_EE8WillOnceENS_10OnceActionISC_EE(ptr noundef nonnull align 8 dereferenceable(400) %0, ptr noundef %1) local_unnamed_addr #3 comdat align 2 personality ptr @__gxx_personality_v0 { + %.sroa.4 = alloca [24 x i8], align 8 %3 = alloca %"class.testing::Action", align 8 %4 = alloca %"struct.testing::internal::TypedExpectation &, const std::__cxx11::basic_string &)>::ActionAdaptor", align 8 tail call void @llvm.experimental.noalias.scope.decl(metadata !140) @@ -9658,8 +9659,10 @@ _ZSt11make_sharedIN7testing10OnceActionIFvN6google11LogSeverityERKNSt7__cxx1112b store ptr %5, ptr %16, align 8, !alias.scope !140 store ptr %8, ptr %4, align 8, !alias.scope !140 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %3, i8 0, i64 32, i1 false) + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %.sroa.4) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.4, i8 0, i64 24, i1 false) %17 = invoke noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #26 - to label %18 unwind label %30 + to label %18 unwind label %31 18: ; preds = %_ZSt11make_sharedIN7testing10OnceActionIFvN6google11LogSeverityERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESB_EEEJSD_EESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueESG_E4typeEEDpOT0_.exit store ptr %8, ptr %17, align 8 @@ -9669,58 +9672,60 @@ _ZSt11make_sharedIN7testing10OnceActionIFvN6google11LogSeverityERKNSt7__cxx1112b store ptr null, ptr %4, align 8 store ptr %17, ptr %3, align 8 %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %3, i64 8 - store i64 0, ptr %.sroa.4.0..sroa_idx, align 8 - %20 = getelementptr inbounds i8, ptr %3, i64 16 - store ptr @_ZNSt17_Function_handlerIFvN6google11LogSeverityERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_EN7testing8internal16TypedExpectationISA_E13ActionAdaptorEE10_M_managerERSt9_Any_dataRKSH_St18_Manager_operation, ptr %20, align 8 - %21 = getelementptr inbounds i8, ptr %3, i64 24 - store ptr @_ZNSt17_Function_handlerIFvN6google11LogSeverityERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_EN7testing8internal16TypedExpectationISA_E13ActionAdaptorEE9_M_invokeERKSt9_Any_dataOS1_S9_S9_, ptr %21, align 8 - %22 = invoke noundef nonnull align 8 dereferenceable(400) ptr @_ZN7testing8internal16TypedExpectationIFvN6google11LogSeverityERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESB_EE8WillOnceITpTnRiJEvEERSD_NS_6ActionISC_EE(ptr noundef nonnull align 8 dereferenceable(400) %0, ptr noundef nonnull %3) - to label %23 unwind label %32 - -23: ; preds = %18 - %24 = load ptr, ptr %20, align 8 - %.not.i.i.i = icmp eq ptr %24, null - br i1 %.not.i.i.i, label %_ZN7testing8internal16TypedExpectationIFvN6google11LogSeverityERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESB_EE13ActionAdaptorD2Ev.exit, label %25 - -25: ; preds = %23 - %26 = invoke noundef zeroext i1 %24(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(16) %3, i32 noundef 3) - to label %_ZN7testing8internal16TypedExpectationIFvN6google11LogSeverityERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESB_EE13ActionAdaptorD2Ev.exit unwind label %27 + %20 = load i64, ptr %.sroa.4, align 8 + store i64 %20, ptr %.sroa.4.0..sroa_idx, align 8 + %21 = getelementptr inbounds i8, ptr %3, i64 16 + store ptr @_ZNSt17_Function_handlerIFvN6google11LogSeverityERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_EN7testing8internal16TypedExpectationISA_E13ActionAdaptorEE10_M_managerERSt9_Any_dataRKSH_St18_Manager_operation, ptr %21, align 8 + %22 = getelementptr inbounds i8, ptr %3, i64 24 + store ptr @_ZNSt17_Function_handlerIFvN6google11LogSeverityERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_EN7testing8internal16TypedExpectationISA_E13ActionAdaptorEE9_M_invokeERKSt9_Any_dataOS1_S9_S9_, ptr %22, align 8 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %.sroa.4) + %23 = invoke noundef nonnull align 8 dereferenceable(400) ptr @_ZN7testing8internal16TypedExpectationIFvN6google11LogSeverityERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESB_EE8WillOnceITpTnRiJEvEERSD_NS_6ActionISC_EE(ptr noundef nonnull align 8 dereferenceable(400) %0, ptr noundef nonnull %3) + to label %24 unwind label %33 + +24: ; preds = %18 + %25 = load ptr, ptr %21, align 8 + %.not.i.i.i = icmp eq ptr %25, null + br i1 %.not.i.i.i, label %_ZN7testing8internal16TypedExpectationIFvN6google11LogSeverityERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESB_EE13ActionAdaptorD2Ev.exit, label %26 -27: ; preds = %25 - %28 = landingpad { ptr, i32 } +26: ; preds = %24 + %27 = invoke noundef zeroext i1 %25(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(16) %3, i32 noundef 3) + to label %_ZN7testing8internal16TypedExpectationIFvN6google11LogSeverityERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESB_EE13ActionAdaptorD2Ev.exit unwind label %28 + +28: ; preds = %26 + %29 = landingpad { ptr, i32 } catch ptr null - %29 = extractvalue { ptr, i32 } %28, 0 - call void @__clang_call_terminate(ptr %29) #27 + %30 = extractvalue { ptr, i32 } %29, 0 + call void @__clang_call_terminate(ptr %30) #27 unreachable -_ZN7testing8internal16TypedExpectationIFvN6google11LogSeverityERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESB_EE13ActionAdaptorD2Ev.exit: ; preds = %25, %23 - ret ptr %22 +_ZN7testing8internal16TypedExpectationIFvN6google11LogSeverityERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESB_EE13ActionAdaptorD2Ev.exit: ; preds = %26, %24 + ret ptr %23 -30: ; preds = %_ZSt11make_sharedIN7testing10OnceActionIFvN6google11LogSeverityERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESB_EEEJSD_EESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueESG_E4typeEEDpOT0_.exit - %31 = landingpad { ptr, i32 } +31: ; preds = %_ZSt11make_sharedIN7testing10OnceActionIFvN6google11LogSeverityERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESB_EEEJSD_EESt10shared_ptrINSt9enable_ifIXntsr8is_arrayIT_EE5valueESG_E4typeEEDpOT0_.exit + %32 = landingpad { ptr, i32 } cleanup br label %_ZN7testing6ActionIFvN6google11LogSeverityERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_EED2Ev.exit6 -32: ; preds = %18 - %33 = landingpad { ptr, i32 } +33: ; preds = %18 + %34 = landingpad { ptr, i32 } cleanup - %34 = load ptr, ptr %20, align 8 - %.not.i.i.i5 = icmp eq ptr %34, null - br i1 %.not.i.i.i5, label %_ZN7testing6ActionIFvN6google11LogSeverityERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_EED2Ev.exit6, label %35 + %35 = load ptr, ptr %21, align 8 + %.not.i.i.i5 = icmp eq ptr %35, null + br i1 %.not.i.i.i5, label %_ZN7testing6ActionIFvN6google11LogSeverityERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_EED2Ev.exit6, label %36 -35: ; preds = %32 - %36 = invoke noundef zeroext i1 %34(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(16) %3, i32 noundef 3) - to label %_ZN7testing6ActionIFvN6google11LogSeverityERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_EED2Ev.exit6 unwind label %37 +36: ; preds = %33 + %37 = invoke noundef zeroext i1 %35(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(16) %3, i32 noundef 3) + to label %_ZN7testing6ActionIFvN6google11LogSeverityERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_EED2Ev.exit6 unwind label %38 -37: ; preds = %35 - %38 = landingpad { ptr, i32 } +38: ; preds = %36 + %39 = landingpad { ptr, i32 } catch ptr null - %39 = extractvalue { ptr, i32 } %38, 0 - call void @__clang_call_terminate(ptr %39) #27 + %40 = extractvalue { ptr, i32 } %39, 0 + call void @__clang_call_terminate(ptr %40) #27 unreachable -_ZN7testing6ActionIFvN6google11LogSeverityERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_EED2Ev.exit6: ; preds = %35, %32, %30 - %.pn = phi { ptr, i32 } [ %31, %30 ], [ %33, %32 ], [ %33, %35 ] +_ZN7testing6ActionIFvN6google11LogSeverityERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_EED2Ev.exit6: ; preds = %36, %33, %31 + %.pn = phi { ptr, i32 } [ %32, %31 ], [ %34, %33 ], [ %34, %36 ] call void @_ZN7testing8internal16TypedExpectationIFvN6google11LogSeverityERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESB_EE13ActionAdaptorD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4) #24 resume { ptr, i32 } %.pn } diff --git a/bench/gromacs/optimized/analysismodule.cpp.ll b/bench/gromacs/optimized/analysismodule.cpp.ll index 3cc26ea7a4f..e4fbcd65901 100644 --- a/bench/gromacs/optimized/analysismodule.cpp.ll +++ b/bench/gromacs/optimized/analysismodule.cpp.ll @@ -1076,20 +1076,18 @@ define void @_ZN3gmx24TrajectoryAnalysisModuleC2Ev(ptr nocapture noundef nonnull %3 = tail call noalias noundef nonnull dereferenceable(120) ptr @_Znwm(i64 noundef 120) #23 %4 = getelementptr inbounds i8, ptr %3, i64 32 %5 = getelementptr inbounds i8, ptr %3, i64 48 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(88) %3, i8 0, i64 88, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(96) %3, i8 0, i64 96, i1 false) store ptr %4, ptr %5, align 8 %6 = getelementptr inbounds i8, ptr %3, i64 56 store ptr %4, ptr %6, align 8 %7 = getelementptr inbounds i8, ptr %3, i64 80 store i32 0, ptr %7, align 8 - %8 = getelementptr inbounds i8, ptr %3, i64 88 - store ptr null, ptr %8, align 8 - %9 = getelementptr inbounds i8, ptr %3, i64 96 + %8 = getelementptr inbounds i8, ptr %3, i64 96 + store ptr %7, ptr %8, align 8 + %9 = getelementptr inbounds i8, ptr %3, i64 104 store ptr %7, ptr %9, align 8 - %10 = getelementptr inbounds i8, ptr %3, i64 104 - store ptr %7, ptr %10, align 8 - %11 = getelementptr inbounds i8, ptr %3, i64 112 - store i64 0, ptr %11, align 8 + %10 = getelementptr inbounds i8, ptr %3, i64 112 + store i64 0, ptr %10, align 8 store ptr %3, ptr %2, align 8 ret void } diff --git a/bench/gromacs/optimized/filenameoptionmanager.cpp.ll b/bench/gromacs/optimized/filenameoptionmanager.cpp.ll index d7f9d9215df..79fd5bd668b 100644 --- a/bench/gromacs/optimized/filenameoptionmanager.cpp.ll +++ b/bench/gromacs/optimized/filenameoptionmanager.cpp.ll @@ -216,25 +216,24 @@ _ZN3gmx17IOptionsContainer9addOptionINS_12StringOptionEEEPNT_8InfoTypeERKS3_.exi %6 = getelementptr inbounds i8, ptr %3, i64 16 store ptr %2, ptr %6, align 8 %7 = getelementptr inbounds i8, ptr %3, i64 24 - %8 = getelementptr inbounds i8, ptr %3, i64 32 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %8, i8 0, i64 56, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %7, i8 0, i64 64, i1 false) store ptr getelementptr inbounds (i8, ptr @_ZTVN3gmx12StringOptionE, i64 16), ptr %3, align 8 - %9 = getelementptr inbounds i8, ptr %3, i64 88 - store ptr null, ptr %9, align 8 - %10 = getelementptr inbounds i8, ptr %3, i64 96 - store i32 0, ptr %10, align 8 - %11 = getelementptr inbounds i8, ptr %3, i64 100 - store i32 -1, ptr %11, align 4 - %12 = getelementptr inbounds i8, ptr %0, i64 8 - %13 = load ptr, ptr %12, align 8 - %14 = getelementptr inbounds i8, ptr %13, i64 8 - %15 = getelementptr inbounds i8, ptr %3, i64 64 - store ptr %14, ptr %15, align 8 + %8 = getelementptr inbounds i8, ptr %3, i64 88 + store ptr null, ptr %8, align 8 + %9 = getelementptr inbounds i8, ptr %3, i64 96 + store i32 0, ptr %9, align 8 + %10 = getelementptr inbounds i8, ptr %3, i64 100 + store i32 -1, ptr %10, align 4 + %11 = getelementptr inbounds i8, ptr %0, i64 8 + %12 = load ptr, ptr %11, align 8 + %13 = getelementptr inbounds i8, ptr %12, i64 8 + %14 = getelementptr inbounds i8, ptr %3, i64 64 + store ptr %13, ptr %14, align 8 store ptr @.str, ptr %7, align 8 - %16 = load ptr, ptr %1, align 8 - %17 = getelementptr inbounds i8, ptr %16, i64 24 - %18 = load ptr, ptr %17, align 8 - %19 = call noundef ptr %18(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(48) %3) + %15 = load ptr, ptr %1, align 8 + %16 = getelementptr inbounds i8, ptr %15, i64 24 + %17 = load ptr, ptr %16, align 8 + %18 = call noundef ptr %17(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(48) %3) ret void } diff --git a/bench/gromacs/optimized/gyrate.cpp.ll b/bench/gromacs/optimized/gyrate.cpp.ll index 6bb3c60b19b..42b885d3031 100644 --- a/bench/gromacs/optimized/gyrate.cpp.ll +++ b/bench/gromacs/optimized/gyrate.cpp.ll @@ -317,24 +317,23 @@ _ZN3gmx17IOptionsContainer9addOptionINS_10EnumOptionINS_15analysismodules12_GLOB %43 = getelementptr inbounds i8, ptr %6, i64 16 store ptr @.str.16, ptr %43, align 8 %44 = getelementptr inbounds i8, ptr %6, i64 24 - %45 = getelementptr inbounds i8, ptr %6, i64 32 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %45, i8 0, i64 56, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %44, i8 0, i64 64, i1 false) store ptr getelementptr inbounds (i8, ptr @_ZTVN3gmx10EnumOptionINS_15analysismodules12_GLOBAL__N_110GyrateModeEEE, i64 16), ptr %6, align 8 - %46 = getelementptr inbounds i8, ptr %6, i64 88 - %47 = getelementptr inbounds i8, ptr %6, i64 96 - %48 = getelementptr inbounds i8, ptr %0, i64 80 - %49 = getelementptr inbounds i8, ptr %6, i64 64 - store ptr %48, ptr %49, align 8 + %45 = getelementptr inbounds i8, ptr %6, i64 88 + %46 = getelementptr inbounds i8, ptr %6, i64 96 + %47 = getelementptr inbounds i8, ptr %0, i64 80 + %48 = getelementptr inbounds i8, ptr %6, i64 64 + store ptr %47, ptr %48, align 8 store i64 0, ptr %7, align 8 - %50 = getelementptr inbounds i8, ptr %6, i64 48 - store ptr %7, ptr %50, align 8 - store ptr @_ZN3gmx15analysismodules12_GLOBAL__N_117c_GyrateModeNamesE, ptr %46, align 8 - store i32 3, ptr %47, align 8 + %49 = getelementptr inbounds i8, ptr %6, i64 48 + store ptr %7, ptr %49, align 8 + store ptr @_ZN3gmx15analysismodules12_GLOBAL__N_117c_GyrateModeNamesE, ptr %45, align 8 + store i32 3, ptr %46, align 8 store ptr @.str.17, ptr %44, align 8 - %51 = load ptr, ptr %1, align 8 - %52 = getelementptr inbounds i8, ptr %51, i64 24 - %53 = load ptr, ptr %52, align 8 - %54 = call noundef ptr %53(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(48) %6) + %50 = load ptr, ptr %1, align 8 + %51 = getelementptr inbounds i8, ptr %50, i64 24 + %52 = load ptr, ptr %51, align 8 + %53 = call noundef ptr %52(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(48) %6) call void @_ZN3gmx26TrajectoryAnalysisSettings8setFlagsEm(ptr noundef nonnull align 8 dereferenceable(8) %2, i64 noundef 16) call void @_ZN3gmx26TrajectoryAnalysisSettings6setPBCEb(ptr noundef nonnull align 8 dereferenceable(8) %2, i1 noundef zeroext true) ret void diff --git a/bench/gromacs/optimized/imdsocket.cpp.ll b/bench/gromacs/optimized/imdsocket.cpp.ll index 3a0ff6c3245..7f01e4bd4d4 100644 --- a/bench/gromacs/optimized/imdsocket.cpp.ll +++ b/bench/gromacs/optimized/imdsocket.cpp.ll @@ -85,28 +85,27 @@ declare i32 @sleep(i32 noundef) local_unnamed_addr #5 ; Function Attrs: mustprogress nounwind uwtable define noundef i32 @_ZN3gmx12imdsock_bindEPNS_9IMDSocketEi(ptr noundef %0, i32 noundef %1) local_unnamed_addr #7 { - %3 = getelementptr inbounds i8, ptr %0, i64 4 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %3, i8 0, i64 12, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %0, i8 0, i64 16, i1 false) store i16 2, ptr %0, align 4 - %4 = trunc i32 %1 to i16 - %5 = tail call zeroext i16 @htons(i16 noundef zeroext %4) #14 - %6 = getelementptr inbounds i8, ptr %0, i64 2 - store i16 %5, ptr %6, align 2 - %7 = getelementptr inbounds i8, ptr %0, i64 16 - %8 = load i32, ptr %7, align 4 - %9 = tail call i32 @bind(i32 noundef %8, ptr noundef nonnull %0, i32 noundef 16) #13 - %.not = icmp eq i32 %9, 0 - br i1 %.not, label %14, label %10 - -10: ; preds = %2 - %11 = tail call ptr @__errno_location() #14 - %12 = load i32, ptr %11, align 4 - %13 = tail call ptr @strerror(i32 noundef %12) #13 - tail call fastcc void @_ZN3gmxL15print_IMD_errorEPKciPc(i32 noundef 202, ptr noundef %13) - br label %14 + %3 = trunc i32 %1 to i16 + %4 = tail call zeroext i16 @htons(i16 noundef zeroext %3) #14 + %5 = getelementptr inbounds i8, ptr %0, i64 2 + store i16 %4, ptr %5, align 2 + %6 = getelementptr inbounds i8, ptr %0, i64 16 + %7 = load i32, ptr %6, align 4 + %8 = tail call i32 @bind(i32 noundef %7, ptr noundef nonnull %0, i32 noundef 16) #13 + %.not = icmp eq i32 %8, 0 + br i1 %.not, label %13, label %9 -14: ; preds = %10, %2 - ret i32 %9 +9: ; preds = %2 + %10 = tail call ptr @__errno_location() #14 + %11 = load i32, ptr %10, align 4 + %12 = tail call ptr @strerror(i32 noundef %11) #13 + tail call fastcc void @_ZN3gmxL15print_IMD_errorEPKciPc(i32 noundef 202, ptr noundef %12) + br label %13 + +13: ; preds = %9, %2 + ret i32 %8 } ; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write) diff --git a/bench/gromacs/optimized/nbnxmsetuphelpers.cpp.ll b/bench/gromacs/optimized/nbnxmsetuphelpers.cpp.ll index 65d4fb5aa9f..40a2d112e52 100644 --- a/bench/gromacs/optimized/nbnxmsetuphelpers.cpp.ll +++ b/bench/gromacs/optimized/nbnxmsetuphelpers.cpp.ll @@ -1035,11 +1035,10 @@ define void @_ZN5nblib18createStepWorkloadEv(ptr dead_on_unwind noalias nocaptur ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: write) uwtable define void @_ZN5nblib27createSimulationWorkloadGpuEv(ptr dead_on_unwind noalias nocapture writable writeonly sret(%"class.gmx::SimulationWorkload") align 1 %0) local_unnamed_addr #14 { - %2 = getelementptr inbounds i8, ptr %0, i64 1 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(24) %2, i8 0, i64 23, i1 false), !alias.scope !10 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(24) %0, i8 0, i64 24, i1 false), !alias.scope !10 store i8 1, ptr %0, align 1, !alias.scope !10 - %3 = getelementptr inbounds i8, ptr %0, i64 4 - store i8 1, ptr %3, align 1 + %2 = getelementptr inbounds i8, ptr %0, i64 4 + store i8 1, ptr %2, align 1 ret void } diff --git a/bench/gromacs/optimized/plot.cpp.ll b/bench/gromacs/optimized/plot.cpp.ll index e20cc75f08a..06edc7597c2 100644 --- a/bench/gromacs/optimized/plot.cpp.ll +++ b/bench/gromacs/optimized/plot.cpp.ll @@ -912,21 +912,20 @@ _ZN3gmx17IOptionsContainer9addOptionINS_10EnumOptionI9XvgFormatEEEEPNT_8InfoType %5 = getelementptr inbounds i8, ptr %2, i64 16 store ptr @.str, ptr %5, align 8 %6 = getelementptr inbounds i8, ptr %2, i64 24 - %7 = getelementptr inbounds i8, ptr %2, i64 32 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %7, i8 0, i64 56, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %6, i8 0, i64 64, i1 false) store ptr getelementptr inbounds (i8, ptr @_ZTVN3gmx10EnumOptionI9XvgFormatEE, i64 16), ptr %2, align 8 - %8 = getelementptr inbounds i8, ptr %2, i64 88 - %9 = getelementptr inbounds i8, ptr %2, i64 96 - store ptr @_ZN3gmxL16c_xvgFormatNamesE, ptr %8, align 8 - store i32 3, ptr %9, align 8 - %10 = getelementptr inbounds i8, ptr %0, i64 12 - %11 = getelementptr inbounds i8, ptr %2, i64 64 - store ptr %10, ptr %11, align 8 + %7 = getelementptr inbounds i8, ptr %2, i64 88 + %8 = getelementptr inbounds i8, ptr %2, i64 96 + store ptr @_ZN3gmxL16c_xvgFormatNamesE, ptr %7, align 8 + store i32 3, ptr %8, align 8 + %9 = getelementptr inbounds i8, ptr %0, i64 12 + %10 = getelementptr inbounds i8, ptr %2, i64 64 + store ptr %9, ptr %10, align 8 store ptr @.str.1, ptr %6, align 8 - %12 = load ptr, ptr %1, align 8 - %13 = getelementptr inbounds i8, ptr %12, i64 24 - %14 = load ptr, ptr %13, align 8 - %15 = call noundef ptr %14(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(48) %2) + %11 = load ptr, ptr %1, align 8 + %12 = getelementptr inbounds i8, ptr %11, i64 24 + %13 = load ptr, ptr %12, align 8 + %14 = call noundef ptr %13(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(48) %2) ret void } diff --git a/bench/grpc/optimized/client_channel.cc.ll b/bench/grpc/optimized/client_channel.cc.ll index 2ab0e1430f8..1882026a2b3 100644 --- a/bench/grpc/optimized/client_channel.cc.ll +++ b/bench/grpc/optimized/client_channel.cc.ll @@ -6291,7 +6291,7 @@ do.body: ; preds = %if.then, %invoke.co %_M_manager.i.i = getelementptr inbounds i8, ptr %agg.tmp15, i64 16 %_M_invoker.i = getelementptr inbounds i8, ptr %agg.tmp15, i64 24 %24 = getelementptr inbounds i8, ptr %agg.tmp15, i64 8 - store i64 0, ptr %24, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %24, i8 0, i64 24, i1 false) %25 = ptrtoint ptr %22 to i64 store i64 %25, ptr %agg.tmp15, align 8 store ptr @_ZNSt17_Function_handlerIFvvEZN9grpc_core13ClientChannel20PromiseBasedCallData25MakeNameResolutionPromiseENS1_8CallArgsEEUlvE_E9_M_invokeERKSt9_Any_data, ptr %_M_invoker.i, align 8 @@ -13969,7 +13969,7 @@ do.end: %_M_manager.i.i = getelementptr inbounds i8, ptr %agg.tmp, i64 16 %_M_invoker.i = getelementptr inbounds i8, ptr %agg.tmp, i64 24 %6 = getelementptr inbounds i8, ptr %agg.tmp, i64 8 - store i64 0, ptr %6, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %6, i8 0, i64 24, i1 false) %7 = ptrtoint ptr %this to i64 store i64 %7, ptr %agg.tmp, align 8 store ptr @_ZNSt17_Function_handlerIFvvEZN9grpc_core13ClientChannel24ConnectivityWatcherAdderC1EPS2_23grpc_connectivity_stateSt10unique_ptrINS1_38AsyncConnectivityStateWatcherInterfaceENS1_16OrphanableDeleteEEEUlvE_E9_M_invokeERKSt9_Any_data, ptr %_M_invoker.i, align 8 @@ -35709,7 +35709,7 @@ if.else.i.i: ; preds = %entry _ZN9grpc_core5Arena3NewINS_17BackendMetricDataEJEEEPT_DpOT0_.exit: ; preds = %if.then.i.i, %if.else.i.i %retval.0.i.i = phi ptr [ %add.ptr3.i.i, %if.then.i.i ], [ %call4.i.i, %if.else.i.i ] %3 = getelementptr inbounds i8, ptr %retval.0.i.i, i64 40 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(184) %3, i8 0, i64 112, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(184) %3, i8 0, i64 144, i1 false) store double -1.000000e+00, ptr %retval.0.i.i, align 8 %mem_utilization.i.i.i = getelementptr inbounds i8, ptr %retval.0.i.i, i64 8 store double -1.000000e+00, ptr %mem_utilization.i.i.i, align 8 @@ -35730,14 +35730,10 @@ _ZN9grpc_core5Arena3NewINS_17BackendMetricDataEJEEEPT_DpOT0_.exit: ; preds = %if %_M_right.i.i.i.i.i3.i.i.i = getelementptr inbounds i8, ptr %retval.0.i.i, i64 120 store ptr %5, ptr %_M_right.i.i.i.i.i3.i.i.i, align 8 %6 = getelementptr inbounds i8, ptr %retval.0.i.i, i64 144 - %_M_parent.i.i.i.i.i5.i.i.i = getelementptr inbounds i8, ptr %retval.0.i.i, i64 152 - store ptr null, ptr %_M_parent.i.i.i.i.i5.i.i.i, align 8 %_M_left.i.i.i.i.i6.i.i.i = getelementptr inbounds i8, ptr %retval.0.i.i, i64 160 store ptr %6, ptr %_M_left.i.i.i.i.i6.i.i.i, align 8 %_M_right.i.i.i.i.i7.i.i.i = getelementptr inbounds i8, ptr %retval.0.i.i, i64 168 store ptr %6, ptr %_M_right.i.i.i.i.i7.i.i.i, align 8 - %_M_node_count.i.i.i.i.i8.i.i.i = getelementptr inbounds i8, ptr %retval.0.i.i, i64 176 - store i64 0, ptr %_M_node_count.i.i.i.i.i8.i.i.i, align 8 ret ptr %retval.0.i.i } @@ -40108,7 +40104,7 @@ _ZN9grpc_core17WeakRefCountedPtrINS_19SubchannelInterfaceEED2Ev.exit: ; preds = %_M_manager.i.i = getelementptr inbounds i8, ptr %agg.tmp, i64 16 %_M_invoker.i = getelementptr inbounds i8, ptr %agg.tmp, i64 24 %3 = getelementptr inbounds i8, ptr %agg.tmp, i64 8 - store i64 0, ptr %3, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %3, i8 0, i64 24, i1 false) %4 = ptrtoint ptr %this to i64 store i64 %4, ptr %agg.tmp, align 8 store ptr @_ZNSt17_Function_handlerIFvvEZN9grpc_core13ClientChannel17SubchannelWrapper6OrphanEvEUlvE_E9_M_invokeERKSt9_Any_data, ptr %_M_invoker.i, align 8 @@ -41784,7 +41780,7 @@ if.then: ; preds = %invoke.cont %_M_manager.i.i = getelementptr inbounds i8, ptr %agg.tmp, i64 16 %_M_invoker.i = getelementptr inbounds i8, ptr %agg.tmp, i64 24 %3 = getelementptr inbounds i8, ptr %agg.tmp, i64 8 - store i64 0, ptr %3, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %3, i8 0, i64 24, i1 false) %4 = ptrtoint ptr %0 to i64 store i64 %4, ptr %agg.tmp, align 8 store ptr @_ZNSt17_Function_handlerIFvvEZN9grpc_core13ClientChannel17SubchannelWrapper14WatcherWrapperD1EvEUlvE_E9_M_invokeERKSt9_Any_data, ptr %_M_invoker.i, align 8 diff --git a/bench/grpc/optimized/grpc_tls_certificate_provider.cc.ll b/bench/grpc/optimized/grpc_tls_certificate_provider.cc.ll index e7da80245af..bc439b60dcc 100644 --- a/bench/grpc/optimized/grpc_tls_certificate_provider.cc.ll +++ b/bench/grpc/optimized/grpc_tls_certificate_provider.cc.ll @@ -322,7 +322,7 @@ entry: tail call void @llvm.experimental.noalias.scope.decl(metadata !4) %call.i2 = tail call noalias noundef nonnull dereferenceable(160) ptr @_Znwm(i64 noundef 160) #26 %0 = getelementptr inbounds i8, ptr %call.i2, i64 32 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(160) %0, i8 0, i64 96, i1 false), !noalias !4 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(160) %0, i8 0, i64 128, i1 false), !noalias !4 %refs_.i.i.i = getelementptr inbounds i8, ptr %call.i2, i64 8 store i64 1, ptr %refs_.i.i.i, align 8, !noalias !4 store ptr getelementptr inbounds (i8, ptr @_ZTV32grpc_tls_certificate_distributor, i64 16), ptr %call.i2, align 8, !noalias !4 @@ -335,15 +335,11 @@ entry: store ptr %1, ptr %_M_right.i.i.i.i.i.i.i, align 8, !noalias !4 %_M_node_count.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %call.i2, i64 72 %2 = getelementptr inbounds i8, ptr %call.i2, i64 120 - %_M_parent.i.i.i.i.i1.i.i = getelementptr inbounds i8, ptr %call.i2, i64 128 - store ptr null, ptr %_M_parent.i.i.i.i.i1.i.i, align 8, !noalias !4 %_M_left.i.i.i.i.i2.i.i = getelementptr inbounds i8, ptr %call.i2, i64 136 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %_M_node_count.i.i.i.i.i.i.i, i8 0, i64 40, i1 false), !noalias !4 store ptr %2, ptr %_M_left.i.i.i.i.i2.i.i, align 8, !noalias !4 %_M_right.i.i.i.i.i3.i.i = getelementptr inbounds i8, ptr %call.i2, i64 144 store ptr %2, ptr %_M_right.i.i.i.i.i3.i.i, align 8, !noalias !4 - %_M_node_count.i.i.i.i.i4.i.i = getelementptr inbounds i8, ptr %call.i2, i64 152 - store i64 0, ptr %_M_node_count.i.i.i.i.i4.i.i, align 8, !noalias !4 store ptr %call.i2, ptr %distributor_, align 8, !alias.scope !4 %root_certificate_ = getelementptr inbounds i8, ptr %this, i64 24 tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EOS4_(ptr noundef nonnull align 8 dereferenceable(32) %root_certificate_, ptr noundef nonnull align 8 dereferenceable(32) %root_certificate) #27 @@ -771,7 +767,7 @@ entry: invoke.cont3: ; preds = %entry %0 = getelementptr inbounds i8, ptr %call.i4, i64 32 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(160) %0, i8 0, i64 96, i1 false), !noalias !13 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(160) %0, i8 0, i64 128, i1 false), !noalias !13 %refs_.i.i.i = getelementptr inbounds i8, ptr %call.i4, i64 8 store i64 1, ptr %refs_.i.i.i, align 8, !noalias !13 store ptr getelementptr inbounds (i8, ptr @_ZTV32grpc_tls_certificate_distributor, i64 16), ptr %call.i4, align 8, !noalias !13 @@ -784,15 +780,11 @@ invoke.cont3: ; preds = %entry store ptr %1, ptr %_M_right.i.i.i.i.i.i.i, align 8, !noalias !13 %_M_node_count.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %call.i4, i64 72 %2 = getelementptr inbounds i8, ptr %call.i4, i64 120 - %_M_parent.i.i.i.i.i1.i.i = getelementptr inbounds i8, ptr %call.i4, i64 128 - store ptr null, ptr %_M_parent.i.i.i.i.i1.i.i, align 8, !noalias !13 %_M_left.i.i.i.i.i2.i.i = getelementptr inbounds i8, ptr %call.i4, i64 136 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %_M_node_count.i.i.i.i.i.i.i, i8 0, i64 40, i1 false), !noalias !13 store ptr %2, ptr %_M_left.i.i.i.i.i2.i.i, align 8, !noalias !13 %_M_right.i.i.i.i.i3.i.i = getelementptr inbounds i8, ptr %call.i4, i64 144 store ptr %2, ptr %_M_right.i.i.i.i.i3.i.i, align 8, !noalias !13 - %_M_node_count.i.i.i.i.i4.i.i = getelementptr inbounds i8, ptr %call.i4, i64 152 - store i64 0, ptr %_M_node_count.i.i.i.i.i4.i.i, align 8, !noalias !13 store ptr %call.i4, ptr %distributor_, align 8, !alias.scope !13 %refresh_thread_ = getelementptr inbounds i8, ptr %this, i64 128 store i32 0, ptr %refresh_thread_, align 8 diff --git a/bench/hermes/optimized/RegexParser.cpp.ll b/bench/hermes/optimized/RegexParser.cpp.ll index a93c48c9d1a..d5e06aa5304 100644 --- a/bench/hermes/optimized/RegexParser.cpp.ll +++ b/bench/hermes/optimized/RegexParser.cpp.ll @@ -5582,6 +5582,7 @@ if.then.i.i.i.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i _ZNSt12_Vector_baseIhSaIhEEC2EmRKS0_.exit.thread.i25: ; preds = %_ZNSt6vectorIhSaIhEE17_S_check_init_lenEmRKS0_.exit.i %restConstraints_ = getelementptr inbounds i8, ptr %this, i64 56 + %6 = getelementptr inbounds i8, ptr %this, i64 64 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %elementConstraints_, i8 0, i64 48, i1 false) br label %if.end.i @@ -5589,6 +5590,8 @@ if.then.i.i.i.i.i15: ; preds = %if.then.i.i.i.i.i.i %__first.addr.0.i.i.i.i.i.ph = phi ptr [ %add.ptr.i.i.i, %if.then.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i.i.i.i, %if.then.i.i.i.i.i ] store ptr %__first.addr.0.i.i.i.i.i.ph, ptr %5, align 8 %restConstraints_67 = getelementptr inbounds i8, ptr %this, i64 56 + %7 = getelementptr inbounds i8, ptr %this, i64 64 + store i64 0, ptr %7, align 8 %call5.i.i.i.i.i.i16 = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %sub.ptr.div.i) #15 store ptr %call5.i.i.i.i.i.i16, ptr %restConstraints_67, align 8 %add.ptr.i.i.i17 = getelementptr i8, ptr %call5.i.i.i.i.i.i16, i64 %sub.ptr.div.i @@ -5603,11 +5606,11 @@ if.then.i.i.i.i.i.i.i.i.i22: ; preds = %if.then.i.i.i.i.i15 br label %if.end.i if.end.i: ; preds = %if.then.i.i.i.i.i.i.i.i.i22, %if.then.i.i.i.i.i15, %_ZNSt12_Vector_baseIhSaIhEEC2EmRKS0_.exit.thread.i25 - %6 = phi ptr [ %__first.addr.0.i.i.i.i.i.ph, %if.then.i.i.i.i.i15 ], [ %__first.addr.0.i.i.i.i.i.ph, %if.then.i.i.i.i.i.i.i.i.i22 ], [ null, %_ZNSt12_Vector_baseIhSaIhEEC2EmRKS0_.exit.thread.i25 ] + %8 = phi ptr [ %__first.addr.0.i.i.i.i.i.ph, %if.then.i.i.i.i.i15 ], [ %__first.addr.0.i.i.i.i.i.ph, %if.then.i.i.i.i.i.i.i.i.i22 ], [ null, %_ZNSt12_Vector_baseIhSaIhEEC2EmRKS0_.exit.thread.i25 ] + %9 = phi ptr [ %7, %if.then.i.i.i.i.i15 ], [ %7, %if.then.i.i.i.i.i.i.i.i.i22 ], [ %6, %_ZNSt12_Vector_baseIhSaIhEEC2EmRKS0_.exit.thread.i25 ] %restConstraints_69 = phi ptr [ %restConstraints_67, %if.then.i.i.i.i.i15 ], [ %restConstraints_67, %if.then.i.i.i.i.i.i.i.i.i22 ], [ %restConstraints_, %_ZNSt12_Vector_baseIhSaIhEEC2EmRKS0_.exit.thread.i25 ] %__first.addr.0.i.i.i.i.i23 = phi ptr [ %incdec.ptr.i.i.i.i.i19, %if.then.i.i.i.i.i15 ], [ %add.ptr.i.i.i17, %if.then.i.i.i.i.i.i.i.i.i22 ], [ null, %_ZNSt12_Vector_baseIhSaIhEEC2EmRKS0_.exit.thread.i25 ] - %7 = getelementptr inbounds i8, ptr %this, i64 64 - store ptr %__first.addr.0.i.i.i.i.i23, ptr %7, align 8 + store ptr %__first.addr.0.i.i.i.i.i23, ptr %9, align 8 %jumps_ = getelementptr inbounds i8, ptr %this, i64 80 %cmp3.i.not = icmp eq ptr %3, %4 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %jumps_, i8 0, i64 56, i1 false) @@ -5626,23 +5629,23 @@ _ZNSt12_Vector_baseIN6hermes5regex19RegexBytecodeStream18InstructionWrapperINS1_ _ZNSt6vectorIN6hermes5regex19RegexBytecodeStream18InstructionWrapperINS1_10Jump32InsnEEESaIS5_EE7reserveEm.exit: ; preds = %if.end.i, %_ZNSt12_Vector_baseIN6hermes5regex19RegexBytecodeStream18InstructionWrapperINS1_10Jump32InsnEEESaIS5_EE13_M_deallocateEPS5_m.exit.i %add.ptr.i.i = getelementptr inbounds i8, ptr %3, i64 -24 - %8 = load ptr, ptr %add.ptr.i.i, align 8 + %10 = load ptr, ptr %add.ptr.i.i, align 8 %_M_finish.i.i36 = getelementptr inbounds i8, ptr %3, i64 -16 - %9 = load ptr, ptr %_M_finish.i.i36, align 8 - %cmp.i.not6.i = icmp eq ptr %8, %9 + %11 = load ptr, ptr %_M_finish.i.i36, align 8 + %cmp.i.not6.i = icmp eq ptr %10, %11 br i1 %cmp.i.not6.i, label %_ZN6hermes5regex4Node23matchConstraintsForListERKSt6vectorIPS1_SaIS3_EE.exit, label %for.body.i for.body.i: ; preds = %_ZNSt6vectorIN6hermes5regex19RegexBytecodeStream18InstructionWrapperINS1_10Jump32InsnEEESaIS5_EE7reserveEm.exit, %for.body.i %result.08.i = phi i8 [ %or3.i, %for.body.i ], [ 0, %_ZNSt6vectorIN6hermes5regex19RegexBytecodeStream18InstructionWrapperINS1_10Jump32InsnEEESaIS5_EE7reserveEm.exit ] - %__begin2.sroa.0.07.i = phi ptr [ %incdec.ptr.i.i, %for.body.i ], [ %8, %_ZNSt6vectorIN6hermes5regex19RegexBytecodeStream18InstructionWrapperINS1_10Jump32InsnEEESaIS5_EE7reserveEm.exit ] - %10 = load ptr, ptr %__begin2.sroa.0.07.i, align 8 - %vtable.i = load ptr, ptr %10, align 8 + %__begin2.sroa.0.07.i = phi ptr [ %incdec.ptr.i.i, %for.body.i ], [ %10, %_ZNSt6vectorIN6hermes5regex19RegexBytecodeStream18InstructionWrapperINS1_10Jump32InsnEEESaIS5_EE7reserveEm.exit ] + %12 = load ptr, ptr %__begin2.sroa.0.07.i, align 8 + %vtable.i = load ptr, ptr %12, align 8 %vfn.i = getelementptr inbounds i8, ptr %vtable.i, i64 32 - %11 = load ptr, ptr %vfn.i, align 8 - %call5.i = tail call noundef zeroext i8 %11(ptr noundef nonnull align 8 dereferenceable(8) %10) #17 + %13 = load ptr, ptr %vfn.i, align 8 + %call5.i = tail call noundef zeroext i8 %13(ptr noundef nonnull align 8 dereferenceable(8) %12) #17 %or3.i = or i8 %call5.i, %result.08.i %incdec.ptr.i.i = getelementptr inbounds i8, ptr %__begin2.sroa.0.07.i, i64 8 - %cmp.i.not.i = icmp eq ptr %incdec.ptr.i.i, %9 + %cmp.i.not.i = icmp eq ptr %incdec.ptr.i.i, %11 br i1 %cmp.i.not.i, label %_ZN6hermes5regex4Node23matchConstraintsForListERKSt6vectorIPS1_SaIS3_EE.exit.loopexit, label %for.body.i _ZN6hermes5regex4Node23matchConstraintsForListERKSt6vectorIPS1_SaIS3_EE.exit.loopexit: ; preds = %for.body.i @@ -5650,20 +5653,20 @@ _ZN6hermes5regex4Node23matchConstraintsForListERKSt6vectorIPS1_SaIS3_EE.exit.loo br label %_ZN6hermes5regex4Node23matchConstraintsForListERKSt6vectorIPS1_SaIS3_EE.exit _ZN6hermes5regex4Node23matchConstraintsForListERKSt6vectorIPS1_SaIS3_EE.exit: ; preds = %_ZN6hermes5regex4Node23matchConstraintsForListERKSt6vectorIPS1_SaIS3_EE.exit.loopexit, %_ZNSt6vectorIN6hermes5regex19RegexBytecodeStream18InstructionWrapperINS1_10Jump32InsnEEESaIS5_EE7reserveEm.exit - %12 = phi ptr [ %6, %_ZNSt6vectorIN6hermes5regex19RegexBytecodeStream18InstructionWrapperINS1_10Jump32InsnEEESaIS5_EE7reserveEm.exit ], [ %.pre, %_ZN6hermes5regex4Node23matchConstraintsForListERKSt6vectorIPS1_SaIS3_EE.exit.loopexit ] + %14 = phi ptr [ %8, %_ZNSt6vectorIN6hermes5regex19RegexBytecodeStream18InstructionWrapperINS1_10Jump32InsnEEESaIS5_EE7reserveEm.exit ], [ %.pre, %_ZN6hermes5regex4Node23matchConstraintsForListERKSt6vectorIPS1_SaIS3_EE.exit.loopexit ] %result.0.lcssa.i = phi i8 [ 0, %_ZNSt6vectorIN6hermes5regex19RegexBytecodeStream18InstructionWrapperINS1_10Jump32InsnEEESaIS5_EE7reserveEm.exit ], [ %or3.i, %_ZN6hermes5regex4Node23matchConstraintsForListERKSt6vectorIPS1_SaIS3_EE.exit.loopexit ] - %add.ptr.i.i38 = getelementptr inbounds i8, ptr %12, i64 -1 + %add.ptr.i.i38 = getelementptr inbounds i8, ptr %14, i64 -1 store i8 %result.0.lcssa.i, ptr %add.ptr.i.i38, align 1 - %13 = load ptr, ptr %5, align 8 - %add.ptr.i.i40 = getelementptr inbounds i8, ptr %13, i64 -1 - %14 = load i8, ptr %add.ptr.i.i40, align 1 - %15 = load ptr, ptr %7, align 8 - %add.ptr.i.i42 = getelementptr inbounds i8, ptr %15, i64 -1 - store i8 %14, ptr %add.ptr.i.i42, align 1 - %16 = load ptr, ptr %_M_finish.i.i.i.i, align 8 - %17 = load ptr, ptr %alternatives_, align 8 - %sub.ptr.lhs.cast.i44 = ptrtoint ptr %16 to i64 - %sub.ptr.rhs.cast.i45 = ptrtoint ptr %17 to i64 + %15 = load ptr, ptr %5, align 8 + %add.ptr.i.i40 = getelementptr inbounds i8, ptr %15, i64 -1 + %16 = load i8, ptr %add.ptr.i.i40, align 1 + %17 = load ptr, ptr %9, align 8 + %add.ptr.i.i42 = getelementptr inbounds i8, ptr %17, i64 -1 + store i8 %16, ptr %add.ptr.i.i42, align 1 + %18 = load ptr, ptr %_M_finish.i.i.i.i, align 8 + %19 = load ptr, ptr %alternatives_, align 8 + %sub.ptr.lhs.cast.i44 = ptrtoint ptr %18 to i64 + %sub.ptr.rhs.cast.i45 = ptrtoint ptr %19 to i64 %sub.ptr.sub.i46 = sub i64 %sub.ptr.lhs.cast.i44, %sub.ptr.rhs.cast.i45 %sub.ptr.div.i47 = sdiv exact i64 %sub.ptr.sub.i46, 24 %sub = add nsw i64 %sub.ptr.div.i47, -1 @@ -5673,40 +5676,40 @@ _ZN6hermes5regex4Node23matchConstraintsForListERKSt6vectorIPS1_SaIS3_EE.exit: ; for.body: ; preds = %_ZN6hermes5regex4Node23matchConstraintsForListERKSt6vectorIPS1_SaIS3_EE.exit, %_ZN6hermes5regex4Node23matchConstraintsForListERKSt6vectorIPS1_SaIS3_EE.exit61 %i.071 = phi i64 [ %dec, %_ZN6hermes5regex4Node23matchConstraintsForListERKSt6vectorIPS1_SaIS3_EE.exit61 ], [ %sub, %_ZN6hermes5regex4Node23matchConstraintsForListERKSt6vectorIPS1_SaIS3_EE.exit ] %dec = add i64 %i.071, -1 - %18 = load ptr, ptr %alternatives_, align 8 - %add.ptr.i48 = getelementptr inbounds %"class.std::vector", ptr %18, i64 %dec - %19 = load ptr, ptr %add.ptr.i48, align 8 + %20 = load ptr, ptr %alternatives_, align 8 + %add.ptr.i48 = getelementptr inbounds %"class.std::vector", ptr %20, i64 %dec + %21 = load ptr, ptr %add.ptr.i48, align 8 %_M_finish.i.i49 = getelementptr inbounds i8, ptr %add.ptr.i48, i64 8 - %20 = load ptr, ptr %_M_finish.i.i49, align 8 - %cmp.i.not6.i50 = icmp eq ptr %19, %20 + %22 = load ptr, ptr %_M_finish.i.i49, align 8 + %cmp.i.not6.i50 = icmp eq ptr %21, %22 br i1 %cmp.i.not6.i50, label %_ZN6hermes5regex4Node23matchConstraintsForListERKSt6vectorIPS1_SaIS3_EE.exit61, label %for.body.i51 for.body.i51: ; preds = %for.body, %for.body.i51 %result.08.i52 = phi i8 [ %or3.i57, %for.body.i51 ], [ 0, %for.body ] - %__begin2.sroa.0.07.i53 = phi ptr [ %incdec.ptr.i.i58, %for.body.i51 ], [ %19, %for.body ] - %21 = load ptr, ptr %__begin2.sroa.0.07.i53, align 8 - %vtable.i54 = load ptr, ptr %21, align 8 + %__begin2.sroa.0.07.i53 = phi ptr [ %incdec.ptr.i.i58, %for.body.i51 ], [ %21, %for.body ] + %23 = load ptr, ptr %__begin2.sroa.0.07.i53, align 8 + %vtable.i54 = load ptr, ptr %23, align 8 %vfn.i55 = getelementptr inbounds i8, ptr %vtable.i54, i64 32 - %22 = load ptr, ptr %vfn.i55, align 8 - %call5.i56 = tail call noundef zeroext i8 %22(ptr noundef nonnull align 8 dereferenceable(8) %21) #17 + %24 = load ptr, ptr %vfn.i55, align 8 + %call5.i56 = tail call noundef zeroext i8 %24(ptr noundef nonnull align 8 dereferenceable(8) %23) #17 %or3.i57 = or i8 %call5.i56, %result.08.i52 %incdec.ptr.i.i58 = getelementptr inbounds i8, ptr %__begin2.sroa.0.07.i53, i64 8 - %cmp.i.not.i59 = icmp eq ptr %incdec.ptr.i.i58, %20 + %cmp.i.not.i59 = icmp eq ptr %incdec.ptr.i.i58, %22 br i1 %cmp.i.not.i59, label %_ZN6hermes5regex4Node23matchConstraintsForListERKSt6vectorIPS1_SaIS3_EE.exit61, label %for.body.i51 _ZN6hermes5regex4Node23matchConstraintsForListERKSt6vectorIPS1_SaIS3_EE.exit61: ; preds = %for.body.i51, %for.body %result.0.lcssa.i60 = phi i8 [ 0, %for.body ], [ %or3.i57, %for.body.i51 ] - %23 = load ptr, ptr %elementConstraints_, align 8 - %add.ptr.i62 = getelementptr inbounds i8, ptr %23, i64 %dec + %25 = load ptr, ptr %elementConstraints_, align 8 + %add.ptr.i62 = getelementptr inbounds i8, ptr %25, i64 %dec store i8 %result.0.lcssa.i60, ptr %add.ptr.i62, align 1 - %24 = load ptr, ptr %restConstraints_69, align 8 - %add.ptr.i63 = getelementptr inbounds i8, ptr %24, i64 %i.071 - %25 = load i8, ptr %add.ptr.i63, align 1 - %26 = load ptr, ptr %elementConstraints_, align 8 - %add.ptr.i64 = getelementptr inbounds i8, ptr %26, i64 %dec - %27 = load i8, ptr %add.ptr.i64, align 1 - %and6 = and i8 %27, %25 - %add.ptr.i65 = getelementptr inbounds i8, ptr %24, i64 %dec + %26 = load ptr, ptr %restConstraints_69, align 8 + %add.ptr.i63 = getelementptr inbounds i8, ptr %26, i64 %i.071 + %27 = load i8, ptr %add.ptr.i63, align 1 + %28 = load ptr, ptr %elementConstraints_, align 8 + %add.ptr.i64 = getelementptr inbounds i8, ptr %28, i64 %dec + %29 = load i8, ptr %add.ptr.i64, align 1 + %and6 = and i8 %29, %27 + %add.ptr.i65 = getelementptr inbounds i8, ptr %26, i64 %dec store i8 %and6, ptr %add.ptr.i65, align 1 %cmp.not = icmp eq i64 %dec, 0 br i1 %cmp.not, label %for.end, label %for.body, !llvm.loop !74 @@ -6130,7 +6133,7 @@ _ZN6hermes5regex19RegexBytecodeStream18InstructionWrapperINS0_15AlternationInsnE %_M_manager.i.i.i = getelementptr inbounds i8, ptr %ref.tmp.i37, i64 16 %_M_invoker.i.i = getelementptr inbounds i8, ptr %ref.tmp.i37, i64 24 %26 = getelementptr inbounds i8, ptr %ref.tmp.i37, i64 8 - store i64 0, ptr %26, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %26, i8 0, i64 24, i1 false) %call.i.i.i.i = call noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #15 store ptr %this, ptr %call.i.i.i.i, align 16 %ref.tmp.sroa.2.0.call.i.i.i.i.sroa_idx = getelementptr inbounds i8, ptr %call.i.i.i.i, i64 8 @@ -8056,7 +8059,7 @@ _ZN6hermes5regex19RegexBytecodeStream18InstructionWrapperINS0_14LookaroundInsnEE %_M_manager.i.i.i = getelementptr inbounds i8, ptr %ref.tmp.i47, i64 16 %_M_invoker.i.i = getelementptr inbounds i8, ptr %ref.tmp.i47, i64 24 %22 = getelementptr inbounds i8, ptr %ref.tmp.i47, i64 8 - store i64 0, ptr %22, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %22, i8 0, i64 24, i1 false) %call.i.i.i.i = call noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #15 store ptr %bcs, ptr %call.i.i.i.i, align 16 %ref.tmp.sroa.0.sroa.2.0.call.i.i.i.i.sroa_idx = getelementptr inbounds i8, ptr %call.i.i.i.i, i64 8 @@ -8838,7 +8841,7 @@ _ZN6hermes5regex19RegexBytecodeStream18InstructionWrapperINS0_14Width1LoopInsnEE %_M_manager.i.i.i = getelementptr inbounds i8, ptr %ref.tmp.i49, i64 16 %_M_invoker.i.i = getelementptr inbounds i8, ptr %ref.tmp.i49, i64 24 %24 = getelementptr inbounds i8, ptr %ref.tmp.i49, i64 8 - store i64 0, ptr %24, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %24, i8 0, i64 24, i1 false) %call.i.i.i.i = call noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #15 store ptr %bcs, ptr %call.i.i.i.i, align 16 %ref.tmp.sroa.0.sroa.2.0.call.i.i.i.i.sroa_idx = getelementptr inbounds i8, ptr %call.i.i.i.i, i64 8 @@ -8954,7 +8957,7 @@ _ZN6hermes5regex19RegexBytecodeStream18InstructionWrapperINS0_19BeginSimpleLoopI %_M_manager.i.i.i79 = getelementptr inbounds i8, ptr %ref.tmp.i78, i64 16 %_M_invoker.i.i80 = getelementptr inbounds i8, ptr %ref.tmp.i78, i64 24 %41 = getelementptr inbounds i8, ptr %ref.tmp.i78, i64 8 - store i64 0, ptr %41, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %41, i8 0, i64 24, i1 false) %call.i.i.i.i81 = call noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #15 store ptr %bcs, ptr %call.i.i.i.i81, align 16 %ref.tmp17.sroa.0.sroa.2.0.call.i.i.i.i81.sroa_idx = getelementptr inbounds i8, ptr %call.i.i.i.i81, i64 8 @@ -9149,7 +9152,7 @@ _ZN6hermes5regex19RegexBytecodeStream18InstructionWrapperINS0_13BeginLoopInsnEEp %_M_manager.i.i.i174 = getelementptr inbounds i8, ptr %ref.tmp.i173, i64 16 %_M_invoker.i.i175 = getelementptr inbounds i8, ptr %ref.tmp.i173, i64 24 %69 = getelementptr inbounds i8, ptr %ref.tmp.i173, i64 8 - store i64 0, ptr %69, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %69, i8 0, i64 24, i1 false) %call.i.i.i.i176 = call noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #15 store ptr %bcs, ptr %call.i.i.i.i176, align 16 %ref.tmp42.sroa.0.sroa.2.0.call.i.i.i.i176.sroa_idx = getelementptr inbounds i8, ptr %call.i.i.i.i176, i64 8 diff --git a/bench/hermes/optimized/zip.c.ll b/bench/hermes/optimized/zip.c.ll index ee7f9002816..394b34f4675 100644 --- a/bench/hermes/optimized/zip.c.ll +++ b/bench/hermes/optimized/zip.c.ll @@ -12389,8 +12389,8 @@ lor.lhs.false: ; preds = %entry br i1 %cmp12, label %return, label %if.end if.end: ; preds = %lor.lhs.false - %central_dir_header.34.central_dir_header.34.central_dir_header.34..sroa_idx = getelementptr inbounds i8, ptr %central_dir_header, i64 34 - store i32 0, ptr %central_dir_header.34.central_dir_header.34.central_dir_header.34..sroa_idx, align 2 + %central_dir_header.30.central_dir_header.30.central_dir_header.30..sroa_idx = getelementptr inbounds i8, ptr %central_dir_header, i64 30 + store i64 0, ptr %central_dir_header.30.central_dir_header.30.central_dir_header.30..sroa_idx, align 2 store i8 80, ptr %central_dir_header, align 16 %central_dir_header.1.central_dir_header.1.central_dir_header.1.arrayidx2.i.i.sroa_idx = getelementptr inbounds i8, ptr %central_dir_header, i64 1 store i8 75, ptr %central_dir_header.1.central_dir_header.1.central_dir_header.1.arrayidx2.i.i.sroa_idx, align 1 @@ -12485,10 +12485,6 @@ if.end: ; preds = %lor.lhs.false %conv2.i53.i = trunc nuw i16 %5 to i8 %central_dir_header.29.central_dir_header.29.central_dir_header.29.arrayidx3.i54.i.sroa_idx = getelementptr inbounds i8, ptr %central_dir_header, i64 29 store i8 %conv2.i53.i, ptr %central_dir_header.29.central_dir_header.29.central_dir_header.29.arrayidx3.i54.i.sroa_idx, align 1 - %central_dir_header.30.central_dir_header.30.central_dir_header.30.add.ptr16.i.sroa_idx = getelementptr inbounds i8, ptr %central_dir_header, i64 30 - store i8 0, ptr %central_dir_header.30.central_dir_header.30.central_dir_header.30.add.ptr16.i.sroa_idx, align 2 - %central_dir_header.31.central_dir_header.31.central_dir_header.31.arrayidx3.i55.i.sroa_idx = getelementptr inbounds i8, ptr %central_dir_header, i64 31 - store i8 0, ptr %central_dir_header.31.central_dir_header.31.central_dir_header.31.arrayidx3.i55.i.sroa_idx, align 1 %conv.i56.i = trunc i16 %comment_size to i8 %central_dir_header.32.central_dir_header.32.central_dir_header.32.add.ptr17.i.sroa_idx = getelementptr inbounds i8, ptr %central_dir_header, i64 32 store i8 %conv.i56.i, ptr %central_dir_header.32.central_dir_header.32.central_dir_header.32.add.ptr17.i.sroa_idx, align 16 @@ -13425,7 +13421,7 @@ if.end136: ; preds = %if.end133, %while.e if.end142: ; preds = %if.end136 %m_size = getelementptr inbounds i8, ptr %0, i64 8 %45 = load i64, ptr %m_size, align 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(46) %central_header, ptr noundef nonnull align 1 dereferenceable(46) %arrayidx9.i, i64 46, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(46) %central_header, ptr noundef nonnull align 1 dereferenceable(46) %arrayidx9.i, i64 42, i1 false) %conv.i144 = trunc i64 %add to i8 %central_header.42.central_header.42.central_header.42.add.ptr145.sroa_idx = getelementptr inbounds i8, ptr %central_header, i64 42 store i8 %conv.i144, ptr %central_header.42.central_header.42.central_header.42.add.ptr145.sroa_idx, align 2 diff --git a/bench/image-rs/optimized/2s4mh02dvph60euq.ll b/bench/image-rs/optimized/2s4mh02dvph60euq.ll index 8323919435c..1d6d7022f93 100644 --- a/bench/image-rs/optimized/2s4mh02dvph60euq.ll +++ b/bench/image-rs/optimized/2s4mh02dvph60euq.ll @@ -505,8 +505,8 @@ define hidden void @_ZN3png6common4Info6encode17h399de85ee8dd26d5E(ptr noalias n %26 = alloca ptr, align 8 store ptr %2, ptr %26, align 8 call void @llvm.lifetime.start.p0(i64 13, ptr nonnull %25) - %27 = getelementptr inbounds i8, ptr %25, i64 10 - store i16 0, ptr %27, align 2 + %27 = getelementptr inbounds i8, ptr %25, i64 9 + store i32 0, ptr %27, align 1 %28 = getelementptr inbounds i8, ptr %1, i64 284 %29 = load i32, ptr %28, align 4, !noundef !4 %30 = tail call i32 @llvm.bswap.i32(i32 %29) @@ -1006,8 +1006,8 @@ define hidden void @_ZN3png6common4Info6encode17hcd82b3b07d7033fbE(ptr noalias n %26 = alloca ptr, align 8 store ptr %2, ptr %26, align 8 call void @llvm.lifetime.start.p0(i64 13, ptr nonnull %25) - %27 = getelementptr inbounds i8, ptr %25, i64 10 - store i16 0, ptr %27, align 2 + %27 = getelementptr inbounds i8, ptr %25, i64 9 + store i32 0, ptr %27, align 1 %28 = getelementptr inbounds i8, ptr %1, i64 284 %29 = load i32, ptr %28, align 4, !noundef !4 %30 = tail call i32 @llvm.bswap.i32(i32 %29) diff --git a/bench/libevent/optimized/buffer.c.ll b/bench/libevent/optimized/buffer.c.ll index 6bc2635cf97..90f64542513 100644 --- a/bench/libevent/optimized/buffer.c.ll +++ b/bench/libevent/optimized/buffer.c.ll @@ -1169,7 +1169,7 @@ if.end.i.i: ; preds = %if.end4.i, %if.end. br i1 %cmp1.i.i, label %return, label %if.end45 if.end45: ; preds = %if.end.i.i - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %call.i.i, i8 0, i64 40, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %call.i.i, i8 0, i64 36, i1 false) %buffer_len.i.i = getelementptr inbounds i8, ptr %call.i.i, i64 8 store i64 %sub11.i, ptr %buffer_len.i.i, align 8 %add.ptr.i.i = getelementptr inbounds i8, ptr %call.i.i, i64 48 @@ -1271,7 +1271,7 @@ if.else87: ; preds = %if.then84 br label %return if.end93: ; preds = %if.end.i.i62 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %call.i.i65, i8 0, i64 40, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %call.i.i65, i8 0, i64 36, i1 false) %buffer_len.i.i68 = getelementptr inbounds i8, ptr %call.i.i65, i64 8 store i64 %sub11.i63, ptr %buffer_len.i.i68, align 8 %add.ptr.i.i69 = getelementptr inbounds i8, ptr %call.i.i65, i64 48 @@ -1438,7 +1438,7 @@ if.end.i.i: ; preds = %if.end4.i, %if.end. br i1 %cmp1.i.i, label %do.body87, label %if.end65 if.end65: ; preds = %if.end.i.i - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %call.i.i, i8 0, i64 40, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %call.i.i, i8 0, i64 36, i1 false) %buffer_len.i.i = getelementptr inbounds i8, ptr %call.i.i, i64 8 store i64 %sub11.i, ptr %buffer_len.i.i, align 8 %add.ptr.i.i = getelementptr inbounds i8, ptr %call.i.i, i64 48 @@ -2594,7 +2594,7 @@ if.end.i.i: ; preds = %if.end4.i, %if.end. br i1 %cmp1.i.i, label %return, label %if.end20 if.end20: ; preds = %if.end.i.i - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %call.i.i, i8 0, i64 40, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %call.i.i, i8 0, i64 36, i1 false) %buffer_len.i.i = getelementptr inbounds i8, ptr %call.i.i, i64 8 store i64 %sub11.i, ptr %buffer_len.i.i, align 8 %add.ptr.i.i = getelementptr inbounds i8, ptr %call.i.i, i64 48 @@ -2748,7 +2748,7 @@ if.then20.i: ; preds = %if.end18.i br label %APPEND_CHAIN_MULTICAST.exit if.end21.i: ; preds = %if.end18.i - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %call.i.i, i8 0, i64 40, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %call.i.i, i8 0, i64 36, i1 false) %buffer_len.i.i = getelementptr inbounds i8, ptr %call.i.i, i64 8 store i64 16, ptr %buffer_len.i.i, align 8 %add.ptr.i.i = getelementptr inbounds i8, ptr %call.i.i, i64 48 @@ -4121,7 +4121,7 @@ if.end.i: ; preds = %if.end, %if.end4 br i1 %cmp1.i, label %return, label %if.end3.i if.end3.i: ; preds = %if.end.i - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %call.i, i8 0, i64 40, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %call.i, i8 0, i64 36, i1 false) %buffer_len.i = getelementptr inbounds i8, ptr %call.i, i64 8 store i64 %sub11, ptr %buffer_len.i, align 8 %add.ptr.i = getelementptr inbounds i8, ptr %call.i, i64 48 @@ -4723,7 +4723,7 @@ if.end.i.i: ; preds = %if.end4.i, %if.end. br i1 %cmp1.i.i, label %return, label %if.end if.end: ; preds = %if.end.i.i - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %call.i.i, i8 0, i64 40, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %call.i.i, i8 0, i64 36, i1 false) %buffer_len.i.i = getelementptr inbounds i8, ptr %call.i.i, i64 8 store i64 %sub11.i, ptr %buffer_len.i.i, align 8 %add.ptr.i.i = getelementptr inbounds i8, ptr %call.i.i, i64 48 @@ -4950,7 +4950,7 @@ if.end.i.i: ; preds = %if.end4.i, %if.end. br i1 %cmp1.i.i, label %do.body88, label %if.end64 if.end64: ; preds = %if.end.i.i - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %call.i.i, i8 0, i64 40, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %call.i.i, i8 0, i64 36, i1 false) %buffer_len.i.i = getelementptr inbounds i8, ptr %call.i.i, i64 8 store i64 %sub11.i, ptr %buffer_len.i.i, align 8 %add.ptr.i.i = getelementptr inbounds i8, ptr %call.i.i, i64 48 diff --git a/bench/libevent/optimized/evutil.c.ll b/bench/libevent/optimized/evutil.c.ll index 06d34b127e9..479e3f7592b 100644 --- a/bench/libevent/optimized/evutil.c.ll +++ b/bench/libevent/optimized/evutil.c.ll @@ -1088,13 +1088,12 @@ if.end30: ; preds = %if.end25 if.then34: ; preds = %if.then18.if.then34_crit_edge, %if.end30 %call36.pre-phi = phi i16 [ %.pre63, %if.then18.if.then34_crit_edge ], [ %call22, %if.end30 ] %res6.055 = phi ptr [ null, %if.then18.if.then34_crit_edge ], [ %call26, %if.end30 ] - %12 = getelementptr inbounds i8, ptr %sin, i64 4 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %12, i8 0, i64 12, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %sin, i8 0, i64 16, i1 false) store i16 2, ptr %sin, align 4 %sin_port = getelementptr inbounds i8, ptr %sin, i64 2 store i16 %call36.pre-phi, ptr %sin_port, align 2 - %13 = load i32, ptr %hints, align 8 - %and38 = and i32 %13, 1 + %12 = load i32, ptr %hints, align 8 + %and38 = and i32 %12, 1 %tobool39.not = icmp eq i32 %and38, 0 br i1 %tobool39.not, label %if.else41, label %if.end43 @@ -1118,10 +1117,10 @@ if.then48: ; preds = %if.then46 br label %return while.cond.i: ; preds = %if.end43, %while.cond.i - %ai.0.i = phi ptr [ %14, %while.cond.i ], [ %call44, %if.end43 ] + %ai.0.i = phi ptr [ %13, %while.cond.i ], [ %call44, %if.end43 ] %ai_next.i = getelementptr inbounds i8, ptr %ai.0.i, i64 40 - %14 = load ptr, ptr %ai_next.i, align 8 - %tobool1.not.i = icmp eq ptr %14, null + %13 = load ptr, ptr %ai_next.i, align 8 + %tobool1.not.i = icmp eq ptr %13, null br i1 %tobool1.not.i, label %while.end.i, label %while.cond.i, !llvm.loop !8 while.end.i: ; preds = %while.cond.i @@ -1141,8 +1140,8 @@ if.end53: ; preds = %if.end16 ] if.then60: ; preds = %if.end53, %if.end53 - %15 = getelementptr inbounds i8, ptr %sin661, i64 4 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(28) %15, i8 0, i64 20, i1 false) + %14 = getelementptr inbounds i8, ptr %sin661, i64 4 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(28) %14, i8 0, i64 24, i1 false) %sin6_addr62 = getelementptr inbounds i8, ptr %sin661, i64 8 %call63 = call i32 @evutil_inet_pton_scope(i32 noundef 10, ptr noundef nonnull %nodename, ptr noundef nonnull %sin6_addr62, ptr noundef nonnull %if_index) %cmp64 = icmp eq i32 %call63, 1 @@ -1154,9 +1153,9 @@ if.then66: ; preds = %if.then60 %call69 = tail call zeroext i16 @htons(i16 noundef zeroext %conv68) #31 %sin6_port70 = getelementptr inbounds i8, ptr %sin661, i64 2 store i16 %call69, ptr %sin6_port70, align 2 - %16 = load i32, ptr %if_index, align 4 + %15 = load i32, ptr %if_index, align 4 %sin6_scope_id = getelementptr inbounds i8, ptr %sin661, i64 24 - store i32 %16, ptr %sin6_scope_id, align 4 + store i32 %15, ptr %sin6_scope_id, align 4 %call71 = call ptr @evutil_new_addrinfo_(ptr noundef nonnull %sin661, i32 noundef 28, ptr noundef nonnull %hints) store ptr %call71, ptr %res, align 8 %tobool72.not = icmp eq ptr %call71, null @@ -1168,15 +1167,15 @@ if.end76thread-pre-split: ; preds = %if.then60 br label %if.end76 if.end76: ; preds = %if.end76thread-pre-split, %if.end53 - %17 = phi i32 [ %.pr60, %if.end76thread-pre-split ], [ %9, %if.end53 ] - switch i32 %17, label %if.end100 [ + %16 = phi i32 [ %.pr60, %if.end76thread-pre-split ], [ %9, %if.end53 ] + switch i32 %16, label %if.end100 [ i32 2, label %if.then84 i32 0, label %if.then84 ] if.then84: ; preds = %if.end76, %if.end76 - %18 = getelementptr inbounds i8, ptr %sin85, i64 8 - store i64 0, ptr %18, align 4 + %17 = getelementptr inbounds i8, ptr %sin85, i64 8 + store i64 0, ptr %17, align 4 %sin_addr86 = getelementptr inbounds i8, ptr %sin85, i64 4 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %a.i) call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %b.i) @@ -1188,23 +1187,23 @@ if.then84: ; preds = %if.end76, %if.end76 br i1 %cmp1.not.i, label %if.end.i48, label %evutil_inet_pton.exit.thread if.end.i48: ; preds = %if.then84 - %19 = load i32, ptr %a.i, align 4 - %cmp3.i = icmp ugt i32 %19, 255 + %18 = load i32, ptr %a.i, align 4 + %cmp3.i = icmp ugt i32 %18, 255 br i1 %cmp3.i, label %evutil_inet_pton.exit.thread, label %if.end5.i if.end5.i: ; preds = %if.end.i48 - %20 = load i32, ptr %b.i, align 4 - %cmp6.i = icmp ugt i32 %20, 255 + %19 = load i32, ptr %b.i, align 4 + %cmp6.i = icmp ugt i32 %19, 255 br i1 %cmp6.i, label %evutil_inet_pton.exit.thread, label %if.end8.i if.end8.i: ; preds = %if.end5.i - %21 = load i32, ptr %c.i, align 4 - %cmp9.i = icmp ugt i32 %21, 255 + %20 = load i32, ptr %c.i, align 4 + %cmp9.i = icmp ugt i32 %20, 255 br i1 %cmp9.i, label %evutil_inet_pton.exit.thread, label %if.end11.i if.end11.i: ; preds = %if.end8.i - %22 = load i32, ptr %d.i, align 4 - %cmp12.i = icmp ugt i32 %22, 255 + %21 = load i32, ptr %d.i, align 4 + %cmp12.i = icmp ugt i32 %21, 255 br i1 %cmp12.i, label %evutil_inet_pton.exit.thread, label %if.then90 evutil_inet_pton.exit.thread: ; preds = %if.then84, %if.end.i48, %if.end5.i, %if.end8.i, %if.end11.i @@ -1216,12 +1215,12 @@ evutil_inet_pton.exit.thread: ; preds = %if.then84, %if.end. br label %if.end100 if.then90: ; preds = %if.end11.i - %shl.i = shl nuw i32 %19, 24 - %shl15.i = shl nuw nsw i32 %20, 16 + %shl.i = shl nuw i32 %18, 24 + %shl15.i = shl nuw nsw i32 %19, 16 %or.i = or disjoint i32 %shl15.i, %shl.i - %shl16.i = shl nuw nsw i32 %21, 8 + %shl16.i = shl nuw nsw i32 %20, 8 %or17.i = or disjoint i32 %or.i, %shl16.i - %or18.i = or disjoint i32 %or17.i, %22 + %or18.i = or disjoint i32 %or17.i, %21 %call19.i = call i32 @htonl(i32 noundef %or18.i) #31 store i32 %call19.i, ptr %sin_addr86, align 4 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %a.i) @@ -1241,8 +1240,8 @@ if.then90: ; preds = %if.end11.i br label %return if.end100: ; preds = %evutil_inet_pton.exit.thread, %if.end76 - %23 = load i32, ptr %hints, align 8 - %and102 = and i32 %23, 4 + %22 = load i32, ptr %hints, align 8 + %and102 = and i32 %22, 4 %tobool103.not = icmp eq i32 %and102, 0 br i1 %tobool103.not, label %if.end105, label %return @@ -1671,12 +1670,12 @@ evutil_check_ifaddrs.exit.thread.i: ; preds = %for.end.loopexit.i. if.end2.i: ; preds = %if.end.i call void (ptr, ...) @event_warn(ptr noundef nonnull @.str.32) #30 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %ifa.i.i) - %4 = getelementptr inbounds i8, ptr %sin.i, i64 4 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %4, i8 0, i64 12, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %sin.i, i8 0, i64 16, i1 false) store i16 2, ptr %sin.i, align 4 %call3.i = call zeroext i16 @htons(i16 noundef zeroext 53) #31 %sin_port.i = getelementptr inbounds i8, ptr %sin.i, i64 2 store i16 %call3.i, ptr %sin_port.i, align 2 + %sin_addr.i = getelementptr inbounds i8, ptr %sin.i, i64 4 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %a.i.i) call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %b.i.i) call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %c.i.i) @@ -1687,34 +1686,34 @@ if.end2.i: ; preds = %if.end.i br i1 %cmp1.not.i.i, label %if.end.i.i, label %evutil_inet_pton.exit.i if.end.i.i: ; preds = %if.end2.i - %5 = load i32, ptr %a.i.i, align 4 - %cmp3.i.i = icmp ugt i32 %5, 255 + %4 = load i32, ptr %a.i.i, align 4 + %cmp3.i.i = icmp ugt i32 %4, 255 br i1 %cmp3.i.i, label %evutil_inet_pton.exit.i, label %if.end5.i.i if.end5.i.i: ; preds = %if.end.i.i - %6 = load i32, ptr %b.i.i, align 4 - %cmp6.i.i = icmp ugt i32 %6, 255 + %5 = load i32, ptr %b.i.i, align 4 + %cmp6.i.i = icmp ugt i32 %5, 255 br i1 %cmp6.i.i, label %evutil_inet_pton.exit.i, label %if.end8.i.i if.end8.i.i: ; preds = %if.end5.i.i - %7 = load i32, ptr %c.i.i, align 4 - %cmp9.i.i = icmp ugt i32 %7, 255 + %6 = load i32, ptr %c.i.i, align 4 + %cmp9.i.i = icmp ugt i32 %6, 255 br i1 %cmp9.i.i, label %evutil_inet_pton.exit.i, label %if.end11.i.i if.end11.i.i: ; preds = %if.end8.i.i - %8 = load i32, ptr %d.i.i, align 4 - %cmp12.i.i = icmp ugt i32 %8, 255 + %7 = load i32, ptr %d.i.i, align 4 + %cmp12.i.i = icmp ugt i32 %7, 255 br i1 %cmp12.i.i, label %evutil_inet_pton.exit.i, label %if.end14.i.i if.end14.i.i: ; preds = %if.end11.i.i - %shl.i.i = shl nuw i32 %5, 24 - %shl15.i.i = shl nuw nsw i32 %6, 16 + %shl.i.i = shl nuw i32 %4, 24 + %shl15.i.i = shl nuw nsw i32 %5, 16 %or.i.i = or disjoint i32 %shl15.i.i, %shl.i.i - %shl16.i.i = shl nuw nsw i32 %7, 8 + %shl16.i.i = shl nuw nsw i32 %6, 8 %or17.i.i = or disjoint i32 %or.i.i, %shl16.i.i - %or18.i.i = or disjoint i32 %or17.i.i, %8 + %or18.i.i = or disjoint i32 %or17.i.i, %7 %call19.i.i = call i32 @htonl(i32 noundef %or18.i.i) #31 - store i32 %call19.i.i, ptr %4, align 4 + store i32 %call19.i.i, ptr %sin_addr.i, align 4 br label %evutil_inet_pton.exit.i evutil_inet_pton.exit.i: ; preds = %if.end14.i.i, %if.end11.i.i, %if.end8.i.i, %if.end5.i.i, %if.end.i.i, %if.end2.i @@ -1723,8 +1722,8 @@ evutil_inet_pton.exit.i: ; preds = %if.end14.i.i, %if.e call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %c.i.i) call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %d.i.i) call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %more.i.i) - %9 = getelementptr inbounds i8, ptr %sin6.i, i64 4 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(28) %9, i8 0, i64 24, i1 false) + %8 = getelementptr inbounds i8, ptr %sin6.i, i64 4 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(28) %8, i8 0, i64 24, i1 false) store i16 10, ptr %sin6.i, align 4 %sin6_port.i = getelementptr inbounds i8, ptr %sin6.i, i64 2 store i16 %call3.i, ptr %sin6_port.i, align 2 @@ -2763,7 +2762,7 @@ if.then63: ; preds = %if.end61, %land.lhs %port.044 = phi i16 [ %4, %if.end61 ], [ 0, %if.end7 ], [ 0, %land.lhs.true ] %addr_part.04042 = phi ptr [ %buf, %if.end61 ], [ %buf, %if.end7 ], [ %ip_as_string, %land.lhs.true ] %5 = getelementptr inbounds i8, ptr %sin6, i64 4 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(28) %5, i8 0, i64 20, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(28) %5, i8 0, i64 24, i1 false) store i16 10, ptr %sin6, align 4 %call65 = tail call zeroext i16 @htons(i16 noundef zeroext %port.044) #31 %sin6_port = getelementptr inbounds i8, ptr %sin6, i64 2 diff --git a/bench/libpng/optimized/pngwrite.c.ll b/bench/libpng/optimized/pngwrite.c.ll index 5bcd03c5b1d..b018deb6ab2 100644 --- a/bench/libpng/optimized/pngwrite.c.ll +++ b/bench/libpng/optimized/pngwrite.c.ll @@ -2356,7 +2356,7 @@ define i32 @png_image_write_to_memory(ptr noundef %0, ptr noundef %1, ptr noalia 21: ; preds = %19 %22 = getelementptr inbounds i8, ptr %8, i64 16 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(88) %22, i8 0, i64 48, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(88) %22, i8 0, i64 72, i1 false) store ptr %0, ptr %8, align 8 %23 = getelementptr inbounds i8, ptr %8, i64 8 store ptr %4, ptr %23, align 8 @@ -2371,25 +2371,24 @@ define i32 @png_image_write_to_memory(ptr noundef %0, ptr noundef %1, ptr noalia %28 = load i64, ptr %2, align 8 %29 = getelementptr inbounds i8, ptr %8, i64 72 store i64 %28, ptr %29, align 8 - %30 = getelementptr inbounds i8, ptr %8, i64 80 - store i64 0, ptr %30, align 8 - %31 = call i32 @png_safe_execute(ptr noundef nonnull %0, ptr noundef nonnull @png_image_write_memory, ptr noundef nonnull %8) #15 + %30 = call i32 @png_safe_execute(ptr noundef nonnull %0, ptr noundef nonnull @png_image_write_memory, ptr noundef nonnull %8) #15 call void @png_image_free(ptr noundef nonnull %0) #15 - %.not33 = icmp eq i32 %31, 0 - br i1 %.not33, label %.critedge, label %32 + %.not33 = icmp eq i32 %30, 0 + br i1 %.not33, label %.critedge, label %31 -32: ; preds = %21 - %.pre = load i64, ptr %30, align 8 +31: ; preds = %21 + %32 = getelementptr inbounds i8, ptr %8, i64 80 + %.pre = load i64, ptr %32, align 8 br i1 %17, label %36, label %33 -33: ; preds = %32 +33: ; preds = %31 %34 = load i64, ptr %2, align 8 %35 = icmp ugt i64 %.pre, %34 - %spec.select = select i1 %35, i32 0, i32 %31 + %spec.select = select i1 %35, i32 0, i32 %30 br label %36 -36: ; preds = %33, %32 - %.1 = phi i32 [ %31, %32 ], [ %spec.select, %33 ] +36: ; preds = %33, %31 + %.1 = phi i32 [ %30, %31 ], [ %spec.select, %33 ] store i64 %.pre, ptr %2, align 8 br label %.critedge diff --git a/bench/linux/optimized/dump_pagetables.ll b/bench/linux/optimized/dump_pagetables.ll index f535c0e7a95..20f7212c6e1 100644 --- a/bench/linux/optimized/dump_pagetables.ll +++ b/bench/linux/optimized/dump_pagetables.ll @@ -123,7 +123,7 @@ define dso_local void @ptdump_walk_pgd_level(ptr noundef %0, ptr noundef %1) loc %6 = load ptr, ptr %5, align 64 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %3) #8 %7 = getelementptr inbounds i8, ptr %3, i64 8 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(48) %3, i8 0, i64 16, i1 false) + store i64 0, ptr %3, align 16 %8 = load i32, ptr @ptrs_per_p4d, align 4 %9 = zext i32 %8 to i64 %10 = shl i64 %9, 47 @@ -140,7 +140,7 @@ define dso_local void @ptdump_walk_pgd_level(ptr noundef %0, ptr noundef %1) loc call void @llvm.memset.p0.i64(ptr noundef align 16 dereferenceable(16) %17, i8 0, i64 16, i1 false) call void @llvm.lifetime.start.p0(i64 136, ptr nonnull %4) #8 %18 = getelementptr inbounds i8, ptr %4, i64 24 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(136) %18, i8 0, i64 96, i1 false), !annotation !5 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(136) %18, i8 0, i64 112, i1 false), !annotation !5 store ptr @note_page, ptr %4, align 8 %19 = getelementptr inbounds i8, ptr %4, i64 8 store ptr @effective_prot, ptr %19, align 8 @@ -186,7 +186,7 @@ define dso_local void @ptdump_walk_pgd_level_debugfs(ptr noundef %0, ptr noundef %17 = phi ptr [ %15, %12 ], [ %7, %8 ], [ %7, %3 ] call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %4) #8 %18 = getelementptr inbounds i8, ptr %4, i64 8 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(48) %4, i8 0, i64 16, i1 false) + store i64 0, ptr %4, align 16 %19 = load i32, ptr @ptrs_per_p4d, align 4 %20 = zext i32 %19 to i64 %21 = shl i64 %20, 47 @@ -203,7 +203,7 @@ define dso_local void @ptdump_walk_pgd_level_debugfs(ptr noundef %0, ptr noundef call void @llvm.memset.p0.i64(ptr noundef align 16 dereferenceable(16) %28, i8 0, i64 16, i1 false) call void @llvm.lifetime.start.p0(i64 136, ptr nonnull %5) #8 %29 = getelementptr inbounds i8, ptr %5, i64 24 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(136) %29, i8 0, i64 96, i1 false), !annotation !5 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(136) %29, i8 0, i64 112, i1 false), !annotation !5 store ptr @note_page, ptr %5, align 8 %30 = getelementptr inbounds i8, ptr %5, i64 8 store ptr @effective_prot, ptr %30, align 8 @@ -212,11 +212,9 @@ define dso_local void @ptdump_walk_pgd_level_debugfs(ptr noundef %0, ptr noundef %32 = getelementptr inbounds i8, ptr %5, i64 24 store i32 -1, ptr %32, align 8 %33 = getelementptr inbounds i8, ptr %5, i64 32 - %34 = getelementptr inbounds i8, ptr %5, i64 120 - store i64 0, ptr %34, align 8 - %35 = getelementptr inbounds i8, ptr %5, i64 128 + %34 = getelementptr inbounds i8, ptr %5, i64 128 call void @llvm.memset.p0.i64(ptr noundef align 8 dereferenceable(82) %33, i8 0, i64 82, i1 false) - store ptr %0, ptr %35, align 8 + store ptr %0, ptr %34, align 8 call void @ptdump_walk_pgd(ptr noundef nonnull %5, ptr noundef %1, ptr noundef %17) #8 call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %5) #8 call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %4) #8 @@ -249,7 +247,7 @@ define dso_local void @ptdump_walk_user_pgd_level_checkwx() local_unnamed_addr # %12 = inttoptr i64 %11 to ptr call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %1) #8 %13 = getelementptr inbounds i8, ptr %1, i64 8 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(48) %1, i8 0, i64 16, i1 false) + store i64 0, ptr %1, align 16 %14 = load i32, ptr @ptrs_per_p4d, align 4 %15 = zext i32 %14 to i64 %16 = shl i64 %15, 47 @@ -266,7 +264,7 @@ define dso_local void @ptdump_walk_user_pgd_level_checkwx() local_unnamed_addr # call void @llvm.memset.p0.i64(ptr noundef align 16 dereferenceable(16) %23, i8 0, i64 16, i1 false) call void @llvm.lifetime.start.p0(i64 136, ptr nonnull %2) #8 %24 = getelementptr inbounds i8, ptr %2, i64 24 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(136) %24, i8 0, i64 96, i1 false), !annotation !5 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(136) %24, i8 0, i64 112, i1 false), !annotation !5 store ptr @note_page, ptr %2, align 8 %25 = getelementptr inbounds i8, ptr %2, i64 8 store ptr @effective_prot, ptr %25, align 8 @@ -311,7 +309,7 @@ define dso_local void @ptdump_walk_pgd_level_checkwx() local_unnamed_addr #3 ali %2 = alloca %struct.pg_state, align 8 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %1) #8 %3 = getelementptr inbounds i8, ptr %1, i64 8 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(48) %1, i8 0, i64 16, i1 false) + store i64 0, ptr %1, align 16 %4 = load i32, ptr @ptrs_per_p4d, align 4 %5 = zext i32 %4 to i64 %6 = shl i64 %5, 47 @@ -328,7 +326,7 @@ define dso_local void @ptdump_walk_pgd_level_checkwx() local_unnamed_addr #3 ali call void @llvm.memset.p0.i64(ptr noundef align 16 dereferenceable(16) %13, i8 0, i64 16, i1 false) call void @llvm.lifetime.start.p0(i64 136, ptr nonnull %2) #8 %14 = getelementptr inbounds i8, ptr %2, i64 24 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(136) %14, i8 0, i64 96, i1 false), !annotation !5 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(136) %14, i8 0, i64 112, i1 false), !annotation !5 store ptr @note_page, ptr %2, align 8 %15 = getelementptr inbounds i8, ptr %2, i64 8 store ptr @effective_prot, ptr %15, align 8 diff --git a/bench/linux/optimized/fork.ll b/bench/linux/optimized/fork.ll index 50b4f77fa26..c4f05db0f28 100644 --- a/bench/linux/optimized/fork.ll +++ b/bench/linux/optimized/fork.ll @@ -4969,7 +4969,7 @@ define dso_local ptr @create_io_thread(ptr noundef %0, ptr noundef %1, i32 nound %4 = alloca %struct.kernel_clone_args, align 8 call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %4) #18 %5 = getelementptr inbounds i8, ptr %4, i64 40 - store i64 0, ptr %5, align 8, !annotation !12 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(128) %5, i8 0, i64 88, i1 false), !annotation !12 store i64 2155941632, ptr %4, align 8 %6 = getelementptr inbounds i8, ptr %4, i64 8 %7 = getelementptr inbounds i8, ptr %4, i64 44 @@ -5270,7 +5270,7 @@ define dso_local i32 @kernel_thread(ptr noundef %0, ptr noundef %1, ptr noundef %5 = alloca %struct.kernel_clone_args, align 8 call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %5) #18 %6 = getelementptr inbounds i8, ptr %5, i64 40 - store i64 0, ptr %6, align 8, !annotation !12 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(128) %6, i8 0, i64 88, i1 false), !annotation !12 %7 = trunc i64 %3 to i32 %8 = and i64 %3, 4286578176 %9 = or disjoint i64 %8, 8388864 @@ -5364,7 +5364,7 @@ define dso_local range(i64 -2147483648, 2147483648) i64 @__x64_sys_clone(ptr noc %14 = inttoptr i64 %10 to ptr call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %2) #18 %15 = getelementptr inbounds i8, ptr %2, i64 40 - store i64 0, ptr %15, align 8, !annotation !12 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(128) %15, i8 0, i64 88, i1 false), !annotation !12 %16 = trunc i64 %4 to i32 %17 = and i64 %4, 4294967040 store i64 %17, ptr %2, align 8 @@ -5381,16 +5381,14 @@ define dso_local range(i64 -2147483648, 2147483648) i64 @__x64_sys_clone(ptr noc store i32 %23, ptr %22, align 8 %24 = getelementptr inbounds i8, ptr %2, i64 48 store i64 %6, ptr %24, align 8 - %25 = getelementptr inbounds i8, ptr %2, i64 56 - store i64 0, ptr %25, align 8 - %26 = getelementptr inbounds i8, ptr %2, i64 64 - store i64 %12, ptr %26, align 8 - %27 = getelementptr inbounds i8, ptr %2, i64 72 - call void @llvm.memset.p0.i64(ptr noundef align 8 dereferenceable(56) %27, i8 0, i64 56, i1 false) - %28 = call i32 @kernel_clone(ptr noundef nonnull %2) - %29 = sext i32 %28 to i64 + %25 = getelementptr inbounds i8, ptr %2, i64 64 + store i64 %12, ptr %25, align 8 + %26 = getelementptr inbounds i8, ptr %2, i64 72 + call void @llvm.memset.p0.i64(ptr noundef align 8 dereferenceable(56) %26, i8 0, i64 56, i1 false) + %27 = call i32 @kernel_clone(ptr noundef nonnull %2) + %28 = sext i32 %27 to i64 call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %2) #18 - ret i64 %29 + ret i64 %28 } ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid @@ -5414,7 +5412,7 @@ define dso_local range(i64 -2147483648, 2147483648) i64 @__ia32_sys_clone(ptr no %18 = inttoptr i64 %13 to ptr call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %2) #18 %19 = getelementptr inbounds i8, ptr %2, i64 40 - store i64 0, ptr %19, align 8, !annotation !12 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(128) %19, i8 0, i64 88, i1 false), !annotation !12 %20 = trunc i64 %4 to i32 %21 = and i64 %4, 4294967040 store i64 %21, ptr %2, align 8 @@ -5431,16 +5429,14 @@ define dso_local range(i64 -2147483648, 2147483648) i64 @__ia32_sys_clone(ptr no store i32 %27, ptr %26, align 8 %28 = getelementptr inbounds i8, ptr %2, i64 48 store i64 %7, ptr %28, align 8 - %29 = getelementptr inbounds i8, ptr %2, i64 56 - store i64 0, ptr %29, align 8 - %30 = getelementptr inbounds i8, ptr %2, i64 64 - store i64 %16, ptr %30, align 8 - %31 = getelementptr inbounds i8, ptr %2, i64 72 - call void @llvm.memset.p0.i64(ptr noundef align 8 dereferenceable(56) %31, i8 0, i64 56, i1 false) - %32 = call i32 @kernel_clone(ptr noundef nonnull %2) - %33 = sext i32 %32 to i64 + %29 = getelementptr inbounds i8, ptr %2, i64 64 + store i64 %16, ptr %29, align 8 + %30 = getelementptr inbounds i8, ptr %2, i64 72 + call void @llvm.memset.p0.i64(ptr noundef align 8 dereferenceable(56) %30, i8 0, i64 56, i1 false) + %31 = call i32 @kernel_clone(ptr noundef nonnull %2) + %32 = sext i32 %31 to i64 call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %2) #18 - ret i64 %33 + ret i64 %32 } ; Function Attrs: fn_ret_thunk_extern nounwind null_pointer_is_valid @@ -5472,7 +5468,7 @@ define internal fastcc range(i64 -2147483648, 2147483648) i64 @__se_sys_clone3(i br i1 %11, label %85, label %12, !prof !11 12: ; preds = %10 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(128) %7, i8 0, i64 40, i1 false), !annotation !12 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(128) %7, i8 0, i64 88, i1 false), !annotation !12 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(128) %5, i8 0, i64 128, i1 false), !annotation !12 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(88) %3, i8 0, i64 88, i1 false), !annotation !12 %13 = tail call i64 @llvm.umin.i64(i64 %1, i64 88) diff --git a/bench/linux/optimized/route.ll b/bench/linux/optimized/route.ll index d03eeb64695..080ec796418 100644 --- a/bench/linux/optimized/route.ll +++ b/bench/linux/optimized/route.ll @@ -9469,15 +9469,13 @@ define dso_local void @rt6_mtu_change(ptr noundef %0, i32 noundef %1) local_unna %3 = alloca %struct.rt6_mtu_change_arg, align 8 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) #22 %4 = getelementptr inbounds i8, ptr %3, i64 8 - store i64 0, ptr %4, align 8, !annotation !11 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %4, i8 0, i64 16, i1 false), !annotation !11 store ptr %0, ptr %3, align 8 %5 = getelementptr inbounds i8, ptr %3, i64 8 store i32 %1, ptr %5, align 8 - %6 = getelementptr inbounds i8, ptr %3, i64 16 - store ptr null, ptr %6, align 8 - %7 = getelementptr inbounds i8, ptr %0, i64 272 - %8 = load ptr, ptr %7, align 8 - call void @fib6_clean_all(ptr noundef %8, ptr noundef nonnull @rt6_mtu_change_route, ptr noundef nonnull %3) #22 + %6 = getelementptr inbounds i8, ptr %0, i64 272 + %7 = load ptr, ptr %6, align 8 + call void @fib6_clean_all(ptr noundef %7, ptr noundef nonnull @rt6_mtu_change_route, ptr noundef nonnull %3) #22 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #22 ret void } @@ -13127,13 +13125,12 @@ define internal fastcc void @__find_rr_leaf(ptr noundef %0, ptr noundef readnone 49: ; preds = %45 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %10) #22 - store i64 0, ptr %26, align 8, !annotation !11 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %26, i8 0, i64 32, i1 false), !annotation !11 store i32 %36, ptr %10, align 8 store i32 %5, ptr %16, align 4 store i32 %6, ptr %17, align 8 store ptr %8, ptr %18, align 8 store ptr %7, ptr %19, align 8 - store ptr null, ptr %20, align 8 %50 = getelementptr inbounds i8, ptr %47, i64 102 %51 = load i8, ptr %50, align 2, !range !18, !noundef !19 %52 = icmp eq i8 %51, 0 diff --git a/bench/linux/optimized/sch_api.ll b/bench/linux/optimized/sch_api.ll index 6ea89cf425e..249b74022d8 100644 --- a/bench/linux/optimized/sch_api.ll +++ b/bench/linux/optimized/sch_api.ll @@ -3387,7 +3387,7 @@ define internal i32 @tc_dump_tclass(ptr noundef %0, ptr noundef %1) #0 align 16 28: ; preds = %21 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %5) #19 %29 = getelementptr inbounds i8, ptr %5, i64 8 - store i64 0, ptr %29, align 8, !annotation !48 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %29, i8 0, i64 32, i1 false), !annotation !48 %30 = getelementptr inbounds i8, ptr %26, i64 16 %31 = load i32, ptr %30, align 16 %32 = and i32 %31, 129 @@ -3579,6 +3579,7 @@ define internal i32 @tc_dump_tclass(ptr noundef %0, ptr noundef %1) #0 align 16 store i32 0, ptr %4, align 8 %142 = getelementptr inbounds i8, ptr %4, i64 4 store i32 %138, ptr %142, align 4 + store i32 0, ptr %119, align 8 %143 = getelementptr inbounds i8, ptr %137, i64 64 %144 = load ptr, ptr %143, align 8 call void %144(ptr noundef nonnull %105, ptr noundef nonnull %4) #19 @@ -3719,7 +3720,7 @@ define internal i32 @tc_dump_tclass(ptr noundef %0, ptr noundef %1) #0 align 16 217: ; preds = %213 call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %6) #19 %218 = getelementptr inbounds i8, ptr %6, i64 8 - store i64 0, ptr %218, align 8, !annotation !48 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %218, i8 0, i64 32, i1 false), !annotation !48 %219 = getelementptr inbounds i8, ptr %215, i64 16 %220 = load i32, ptr %219, align 16 %221 = and i32 %220, 129 diff --git a/bench/llama.cpp/optimized/llama.cpp.ll b/bench/llama.cpp/optimized/llama.cpp.ll index c24bdd0e270..03271645f69 100644 --- a/bench/llama.cpp/optimized/llama.cpp.ll +++ b/bench/llama.cpp/optimized/llama.cpp.ll @@ -16504,8 +16504,7 @@ entry: store i32 0, ptr %n_non_view, align 4 %_M_manager.i.i = getelementptr inbounds i8, ptr %cb, i64 16 %_M_invoker.i = getelementptr inbounds i8, ptr %cb, i64 24 - %2 = getelementptr inbounds i8, ptr %cb, i64 8 - store i64 0, ptr %2, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %cb, i8 0, i64 16, i1 false) %call.i.i2.i = tail call noalias noundef nonnull dereferenceable(80) ptr @_Znwm(i64 noundef 80) #49 store ptr %alloc_inp_tokens, ptr %call.i.i2.i, align 16 %ref.tmp.sroa.2.0.call.i.i2.i.sroa_idx = getelementptr inbounds i8, ptr %call.i.i2.i, i64 8 @@ -16535,13 +16534,13 @@ entry: invoke.cont: ; preds = %entry call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %agg.tmp.i) %buf_compute.i = getelementptr inbounds i8, ptr %llm, i64 176 - %3 = load ptr, ptr %buf_compute.i, align 8 - %size.i = getelementptr inbounds i8, ptr %3, i64 8 - %4 = load i64, ptr %size.i, align 8 - %5 = load ptr, ptr %3, align 8 - store i64 %4, ptr %agg.tmp.i, align 8 + %2 = load ptr, ptr %buf_compute.i, align 8 + %size.i = getelementptr inbounds i8, ptr %2, i64 8 + %3 = load i64, ptr %size.i, align 8 + %4 = load ptr, ptr %2, align 8 + store i64 %3, ptr %agg.tmp.i, align 8 %params.sroa.2.0.agg.tmp.sroa_idx.i = getelementptr inbounds i8, ptr %agg.tmp.i, i64 8 - store ptr %5, ptr %params.sroa.2.0.agg.tmp.sroa_idx.i, align 8 + store ptr %4, ptr %params.sroa.2.0.agg.tmp.sroa_idx.i, align 8 %params.sroa.3.0.agg.tmp.sroa_idx.i = getelementptr inbounds i8, ptr %agg.tmp.i, i64 16 store i8 1, ptr %params.sroa.3.0.agg.tmp.sroa_idx.i, align 8 %call.i13 = invoke ptr @ggml_init(ptr noundef nonnull byval(%struct.ggml_init_params) align 8 %agg.tmp.i) @@ -16552,8 +16551,8 @@ invoke.cont2: ; preds = %invoke.cont store ptr %call.i13, ptr %ctx0.i, align 8 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %agg.tmp.i) %arch = getelementptr inbounds i8, ptr %0, i64 4 - %6 = load i32, ptr %arch, align 4 - switch i32 %6, label %do.body [ + %5 = load i32, ptr %arch, align 4 + switch i32 %5, label %do.body [ i32 0, label %sw.bb i32 2, label %sw.bb5 i32 1, label %sw.bb8 @@ -16567,25 +16566,25 @@ invoke.cont2: ; preds = %invoke.cont ] lpad: ; preds = %if.then.i, %invoke.cont, %invoke.cont49, %invoke.cont48, %invoke.cont47, %invoke.cont46, %invoke.cont45, %if.then44, %for.end, %do.body, %sw.bb29, %sw.bb26, %sw.bb23, %sw.bb20, %sw.bb17, %sw.bb14, %sw.bb11, %sw.bb8, %sw.bb5, %sw.bb, %entry - %7 = landingpad { ptr, i32 } + %6 = landingpad { ptr, i32 } cleanup - %8 = load ptr, ptr %_M_manager.i.i, align 8 - %tobool.not.i.i = icmp eq ptr %8, null + %7 = load ptr, ptr %_M_manager.i.i, align 8 + %tobool.not.i.i = icmp eq ptr %7, null br i1 %tobool.not.i.i, label %_ZNSt8functionIFvP11ggml_tensorPKciEED2Ev.exit, label %if.then.i.i if.then.i.i: ; preds = %lpad - %call.i.i = invoke noundef zeroext i1 %8(ptr noundef nonnull align 8 dereferenceable(16) %cb, ptr noundef nonnull align 8 dereferenceable(16) %cb, i32 noundef 3) + %call.i.i = invoke noundef zeroext i1 %7(ptr noundef nonnull align 8 dereferenceable(16) %cb, ptr noundef nonnull align 8 dereferenceable(16) %cb, i32 noundef 3) to label %_ZNSt8functionIFvP11ggml_tensorPKciEED2Ev.exit unwind label %terminate.lpad.i.i terminate.lpad.i.i: ; preds = %if.then.i.i - %9 = landingpad { ptr, i32 } + %8 = landingpad { ptr, i32 } catch ptr null - %10 = extractvalue { ptr, i32 } %9, 0 - call void @__clang_call_terminate(ptr %10) #48 + %9 = extractvalue { ptr, i32 } %8, 0 + call void @__clang_call_terminate(ptr %9) #48 unreachable _ZNSt8functionIFvP11ggml_tensorPKciEED2Ev.exit: ; preds = %lpad, %if.then.i.i - resume { ptr, i32 } %7 + resume { ptr, i32 } %6 sw.bb: ; preds = %invoke.cont2 %call4 = invoke noundef ptr @_ZN17llm_build_context11build_llamaEv(ptr noundef nonnull align 8 dereferenceable(192) %llm) @@ -16628,10 +16627,10 @@ sw.bb29: ; preds = %invoke.cont2 to label %sw.epilog unwind label %lpad do.body: ; preds = %invoke.cont2 - %11 = load ptr, ptr @stdout, align 8 - %call33 = call i32 @fflush(ptr noundef %11) - %12 = load ptr, ptr @stderr, align 8 - %call35 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %12, ptr noundef nonnull @.str.171, ptr noundef nonnull @.str.172, i32 noundef 5925, ptr noundef nonnull @.str.177) #51 + %10 = load ptr, ptr @stdout, align 8 + %call33 = call i32 @fflush(ptr noundef %10) + %11 = load ptr, ptr @stderr, align 8 + %call35 = call i32 (ptr, ptr, ...) @fprintf(ptr noundef %11, ptr noundef nonnull @.str.171, ptr noundef nonnull @.str.172, i32 noundef 5925, ptr noundef nonnull @.str.177) #51 invoke void @ggml_print_backtrace() to label %invoke.cont36 unwind label %lpad @@ -16641,12 +16640,12 @@ invoke.cont36: ; preds = %do.body sw.epilog: ; preds = %sw.bb29, %sw.bb26, %sw.bb23, %sw.bb20, %sw.bb17, %sw.bb14, %sw.bb11, %sw.bb8, %sw.bb5, %sw.bb %result.0 = phi ptr [ %call4, %sw.bb ], [ %call7, %sw.bb5 ], [ %call10, %sw.bb8 ], [ %call13, %sw.bb11 ], [ %call16, %sw.bb14 ], [ %call19, %sw.bb17 ], [ %call22, %sw.bb20 ], [ %call25, %sw.bb23 ], [ %call28, %sw.bb26 ], [ %call31, %sw.bb29 ] - %13 = load ptr, ptr %ctx0.i, align 8 - %tobool.not.i = icmp eq ptr %13, null + %12 = load ptr, ptr %ctx0.i, align 8 + %tobool.not.i = icmp eq ptr %12, null br i1 %tobool.not.i, label %invoke.cont37, label %if.then.i if.then.i: ; preds = %sw.epilog - invoke void @ggml_free(ptr noundef nonnull %13) + invoke void @ggml_free(ptr noundef nonnull %12) to label %.noexc unwind label %lpad .noexc: ; preds = %if.then.i @@ -16658,24 +16657,24 @@ invoke.cont37: ; preds = %.noexc, %sw.epilog for.cond.preheader: ; preds = %invoke.cont37 %n_nodes = getelementptr inbounds i8, ptr %result.0, i64 4 - %14 = load i32, ptr %n_nodes, align 4 - %cmp22 = icmp sgt i32 %14, 0 + %13 = load i32, ptr %n_nodes, align 4 + %cmp22 = icmp sgt i32 %13, 0 br i1 %cmp22, label %for.body.lr.ph, label %for.end for.body.lr.ph: ; preds = %for.cond.preheader %nodes = getelementptr inbounds i8, ptr %result.0, i64 16 - %15 = load ptr, ptr %nodes, align 8 - %wide.trip.count = zext nneg i32 %14 to i64 + %14 = load ptr, ptr %nodes, align 8 + %wide.trip.count = zext nneg i32 %13 to i64 br label %for.body for.body: ; preds = %for.body.lr.ph, %for.body %indvars.iv = phi i64 [ 0, %for.body.lr.ph ], [ %indvars.iv.next, %for.body ] %n_non_view_total.023 = phi i32 [ 0, %for.body.lr.ph ], [ %spec.select, %for.body ] - %arrayidx = getelementptr inbounds ptr, ptr %15, i64 %indvars.iv - %16 = load ptr, ptr %arrayidx, align 8 - %view_src = getelementptr inbounds i8, ptr %16, i64 264 - %17 = load ptr, ptr %view_src, align 8 - %cmp39 = icmp eq ptr %17, null + %arrayidx = getelementptr inbounds ptr, ptr %14, i64 %indvars.iv + %15 = load ptr, ptr %arrayidx, align 8 + %view_src = getelementptr inbounds i8, ptr %15, i64 264 + %16 = load ptr, ptr %view_src, align 8 + %cmp39 = icmp eq ptr %16, null %inc = zext i1 %cmp39 to i32 %spec.select = add nuw nsw i32 %n_non_view_total.023, %inc %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 @@ -16684,13 +16683,13 @@ for.body: ; preds = %for.body.lr.ph, %fo for.end: ; preds = %for.body, %for.cond.preheader %n_non_view_total.0.lcssa = phi i32 [ 0, %for.cond.preheader ], [ %spec.select, %for.body ] - %18 = load i32, ptr %n_non_view, align 4 - invoke void (i32, ptr, ...) @_ZL18llama_log_internal14ggml_log_levelPKcz(i32 noundef 4, ptr noundef nonnull @.str.394, ptr noundef nonnull @__func__._ZL17llama_build_graphR13llama_contextRK11llama_batch, i32 noundef %18, i32 noundef %n_non_view_total.0.lcssa) + %17 = load i32, ptr %n_non_view, align 4 + invoke void (i32, ptr, ...) @_ZL18llama_log_internal14ggml_log_levelPKcz(i32 noundef 4, ptr noundef nonnull @.str.394, ptr noundef nonnull @__func__._ZL17llama_build_graphR13llama_contextRK11llama_batch, i32 noundef %17, i32 noundef %n_non_view_total.0.lcssa) to label %invoke.cont42 unwind label %lpad invoke.cont42: ; preds = %for.end - %19 = load i32, ptr %n_non_view, align 4 - %cmp43.not = icmp eq i32 %19, %n_non_view_total.0.lcssa + %18 = load i32, ptr %n_non_view, align 4 + %cmp43.not = icmp eq i32 %18, %n_non_view_total.0.lcssa br i1 %cmp43.not, label %if.end52, label %if.then44 if.then44: ; preds = %invoke.cont42 @@ -16718,19 +16717,19 @@ invoke.cont49: ; preds = %invoke.cont48 to label %if.end52 unwind label %lpad if.end52: ; preds = %invoke.cont42, %invoke.cont49, %invoke.cont37 - %20 = load ptr, ptr %_M_manager.i.i, align 8 - %tobool.not.i.i17 = icmp eq ptr %20, null + %19 = load ptr, ptr %_M_manager.i.i, align 8 + %tobool.not.i.i17 = icmp eq ptr %19, null br i1 %tobool.not.i.i17, label %_ZNSt8functionIFvP11ggml_tensorPKciEED2Ev.exit21, label %if.then.i.i18 if.then.i.i18: ; preds = %if.end52 - %call.i.i19 = invoke noundef zeroext i1 %20(ptr noundef nonnull align 8 dereferenceable(16) %cb, ptr noundef nonnull align 8 dereferenceable(16) %cb, i32 noundef 3) + %call.i.i19 = invoke noundef zeroext i1 %19(ptr noundef nonnull align 8 dereferenceable(16) %cb, ptr noundef nonnull align 8 dereferenceable(16) %cb, i32 noundef 3) to label %_ZNSt8functionIFvP11ggml_tensorPKciEED2Ev.exit21 unwind label %terminate.lpad.i.i20 terminate.lpad.i.i20: ; preds = %if.then.i.i18 - %21 = landingpad { ptr, i32 } + %20 = landingpad { ptr, i32 } catch ptr null - %22 = extractvalue { ptr, i32 } %21, 0 - call void @__clang_call_terminate(ptr %22) #48 + %21 = extractvalue { ptr, i32 } %20, 0 + call void @__clang_call_terminate(ptr %21) #48 unreachable _ZNSt8functionIFvP11ggml_tensorPKciEED2Ev.exit21: ; preds = %if.end52, %if.then.i.i18 @@ -54669,7 +54668,7 @@ invoke.cont: %second.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 40 %3 = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 48 %_M_left.i.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 64 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %second.i.i.i.i.i.i.i, i8 0, i64 24, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %second.i.i.i.i.i.i.i, i8 0, i64 32, i1 false) store ptr %3, ptr %_M_left.i.i.i.i.i.i.i.i.i.i.i.i, align 8 %_M_right.i.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 72 store ptr %3, ptr %_M_right.i.i.i.i.i.i.i.i.i.i.i.i, align 8 @@ -75784,19 +75783,15 @@ for.body.i.i.i: ; preds = %if.then, %for.body. %__cur.06.i.i.i = phi ptr [ %incdec.ptr.i.i.i, %for.body.i.i.i ], [ %0, %if.then ] %__n.addr.05.i.i.i = phi i64 [ %dec.i.i.i, %for.body.i.i.i ], [ %__n, %if.then ] %3 = getelementptr inbounds i8, ptr %__cur.06.i.i.i, i64 8 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %3, i8 0, i64 16, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %3, i8 0, i64 48, i1 false) store i32 -1, ptr %__cur.06.i.i.i, align 8 %delta.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.06.i.i.i, i64 4 store i32 0, ptr %delta.i.i.i.i.i, align 4 %4 = getelementptr inbounds i8, ptr %__cur.06.i.i.i, i64 16 - %_M_parent.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.06.i.i.i, i64 24 - store ptr null, ptr %_M_parent.i.i.i.i.i.i.i.i.i.i, align 8 %_M_left.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.06.i.i.i, i64 32 store ptr %4, ptr %_M_left.i.i.i.i.i.i.i.i.i.i, align 8 %_M_right.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.06.i.i.i, i64 40 store ptr %4, ptr %_M_right.i.i.i.i.i.i.i.i.i.i, align 8 - %_M_node_count.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.06.i.i.i, i64 48 - store i64 0, ptr %_M_node_count.i.i.i.i.i.i.i.i.i.i, align 8 %dec.i.i.i = add i64 %__n.addr.05.i.i.i, -1 %incdec.ptr.i.i.i = getelementptr inbounds i8, ptr %__cur.06.i.i.i, i64 56 %cmp.not.i.i.i = icmp eq i64 %dec.i.i.i, 0 @@ -75824,26 +75819,22 @@ _ZNKSt6vectorI13llama_kv_cellSaIS0_EE12_M_check_lenEmPKc.exit: ; preds = %if.els br label %for.body.i.i.i21 for.body.i.i.i21: ; preds = %_ZNKSt6vectorI13llama_kv_cellSaIS0_EE12_M_check_lenEmPKc.exit, %for.body.i.i.i21 - %__cur.06.i.i.i22 = phi ptr [ %incdec.ptr.i.i.i30, %for.body.i.i.i21 ], [ %add.ptr, %_ZNKSt6vectorI13llama_kv_cellSaIS0_EE12_M_check_lenEmPKc.exit ] - %__n.addr.05.i.i.i23 = phi i64 [ %dec.i.i.i29, %for.body.i.i.i21 ], [ %__n, %_ZNKSt6vectorI13llama_kv_cellSaIS0_EE12_M_check_lenEmPKc.exit ] + %__cur.06.i.i.i22 = phi ptr [ %incdec.ptr.i.i.i28, %for.body.i.i.i21 ], [ %add.ptr, %_ZNKSt6vectorI13llama_kv_cellSaIS0_EE12_M_check_lenEmPKc.exit ] + %__n.addr.05.i.i.i23 = phi i64 [ %dec.i.i.i27, %for.body.i.i.i21 ], [ %__n, %_ZNKSt6vectorI13llama_kv_cellSaIS0_EE12_M_check_lenEmPKc.exit ] %6 = getelementptr inbounds i8, ptr %__cur.06.i.i.i22, i64 8 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %6, i8 0, i64 16, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %6, i8 0, i64 48, i1 false) store i32 -1, ptr %__cur.06.i.i.i22, align 8 %delta.i.i.i.i.i24 = getelementptr inbounds i8, ptr %__cur.06.i.i.i22, i64 4 store i32 0, ptr %delta.i.i.i.i.i24, align 4 %7 = getelementptr inbounds i8, ptr %__cur.06.i.i.i22, i64 16 - %_M_parent.i.i.i.i.i.i.i.i.i.i25 = getelementptr inbounds i8, ptr %__cur.06.i.i.i22, i64 24 - store ptr null, ptr %_M_parent.i.i.i.i.i.i.i.i.i.i25, align 8 - %_M_left.i.i.i.i.i.i.i.i.i.i26 = getelementptr inbounds i8, ptr %__cur.06.i.i.i22, i64 32 - store ptr %7, ptr %_M_left.i.i.i.i.i.i.i.i.i.i26, align 8 - %_M_right.i.i.i.i.i.i.i.i.i.i27 = getelementptr inbounds i8, ptr %__cur.06.i.i.i22, i64 40 - store ptr %7, ptr %_M_right.i.i.i.i.i.i.i.i.i.i27, align 8 - %_M_node_count.i.i.i.i.i.i.i.i.i.i28 = getelementptr inbounds i8, ptr %__cur.06.i.i.i22, i64 48 - store i64 0, ptr %_M_node_count.i.i.i.i.i.i.i.i.i.i28, align 8 - %dec.i.i.i29 = add i64 %__n.addr.05.i.i.i23, -1 - %incdec.ptr.i.i.i30 = getelementptr inbounds i8, ptr %__cur.06.i.i.i22, i64 56 - %cmp.not.i.i.i31 = icmp eq i64 %dec.i.i.i29, 0 - br i1 %cmp.not.i.i.i31, label %try.cont, label %for.body.i.i.i21, !llvm.loop !443 + %_M_left.i.i.i.i.i.i.i.i.i.i25 = getelementptr inbounds i8, ptr %__cur.06.i.i.i22, i64 32 + store ptr %7, ptr %_M_left.i.i.i.i.i.i.i.i.i.i25, align 8 + %_M_right.i.i.i.i.i.i.i.i.i.i26 = getelementptr inbounds i8, ptr %__cur.06.i.i.i22, i64 40 + store ptr %7, ptr %_M_right.i.i.i.i.i.i.i.i.i.i26, align 8 + %dec.i.i.i27 = add i64 %__n.addr.05.i.i.i23, -1 + %incdec.ptr.i.i.i28 = getelementptr inbounds i8, ptr %__cur.06.i.i.i22, i64 56 + %cmp.not.i.i.i29 = icmp eq i64 %dec.i.i.i27, 0 + br i1 %cmp.not.i.i.i29, label %try.cont, label %for.body.i.i.i21, !llvm.loop !443 try.cont: ; preds = %for.body.i.i.i21 %cmp.not5.i.i.i.i = icmp eq ptr %1, %0 @@ -75899,14 +75890,14 @@ _ZSt19__relocate_object_aI13llama_kv_cellS0_SaIS0_EEvPT_PT0_RT1_.exit.i.i.i.i: ; br i1 %cmp.not.i.i.i.i, label %_ZNSt6vectorI13llama_kv_cellSaIS0_EE11_S_relocateEPS0_S3_S3_RS1_.exit, label %for.body.i.i.i.i, !llvm.loop !450 _ZNSt6vectorI13llama_kv_cellSaIS0_EE11_S_relocateEPS0_S3_S3_RS1_.exit: ; preds = %_ZSt19__relocate_object_aI13llama_kv_cellS0_SaIS0_EEvPT_PT0_RT1_.exit.i.i.i.i, %try.cont - %tobool.not.i35 = icmp eq ptr %1, null - br i1 %tobool.not.i35, label %_ZNSt12_Vector_baseI13llama_kv_cellSaIS0_EE13_M_deallocateEPS0_m.exit37, label %if.then.i36 + %tobool.not.i33 = icmp eq ptr %1, null + br i1 %tobool.not.i33, label %_ZNSt12_Vector_baseI13llama_kv_cellSaIS0_EE13_M_deallocateEPS0_m.exit35, label %if.then.i34 -if.then.i36: ; preds = %_ZNSt6vectorI13llama_kv_cellSaIS0_EE11_S_relocateEPS0_S3_S3_RS1_.exit +if.then.i34: ; preds = %_ZNSt6vectorI13llama_kv_cellSaIS0_EE11_S_relocateEPS0_S3_S3_RS1_.exit tail call void @_ZdlPv(ptr noundef nonnull %1) #45 - br label %_ZNSt12_Vector_baseI13llama_kv_cellSaIS0_EE13_M_deallocateEPS0_m.exit37 + br label %_ZNSt12_Vector_baseI13llama_kv_cellSaIS0_EE13_M_deallocateEPS0_m.exit35 -_ZNSt12_Vector_baseI13llama_kv_cellSaIS0_EE13_M_deallocateEPS0_m.exit37: ; preds = %_ZNSt6vectorI13llama_kv_cellSaIS0_EE11_S_relocateEPS0_S3_S3_RS1_.exit, %if.then.i36 +_ZNSt12_Vector_baseI13llama_kv_cellSaIS0_EE13_M_deallocateEPS0_m.exit35: ; preds = %_ZNSt6vectorI13llama_kv_cellSaIS0_EE11_S_relocateEPS0_S3_S3_RS1_.exit, %if.then.i34 store ptr %call5.i.i.i, ptr %this, align 8 %add.ptr37 = getelementptr inbounds %struct.llama_kv_cell, ptr %add.ptr, i64 %__n store ptr %add.ptr37, ptr %_M_finish.i, align 8 @@ -75914,7 +75905,7 @@ _ZNSt12_Vector_baseI13llama_kv_cellSaIS0_EE13_M_deallocateEPS0_m.exit37: ; preds store ptr %add.ptr40, ptr %_M_end_of_storage, align 8 br label %if.end44 -if.end44: ; preds = %_ZSt27__uninitialized_default_n_aIP13llama_kv_cellmS0_ET_S2_T0_RSaIT1_E.exit, %_ZNSt12_Vector_baseI13llama_kv_cellSaIS0_EE13_M_deallocateEPS0_m.exit37, %entry +if.end44: ; preds = %_ZSt27__uninitialized_default_n_aIP13llama_kv_cellmS0_ET_S2_T0_RSaIT1_E.exit, %_ZNSt12_Vector_baseI13llama_kv_cellSaIS0_EE13_M_deallocateEPS0_m.exit35, %entry ret void } diff --git a/bench/llvm/optimized/CGObjC.cpp.ll b/bench/llvm/optimized/CGObjC.cpp.ll index f6005283ec6..c94a32c12e0 100644 --- a/bench/llvm/optimized/CGObjC.cpp.ll +++ b/bench/llvm/optimized/CGObjC.cpp.ll @@ -10509,13 +10509,13 @@ define dso_local void @_ZN5clang7CodeGen15CodeGenFunction25EmitObjCForCollection %48 = alloca %"class.clang::CodeGen::RValue", align 8 %49 = alloca %"class.clang::CodeGen::CodeGenFunction::RunCleanupsScope", align 8 %.sroa.0366.sroa.4 = alloca [24 x i8], align 8 - %.sroa.11 = alloca [23 x i8], align 1 + %.sroa.11.sroa.4 = alloca [15 x i8], align 1 %.sroa.22.sroa.4 = alloca [32 x i8], align 4 %50 = alloca %"class.clang::DeclRefExpr", align 8 %51 = alloca %"class.clang::DeclarationNameLoc", align 8 %52 = alloca %"class.clang::CodeGen::LValue", align 8 %.sroa.0356.sroa.2 = alloca [24 x i8], align 8 - %.sroa.5358 = alloca [23 x i8], align 1 + %.sroa.5358.sroa.3 = alloca [15 x i8], align 8 %.sroa.9.sroa.2 = alloca [32 x i8], align 4 %53 = alloca %"class.llvm::Twine", align 8 %54 = alloca ptr, align 8 @@ -10692,8 +10692,8 @@ _ZN5clang7CodeGen13CodeGenModule14getObjCRuntimeEv.exit: ; preds = %2, %86 %.sink10.i = select i1 %156, i64 %157, i64 0 %.sink.i = select i1 %156, ptr %.sroa.4593.0.copyload, ptr null %storemerge.i = select i1 %156, i64 %.sroa.5594.0.copyload, i64 0 - %.sroa.9557.7..sroa_idx695 = getelementptr inbounds i8, ptr %.sroa.9557, i64 7 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(16) %.sroa.9557.7..sroa_idx695, i8 0, i64 16, i1 false) + %.sroa.9557.7..sroa_idx696 = getelementptr inbounds i8, ptr %.sroa.9557, i64 7 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(16) %.sroa.9557.7..sroa_idx696, i8 0, i64 16, i1 false) store i64 %.sink10.i, ptr %26, align 8 %.sroa.5536.0..sroa_idx = getelementptr inbounds i8, ptr %26, i64 8 store ptr %.sink.i, ptr %.sroa.5536.0..sroa_idx, align 8 @@ -11518,7 +11518,9 @@ _ZNK5clang10ASTContext13getObjCIdTypeEv.exit218: ; preds = %561, %564 %.sroa.8367.0..sroa_idx = getelementptr inbounds i8, ptr %52, i64 32 %.sroa.8367.0.copyload = load i8, ptr %.sroa.8367.0..sroa_idx, align 8 %.sroa.11.0..sroa_idx = getelementptr inbounds i8, ptr %52, i64 33 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(23) %.sroa.11, ptr noundef nonnull align 1 dereferenceable(23) %.sroa.11.0..sroa_idx, i64 23, i1 false) + %.sroa.11.sroa.0.0.copyload = load i64, ptr %.sroa.11.0..sroa_idx, align 1 + %.sroa.11.sroa.4.0..sroa.11.0..sroa_idx.sroa_idx = getelementptr inbounds i8, ptr %52, i64 41 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(15) %.sroa.11.sroa.4, ptr noundef nonnull align 1 dereferenceable(15) %.sroa.11.sroa.4.0..sroa.11.0..sroa_idx.sroa_idx, i64 15, i1 false) %.sroa.13.0..sroa_idx = getelementptr inbounds i8, ptr %52, i64 56 %.sroa.13.sroa.0.0.copyload = load ptr, ptr %.sroa.13.0..sroa_idx, align 8 %.sroa.13.sroa.7.0..sroa.13.0..sroa_idx.sroa_idx = getelementptr inbounds i8, ptr %52, i64 64 @@ -11549,13 +11551,11 @@ _ZNK5clang10ASTContext13getObjCIdTypeEv.exit218: ; preds = %561, %564 br label %611 609: ; preds = %_ZNK5clang10ASTContext13getObjCIdTypeEv.exit218 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(7) %.sroa.5358, i8 0, i64 7, i1 false) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.0356.sroa.2, i8 0, i64 24, i1 false), !alias.scope !277 - %.sroa.5358.7..sroa_idx688 = getelementptr inbounds i8, ptr %.sroa.5358, i64 7 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(16) %.sroa.5358.7..sroa_idx688, i8 0, i64 16, i1 false), !alias.scope !277 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(15) %.sroa.5358.sroa.3, i8 0, i64 15, i1 false), !alias.scope !277 call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(32) %.sroa.9.sroa.2, i8 0, i64 32, i1 false) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.0366.sroa.4, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.0356.sroa.2, i64 24, i1 false) - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(23) %.sroa.11, ptr noundef nonnull align 1 dereferenceable(23) %.sroa.5358, i64 23, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(15) %.sroa.11.sroa.4, ptr noundef nonnull align 8 dereferenceable(15) %.sroa.5358.sroa.3, i64 15, i1 false) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(32) %.sroa.22.sroa.4, ptr noundef nonnull align 4 dereferenceable(32) %.sroa.9.sroa.2, i64 32, i1 false) %610 = getelementptr inbounds nuw i8, ptr %594, i64 8 %.sroa.0.0.copyload.i223 = load i64, ptr %610, align 8 @@ -11563,6 +11563,7 @@ _ZNK5clang10ASTContext13getObjCIdTypeEv.exit218: ; preds = %561, %564 611: ; preds = %596, %606, %609 %.sroa.22.sroa.0.0 = phi i32 [ %.sroa.22.sroa.0.0.copyload, %606 ], [ %.sroa.22.sroa.0.0.copyload, %596 ], [ 0, %609 ] + %.sroa.11.sroa.0.0 = phi i64 [ %.sroa.11.sroa.0.0.copyload, %606 ], [ %.sroa.11.sroa.0.0.copyload, %596 ], [ 0, %609 ] %.sroa.0366.sroa.0.0 = phi i64 [ %.sroa.0366.sroa.0.0.copyload, %606 ], [ %.sroa.0366.sroa.0.0.copyload, %596 ], [ 0, %609 ] %.sroa.13.sroa.0.0 = phi ptr [ %.sroa.13.sroa.0.0.copyload, %606 ], [ %.sroa.13.sroa.0.0.copyload, %596 ], [ null, %609 ] %.sroa.13.sroa.7.0 = phi i64 [ %.sroa.13.sroa.7.0.copyload, %606 ], [ %.sroa.13.sroa.7.0.copyload, %596 ], [ 0, %609 ] @@ -11820,12 +11821,13 @@ _ZN5clang7CodeGen11CallArgListD2Ev.exit: ; preds = %_ZN4llvm11SmallVect .thread657: ; preds = %.thread %733 = load ptr, ptr %134, align 8 call void @_ZN5clang7CodeGen15CodeGenFunction10EmitLValueEPKNS_4ExprENS0_14KnownNonNull_tE(ptr dead_on_unwind nonnull writable sret(%"class.clang::CodeGen::LValue") align 8 %66, ptr noundef nonnull align 8 dereferenceable(6488) %0, ptr noundef %733, i32 noundef 0) #20 - %.sroa.0366.sroa.4.0..sroa_idx693 = getelementptr inbounds i8, ptr %66, i64 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.0366.sroa.4, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.0366.sroa.4.0..sroa_idx693, i64 24, i1 false) + %.sroa.0366.sroa.4.0..sroa_idx694 = getelementptr inbounds i8, ptr %66, i64 8 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.0366.sroa.4, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.0366.sroa.4.0..sroa_idx694, i64 24, i1 false) %.sroa.8367.0..sroa_idx368 = getelementptr inbounds i8, ptr %66, i64 32 %.sroa.8367.0.copyload369 = load i8, ptr %.sroa.8367.0..sroa_idx368, align 8 %.sroa.11.0..sroa_idx378 = getelementptr inbounds i8, ptr %66, i64 33 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(23) %.sroa.11, ptr noundef nonnull align 1 dereferenceable(23) %.sroa.11.0..sroa_idx378, i64 23, i1 false) + %.sroa.11.sroa.4.0..sroa.11.0..sroa_idx378.sroa_idx = getelementptr inbounds i8, ptr %66, i64 41 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(15) %.sroa.11.sroa.4, ptr noundef nonnull align 1 dereferenceable(15) %.sroa.11.sroa.4.0..sroa.11.0..sroa_idx378.sroa_idx, i64 15, i1 false) %.sroa.13.0..sroa_idx383 = getelementptr inbounds i8, ptr %66, i64 56 %.sroa.13.sroa.0.0.copyload672 = load ptr, ptr %.sroa.13.0..sroa_idx383, align 8 %.sroa.13.sroa.7.0..sroa.13.0..sroa_idx383.sroa_idx = getelementptr inbounds i8, ptr %66, i64 64 @@ -11884,12 +11886,14 @@ _ZN5clang7CodeGen11CallArgListD2Ev.exit: ; preds = %_ZN4llvm11SmallVect %743 = and i8 %742, -8 store i8 %743, ptr %740, align 8, !alias.scope !289 store i64 %.sroa.0366.sroa.0.0, ptr %70, align 8 - %.sroa.0366.sroa.4.0..sroa_idx694 = getelementptr inbounds i8, ptr %70, i64 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.0366.sroa.4.0..sroa_idx694, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.0366.sroa.4, i64 24, i1 false) + %.sroa.0366.sroa.4.0..sroa_idx695 = getelementptr inbounds i8, ptr %70, i64 8 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.0366.sroa.4.0..sroa_idx695, ptr noundef nonnull align 8 dereferenceable(24) %.sroa.0366.sroa.4, i64 24, i1 false) %.sroa.8367.0..sroa_idx372 = getelementptr inbounds i8, ptr %70, i64 32 store i8 %.sroa.8367.0, ptr %.sroa.8367.0..sroa_idx372, align 8 %.sroa.11.0..sroa_idx380 = getelementptr inbounds i8, ptr %70, i64 33 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(23) %.sroa.11.0..sroa_idx380, ptr noundef nonnull align 1 dereferenceable(23) %.sroa.11, i64 23, i1 false) + store i64 %.sroa.11.sroa.0.0, ptr %.sroa.11.0..sroa_idx380, align 1 + %.sroa.11.sroa.4.0..sroa.11.0..sroa_idx380.sroa_idx = getelementptr inbounds i8, ptr %70, i64 41 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(15) %.sroa.11.sroa.4.0..sroa.11.0..sroa_idx380.sroa_idx, ptr noundef nonnull align 1 dereferenceable(15) %.sroa.11.sroa.4, i64 15, i1 false) %.sroa.13.0..sroa_idx385 = getelementptr inbounds i8, ptr %70, i64 56 store ptr %.sroa.13.sroa.0.0, ptr %.sroa.13.0..sroa_idx385, align 8 %.sroa.13.sroa.7.0..sroa.13.0..sroa_idx385.sroa_idx = getelementptr inbounds i8, ptr %70, i64 64 diff --git a/bench/llvm/optimized/ExprMutationAnalyzer.cpp.ll b/bench/llvm/optimized/ExprMutationAnalyzer.cpp.ll index e6a9764d2ca..307f278bf4c 100644 --- a/bench/llvm/optimized/ExprMutationAnalyzer.cpp.ll +++ b/bench/llvm/optimized/ExprMutationAnalyzer.cpp.ll @@ -23042,6 +23042,7 @@ define linkonce_odr hidden void @_ZNO5clang12ast_matchers8internal23VariadicOper %9 = load ptr, ptr %8, align 8, !noalias !2626 store ptr null, ptr %8, align 8, !noalias !2626 %10 = getelementptr inbounds i8, ptr %5, i64 8 + store i64 0, ptr %10, align 8 %11 = call noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #21, !noalias !2623 store ptr %11, ptr %5, align 8, !alias.scope !2623 %12 = getelementptr inbounds i8, ptr %11, i64 24 @@ -23186,6 +23187,7 @@ define linkonce_odr hidden void @_ZNO5clang12ast_matchers8internal23VariadicOper _ZN5clang12ast_matchers8internal7MatcherINS_13CXXTypeidExprEEC2ERKS4_.exit.i: ; preds = %9, %2 %12 = getelementptr inbounds i8, ptr %4, i64 8 + store i64 0, ptr %12, align 8 %13 = tail call noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #21, !noalias !2629 store ptr %13, ptr %4, align 8, !alias.scope !2629 %14 = getelementptr inbounds i8, ptr %13, i64 24 @@ -23922,6 +23924,7 @@ define linkonce_odr hidden void @_ZNO5clang12ast_matchers8internal23VariadicOper _ZN5clang12ast_matchers8internal7MatcherINS_13CXXMethodDeclEEC2ERKS4_.exit.i: ; preds = %9, %2 %12 = getelementptr inbounds i8, ptr %4, i64 8 + store i64 0, ptr %12, align 8 %13 = tail call noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #21, !noalias !2652 store ptr %13, ptr %4, align 8, !alias.scope !2652 %14 = getelementptr inbounds i8, ptr %13, i64 24 @@ -32912,6 +32915,7 @@ define linkonce_odr hidden void @_ZNKR5clang12ast_matchers8internal23VariadicOpe %9 = load ptr, ptr %8, align 8, !noalias !3114 store ptr null, ptr %8, align 8, !noalias !3114 %10 = getelementptr inbounds i8, ptr %5, i64 8 + store i64 0, ptr %10, align 8 %11 = call noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #21, !noalias !3111 store ptr %11, ptr %5, align 8, !alias.scope !3111 %12 = getelementptr inbounds i8, ptr %11, i64 24 @@ -33457,6 +33461,7 @@ define linkonce_odr hidden void @_ZNKR5clang12ast_matchers8internal23VariadicOpe %9 = load ptr, ptr %8, align 8, !noalias !3136 store ptr null, ptr %8, align 8, !noalias !3136 %10 = getelementptr inbounds i8, ptr %5, i64 8 + store i64 0, ptr %10, align 8 %11 = call noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #21, !noalias !3133 store ptr %11, ptr %5, align 8, !alias.scope !3133 %12 = getelementptr inbounds i8, ptr %11, i64 24 @@ -33818,6 +33823,7 @@ define linkonce_odr hidden void @_ZNKR5clang12ast_matchers8internal23VariadicOpe %9 = load ptr, ptr %8, align 8, !noalias !3149 store ptr null, ptr %8, align 8, !noalias !3149 %10 = getelementptr inbounds i8, ptr %5, i64 8 + store i64 0, ptr %10, align 8 %11 = call noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #21, !noalias !3146 store ptr %11, ptr %5, align 8, !alias.scope !3146 %12 = getelementptr inbounds i8, ptr %11, i64 24 @@ -34187,6 +34193,7 @@ define linkonce_odr hidden void @_ZNO5clang12ast_matchers8internal23VariadicOper _ZN5clang12ast_matchers8internal7MatcherINS_8QualTypeEEC2ERKS4_.exit.i: ; preds = %9, %2 %12 = getelementptr inbounds i8, ptr %4, i64 8 + store i64 0, ptr %12, align 8 %13 = tail call noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #21, !noalias !3159 store ptr %13, ptr %4, align 8, !alias.scope !3159 %14 = getelementptr inbounds i8, ptr %13, i64 24 @@ -40421,6 +40428,7 @@ define linkonce_odr hidden void @_ZNKR5clang12ast_matchers8internal23VariadicOpe _ZN5clang12ast_matchers8internal7MatcherINS_17CXXMemberCallExprEEC2ERKS4_.exit.i: ; preds = %9, %2 %12 = getelementptr inbounds i8, ptr %4, i64 8 + store i64 0, ptr %12, align 8 %13 = tail call noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #21, !noalias !3493 store ptr %13, ptr %4, align 8, !alias.scope !3493 %14 = getelementptr inbounds i8, ptr %13, i64 24 @@ -51156,6 +51164,7 @@ define linkonce_odr hidden void @_ZNKR5clang12ast_matchers8internal23VariadicOpe _ZN5clang12ast_matchers8internal7MatcherINS_13CXXMethodDeclEEC2ERKS4_.exit.i: ; preds = %9, %2 %12 = getelementptr inbounds i8, ptr %4, i64 8 + store i64 0, ptr %12, align 8 %13 = tail call noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #21, !noalias !4340 store ptr %13, ptr %4, align 8, !alias.scope !4340 %14 = getelementptr inbounds i8, ptr %13, i64 24 @@ -51714,6 +51723,7 @@ define linkonce_odr hidden void @_ZNKR5clang12ast_matchers8internal23VariadicOpe _ZN5clang12ast_matchers8internal7MatcherINS_13CXXRecordDeclEEC2ERKS4_.exit.i: ; preds = %9, %2 %12 = getelementptr inbounds i8, ptr %4, i64 8 + store i64 0, ptr %12, align 8 %13 = tail call noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #21, !noalias !4361 store ptr %13, ptr %4, align 8, !alias.scope !4361 %14 = getelementptr inbounds i8, ptr %13, i64 24 diff --git a/bench/llvm/optimized/OSObjectCStyleCast.cpp.ll b/bench/llvm/optimized/OSObjectCStyleCast.cpp.ll index 8c6d7d6c159..fedb712eb1b 100644 --- a/bench/llvm/optimized/OSObjectCStyleCast.cpp.ll +++ b/bench/llvm/optimized/OSObjectCStyleCast.cpp.ll @@ -5703,6 +5703,7 @@ define linkonce_odr hidden void @_ZNKR5clang12ast_matchers8internal23VariadicOpe %9 = load ptr, ptr %8, align 8, !noalias !411 store ptr null, ptr %8, align 8, !noalias !411 %10 = getelementptr inbounds i8, ptr %5, i64 8 + store i64 0, ptr %10, align 8 %11 = call noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #18, !noalias !408 store ptr %11, ptr %5, align 8, !alias.scope !408 %12 = getelementptr inbounds i8, ptr %11, i64 24 diff --git a/bench/llvm/optimized/UnsafeBufferUsage.cpp.ll b/bench/llvm/optimized/UnsafeBufferUsage.cpp.ll index 5631f4e1517..8ff8e8602b9 100644 --- a/bench/llvm/optimized/UnsafeBufferUsage.cpp.ll +++ b/bench/llvm/optimized/UnsafeBufferUsage.cpp.ll @@ -89706,6 +89706,7 @@ define linkonce_odr hidden void @_ZNKR5clang12ast_matchers8internal23VariadicOpe %9 = load ptr, ptr %8, align 8, !noalias !2679 store ptr null, ptr %8, align 8, !noalias !2679 %10 = getelementptr inbounds i8, ptr %5, i64 8 + store i64 0, ptr %10, align 8 %11 = call noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #28, !noalias !2676 store ptr %11, ptr %5, align 8, !alias.scope !2676 %12 = getelementptr inbounds i8, ptr %11, i64 24 @@ -93340,6 +93341,7 @@ define linkonce_odr hidden void @_ZNKR5clang12ast_matchers8internal23VariadicOpe %10 = load ptr, ptr %9, align 8, !noalias !2896 store ptr null, ptr %9, align 8, !noalias !2896 %11 = getelementptr inbounds i8, ptr %5, i64 8 + store i64 0, ptr %11, align 8 %12 = call noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #28, !noalias !2893 store ptr %12, ptr %5, align 8, !alias.scope !2893 %13 = getelementptr inbounds i8, ptr %12, i64 24 @@ -94912,6 +94914,7 @@ define linkonce_odr hidden void @_ZNKR5clang12ast_matchers8internal23VariadicOpe _ZN5clang12ast_matchers8internal7MatcherINS_16CXXConstructExprEEC2ERKS4_.exit.i: ; preds = %9, %2 %12 = getelementptr inbounds i8, ptr %4, i64 8 + store i64 0, ptr %12, align 8 %13 = tail call noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #28, !noalias !3003 store ptr %13, ptr %4, align 8, !alias.scope !3003 %14 = getelementptr inbounds i8, ptr %13, i64 24 @@ -95627,6 +95630,7 @@ define linkonce_odr hidden void @_ZNKR5clang12ast_matchers8internal23VariadicOpe _ZN5clang12ast_matchers8internal7MatcherINS_4StmtEEC2ERKS4_.exit.i: ; preds = %9, %2 %12 = getelementptr inbounds i8, ptr %4, i64 8 + store i64 0, ptr %12, align 8 %13 = tail call noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #28, !noalias !3042 store ptr %13, ptr %4, align 8, !alias.scope !3042 %14 = getelementptr inbounds i8, ptr %13, i64 24 @@ -95884,6 +95888,7 @@ define linkonce_odr hidden void @_ZNKR5clang12ast_matchers8internal23VariadicOpe _ZN5clang12ast_matchers8internal7MatcherINS_4StmtEEC2ERKS4_.exit.i: ; preds = %9, %2 %12 = getelementptr inbounds i8, ptr %4, i64 8 + store i64 0, ptr %12, align 8 %13 = tail call noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #28, !noalias !3054 store ptr %13, ptr %4, align 8, !alias.scope !3054 %14 = getelementptr inbounds i8, ptr %13, i64 24 @@ -102611,6 +102616,7 @@ define linkonce_odr hidden void @_ZNO5clang12ast_matchers8internal23VariadicOper _ZN5clang12ast_matchers8internal7MatcherINS_13CXXMethodDeclEEC2ERKS4_.exit.i: ; preds = %9, %2 %12 = getelementptr inbounds i8, ptr %4, i64 8 + store i64 0, ptr %12, align 8 %13 = tail call noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #28, !noalias !3572 store ptr %13, ptr %4, align 8, !alias.scope !3572 %14 = getelementptr inbounds i8, ptr %13, i64 24 diff --git a/bench/luau/optimized/Generalization.cpp.ll b/bench/luau/optimized/Generalization.cpp.ll index d477f780fbc..8a96a71d5c4 100644 --- a/bench/luau/optimized/Generalization.cpp.ll +++ b/bench/luau/optimized/Generalization.cpp.ll @@ -1642,11 +1642,9 @@ _ZN4Luau3getINS_12FunctionTypeEEEPKT_PKNS_4TypeE.exit: ; preds = %13 %33 = getelementptr inbounds i8, ptr %7, i64 24 %34 = getelementptr inbounds i8, ptr %7, i64 40 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %33, i8 0, i64 16, i1 false) - store i32 1065353216, ptr %34, align 8 - %.sroa_idx.i = getelementptr inbounds i8, ptr %7, i64 44 - store i32 0, ptr %.sroa_idx.i, align 4 - %.sroa.5.32..sroa_idx.i = getelementptr inbounds i8, ptr %7, i64 48 - store i64 0, ptr %.sroa.5.32..sroa_idx.i, align 8 + store float 1.000000e+00, ptr %34, align 8 + %.sroa.5.32..sroa_idx.i = getelementptr inbounds i8, ptr %7, i64 44 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %.sroa.5.32..sroa_idx.i, i8 0, i64 12, i1 false) %35 = getelementptr inbounds i8, ptr %7, i64 56 store ptr %35, ptr %31, align 8 store ptr null, ptr %35, align 8 diff --git a/bench/luau/optimized/NonStrictTypeChecker.cpp.ll b/bench/luau/optimized/NonStrictTypeChecker.cpp.ll index 14aabffac6b..0be6b7fd43e 100644 --- a/bench/luau/optimized/NonStrictTypeChecker.cpp.ll +++ b/bench/luau/optimized/NonStrictTypeChecker.cpp.ll @@ -2662,6 +2662,7 @@ define linkonce_odr dso_local void @_ZN4Luau20NonStrictTypeChecker5visitEPNS_12A br i1 %.not, label %165, label %51 51: ; preds = %44 + call void @llvm.experimental.noalias.scope.decl(metadata !12) call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %5) %52 = getelementptr inbounds i8, ptr %46, i64 48 %53 = load ptr, ptr %52, align 8, !noalias !12 @@ -2711,7 +2712,7 @@ _ZN4Luau16NonStrictContextD2Ev.exit48: ; preds = %_ZNSt10_HashtableIP br i1 %.not.i, label %_ZN4Luau16NonStrictContextD2Ev.exit, label %.lr.ph _ZN4Luau16NonStrictContextD2Ev.exit: ; preds = %_ZN4Luau16NonStrictContextD2Ev.exit48, %51 - store i64 0, ptr %43, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %43, i8 0, i64 24, i1 false), !alias.scope !12 store ptr %23, ptr %7, align 8 store i64 1, ptr %24, align 8 store float 1.000000e+00, ptr %26, align 8 @@ -4923,7 +4924,7 @@ _ZN4Luau16NonStrictContextD2Ev.exit: ; preds = %_ZNSt10_HashtableIP ._crit_edge: ; preds = %_ZN4Luau16NonStrictContextD2Ev.exit, %3 %26 = getelementptr inbounds i8, ptr %0, i64 32 - store i64 0, ptr %26, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %26, i8 0, i64 24, i1 false) %27 = getelementptr inbounds i8, ptr %0, i64 48 store ptr %27, ptr %0, align 8 %28 = getelementptr inbounds i8, ptr %0, i64 8 @@ -5032,7 +5033,7 @@ declare ptr @_ZNK4Luau13DataFlowGraph6getDefEPKNS_8AstLocalE(ptr noundef nonnull define linkonce_odr dso_local void @_ZN4Luau16NonStrictContext11disjunctionENS_7NotNullINS_12BuiltinTypesEEENS1_INS_9TypeArenaEEERKS0_S7_(ptr dead_on_unwind noalias writable sret(%"struct.Luau::NonStrictContext") align 8 %0, ptr %1, ptr %2, ptr noundef nonnull align 8 dereferenceable(56) %3, ptr noundef nonnull align 8 dereferenceable(56) %4) local_unnamed_addr #5 comdat align 2 personality ptr @__gxx_personality_v0 { %6 = alloca %"struct.Luau::SimplifyResult", align 8 %7 = getelementptr inbounds i8, ptr %0, i64 32 - store i64 0, ptr %7, align 8 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %7, i8 0, i64 24, i1 false) %8 = getelementptr inbounds i8, ptr %0, i64 48 store ptr %8, ptr %0, align 8 %9 = getelementptr inbounds i8, ptr %0, i64 8 @@ -5924,7 +5925,7 @@ define linkonce_odr dso_local void @_ZN4Luau20NonStrictTypeChecker5visitEPNS_11A %16 = alloca %"class.Luau::Variant.239", align 8 %17 = alloca %"struct.Luau::CheckedFunctionIncorrectArgs", align 8 %18 = getelementptr inbounds i8, ptr %0, i64 32 - store i64 0, ptr %18, align 8 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %18, i8 0, i64 24, i1 false) %19 = getelementptr inbounds i8, ptr %0, i64 48 store ptr %19, ptr %0, align 8 %20 = getelementptr inbounds i8, ptr %0, i64 8 @@ -12058,7 +12059,7 @@ _ZNSt6vectorIN4Luau7NotNullIKNS0_3DefEEESaIS4_EED2Ev.exit19: ; preds = %122, %12 define linkonce_odr dso_local void @_ZN4Luau16NonStrictContext11conjunctionENS_7NotNullINS_12BuiltinTypesEEENS1_INS_9TypeArenaEEERKS0_S7_(ptr dead_on_unwind noalias writable sret(%"struct.Luau::NonStrictContext") align 8 %0, ptr %1, ptr %2, ptr noundef nonnull align 8 dereferenceable(56) %3, ptr noundef nonnull align 8 dereferenceable(56) %4) local_unnamed_addr #5 comdat align 2 personality ptr @__gxx_personality_v0 { %6 = alloca %"struct.Luau::SimplifyResult", align 8 %7 = getelementptr inbounds i8, ptr %0, i64 32 - store i64 0, ptr %7, align 8 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(56) %7, i8 0, i64 24, i1 false) %8 = getelementptr inbounds i8, ptr %0, i64 48 store ptr %8, ptr %0, align 8 %9 = getelementptr inbounds i8, ptr %0, i64 8 diff --git a/bench/luau/optimized/ToString.cpp.ll b/bench/luau/optimized/ToString.cpp.ll index ba7eb62c6a8..42d80524b17 100644 --- a/bench/luau/optimized/ToString.cpp.ll +++ b/bench/luau/optimized/ToString.cpp.ll @@ -2858,11 +2858,9 @@ define dso_local void @_ZN4Luau16toStringDetailedEPKNS_4TypeERNS_15ToStringOptio %38 = getelementptr inbounds i8, ptr %6, i64 24 %39 = getelementptr inbounds i8, ptr %6, i64 40 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %38, i8 0, i64 16, i1 false) - store i32 1065353216, ptr %39, align 8 - %.sroa_idx.i.i = getelementptr inbounds i8, ptr %6, i64 44 - store i32 0, ptr %.sroa_idx.i.i, align 4 - %.sroa.5.32..sroa_idx.i.i = getelementptr inbounds i8, ptr %6, i64 48 - store i64 0, ptr %.sroa.5.32..sroa_idx.i.i, align 8 + store float 1.000000e+00, ptr %39, align 8 + %.sroa.5.32..sroa_idx.i.i = getelementptr inbounds i8, ptr %6, i64 44 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %.sroa.5.32..sroa_idx.i.i, i8 0, i64 12, i1 false) %40 = getelementptr inbounds i8, ptr %6, i64 56 store ptr %40, ptr %36, align 8 store ptr null, ptr %40, align 8 @@ -5988,11 +5986,9 @@ define dso_local void @_ZN4Luau16toStringDetailedEPKNS_11TypePackVarERNS_15ToStr %34 = getelementptr inbounds i8, ptr %6, i64 24 %35 = getelementptr inbounds i8, ptr %6, i64 40 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %34, i8 0, i64 16, i1 false) - store i32 1065353216, ptr %35, align 8 - %.sroa_idx.i.i = getelementptr inbounds i8, ptr %6, i64 44 - store i32 0, ptr %.sroa_idx.i.i, align 4 - %.sroa.5.32..sroa_idx.i.i = getelementptr inbounds i8, ptr %6, i64 48 - store i64 0, ptr %.sroa.5.32..sroa_idx.i.i, align 8 + store float 1.000000e+00, ptr %35, align 8 + %.sroa.5.32..sroa_idx.i.i = getelementptr inbounds i8, ptr %6, i64 44 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %.sroa.5.32..sroa_idx.i.i, i8 0, i64 12, i1 false) %36 = getelementptr inbounds i8, ptr %6, i64 56 store ptr %36, ptr %32, align 8 store ptr null, ptr %36, align 8 diff --git a/bench/lz4/optimized/lz4frame.c.ll b/bench/lz4/optimized/lz4frame.c.ll index 3a433d77b4c..44dcbcb1134 100644 --- a/bench/lz4/optimized/lz4frame.c.ll +++ b/bench/lz4/optimized/lz4frame.c.ll @@ -251,35 +251,34 @@ if.then13: ; preds = %LZ4F_getBlockSize.e br label %if.end15 if.end15: ; preds = %if.then13, %LZ4F_getBlockSize.exit - %3 = getelementptr inbounds i8, ptr %options, i64 4 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %3, i8 0, i64 12, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %options, i8 0, i64 16, i1 false) store i32 1, ptr %options, align 4 %prefs.sroa.32.0.preferencesPtr.sroa_idx.i = getelementptr inbounds i8, ptr %prefs, i64 8 %prefs.sroa.32.0.copyload.i = load i32, ptr %prefs.sroa.32.0.preferencesPtr.sroa_idx.i, align 8 %prefs.sroa.43.0.preferencesPtr.sroa_idx.i = getelementptr inbounds i8, ptr %prefs, i64 28 %prefs.sroa.43.0.copyload.i = load i32, ptr %prefs.sroa.43.0.preferencesPtr.sroa_idx.i, align 4 - br i1 %cmp.i53, label %LZ4F_getBlockSize.exit.thread49.i.i, label %4 + br i1 %cmp.i53, label %LZ4F_getBlockSize.exit.thread49.i.i, label %3 -4: ; preds = %if.end15 - %5 = and i32 %.else.val25.fr.i.i51, -4 - %or.cond.not.i.i.i = icmp eq i32 %5, 4 +3: ; preds = %if.end15 + %4 = and i32 %.else.val25.fr.i.i51, -4 + %or.cond.not.i.i.i = icmp eq i32 %4, 4 br i1 %or.cond.not.i.i.i, label %LZ4F_getBlockSize.exit.thread49.i.i, label %LZ4F_compressFrameBound.exit -LZ4F_getBlockSize.exit.thread49.i.i: ; preds = %4, %if.end15 - %.ph.i.i = phi i32 [ 4, %if.end15 ], [ %.else.val25.fr.i.i51, %4 ] +LZ4F_getBlockSize.exit.thread49.i.i: ; preds = %3, %if.end15 + %.ph.i.i = phi i32 [ 4, %if.end15 ], [ %.else.val25.fr.i.i51, %3 ] %sub.i51.i.i = add nsw i32 %.ph.i.i, -4 %idxprom.i52.i.i = zext nneg i32 %sub.i51.i.i to i64 %arrayidx.i53.i.i = getelementptr inbounds [4 x i64], ptr @LZ4F_getBlockSize.blockSizes, i64 0, i64 %idxprom.i52.i.i - %6 = load i64, ptr %arrayidx.i53.i.i, align 8 + %5 = load i64, ptr %arrayidx.i53.i.i, align 8 br label %LZ4F_compressFrameBound.exit -LZ4F_compressFrameBound.exit: ; preds = %4, %LZ4F_getBlockSize.exit.thread49.i.i - %retval.0.i47.i.i = phi i64 [ %6, %LZ4F_getBlockSize.exit.thread49.i.i ], [ -2, %4 ] +LZ4F_compressFrameBound.exit: ; preds = %3, %LZ4F_getBlockSize.exit.thread49.i.i + %retval.0.i47.i.i = phi i64 [ %5, %LZ4F_getBlockSize.exit.thread49.i.i ], [ -2, %3 ] %conv21.i.i = zext i32 %prefs.sroa.43.0.copyload.i to i64 %mul.i.i = shl nuw nsw i64 %conv21.i.i, 2 - %7 = zext i32 %prefs.sroa.32.0.copyload.i to i64 - %8 = shl nuw nsw i64 %7, 2 - %9 = add nuw nsw i64 %mul.i.i, 4 + %6 = zext i32 %prefs.sroa.32.0.copyload.i to i64 + %7 = shl nuw nsw i64 %6, 2 + %8 = add nuw nsw i64 %mul.i.i, 4 %sub.i.i = add i64 %retval.0.i47.i.i, -1 %div.i.i = udiv i64 %srcSize, %retval.0.i47.i.i %and.i.i = and i64 %sub.i.i, %srcSize @@ -287,10 +286,10 @@ LZ4F_compressFrameBound.exit: ; preds = %4, %LZ4F_getBlockSi %conv17.i.i = zext i1 %cmp16.i.i to i64 %add18.i.i = add i64 %div.i.i, %conv17.i.i %conv28.i.i = and i64 %add18.i.i, 4294967295 - %mul29.i.i = mul i64 %conv28.i.i, %9 + %mul29.i.i = mul i64 %conv28.i.i, %8 %conv30.i.i = and i64 %div.i.i, 4294967295 %mul31.i.i = mul i64 %conv30.i.i, %retval.0.i47.i.i - %add32.i.i = add nuw nsw i64 %8, 23 + %add32.i.i = add nuw nsw i64 %7, 23 %add33.i.i = add i64 %add32.i.i, %and.i.i %add34.i.i = add i64 %add33.i.i, %mul31.i.i %add.i29 = add i64 %add34.i.i, %mul29.i.i @@ -328,8 +327,8 @@ do.end6.i: ; preds = %do.end.i %add.ptr7.i = getelementptr inbounds i8, ptr %add.ptr.i, i64 4 %contentChecksumFlag.i = getelementptr inbounds i8, ptr %cctx, i64 40 store i32 0, ptr %add.ptr.i, align 1 - %10 = load i32, ptr %contentChecksumFlag.i, align 8 - %cmp8.i = icmp eq i32 %10, 1 + %9 = load i32, ptr %contentChecksumFlag.i, align 8 + %cmp8.i = icmp eq i32 %9, 1 br i1 %cmp8.i, label %if.then9.i, label %if.end19.i if.then9.i: ; preds = %do.end6.i @@ -361,14 +360,14 @@ if.end19.i: ; preds = %do.end17.i, %do.end %cStage.i = getelementptr inbounds i8, ptr %cctx, i64 92 store i32 0, ptr %cStage.i, align 4 %contentSize.i = getelementptr inbounds i8, ptr %cctx, i64 48 - %11 = load i64, ptr %contentSize.i, align 8 - %tobool22.not.i = icmp eq i64 %11, 0 + %10 = load i64, ptr %contentSize.i, align 8 + %tobool22.not.i = icmp eq i64 %10, 0 br i1 %tobool22.not.i, label %LZ4F_compressEnd.exit, label %if.then23.i if.then23.i: ; preds = %if.end19.i %totalInSize.i = getelementptr inbounds i8, ptr %cctx, i64 144 - %12 = load i64, ptr %totalInSize.i, align 8 - %cmp27.not.i = icmp eq i64 %11, %12 + %11 = load i64, ptr %totalInSize.i, align 8 + %cmp27.not.i = icmp eq i64 %10, %11 br i1 %cmp27.not.i, label %LZ4F_compressEnd.exit, label %return LZ4F_compressEnd.exit: ; preds = %if.end19.i, %if.then23.i diff --git a/bench/meilisearch-rs/optimized/4p6euf9p6jz4j36m.ll b/bench/meilisearch-rs/optimized/4p6euf9p6jz4j36m.ll index f8a3f7a428a..62f0824e6b5 100644 --- a/bench/meilisearch-rs/optimized/4p6euf9p6jz4j36m.ll +++ b/bench/meilisearch-rs/optimized/4p6euf9p6jz4j36m.ll @@ -72392,11 +72392,9 @@ _ZN9actix_web8response8response12HttpResponse10from_error17hfc5a431b1f055185E.ex %149 = getelementptr inbounds i8, ptr %1, i64 756 %150 = getelementptr inbounds i8, ptr %1, i64 753 %151 = getelementptr inbounds i8, ptr %1, i64 755 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %150, i8 0, i64 3, i1 false), !noalias !14362 - store i8 1, ptr %148, align 2, !noalias !14362 + store i32 16777472, ptr %150, align 1, !noalias !14362 %152 = getelementptr inbounds i8, ptr %1, i64 488 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(128) %152, ptr noundef nonnull align 8 dereferenceable(128) %147, i64 128, i1 false), !noalias !14362 - store i8 1, ptr %149, align 4, !noalias !14362 %153 = getelementptr inbounds i8, ptr %1, i64 616 %154 = getelementptr inbounds i8, ptr %1, i64 408 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %153, ptr noundef nonnull align 8 dereferenceable(48) %154, i64 48, i1 false), !noalias !14362 @@ -162486,9 +162484,8 @@ _ZN9actix_web8response8response12HttpResponse10from_error17hfc5a431b1f055185E.ex %137 = getelementptr inbounds i8, ptr %1, i64 2261 %138 = getelementptr inbounds i8, ptr %1, i64 2260 %139 = getelementptr inbounds i8, ptr %1, i64 2259 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %139, i8 0, i64 3, i1 false), !noalias !29052 + store i32 1, ptr %135, align 2, !noalias !29052 call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %47), !noalias !29052 - store i8 1, ptr %135, align 2, !noalias !29052 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(128) %47, ptr noundef nonnull align 8 dereferenceable(128) %134, i64 128, i1 false), !noalias !29052 %140 = getelementptr inbounds i8, ptr %1, i64 728 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %43), !noalias !29052 @@ -213891,12 +213888,10 @@ _ZN9actix_web8response8response12HttpResponse10from_error17hfc5a431b1f055185E.ex %146 = getelementptr inbounds i8, ptr %1, i64 580 %147 = getelementptr inbounds i8, ptr %1, i64 579 %148 = getelementptr inbounds i8, ptr %1, i64 577 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %148, i8 0, i64 3, i1 false), !noalias !37675 + store i32 16777472, ptr %148, align 1, !noalias !37675 call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %59), !noalias !37675 - store i8 1, ptr %145, align 2, !noalias !37675 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(128) %59, ptr noundef nonnull align 8 dereferenceable(128) %144, i64 128, i1 false), !noalias !37675 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %58), !noalias !37675 - store i8 1, ptr %146, align 4, !noalias !37675 %149 = getelementptr inbounds i8, ptr %1, i64 408 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %58, ptr noundef nonnull align 8 dereferenceable(24) %149, i64 24, i1 false), !noalias !37675 %150 = getelementptr inbounds i8, ptr %1, i64 488 diff --git a/bench/meshlab/optimized/bool_value.cpp.ll b/bench/meshlab/optimized/bool_value.cpp.ll index 6ba2a8228a2..a881ac44b6f 100644 --- a/bench/meshlab/optimized/bool_value.cpp.ll +++ b/bench/meshlab/optimized/bool_value.cpp.ll @@ -133,19 +133,17 @@ define linkonce_odr { <2 x float>, float } @_ZNK5Value9getPoint3Ev(ptr noundef n ; Function Attrs: mustprogress uwtable define linkonce_odr void @_ZNK5Value7getShotEv(ptr dead_on_unwind noalias writable sret(%"class.vcg::Shot") align 4 %0, ptr noundef nonnull align 8 dereferenceable(8) %1) unnamed_addr #2 comdat align 2 personality ptr @__gxx_personality_v0 { - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(56) %0, i8 0, i64 56, i1 false) %3 = getelementptr inbounds i8, ptr %0, i64 56 - %4 = getelementptr inbounds i8, ptr %0, i64 60 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %4, i8 0, i64 56, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(116) %0, i8 0, i64 116, i1 false) store float 1.000000e+00, ptr %3, align 4 - %5 = getelementptr inbounds i8, ptr %0, i64 76 + %4 = getelementptr inbounds i8, ptr %0, i64 76 + store float 1.000000e+00, ptr %4, align 4 + %5 = getelementptr inbounds i8, ptr %0, i64 96 store float 1.000000e+00, ptr %5, align 4 - %6 = getelementptr inbounds i8, ptr %0, i64 96 + %6 = getelementptr inbounds i8, ptr %0, i64 116 store float 1.000000e+00, ptr %6, align 4 - %7 = getelementptr inbounds i8, ptr %0, i64 116 - store float 1.000000e+00, ptr %7, align 4 - %8 = getelementptr inbounds i8, ptr %0, i64 120 - store float 0.000000e+00, ptr %8, align 4 + %7 = getelementptr inbounds i8, ptr %0, i64 120 + store float 0.000000e+00, ptr %7, align 4 %.sroa.2.0..sroa_idx.i.i = getelementptr inbounds i8, ptr %0, i64 124 store float 0.000000e+00, ptr %.sroa.2.0..sroa_idx.i.i, align 4 %.sroa.3.0..sroa_idx.i.i = getelementptr inbounds i8, ptr %0, i64 128 diff --git a/bench/meshlab/optimized/filter_sketchfab.cpp.ll b/bench/meshlab/optimized/filter_sketchfab.cpp.ll index fae08496526..d5176c9d462 100644 --- a/bench/meshlab/optimized/filter_sketchfab.cpp.ll +++ b/bench/meshlab/optimized/filter_sketchfab.cpp.ll @@ -15134,7 +15134,7 @@ define internal fastcc noundef range(i32 0, 2) i32 @_ZL32mz_zip_writer_add_to_ce 29: ; preds = %22 %.4..4..4..sroa_idx = getelementptr inbounds i8, ptr %15, i64 4 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(34) %.4..4..4..sroa_idx, i8 0, i64 34, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(40) %.4..4..4..sroa_idx, i8 0, i64 40, i1 false) store i8 80, ptr %15, align 16 %.1..1..1..sroa_idx = getelementptr inbounds i8, ptr %15, i64 1 store i8 75, ptr %.1..1..1..sroa_idx, align 1 @@ -15225,12 +15225,6 @@ define internal fastcc noundef range(i32 0, 2) i32 @_ZL32mz_zip_writer_add_to_ce %65 = trunc nuw nsw i32 %12 to i8 %.38..38..38..sroa_idx = getelementptr inbounds i8, ptr %15, i64 38 store i8 %65, ptr %.38..38..38..sroa_idx, align 2 - %.39..39..39..sroa_idx = getelementptr inbounds i8, ptr %15, i64 39 - store i8 0, ptr %.39..39..39..sroa_idx, align 1 - %.40..40..40..sroa_idx = getelementptr inbounds i8, ptr %15, i64 40 - store i8 0, ptr %.40..40..40..sroa_idx, align 8 - %.41..41..41..sroa_idx = getelementptr inbounds i8, ptr %15, i64 41 - store i8 0, ptr %.41..41..41..sroa_idx, align 1 %66 = trunc i64 %11 to i8 %.42..42..42..sroa_idx = getelementptr inbounds i8, ptr %15, i64 42 store i8 %66, ptr %.42..42..42..sroa_idx, align 2 @@ -16189,7 +16183,7 @@ _ZL55mz_zip_writer_compute_padding_needed_for_file_alignmentP18mz_zip_archive_ta 141: ; preds = %136 %142 = getelementptr inbounds i8, ptr %9, i64 8 %143 = load i64, ptr %142, align 8 - call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(46) %6, ptr noundef nonnull align 1 dereferenceable(46) %30, i64 46, i1 false) + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(46) %6, ptr noundef nonnull align 1 dereferenceable(46) %30, i64 42, i1 false) %144 = trunc i64 %48 to i8 %.42..42..42..sroa_idx = getelementptr inbounds i8, ptr %6, i64 42 store i8 %144, ptr %.42..42..42..sroa_idx, align 2 diff --git a/bench/meshlab/optimized/miniz.c.ll b/bench/meshlab/optimized/miniz.c.ll index 5ca4a3de4f2..5e5a8911ad6 100644 --- a/bench/meshlab/optimized/miniz.c.ll +++ b/bench/meshlab/optimized/miniz.c.ll @@ -14990,7 +14990,7 @@ define internal fastcc range(i32 0, 2) i32 @mz_zip_writer_add_to_central_dir(ptr %46 = trunc i32 %17 to i16 %47 = add i16 %4, %46 %.4..4..4..sroa_idx = getelementptr inbounds i8, ptr %20, i64 4 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(34) %.4..4..4..sroa_idx, i8 0, i64 34, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(40) %.4..4..4..sroa_idx, i8 0, i64 40, i1 false) store i8 80, ptr %20, align 16 %.1..1..1..sroa_idx = getelementptr inbounds i8, ptr %20, i64 1 store i8 75, ptr %.1..1..1..sroa_idx, align 1 @@ -15097,12 +15097,6 @@ define internal fastcc range(i32 0, 2) i32 @mz_zip_writer_add_to_central_dir(ptr %91 = trunc nuw nsw i32 %15 to i8 %.38..38..38..sroa_idx = getelementptr inbounds i8, ptr %20, i64 38 store i8 %91, ptr %.38..38..38..sroa_idx, align 2 - %.39..39..39..sroa_idx = getelementptr inbounds i8, ptr %20, i64 39 - store i8 0, ptr %.39..39..39..sroa_idx, align 1 - %.40..40..40..sroa_idx = getelementptr inbounds i8, ptr %20, i64 40 - store i8 0, ptr %.40..40..40..sroa_idx, align 8 - %.41..41..41..sroa_idx = getelementptr inbounds i8, ptr %20, i64 41 - store i8 0, ptr %.41..41..41..sroa_idx, align 1 %92 = tail call i64 @llvm.umin.i64(i64 %14, i64 4294967295) %93 = trunc i64 %92 to i8 %.42..42..42..sroa_idx = getelementptr inbounds i8, ptr %20, i64 42 diff --git a/bench/minetest/optimized/l_areastore.cpp.ll b/bench/minetest/optimized/l_areastore.cpp.ll index c64c44755e6..18849daceb1 100644 --- a/bench/minetest/optimized/l_areastore.cpp.ll +++ b/bench/minetest/optimized/l_areastore.cpp.ll @@ -2127,7 +2127,7 @@ invoke.cont: %call = tail call noalias noundef nonnull dereferenceable(184) ptr @_Znwm(i64 noundef 184) #26 %0 = getelementptr inbounds i8, ptr %call, i64 16 %_M_left.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %call, i64 32 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(112) %call, i8 0, i64 112, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(112) %call, i8 0, i64 104, i1 false) store ptr %0, ptr %_M_left.i.i.i.i.i.i.i, align 8, !tbaa !56 %_M_right.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %call, i64 40 store ptr %0, ptr %_M_right.i.i.i.i.i.i.i, align 8, !tbaa !60 @@ -2137,23 +2137,25 @@ invoke.cont: store i8 64, ptr %m_cacheblock_radius.i.i, align 1, !tbaa !80 %m_res_cache.i.i = getelementptr inbounds i8, ptr %call, i64 64 %1 = getelementptr inbounds i8, ptr %call, i64 96 + %_M_parent.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %call, i64 104 + store ptr null, ptr %_M_parent.i.i.i.i.i.i.i.i, align 8, !tbaa !81 %_M_left.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %call, i64 112 store ptr %1, ptr %_M_left.i.i.i.i.i.i.i.i, align 8, !tbaa !56 %_M_right.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %call, i64 120 store ptr %1, ptr %_M_right.i.i.i.i.i.i.i.i, align 8, !tbaa !60 %_M_node_count.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %call, i64 128 - store i64 0, ptr %_M_node_count.i.i.i.i.i.i.i.i, align 8, !tbaa !81 + store i64 0, ptr %_M_node_count.i.i.i.i.i.i.i.i, align 8, !tbaa !82 %m_queue.i.i.i = getelementptr inbounds i8, ptr %call, i64 136 %_M_prev.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %call, i64 144 - store ptr %m_queue.i.i.i, ptr %_M_prev.i.i.i.i.i.i.i.i, align 8, !tbaa !82 - store ptr %m_queue.i.i.i, ptr %m_queue.i.i.i, align 8, !tbaa !83 + store ptr %m_queue.i.i.i, ptr %_M_prev.i.i.i.i.i.i.i.i, align 8, !tbaa !83 + store ptr %m_queue.i.i.i, ptr %m_queue.i.i.i, align 8, !tbaa !84 %_M_size.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %call, i64 152 - store i64 0, ptr %_M_size.i.i.i.i.i.i.i.i, align 8, !tbaa !84 + store i64 0, ptr %_M_size.i.i.i.i.i.i.i.i, align 8, !tbaa !85 %m_limit.i.i.i = getelementptr inbounds i8, ptr %call, i64 80 - store i64 1000, ptr %m_limit.i.i.i, align 8, !tbaa !85 - store ptr @_ZN9AreaStore9cacheMissEPvRKN3irr4core8vector3dIsEEPSt6vectorIP4AreaSaIS9_EE, ptr %m_res_cache.i.i, align 8, !tbaa !86 + store i64 1000, ptr %m_limit.i.i.i, align 8, !tbaa !86 + store ptr @_ZN9AreaStore9cacheMissEPvRKN3irr4core8vector3dIsEEPSt6vectorIP4AreaSaIS9_EE, ptr %m_res_cache.i.i, align 8, !tbaa !87 %m_cache_miss_data.i.i.i = getelementptr inbounds i8, ptr %call, i64 72 - store ptr %call, ptr %m_cache_miss_data.i.i.i, align 8, !tbaa !87 + store ptr %call, ptr %m_cache_miss_data.i.i.i, align 8, !tbaa !88 store ptr getelementptr inbounds (i8, ptr @_ZTV15VectorAreaStore, i64 16), ptr %call, align 8, !tbaa !10 %m_areas.i = getelementptr inbounds i8, ptr %call, i64 160 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %m_areas.i, i8 0, i64 24, i1 false) @@ -2230,18 +2232,18 @@ cleanup.action13: ; preds = %invoke.cont %_M_right.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %call.i39, i64 120 store ptr %1, ptr %_M_right.i.i.i.i.i.i.i.i.i, align 8, !tbaa !60 %_M_node_count.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %call.i39, i64 128 - store i64 0, ptr %_M_node_count.i.i.i.i.i.i.i.i.i, align 8, !tbaa !81 + store i64 0, ptr %_M_node_count.i.i.i.i.i.i.i.i.i, align 8, !tbaa !82 %m_queue.i.i.i.i = getelementptr inbounds i8, ptr %call.i39, i64 136 %_M_prev.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %call.i39, i64 144 - store ptr %m_queue.i.i.i.i, ptr %_M_prev.i.i.i.i.i.i.i.i.i, align 8, !tbaa !82 - store ptr %m_queue.i.i.i.i, ptr %m_queue.i.i.i.i, align 8, !tbaa !83 + store ptr %m_queue.i.i.i.i, ptr %_M_prev.i.i.i.i.i.i.i.i.i, align 8, !tbaa !83 + store ptr %m_queue.i.i.i.i, ptr %m_queue.i.i.i.i, align 8, !tbaa !84 %_M_size.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %call.i39, i64 152 - store i64 0, ptr %_M_size.i.i.i.i.i.i.i.i.i, align 8, !tbaa !84 + store i64 0, ptr %_M_size.i.i.i.i.i.i.i.i.i, align 8, !tbaa !85 %m_limit.i.i.i.i = getelementptr inbounds i8, ptr %call.i39, i64 80 - store i64 1000, ptr %m_limit.i.i.i.i, align 8, !tbaa !85 - store ptr @_ZN9AreaStore9cacheMissEPvRKN3irr4core8vector3dIsEEPSt6vectorIP4AreaSaIS9_EE, ptr %m_res_cache.i.i.i, align 8, !tbaa !86 + store i64 1000, ptr %m_limit.i.i.i.i, align 8, !tbaa !86 + store ptr @_ZN9AreaStore9cacheMissEPvRKN3irr4core8vector3dIsEEPSt6vectorIP4AreaSaIS9_EE, ptr %m_res_cache.i.i.i, align 8, !tbaa !87 %m_cache_miss_data.i.i.i.i = getelementptr inbounds i8, ptr %call.i39, i64 72 - store ptr %call.i39, ptr %m_cache_miss_data.i.i.i.i, align 8, !tbaa !87 + store ptr %call.i39, ptr %m_cache_miss_data.i.i.i.i, align 8, !tbaa !88 store ptr getelementptr inbounds (i8, ptr @_ZTV15VectorAreaStore, i64 16), ptr %call.i39, align 8, !tbaa !10 %m_areas.i.i = getelementptr inbounds i8, ptr %call.i39, i64 160 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %m_areas.i.i, i8 0, i64 24, i1 false) @@ -2594,10 +2596,11 @@ attributes #26 = { builtin allocsize(0) } !78 = !{!"_ZTSNSt8__detail17_List_node_headerE", !79, i64 0, !18, i64 16} !79 = !{!"_ZTSNSt8__detail15_List_node_baseE", !5, i64 0, !5, i64 8} !80 = !{!62, !6, i64 57} -!81 = !{!57, !18, i64 32} -!82 = !{!79, !5, i64 8} -!83 = !{!79, !5, i64 0} -!84 = !{!78, !18, i64 16} -!85 = !{!69, !18, i64 16} -!86 = !{!69, !5, i64 0} -!87 = !{!69, !5, i64 8} +!81 = !{!57, !5, i64 8} +!82 = !{!57, !18, i64 32} +!83 = !{!79, !5, i64 8} +!84 = !{!79, !5, i64 0} +!85 = !{!78, !18, i64 16} +!86 = !{!69, !18, i64 16} +!87 = !{!69, !5, i64 0} +!88 = !{!69, !5, i64 8} diff --git a/bench/mitsuba3/optimized/bitmap.cpp.ll b/bench/mitsuba3/optimized/bitmap.cpp.ll index 911ad2a06c9..d974904c280 100644 --- a/bench/mitsuba3/optimized/bitmap.cpp.ll +++ b/bench/mitsuba3/optimized/bitmap.cpp.ll @@ -44865,7 +44865,7 @@ define linkonce_odr hidden noundef ptr @_ZNK7Imf_2_514TypedAttributeIN9Imath_2_5 store ptr getelementptr inbounds (i8, ptr @_ZTVN7Imf_2_514TypedAttributeIN9Imath_2_58Matrix33IfEEEE, i64 16), ptr %2, align 8 %4 = getelementptr inbounds i8, ptr %2, i64 8 %5 = getelementptr inbounds i8, ptr %2, i64 12 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %5, i8 0, i64 28, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %5, i8 0, i64 32, i1 false) store float 1.000000e+00, ptr %4, align 4 %6 = getelementptr inbounds i8, ptr %2, i64 24 store float 1.000000e+00, ptr %6, align 4 @@ -44936,28 +44936,27 @@ define linkonce_odr hidden noundef ptr @_ZNK7Imf_2_514TypedAttributeIN9Imath_2_5 %2 = tail call noalias noundef nonnull dereferenceable(72) ptr @_Znwm(i64 noundef 72) #35 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(72) %2, i8 0, i64 72, i1 false) invoke void @_ZN7Imf_2_59AttributeC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %2) - to label %3 unwind label %9 + to label %3 unwind label %8 3: ; preds = %1 store ptr getelementptr inbounds (i8, ptr @_ZTVN7Imf_2_514TypedAttributeIN9Imath_2_58Matrix44IfEEEE, i64 16), ptr %2, align 8 %4 = getelementptr inbounds i8, ptr %2, i64 8 - %5 = getelementptr inbounds i8, ptr %2, i64 12 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %5, i8 0, i64 56, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %4, i8 0, i64 64, i1 false) store float 1.000000e+00, ptr %4, align 4 - %6 = getelementptr inbounds i8, ptr %2, i64 28 + %5 = getelementptr inbounds i8, ptr %2, i64 28 + store float 1.000000e+00, ptr %5, align 4 + %6 = getelementptr inbounds i8, ptr %2, i64 48 store float 1.000000e+00, ptr %6, align 4 - %7 = getelementptr inbounds i8, ptr %2, i64 48 + %7 = getelementptr inbounds i8, ptr %2, i64 68 store float 1.000000e+00, ptr %7, align 4 - %8 = getelementptr inbounds i8, ptr %2, i64 68 - store float 1.000000e+00, ptr %8, align 4 tail call void @_ZN7Imf_2_514TypedAttributeIN9Imath_2_58Matrix44IfEEE13copyValueFromERKNS_9AttributeE(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %0) ret ptr %2 -9: ; preds = %1 - %10 = landingpad { ptr, i32 } +8: ; preds = %1 + %9 = landingpad { ptr, i32 } cleanup tail call void @_ZdlPv(ptr noundef nonnull %2) #36 - resume { ptr, i32 } %10 + resume { ptr, i32 } %9 } declare void @_ZNK7Imf_2_514TypedAttributeIN9Imath_2_58Matrix44IfEEE12writeValueToERNS_7OStreamEi(ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) unnamed_addr #2 diff --git a/bench/mold/optimized/compress.cc.ll b/bench/mold/optimized/compress.cc.ll index 0f0dfe3d17a..191d6f9b7c3 100644 --- a/bench/mold/optimized/compress.cc.ll +++ b/bench/mold/optimized/compress.cc.ll @@ -706,6 +706,7 @@ if.then.i.i: ; preds = %entry _ZNSt6vectorIlSaIlEE17_S_check_init_lenEmRKS0_.exit.i: ; preds = %entry %2 = getelementptr inbounds i8, ptr %offsets, i64 8 + store i64 0, ptr %2, align 8 %cmp.not.i.i.i.i = icmp eq ptr %0, %1 br i1 %cmp.not.i.i.i.i, label %_ZNSt12_Vector_baseIlSaIlEEC2EmRKS0_.exit.thread.i, label %if.then.i.i.i.i.i @@ -1084,6 +1085,7 @@ if.then.i.i: ; preds = %entry _ZNSt6vectorIlSaIlEE17_S_check_init_lenEmRKS0_.exit.i: ; preds = %entry %2 = getelementptr inbounds i8, ptr %offsets, i64 8 + store i64 0, ptr %2, align 8 %cmp.not.i.i.i.i = icmp eq ptr %0, %1 br i1 %cmp.not.i.i.i.i, label %_ZNSt12_Vector_baseIlSaIlEEC2EmRKS0_.exit.thread.i, label %if.then.i.i.i.i.i diff --git a/bench/nanobind/optimized/nb_func.cpp.ll b/bench/nanobind/optimized/nb_func.cpp.ll index 7fc4ace955a..d5c5ee251b2 100644 --- a/bench/nanobind/optimized/nb_func.cpp.ll +++ b/bench/nanobind/optimized/nb_func.cpp.ll @@ -2144,116 +2144,112 @@ define internal noundef ptr @_ZN8nanobind6detailL25nb_func_vectorcall_simpleEP7_ .loopexit.split.us: ; preds = %60, %57 %lpad.loopexit.us = landingpad { ptr, i32 } catch ptr null - br label %101 + br label %100 .split: ; preds = %35 - br i1 %.not, label %.preheader.us113, label %.preheader.preheader - -.preheader.preheader: ; preds = %.split - %65 = getelementptr inbounds i8, ptr %5, i64 1 - store i8 2, ptr %5, align 1 - br label %.preheader + br i1 %.not, label %.preheader.us113, label %.preheader .preheader.us113: ; preds = %.split, %.preheader.us113 %.067101.us114 = phi i32 [ 1, %.preheader.us113 ], [ %37, %.split ] - %66 = trunc nuw nsw i32 %.067101.us114 to i8 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(8) %5, i8 %66, i64 8, i1 false) - %67 = icmp eq i32 %.067101.us114, 0 - br i1 %67, label %.preheader.us113, label %.loopexit79, !llvm.loop !33 - -.preheader: ; preds = %.preheader.preheader, %.preheader - %.067101 = phi i32 [ 1, %.preheader ], [ %37, %.preheader.preheader ] - %68 = trunc nuw nsw i32 %.067101 to i8 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(8) %65, i8 %68, i64 7, i1 false) - %69 = icmp eq i32 %.067101, 0 - br i1 %69, label %.preheader, label %.loopexit79, !llvm.loop !33 + %65 = trunc nuw nsw i32 %.067101.us114 to i8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(8) %5, i8 %65, i64 8, i1 false) + %66 = icmp eq i32 %.067101.us114, 0 + br i1 %66, label %.preheader.us113, label %.loopexit79, !llvm.loop !33 + +.preheader: ; preds = %.split, %.preheader + %.067101 = phi i32 [ 1, %.preheader ], [ %37, %.split ] + %67 = trunc nuw nsw i32 %.067101 to i8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(8) %5, i8 %67, i64 8, i1 false) + store i8 2, ptr %5, align 1 + %68 = icmp eq i32 %.067101, 0 + br i1 %68, label %.preheader, label %.loopexit79, !llvm.loop !33 .split104.us: ; preds = %51 - %70 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTIN8nanobind12python_errorE) #24 - %71 = icmp eq i32 %54, %70 - %72 = call ptr @__cxa_begin_catch(ptr %53) #24 - br i1 %71, label %73, label %74 + %69 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTIN8nanobind12python_errorE) #24 + %70 = icmp eq i32 %54, %69 + %71 = call ptr @__cxa_begin_catch(ptr %53) #24 + br i1 %70, label %72, label %73 -73: ; preds = %.split104.us - call void @_ZN8nanobind12python_error7restoreEv(ptr noundef nonnull align 8 dereferenceable(40) %72) #24 +72: ; preds = %.split104.us + call void @_ZN8nanobind12python_error7restoreEv(ptr noundef nonnull align 8 dereferenceable(40) %71) #24 br label %.invoke -.invoke: ; preds = %74, %73 +.invoke: ; preds = %73, %72 invoke void @__cxa_end_catch() to label %.loopexit79 unwind label %.loopexit.split-lp -74: ; preds = %.split104.us +73: ; preds = %.split104.us call fastcc void @_ZN8nanobind6detailL29nb_func_convert_cpp_exceptionEv() #24 br label %.invoke .split111.us: ; preds = %62 - br i1 %.not, label %.loopexit79, label %75 - -75: ; preds = %.split111.us - %76 = getelementptr inbounds i8, ptr %34, i64 20 - %77 = load i32, ptr %76, align 4 - %78 = or i32 %77, 12 - store i32 %78, ptr %76, align 4 - %79 = and i32 %77, 64 - %.not75 = icmp eq i32 %79, 0 - br i1 %.not75, label %.loopexit79, label %80 - -80: ; preds = %75 - %81 = getelementptr inbounds i8, ptr %34, i64 8 - %82 = load ptr, ptr %81, align 8 - %83 = getelementptr inbounds i8, ptr %82, i64 968 - %84 = load ptr, ptr %83, align 8 - %85 = ptrtoint ptr %34 to i64 - %86 = getelementptr inbounds i8, ptr %34, i64 16 - %87 = load i32, ptr %86, align 8 - %88 = sext i32 %87 to i64 - %89 = add nsw i64 %88, %85 - %90 = inttoptr i64 %89 to ptr - %91 = and i32 %77, 1 - %.not.i = icmp eq i32 %91, 0 - br i1 %.not.i, label %92, label %_ZN8nanobind6detail8inst_ptrEPNS0_7nb_instE.exit - -92: ; preds = %80 - %93 = load ptr, ptr %90, align 8 + br i1 %.not, label %.loopexit79, label %74 + +74: ; preds = %.split111.us + %75 = getelementptr inbounds i8, ptr %34, i64 20 + %76 = load i32, ptr %75, align 4 + %77 = or i32 %76, 12 + store i32 %77, ptr %75, align 4 + %78 = and i32 %76, 64 + %.not75 = icmp eq i32 %78, 0 + br i1 %.not75, label %.loopexit79, label %79 + +79: ; preds = %74 + %80 = getelementptr inbounds i8, ptr %34, i64 8 + %81 = load ptr, ptr %80, align 8 + %82 = getelementptr inbounds i8, ptr %81, i64 968 + %83 = load ptr, ptr %82, align 8 + %84 = ptrtoint ptr %34 to i64 + %85 = getelementptr inbounds i8, ptr %34, i64 16 + %86 = load i32, ptr %85, align 8 + %87 = sext i32 %86 to i64 + %88 = add nsw i64 %87, %84 + %89 = inttoptr i64 %88 to ptr + %90 = and i32 %76, 1 + %.not.i = icmp eq i32 %90, 0 + br i1 %.not.i, label %91, label %_ZN8nanobind6detail8inst_ptrEPNS0_7nb_instE.exit + +91: ; preds = %79 + %92 = load ptr, ptr %89, align 8 br label %_ZN8nanobind6detail8inst_ptrEPNS0_7nb_instE.exit -_ZN8nanobind6detail8inst_ptrEPNS0_7nb_instE.exit: ; preds = %80, %92 - %94 = phi ptr [ %93, %92 ], [ %90, %80 ] - call void %84(ptr noundef %94, ptr noundef nonnull %34) #24 +_ZN8nanobind6detail8inst_ptrEPNS0_7nb_instE.exit: ; preds = %79, %91 + %93 = phi ptr [ %92, %91 ], [ %89, %79 ] + call void %83(ptr noundef %93, ptr noundef nonnull %34) #24 br label %.loopexit79 -.loopexit79: ; preds = %._crit_edge99.us, %61, %62, %.preheader, %.preheader.us113, %.invoke, %._crit_edge, %.split111.us, %_ZN8nanobind6detail8inst_ptrEPNS0_7nb_instE.exit, %75 - %.not76 = phi i1 [ true, %_ZN8nanobind6detail8inst_ptrEPNS0_7nb_instE.exit ], [ true, %75 ], [ true, %.split111.us ], [ false, %._crit_edge ], [ true, %.invoke ], [ false, %.preheader.us113 ], [ false, %.preheader ], [ false, %62 ], [ true, %61 ], [ false, %._crit_edge99.us ] - %.063 = phi ptr [ null, %_ZN8nanobind6detail8inst_ptrEPNS0_7nb_instE.exit ], [ null, %75 ], [ null, %.split111.us ], [ @_ZN8nanobind6detailL22nb_func_error_overloadEP7_objectPKS2_mS2_, %._crit_edge ], [ null, %.invoke ], [ @_ZN8nanobind6detailL22nb_func_error_overloadEP7_objectPKS2_mS2_, %.preheader.us113 ], [ @_ZN8nanobind6detailL22nb_func_error_overloadEP7_objectPKS2_mS2_, %.preheader ], [ @_ZN8nanobind6detailL23nb_func_error_noconvertEP7_objectPKS2_mS2_, %62 ], [ null, %61 ], [ @_ZN8nanobind6detailL22nb_func_error_overloadEP7_objectPKS2_mS2_, %._crit_edge99.us ] - %.0 = phi ptr [ %50, %_ZN8nanobind6detail8inst_ptrEPNS0_7nb_instE.exit ], [ %50, %75 ], [ %50, %.split111.us ], [ null, %._crit_edge ], [ null, %.invoke ], [ null, %.preheader.us113 ], [ null, %.preheader ], [ null, %62 ], [ null, %61 ], [ %.3.us, %._crit_edge99.us ] - %95 = load i32, ptr %6, align 8 - %.not78 = icmp eq i32 %95, 1 - br i1 %.not78, label %97, label %96 +.loopexit79: ; preds = %._crit_edge99.us, %61, %62, %.preheader, %.preheader.us113, %.invoke, %._crit_edge, %.split111.us, %_ZN8nanobind6detail8inst_ptrEPNS0_7nb_instE.exit, %74 + %.not76 = phi i1 [ true, %_ZN8nanobind6detail8inst_ptrEPNS0_7nb_instE.exit ], [ true, %74 ], [ true, %.split111.us ], [ false, %._crit_edge ], [ true, %.invoke ], [ false, %.preheader.us113 ], [ false, %.preheader ], [ false, %62 ], [ true, %61 ], [ false, %._crit_edge99.us ] + %.063 = phi ptr [ null, %_ZN8nanobind6detail8inst_ptrEPNS0_7nb_instE.exit ], [ null, %74 ], [ null, %.split111.us ], [ @_ZN8nanobind6detailL22nb_func_error_overloadEP7_objectPKS2_mS2_, %._crit_edge ], [ null, %.invoke ], [ @_ZN8nanobind6detailL22nb_func_error_overloadEP7_objectPKS2_mS2_, %.preheader.us113 ], [ @_ZN8nanobind6detailL22nb_func_error_overloadEP7_objectPKS2_mS2_, %.preheader ], [ @_ZN8nanobind6detailL23nb_func_error_noconvertEP7_objectPKS2_mS2_, %62 ], [ null, %61 ], [ @_ZN8nanobind6detailL22nb_func_error_overloadEP7_objectPKS2_mS2_, %._crit_edge99.us ] + %.0 = phi ptr [ %50, %_ZN8nanobind6detail8inst_ptrEPNS0_7nb_instE.exit ], [ %50, %74 ], [ %50, %.split111.us ], [ null, %._crit_edge ], [ null, %.invoke ], [ null, %.preheader.us113 ], [ null, %.preheader ], [ null, %62 ], [ null, %61 ], [ %.3.us, %._crit_edge99.us ] + %94 = load i32, ptr %6, align 8 + %.not78 = icmp eq i32 %94, 1 + br i1 %.not78, label %96, label %95 -96: ; preds = %.loopexit79 +95: ; preds = %.loopexit79 call void @_ZN8nanobind6detail12cleanup_list7releaseEv(ptr noundef nonnull align 8 dereferenceable(64) %6) #24 - br label %97 + br label %96 -97: ; preds = %96, %.loopexit79 - br i1 %.not76, label %100, label %98 +96: ; preds = %95, %.loopexit79 + br i1 %.not76, label %99, label %97 -98: ; preds = %97 - %99 = call noundef ptr %.063(ptr noundef %0, ptr noundef %1, i64 noundef %10, ptr noundef %3) #24, !callees !30 - br label %100 +97: ; preds = %96 + %98 = call noundef ptr %.063(ptr noundef %0, ptr noundef %1, i64 noundef %10, ptr noundef %3) #24, !callees !30 + br label %99 -100: ; preds = %98, %97 - %.6 = phi ptr [ %99, %98 ], [ %.0, %97 ] +99: ; preds = %97, %96 + %.6 = phi ptr [ %98, %97 ], [ %.0, %96 ] ret ptr %.6 .loopexit.split-lp: ; preds = %.invoke %lpad.loopexit.split-lp = landingpad { ptr, i32 } catch ptr null - br label %101 + br label %100 -101: ; preds = %.loopexit.split-lp, %.loopexit.split.us +100: ; preds = %.loopexit.split-lp, %.loopexit.split.us %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit.us, %.loopexit.split.us ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ] - %102 = extractvalue { ptr, i32 } %lpad.phi, 0 - call void @__clang_call_terminate(ptr %102) #23 + %101 = extractvalue { ptr, i32 } %lpad.phi, 0 + call void @__clang_call_terminate(ptr %101) #23 unreachable } diff --git a/bench/nix/optimized/add-to-store.ll b/bench/nix/optimized/add-to-store.ll index 25b860b720e..b6d3ae2de1b 100644 --- a/bench/nix/optimized/add-to-store.ll +++ b/bench/nix/optimized/add-to-store.ll @@ -3241,8 +3241,9 @@ define linkonce_odr void @_ZN3nix9MixDryRunC2Ev(ptr noundef nonnull align 8 dere %35 = getelementptr inbounds i8, ptr %4, i64 192 %36 = getelementptr inbounds i8, ptr %4, i64 200 %37 = getelementptr inbounds i8, ptr %4, i64 184 - store i64 1, ptr %37, align 8 + store i64 0, ptr %37, align 8 store ptr %13, ptr %34, align 8 + store i8 1, ptr %37, align 8 store ptr @_ZNSt17_Function_handlerIFvSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EEEZN3nix4Args7HandlerC1IbEEPT_RKSE_EUlS8_E_E9_M_invokeERKSt9_Any_dataOS8_, ptr %36, align 8 store ptr @_ZNSt17_Function_handlerIFvSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EEEZN3nix4Args7HandlerC1IbEEPT_RKSE_EUlS8_E_E10_M_managerERSt9_Any_dataRKSK_St18_Manager_operation, ptr %35, align 8 %38 = getelementptr inbounds i8, ptr %4, i64 208 diff --git a/bench/node/optimized/libnode.environment.ll b/bench/node/optimized/libnode.environment.ll index 55c65992fce..66607ec6b34 100644 --- a/bench/node/optimized/libnode.environment.ll +++ b/bench/node/optimized/libnode.environment.ll @@ -3670,6 +3670,7 @@ define dso_local void @_ZN4node21SetProcessExitHandlerEPNS_11EnvironmentEOSt8fun entry: %ref.tmp.i.i = alloca %"class.std::function", align 8 %movedHandler = alloca %"class.std::function.532", align 8 + %ref.tmp.sroa.2 = alloca [24 x i8], align 8 %ref.tmp1 = alloca %class.anon.535, align 8 %_M_invoker.i = getelementptr inbounds i8, ptr %movedHandler, i64 24 %_M_invoker2.i = getelementptr inbounds i8, ptr %handler, i64 24 @@ -3705,6 +3706,7 @@ _ZNSt8functionIFvPN4node11EnvironmentEiEEC2ERKS4_.exit: ; preds = %_ZNSt8functio %_M_manager.i.i.i119 = phi ptr [ %_M_manager.i.i.i1, %if.then.i3 ], [ %_M_manager.i.i.i117, %_ZNSt8functionIFvPN4node11EnvironmentEiEEC2EOS4_.exit.thread ] %4 = phi ptr [ %3, %if.then.i3 ], [ null, %_ZNSt8functionIFvPN4node11EnvironmentEiEEC2EOS4_.exit.thread ] %5 = phi ptr [ %2, %if.then.i3 ], [ null, %_ZNSt8functionIFvPN4node11EnvironmentEiEEC2EOS4_.exit.thread ] + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp.sroa.2, i8 0, i64 24, i1 false) %call.i.i.i = call noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #24 %_M_invoker.i.i.i.i.i = getelementptr inbounds i8, ptr %call.i.i.i, i64 24 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %call.i.i.i, i8 0, i64 24, i1 false) @@ -3727,21 +3729,22 @@ _ZNSt8functionIFvPN4node11EnvironmentENS0_8ExitCodeEEEC2EOS5_.exit.i.i: ; preds call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i.i, ptr noundef nonnull align 8 dereferenceable(16) %process_exit_handler_.i, i64 16, i1 false) store ptr %call.i.i.i, ptr %process_exit_handler_.i, align 8 %ref.tmp.sroa.2.0.process_exit_handler_.i.sroa_idx = getelementptr inbounds i8, ptr %env, i64 2704 - store i64 0, ptr %ref.tmp.sroa.2.0.process_exit_handler_.i.sroa_idx, align 8 + %6 = load i64, ptr %ref.tmp.sroa.2, align 8 + store i64 %6, ptr %ref.tmp.sroa.2.0.process_exit_handler_.i.sroa_idx, align 8 %_M_manager.i.i.i8 = getelementptr inbounds i8, ptr %ref.tmp.i.i, i64 16 %_M_manager3.i.i.i = getelementptr inbounds i8, ptr %env, i64 2712 - %6 = load ptr, ptr %_M_manager3.i.i.i, align 8 - store ptr %6, ptr %_M_manager.i.i.i8, align 8 + %7 = load ptr, ptr %_M_manager3.i.i.i, align 8 + store ptr %7, ptr %_M_manager.i.i.i8, align 8 store ptr @"_ZNSt17_Function_handlerIFvPN4node11EnvironmentENS0_8ExitCodeEEZNS0_21SetProcessExitHandlerES2_OSt8functionIFvS2_iEEE3$_0E10_M_managerERSt9_Any_dataRKSB_St18_Manager_operation", ptr %_M_manager3.i.i.i, align 8 %_M_invoker4.i.i.i = getelementptr inbounds i8, ptr %env, i64 2720 - %7 = load ptr, ptr %_M_invoker4.i.i.i, align 8 - store ptr %7, ptr %_M_invoker.i.i.i, align 8 + %8 = load ptr, ptr %_M_invoker4.i.i.i, align 8 + store ptr %8, ptr %_M_invoker.i.i.i, align 8 store ptr @"_ZNSt17_Function_handlerIFvPN4node11EnvironmentENS0_8ExitCodeEEZNS0_21SetProcessExitHandlerES2_OSt8functionIFvS2_iEEE3$_0E9_M_invokeERKSt9_Any_dataOS2_OS3_", ptr %_M_invoker4.i.i.i, align 8 - %tobool.not.i.i.i.i = icmp eq ptr %6, null + %tobool.not.i.i.i.i = icmp eq ptr %7, null br i1 %tobool.not.i.i.i.i, label %_ZNSt8functionIFvPN4node11EnvironmentENS0_8ExitCodeEEED2Ev.exit, label %if.then.i.i.i.i if.then.i.i.i.i: ; preds = %_ZNSt8functionIFvPN4node11EnvironmentENS0_8ExitCodeEEEC2EOS5_.exit.i.i - %call.i.i.i.i = call noundef zeroext i1 %6(ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i.i, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i.i, i32 noundef 3) #12 + %call.i.i.i.i = call noundef zeroext i1 %7(ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i.i, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i.i, i32 noundef 3) #12 br label %_ZNSt8functionIFvPN4node11EnvironmentENS0_8ExitCodeEEED2Ev.exit _ZNSt8functionIFvPN4node11EnvironmentENS0_8ExitCodeEEED2Ev.exit: ; preds = %_ZNSt8functionIFvPN4node11EnvironmentENS0_8ExitCodeEEEC2EOS5_.exit.i.i, %if.then.i.i.i.i @@ -3755,12 +3758,12 @@ if.then.i.i.i11: ; preds = %_ZNSt8functionIFvPN br label %"_ZZN4node21SetProcessExitHandlerEPNS_11EnvironmentEOSt8functionIFvS1_iEEEN3$_0D2Ev.exit" "_ZZN4node21SetProcessExitHandlerEPNS_11EnvironmentEOSt8functionIFvS1_iEEEN3$_0D2Ev.exit": ; preds = %_ZNSt8functionIFvPN4node11EnvironmentENS0_8ExitCodeEEED2Ev.exit, %if.then.i.i.i11 - %8 = load ptr, ptr %_M_manager.i.i.i119, align 8 - %tobool.not.i.i14 = icmp eq ptr %8, null + %9 = load ptr, ptr %_M_manager.i.i.i119, align 8 + %tobool.not.i.i14 = icmp eq ptr %9, null br i1 %tobool.not.i.i14, label %_ZNSt8functionIFvPN4node11EnvironmentEiEED2Ev.exit, label %if.then.i.i15 if.then.i.i15: ; preds = %"_ZZN4node21SetProcessExitHandlerEPNS_11EnvironmentEOSt8functionIFvS1_iEEEN3$_0D2Ev.exit" - %call.i.i16 = call noundef zeroext i1 %8(ptr noundef nonnull align 8 dereferenceable(16) %movedHandler, ptr noundef nonnull align 8 dereferenceable(16) %movedHandler, i32 noundef 3) #12 + %call.i.i16 = call noundef zeroext i1 %9(ptr noundef nonnull align 8 dereferenceable(16) %movedHandler, ptr noundef nonnull align 8 dereferenceable(16) %movedHandler, i32 noundef 3) #12 br label %_ZNSt8functionIFvPN4node11EnvironmentEiEED2Ev.exit _ZNSt8functionIFvPN4node11EnvironmentEiEED2Ev.exit: ; preds = %"_ZZN4node21SetProcessExitHandlerEPNS_11EnvironmentEOSt8functionIFvS1_iEEEN3$_0D2Ev.exit", %if.then.i.i15 diff --git a/bench/nori/optimized/nanovg.c.ll b/bench/nori/optimized/nanovg.c.ll index 0bcfb759173..a03394f065f 100644 --- a/bench/nori/optimized/nanovg.c.ll +++ b/bench/nori/optimized/nanovg.c.ll @@ -18469,7 +18469,7 @@ define dso_local noundef ptr @nvgCreateInternal(ptr nocapture noundef readonly % %2 = alloca %struct.FONSparams, align 8 %3 = tail call noalias dereferenceable_or_null(8920) ptr @malloc(i64 noundef 8920) #59 %4 = icmp eq ptr %3, null - br i1 %4, label %85, label %5 + br i1 %4, label %82, label %5 5: ; preds = %1 %6 = getelementptr i8, ptr %3, i64 120 @@ -18481,7 +18481,7 @@ define dso_local noundef ptr @nvgCreateInternal(ptr nocapture noundef readonly % %9 = getelementptr inbounds i8, ptr %3, i64 112 store ptr %8, ptr %9, align 8 %.not = icmp eq ptr %8, null - br i1 %.not, label %85, label %10 + br i1 %.not, label %82, label %10 10: ; preds = %5 %11 = getelementptr inbounds i8, ptr %3, i64 124 @@ -18532,7 +18532,7 @@ define dso_local noundef ptr @nvgCreateInternal(ptr nocapture noundef readonly % nvg__allocPathCache.exit.thread: ; preds = %10, %.thread20.thread.i %25 = getelementptr inbounds i8, ptr %3, i64 8848 store ptr null, ptr %25, align 8 - br label %85 + br label %82 nvgSave.exit: ; preds = %20 %26 = getelementptr inbounds i8, ptr %calloc.i, i64 44 @@ -18544,7 +18544,7 @@ nvgSave.exit: ; preds = %20 %29 = getelementptr inbounds i8, ptr %3, i64 136 %30 = getelementptr inbounds i8, ptr %3, i64 156 %31 = getelementptr inbounds i8, ptr %3, i64 180 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(196) %31, i8 0, i64 196, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(228) %31, i8 0, i64 228, i1 false) store float 1.000000e+00, ptr %30, align 4 %32 = getelementptr inbounds i8, ptr %3, i64 160 store float 0.000000e+00, ptr %32, align 4 @@ -18601,69 +18601,63 @@ nvgSave.exit: ; preds = %20 store float -1.000000e+00, ptr %52, align 4 %53 = getelementptr inbounds i8, ptr %3, i64 384 store float 1.600000e+01, ptr %53, align 4 - %54 = getelementptr inbounds i8, ptr %3, i64 388 - store float 0.000000e+00, ptr %54, align 4 - %55 = getelementptr inbounds i8, ptr %3, i64 392 - store float 1.000000e+00, ptr %55, align 4 - %56 = getelementptr inbounds i8, ptr %3, i64 396 - store float 0.000000e+00, ptr %56, align 4 - %57 = getelementptr inbounds i8, ptr %3, i64 400 - store i32 65, ptr %57, align 4 - %58 = getelementptr inbounds i8, ptr %3, i64 404 - store i32 0, ptr %58, align 4 - %59 = getelementptr inbounds i8, ptr %3, i64 8856 - store float 2.500000e-01, ptr %59, align 8 - %60 = getelementptr inbounds i8, ptr %3, i64 8860 - store float 0x3F847AE140000000, ptr %60, align 4 - %61 = getelementptr inbounds i8, ptr %3, i64 8864 - store float 1.000000e+00, ptr %61, align 8 - %62 = getelementptr inbounds i8, ptr %3, i64 8868 - store float 1.000000e+00, ptr %62, align 4 - %63 = getelementptr inbounds i8, ptr %3, i64 16 - %64 = load ptr, ptr %63, align 8 - %65 = load ptr, ptr %3, align 8 - %66 = tail call i32 %64(ptr noundef %65) #57 - %67 = icmp eq i32 %66, 0 - br i1 %67, label %85, label %68 - -68: ; preds = %nvgSave.exit - %69 = getelementptr inbounds i8, ptr %2, i64 8 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %69, i8 0, i64 32, i1 false) + %54 = getelementptr inbounds i8, ptr %3, i64 392 + store float 1.000000e+00, ptr %54, align 4 + %55 = getelementptr inbounds i8, ptr %3, i64 400 + store i32 65, ptr %55, align 4 + %56 = getelementptr inbounds i8, ptr %3, i64 8856 + store float 2.500000e-01, ptr %56, align 8 + %57 = getelementptr inbounds i8, ptr %3, i64 8860 + store float 0x3F847AE140000000, ptr %57, align 4 + %58 = getelementptr inbounds i8, ptr %3, i64 8864 + store float 1.000000e+00, ptr %58, align 8 + %59 = getelementptr inbounds i8, ptr %3, i64 8868 + store float 1.000000e+00, ptr %59, align 4 + %60 = getelementptr inbounds i8, ptr %3, i64 16 + %61 = load ptr, ptr %60, align 8 + %62 = load ptr, ptr %3, align 8 + %63 = tail call i32 %61(ptr noundef %62) #57 + %64 = icmp eq i32 %63, 0 + br i1 %64, label %82, label %65 + +65: ; preds = %nvgSave.exit + %66 = getelementptr inbounds i8, ptr %2, i64 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %66, i8 0, i64 56, i1 false) store i32 512, ptr %2, align 8 - %70 = getelementptr inbounds i8, ptr %2, i64 4 - store i32 512, ptr %70, align 4 - %71 = getelementptr inbounds i8, ptr %2, i64 8 - store i8 1, ptr %71, align 8 - %72 = getelementptr inbounds i8, ptr %2, i64 40 - %73 = getelementptr inbounds i8, ptr %2, i64 16 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %73, i8 0, i64 16, i1 false) - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %72, i8 0, i64 24, i1 false) - %74 = call ptr @fonsCreateInternal(ptr noundef nonnull %2) - %75 = getelementptr inbounds i8, ptr %3, i64 8872 - store ptr %74, ptr %75, align 8 - %76 = icmp eq ptr %74, null - br i1 %76, label %85, label %77 - -77: ; preds = %68 - %78 = getelementptr inbounds i8, ptr %3, i64 24 - %79 = load ptr, ptr %78, align 8 - %80 = load ptr, ptr %3, align 8 - %81 = tail call i32 %79(ptr noundef %80, i32 noundef 1, i32 noundef 512, i32 noundef 512, i32 noundef 0, ptr noundef null) #57 - store i32 %81, ptr %7, align 8 - %82 = icmp eq i32 %81, 0 - br i1 %82, label %85, label %83 - -83: ; preds = %77 - %84 = getelementptr inbounds i8, ptr %3, i64 8896 - store i32 0, ptr %84, align 8 - br label %86 - -85: ; preds = %nvg__allocPathCache.exit.thread, %77, %68, %nvgSave.exit, %5, %1 + %67 = getelementptr inbounds i8, ptr %2, i64 4 + store i32 512, ptr %67, align 4 + %68 = getelementptr inbounds i8, ptr %2, i64 8 + store i8 1, ptr %68, align 8 + %69 = getelementptr inbounds i8, ptr %2, i64 40 + %70 = getelementptr inbounds i8, ptr %2, i64 16 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %70, i8 0, i64 16, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %69, i8 0, i64 24, i1 false) + %71 = call ptr @fonsCreateInternal(ptr noundef nonnull %2) + %72 = getelementptr inbounds i8, ptr %3, i64 8872 + store ptr %71, ptr %72, align 8 + %73 = icmp eq ptr %71, null + br i1 %73, label %82, label %74 + +74: ; preds = %65 + %75 = getelementptr inbounds i8, ptr %3, i64 24 + %76 = load ptr, ptr %75, align 8 + %77 = load ptr, ptr %3, align 8 + %78 = tail call i32 %76(ptr noundef %77, i32 noundef 1, i32 noundef 512, i32 noundef 512, i32 noundef 0, ptr noundef null) #57 + store i32 %78, ptr %7, align 8 + %79 = icmp eq i32 %78, 0 + br i1 %79, label %82, label %80 + +80: ; preds = %74 + %81 = getelementptr inbounds i8, ptr %3, i64 8896 + store i32 0, ptr %81, align 8 + br label %83 + +82: ; preds = %nvg__allocPathCache.exit.thread, %74, %65, %nvgSave.exit, %5, %1 tail call void @nvgDeleteInternal(ptr noundef %3) - br label %86 + br label %83 -86: ; preds = %85, %83 - %.028 = phi ptr [ null, %85 ], [ %3, %83 ] +83: ; preds = %82, %80 + %.028 = phi ptr [ null, %82 ], [ %3, %80 ] ret ptr %.028 } @@ -18709,7 +18703,7 @@ define dso_local void @nvgReset(ptr nocapture noundef %0) local_unnamed_addr #28 %7 = getelementptr inbounds [32 x %struct.NVGstate], ptr %2, i64 0, i64 %6 %8 = getelementptr inbounds i8, ptr %7, i64 20 %9 = getelementptr inbounds i8, ptr %7, i64 44 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(196) %9, i8 0, i64 196, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(228) %9, i8 0, i64 228, i1 false) store float 1.000000e+00, ptr %8, align 4 %10 = getelementptr inbounds i8, ptr %7, i64 24 store float 0.000000e+00, ptr %10, align 4 @@ -18774,16 +18768,10 @@ define dso_local void @nvgReset(ptr nocapture noundef %0) local_unnamed_addr #28 store float -1.000000e+00, ptr %34, align 4 %35 = getelementptr inbounds i8, ptr %7, i64 248 store float 1.600000e+01, ptr %35, align 4 - %36 = getelementptr inbounds i8, ptr %7, i64 252 - store float 0.000000e+00, ptr %36, align 4 - %37 = getelementptr inbounds i8, ptr %7, i64 256 - store float 1.000000e+00, ptr %37, align 4 - %38 = getelementptr inbounds i8, ptr %7, i64 260 - store float 0.000000e+00, ptr %38, align 4 - %39 = getelementptr inbounds i8, ptr %7, i64 264 - store i32 65, ptr %39, align 4 - %40 = getelementptr inbounds i8, ptr %7, i64 268 - store i32 0, ptr %40, align 4 + %36 = getelementptr inbounds i8, ptr %7, i64 256 + store float 1.000000e+00, ptr %36, align 4 + %37 = getelementptr inbounds i8, ptr %7, i64 264 + store i32 65, ptr %37, align 4 ret void } @@ -18916,7 +18904,7 @@ nvgSave.exit: %5 = getelementptr inbounds i8, ptr %0, i64 136 %6 = getelementptr inbounds i8, ptr %0, i64 156 %7 = getelementptr inbounds i8, ptr %0, i64 180 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(196) %7, i8 0, i64 196, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(228) %7, i8 0, i64 228, i1 false) store float 1.000000e+00, ptr %6, align 4 %8 = getelementptr inbounds i8, ptr %0, i64 160 store float 0.000000e+00, ptr %8, align 4 @@ -18973,33 +18961,27 @@ nvgSave.exit: store float -1.000000e+00, ptr %28, align 4 %29 = getelementptr inbounds i8, ptr %0, i64 384 store float 1.600000e+01, ptr %29, align 4 - %30 = getelementptr inbounds i8, ptr %0, i64 388 - store float 0.000000e+00, ptr %30, align 4 - %31 = getelementptr inbounds i8, ptr %0, i64 392 - store float 1.000000e+00, ptr %31, align 4 - %32 = getelementptr inbounds i8, ptr %0, i64 396 - store float 0.000000e+00, ptr %32, align 4 - %33 = getelementptr inbounds i8, ptr %0, i64 400 - store i32 65, ptr %33, align 4 - %34 = getelementptr inbounds i8, ptr %0, i64 404 - store i32 0, ptr %34, align 4 - %35 = fdiv float 2.500000e-01, %3 - %36 = getelementptr inbounds i8, ptr %0, i64 8856 - store float %35, ptr %36, align 8 - %37 = fdiv float 0x3F847AE140000000, %3 - %38 = getelementptr inbounds i8, ptr %0, i64 8860 - store float %37, ptr %38, align 4 - %39 = fdiv float 1.000000e+00, %3 - %40 = getelementptr inbounds i8, ptr %0, i64 8864 - store float %39, ptr %40, align 8 - %41 = getelementptr inbounds i8, ptr %0, i64 8868 - store float %3, ptr %41, align 4 - %42 = getelementptr inbounds i8, ptr %0, i64 56 - %43 = load ptr, ptr %42, align 8 - %44 = load ptr, ptr %0, align 8 - tail call void %43(ptr noundef %44, float noundef %1, float noundef %2, float noundef %3) #57 - %45 = getelementptr inbounds i8, ptr %0, i64 8900 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %45, i8 0, i64 16, i1 false) + %30 = getelementptr inbounds i8, ptr %0, i64 392 + store float 1.000000e+00, ptr %30, align 4 + %31 = getelementptr inbounds i8, ptr %0, i64 400 + store i32 65, ptr %31, align 4 + %32 = fdiv float 2.500000e-01, %3 + %33 = getelementptr inbounds i8, ptr %0, i64 8856 + store float %32, ptr %33, align 8 + %34 = fdiv float 0x3F847AE140000000, %3 + %35 = getelementptr inbounds i8, ptr %0, i64 8860 + store float %34, ptr %35, align 4 + %36 = fdiv float 1.000000e+00, %3 + %37 = getelementptr inbounds i8, ptr %0, i64 8864 + store float %36, ptr %37, align 8 + %38 = getelementptr inbounds i8, ptr %0, i64 8868 + store float %3, ptr %38, align 4 + %39 = getelementptr inbounds i8, ptr %0, i64 56 + %40 = load ptr, ptr %39, align 8 + %41 = load ptr, ptr %0, align 8 + tail call void %40(ptr noundef %41, float noundef %1, float noundef %2, float noundef %3) #57 + %42 = getelementptr inbounds i8, ptr %0, i64 8900 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %42, i8 0, i64 16, i1 false) ret void } @@ -20526,8 +20508,8 @@ define dso_local void @nvgBoxGradient(ptr dead_on_unwind noalias nocapture writa ; Function Attrs: mustprogress nofree nounwind willreturn memory(write, argmem: readwrite) uwtable define dso_local void @nvgImagePattern(ptr dead_on_unwind noalias nocapture writable sret(%struct.NVGpaint) align 4 %0, ptr nocapture noundef readnone %1, float noundef %2, float noundef %3, float noundef %4, float noundef %5, float noundef %6, i32 noundef %7, float noundef %8) local_unnamed_addr #35 { - %10 = getelementptr inbounds i8, ptr %0, i64 32 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(76) %10, i8 0, i64 24, i1 false) + %10 = getelementptr inbounds i8, ptr %0, i64 28 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(76) %10, i8 0, i64 48, i1 false) %11 = tail call float @cosf(float noundef %6) #57 %12 = tail call float @sinf(float noundef %6) #57 store float %11, ptr %0, align 4 diff --git a/bench/nori/optimized/screen.cpp.ll b/bench/nori/optimized/screen.cpp.ll index f830107dca6..9973a921c99 100644 --- a/bench/nori/optimized/screen.cpp.ll +++ b/bench/nori/optimized/screen.cpp.ll @@ -136,7 +136,7 @@ define hidden ptr @nvgCreateGL3(i32 noundef %0) local_unnamed_addr #3 { 4: ; preds = %1 %5 = getelementptr inbounds i8, ptr %2, i64 8 - store i64 0, ptr %5, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(112) %5, i8 0, i64 104, i1 false) %6 = getelementptr inbounds i8, ptr %2, i64 16 store ptr @_ZL19glnvg__renderCreatePv, ptr %6, align 8 %7 = getelementptr inbounds i8, ptr %2, i64 24 @@ -1678,7 +1678,7 @@ _ZL24glnvg__allocFragUniformsP12GLNVGcontexti.exit: ; preds = %144, %194 %.val = load ptr, ptr %200, align 8 %201 = sext i32 %196 to i64 %202 = getelementptr inbounds i8, ptr %.val, i64 %201 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(176) %202, i8 0, i64 172, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(176) %202, i8 0, i64 176, i1 false) %203 = getelementptr inbounds i8, ptr %202, i64 164 store float -1.000000e+00, ptr %203, align 4 %204 = getelementptr inbounds i8, ptr %202, i64 172 @@ -3412,7 +3412,7 @@ define hidden void @_ZN7nanogui6Screen10initializeEP10GLFWwindowb(ptr noundef no 37: ; preds = %.split16 %38 = getelementptr inbounds i8, ptr %5, i64 8 - store i64 1, ptr %38, align 8 + store i64 0, ptr %38, align 8 %39 = getelementptr inbounds i8, ptr %5, i64 16 store ptr @_ZL19glnvg__renderCreatePv, ptr %39, align 8 %40 = getelementptr inbounds i8, ptr %5, i64 24 @@ -3438,6 +3438,7 @@ define hidden void @_ZN7nanogui6Screen10initializeEP10GLFWwindowb(ptr noundef no %50 = getelementptr inbounds i8, ptr %5, i64 104 store ptr @_ZL19glnvg__renderDeletePv, ptr %50, align 8 store ptr %calloc.i, ptr %5, align 8 + store i32 1, ptr %38, align 8 %51 = getelementptr inbounds i8, ptr %calloc.i, i64 68 store i32 1, ptr %51, align 4 %52 = call ptr @nvgCreateInternal(ptr noundef nonnull %5) @@ -3460,7 +3461,7 @@ nvgCreateGL3.exit: ; preds = %37, %54 56: ; preds = %.split %57 = getelementptr inbounds i8, ptr %4, i64 8 - store i64 1, ptr %57, align 8 + store i64 0, ptr %57, align 8 %58 = getelementptr inbounds i8, ptr %4, i64 16 store ptr @_ZL19glnvg__renderCreatePv, ptr %58, align 8 %59 = getelementptr inbounds i8, ptr %4, i64 24 @@ -3486,6 +3487,7 @@ nvgCreateGL3.exit: ; preds = %37, %54 %69 = getelementptr inbounds i8, ptr %4, i64 104 store ptr @_ZL19glnvg__renderDeletePv, ptr %69, align 8 store ptr %calloc.i18, ptr %4, align 8 + store i32 1, ptr %57, align 8 %70 = getelementptr inbounds i8, ptr %calloc.i18, i64 68 store i32 3, ptr %70, align 4 %71 = call ptr @nvgCreateInternal(ptr noundef nonnull %4) diff --git a/bench/ockam-rs/optimized/1e5oqa6s9mthz3yq.ll b/bench/ockam-rs/optimized/1e5oqa6s9mthz3yq.ll index 3a8aac4e0a5..d663aba9231 100644 --- a/bench/ockam-rs/optimized/1e5oqa6s9mthz3yq.ll +++ b/bench/ockam-rs/optimized/1e5oqa6s9mthz3yq.ll @@ -16087,42 +16087,41 @@ common.ret: ; preds = %1768, %977, %186 %197 = phi ptr [ %136, %.thread ], [ %195, %193 ] %198 = phi ptr [ %135, %.thread ], [ %194, %193 ] %199 = getelementptr inbounds i8, ptr %0, i64 1708 - %200 = getelementptr inbounds i8, ptr %0, i64 1707 - %201 = getelementptr inbounds i8, ptr %0, i64 1706 - %202 = getelementptr inbounds i8, ptr %0, i64 1705 - %203 = getelementptr inbounds i8, ptr %0, i64 1704 - %204 = getelementptr inbounds i8, ptr %0, i64 1680 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(5) %203, i8 0, i64 5, i1 false), !noalias !1897 - %205 = load ptr, ptr %204, align 8, !noalias !1897, !nonnull !4, !align !5, !noundef !4 - %206 = getelementptr inbounds i8, ptr %0, i64 1688 - %207 = load ptr, ptr %206, align 8, !noalias !1897, !nonnull !4, !align !5, !noundef !4 + %200 = getelementptr inbounds i8, ptr %0, i64 1706 + %201 = getelementptr inbounds i8, ptr %0, i64 1705 + %202 = getelementptr inbounds i8, ptr %0, i64 1704 + %203 = getelementptr inbounds i8, ptr %0, i64 1680 + store i32 16777216, ptr %202, align 8, !noalias !1897 + %204 = load ptr, ptr %203, align 8, !noalias !1897, !nonnull !4, !align !5, !noundef !4 + %205 = getelementptr inbounds i8, ptr %0, i64 1688 + %206 = load ptr, ptr %205, align 8, !noalias !1897, !nonnull !4, !align !5, !noundef !4 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %117), !noalias !1897 store i8 1, ptr %199, align 4, !noalias !1897 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %117, ptr noundef nonnull align 8 dereferenceable(32) %198, i64 32, i1 false), !noalias !1897 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %116), !noalias !1897 - store i8 1, ptr %200, align 1, !noalias !1897 - %208 = getelementptr inbounds i8, ptr %0, i64 1696 - %209 = load ptr, ptr %208, align 8, !noalias !1897, !nonnull !4, !noundef !4 - store ptr %209, ptr %116, align 8, !noalias !1897 + %207 = getelementptr inbounds i8, ptr %0, i64 1696 + %208 = load ptr, ptr %207, align 8, !noalias !1897, !nonnull !4, !noundef !4 + store ptr %208, ptr %116, align 8, !noalias !1897 call void @llvm.lifetime.start.p0(i64 208, ptr nonnull %115), !noalias !1897 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %114), !noalias !1897 - %210 = getelementptr inbounds i8, ptr %205, i64 72 - %.val.i = load ptr, ptr %210, align 8, !nonnull !4, !noundef !4 - %211 = atomicrmw add ptr %.val.i, i64 1 monotonic, align 8 - %212 = icmp slt i64 %211, 0 - br i1 %212, label %213, label %"_ZN91_$LT$ockam_transport_tcp..registry..registry..TcpRegistry$u20$as$u20$core..clone..Clone$GT$5clone17ha02da283d8b56193E.exit.i" + %209 = getelementptr inbounds i8, ptr %204, i64 72 + %.val.i = load ptr, ptr %209, align 8, !nonnull !4, !noundef !4 + %210 = atomicrmw add ptr %.val.i, i64 1 monotonic, align 8 + %211 = icmp slt i64 %210, 0 + br i1 %211, label %212, label %"_ZN91_$LT$ockam_transport_tcp..registry..registry..TcpRegistry$u20$as$u20$core..clone..Clone$GT$5clone17ha02da283d8b56193E.exit.i" -213: ; preds = %196 +212: ; preds = %196 tail call void @llvm.trap() unreachable "_ZN91_$LT$ockam_transport_tcp..registry..registry..TcpRegistry$u20$as$u20$core..clone..Clone$GT$5clone17ha02da283d8b56193E.exit.i": ; preds = %196 + %213 = getelementptr inbounds i8, ptr %0, i64 1707 store ptr %.val.i, ptr %114, align 8, !noalias !1897 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %113), !noalias !1897 - store i8 0, ptr %200, align 1, !noalias !1897 - store ptr %209, ptr %113, align 8, !noalias !1897 + store i8 0, ptr %213, align 1, !noalias !1897 + store ptr %208, ptr %113, align 8, !noalias !1897 call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %112), !noalias !1897 - %214 = getelementptr inbounds i8, ptr %205, i64 112 + %214 = getelementptr inbounds i8, ptr %204, i64 112 invoke fastcc void @"_ZN88_$LT$ockam_transport_tcp..portal..addresses..Addresses$u20$as$u20$core..clone..Clone$GT$5clone17hf14494c7885dbd61E"(ptr noalias nocapture noundef align 8 dereferenceable(128) %112, ptr noalias noundef readonly align 8 dereferenceable(128) %214) to label %215 unwind label %352 @@ -16133,7 +16132,7 @@ common.ret: ; preds = %1768, %977, %186 tail call void @llvm.experimental.noalias.scope.decl(metadata !1900) tail call void @llvm.experimental.noalias.scope.decl(metadata !1903) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %101), !noalias !1897 - store ptr %209, ptr %101, align 8, !noalias !1905 + store ptr %208, ptr %101, align 8, !noalias !1905 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %100), !noalias !1905 store ptr %.val.i, ptr %100, align 8, !noalias !1905 %216 = invoke { ptr, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h84e199e2371c4c9fE"(i64 noundef 49152, i1 noundef zeroext false) @@ -16174,7 +16173,7 @@ common.ret: ; preds = %1768, %977, %186 %.sroa.5.0..sroa_idx.i.i = getelementptr inbounds i8, ptr %115, i64 24 store i64 0, ptr %.sroa.5.0..sroa_idx.i.i, align 8, !alias.scope !1900, !noalias !1909 %228 = getelementptr inbounds i8, ptr %115, i64 32 - store ptr %209, ptr %228, align 8, !alias.scope !1900, !noalias !1909 + store ptr %208, ptr %228, align 8, !alias.scope !1900, !noalias !1909 %229 = getelementptr inbounds i8, ptr %115, i64 40 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(128) %229, ptr noundef nonnull align 8 dereferenceable(128) %112, i64 128, i1 false), !alias.scope !1908, !noalias !1910 %230 = getelementptr inbounds i8, ptr %115, i64 168 @@ -16183,19 +16182,19 @@ common.ret: ; preds = %1768, %977, %186 store i16 0, ptr %231, align 8, !alias.scope !1900, !noalias !1909 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %100), !noalias !1905 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %101), !noalias !1897 - store i8 1, ptr %201, align 2, !noalias !1897 + store i8 1, ptr %200, align 2, !noalias !1897 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %111), !noalias !1897 call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %112), !noalias !1897 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %113), !noalias !1897 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %114), !noalias !1897 call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %110), !noalias !1897 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %109), !noalias !1897 - %232 = getelementptr inbounds i8, ptr %205, i64 208 + %232 = getelementptr inbounds i8, ptr %204, i64 208 tail call void @llvm.experimental.noalias.scope.decl(metadata !1911) tail call void @llvm.experimental.noalias.scope.decl(metadata !1914) - %233 = getelementptr inbounds i8, ptr %205, i64 232 + %233 = getelementptr inbounds i8, ptr %204, i64 232 %234 = load i8, ptr %233, align 8, !alias.scope !1914, !noalias !1911, !noundef !4 - %235 = getelementptr inbounds i8, ptr %205, i64 224 + %235 = getelementptr inbounds i8, ptr %204, i64 224 %236 = load ptr, ptr %232, align 8, !alias.scope !1916, !noalias !1919, !nonnull !4, !noundef !4 %237 = load i64, ptr %235, align 8, !alias.scope !1916, !noalias !1919, !noundef !4 %238 = invoke { ptr, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h84e199e2371c4c9fE"(i64 noundef %237, i1 noundef zeroext false) @@ -16241,9 +16240,9 @@ common.ret: ; preds = %1768, %977, %186 store i64 1, ptr %247, align 8 %.sroa.4.0..sroa_idx.i102.i = getelementptr inbounds i8, ptr %247, i64 8 store i64 1, ptr %.sroa.4.0..sroa_idx.i102.i, align 8 - %252 = getelementptr inbounds i8, ptr %205, i64 240 + %252 = getelementptr inbounds i8, ptr %204, i64 240 %.val98.i = load ptr, ptr %252, align 8, !nonnull !4, !noundef !4 - %253 = getelementptr i8, ptr %205, i64 248 + %253 = getelementptr i8, ptr %204, i64 248 %.val99.i = load ptr, ptr %253, align 8 %254 = atomicrmw add ptr %.val98.i, i64 1 monotonic, align 8 %255 = icmp slt i64 %254, 0 @@ -16266,16 +16265,16 @@ common.ret: ; preds = %1768, %977, %186 store ptr %.val98.i, ptr %261, align 8, !alias.scope !1934, !noalias !1935 %262 = getelementptr inbounds i8, ptr %110, i64 56 store ptr %.val99.i, ptr %262, align 8, !alias.scope !1934, !noalias !1935 - store i8 1, ptr %202, align 1, !noalias !1897 + store i8 1, ptr %201, align 1, !noalias !1897 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %109), !noalias !1897 call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %108), !noalias !1897 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %107), !noalias !1897 - %263 = getelementptr inbounds i8, ptr %205, i64 176 + %263 = getelementptr inbounds i8, ptr %204, i64 176 tail call void @llvm.experimental.noalias.scope.decl(metadata !1936) tail call void @llvm.experimental.noalias.scope.decl(metadata !1939) - %264 = getelementptr inbounds i8, ptr %205, i64 200 + %264 = getelementptr inbounds i8, ptr %204, i64 200 %265 = load i8, ptr %264, align 8, !alias.scope !1939, !noalias !1936, !noundef !4 - %266 = getelementptr inbounds i8, ptr %205, i64 192 + %266 = getelementptr inbounds i8, ptr %204, i64 192 %267 = load ptr, ptr %263, align 8, !alias.scope !1941, !noalias !1944, !nonnull !4, !noundef !4 %268 = load i64, ptr %266, align 8, !alias.scope !1941, !noalias !1944, !noundef !4 %269 = invoke { ptr, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h84e199e2371c4c9fE"(i64 noundef %268, i1 noundef zeroext false) @@ -16324,9 +16323,9 @@ common.ret: ; preds = %1768, %977, %186 store ptr %278, ptr %106, align 8, !noalias !1897 %284 = getelementptr inbounds i8, ptr %106, i64 8 store ptr @anon.4c65840fdadcee9e63ad31f6b1573f6b.110, ptr %284, align 8, !noalias !1897 - %285 = getelementptr inbounds i8, ptr %205, i64 136 + %285 = getelementptr inbounds i8, ptr %204, i64 136 %286 = load i8, ptr %285, align 8, !alias.scope !1951, !noalias !1954, !noundef !4 - %287 = getelementptr inbounds i8, ptr %205, i64 128 + %287 = getelementptr inbounds i8, ptr %204, i64 128 %288 = load ptr, ptr %214, align 8, !alias.scope !1956, !noalias !1959, !nonnull !4, !noundef !4 %289 = load i64, ptr %287, align 8, !alias.scope !1956, !noalias !1959, !noundef !4 %290 = invoke { ptr, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h84e199e2371c4c9fE"(i64 noundef %289, i1 noundef zeroext false) @@ -16392,17 +16391,17 @@ common.ret: ; preds = %1768, %977, %186 store ptr %300, ptr %310, align 8, !alias.scope !1977, !noalias !1978 %311 = getelementptr inbounds i8, ptr %108, i64 56 store ptr @anon.4c65840fdadcee9e63ad31f6b1573f6b.112, ptr %311, align 8, !alias.scope !1977, !noalias !1978 - store i8 1, ptr %203, align 8, !noalias !1897 + store i8 1, ptr %202, align 8, !noalias !1897 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %106), !noalias !1897 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %107), !noalias !1897 call void @llvm.lifetime.start.p0(i64 296, ptr nonnull %.sroa.0127.sroa.0.i) call void @llvm.lifetime.start.p0(i64 296, ptr nonnull %.sroa.0130.i) call void @llvm.lifetime.start.p0(i64 208, ptr nonnull %105), !noalias !1897 - store i8 0, ptr %201, align 2, !noalias !1897 + store i8 0, ptr %200, align 2, !noalias !1897 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(208) %105, ptr noundef nonnull align 8 dereferenceable(208) %115, i64 208, i1 false), !noalias !1897 call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %104), !noalias !1897 call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %103), !noalias !1897 - store i8 0, ptr %202, align 1, !noalias !1897 + store i8 0, ptr %201, align 1, !noalias !1897 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %103, ptr noundef nonnull align 8 dereferenceable(64) %110, i64 64, i1 false), !noalias !1897 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %102), !noalias !1897 %312 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !1897 @@ -16418,7 +16417,7 @@ common.ret: ; preds = %1768, %977, %186 unreachable 316: ; preds = %307 - store i8 0, ptr %203, align 8, !noalias !1897 + store i8 0, ptr %202, align 8, !noalias !1897 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %313, ptr noundef nonnull align 8 dereferenceable(64) %108, i64 64, i1 false) store ptr %313, ptr %102, align 8, !alias.scope !1979, !noalias !1984 %317 = getelementptr inbounds i8, ptr %102, i64 8 @@ -16451,7 +16450,7 @@ common.ret: ; preds = %1768, %977, %186 %.sroa.0127.sroa.8.0..sroa_idx.i = getelementptr inbounds i8, ptr %0, i64 424 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0127.sroa.8.0..sroa_idx.i, i8 0, i64 16, i1 false), !noalias !1897 %.sroa.7128.0..sroa_idx.i = getelementptr inbounds i8, ptr %0, i64 440 - store ptr %207, ptr %.sroa.7128.0..sroa_idx.i, align 8, !noalias !1897 + store ptr %206, ptr %.sroa.7128.0..sroa_idx.i, align 8, !noalias !1897 %.sroa.9.0..sroa_idx.i = getelementptr inbounds i8, ptr %0, i64 1672 store i8 0, ptr %.sroa.9.0..sroa_idx.i, align 8, !noalias !1897 br label %.thread.i.i @@ -16608,7 +16607,7 @@ common.ret: ; preds = %1768, %977, %186 .thread.i.i: ; preds = %..thread.i.i_crit_edge, %.thread.i %368 = phi ptr [ %197, %.thread.i ], [ %195, %..thread.i.i_crit_edge ] %369 = phi ptr [ %198, %.thread.i ], [ %194, %..thread.i.i_crit_edge ] - %370 = phi ptr [ %207, %.thread.i ], [ %.pre316, %..thread.i.i_crit_edge ] + %370 = phi ptr [ %206, %.thread.i ], [ %.pre316, %..thread.i.i_crit_edge ] %371 = phi ptr [ %.sroa.9.0..sroa_idx.i, %.thread.i ], [ %.phi.trans.insert.i, %..thread.i.i_crit_edge ] %372 = phi ptr [ %321, %.thread.i ], [ %367, %..thread.i.i_crit_edge ] call void @llvm.lifetime.start.p0(i64 880, ptr nonnull %.sroa.022.i.i) @@ -18314,42 +18313,41 @@ common.ret: ; preds = %1768, %977, %186 %988 = phi ptr [ %136, %.thread322 ], [ %986, %984 ] %989 = phi ptr [ %135, %.thread322 ], [ %985, %984 ] %990 = getelementptr inbounds i8, ptr %0, i64 1708 - %991 = getelementptr inbounds i8, ptr %0, i64 1707 - %992 = getelementptr inbounds i8, ptr %0, i64 1706 - %993 = getelementptr inbounds i8, ptr %0, i64 1705 - %994 = getelementptr inbounds i8, ptr %0, i64 1704 - %995 = getelementptr inbounds i8, ptr %0, i64 1680 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(5) %994, i8 0, i64 5, i1 false), !noalias !2158 - %996 = load ptr, ptr %995, align 8, !noalias !2158, !nonnull !4, !align !5, !noundef !4 - %997 = getelementptr inbounds i8, ptr %0, i64 1688 - %998 = load ptr, ptr %997, align 8, !noalias !2158, !nonnull !4, !align !5, !noundef !4 + %991 = getelementptr inbounds i8, ptr %0, i64 1706 + %992 = getelementptr inbounds i8, ptr %0, i64 1705 + %993 = getelementptr inbounds i8, ptr %0, i64 1704 + %994 = getelementptr inbounds i8, ptr %0, i64 1680 + store i32 16777216, ptr %993, align 8, !noalias !2158 + %995 = load ptr, ptr %994, align 8, !noalias !2158, !nonnull !4, !align !5, !noundef !4 + %996 = getelementptr inbounds i8, ptr %0, i64 1688 + %997 = load ptr, ptr %996, align 8, !noalias !2158, !nonnull !4, !align !5, !noundef !4 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %60), !noalias !2158 store i8 1, ptr %990, align 4, !noalias !2158 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %60, ptr noundef nonnull align 8 dereferenceable(32) %989, i64 32, i1 false), !noalias !2158 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %59), !noalias !2158 - store i8 1, ptr %991, align 1, !noalias !2158 - %999 = getelementptr inbounds i8, ptr %0, i64 1696 - %1000 = load ptr, ptr %999, align 8, !noalias !2158, !nonnull !4, !noundef !4 - store ptr %1000, ptr %59, align 8, !noalias !2158 + %998 = getelementptr inbounds i8, ptr %0, i64 1696 + %999 = load ptr, ptr %998, align 8, !noalias !2158, !nonnull !4, !noundef !4 + store ptr %999, ptr %59, align 8, !noalias !2158 call void @llvm.lifetime.start.p0(i64 208, ptr nonnull %58), !noalias !2158 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %57), !noalias !2158 - %1001 = getelementptr inbounds i8, ptr %996, i64 72 - %.val.i241 = load ptr, ptr %1001, align 8, !nonnull !4, !noundef !4 - %1002 = atomicrmw add ptr %.val.i241, i64 1 monotonic, align 8 - %1003 = icmp slt i64 %1002, 0 - br i1 %1003, label %1004, label %"_ZN91_$LT$ockam_transport_tcp..registry..registry..TcpRegistry$u20$as$u20$core..clone..Clone$GT$5clone17ha02da283d8b56193E.exit.i242" + %1000 = getelementptr inbounds i8, ptr %995, i64 72 + %.val.i241 = load ptr, ptr %1000, align 8, !nonnull !4, !noundef !4 + %1001 = atomicrmw add ptr %.val.i241, i64 1 monotonic, align 8 + %1002 = icmp slt i64 %1001, 0 + br i1 %1002, label %1003, label %"_ZN91_$LT$ockam_transport_tcp..registry..registry..TcpRegistry$u20$as$u20$core..clone..Clone$GT$5clone17ha02da283d8b56193E.exit.i242" -1004: ; preds = %987 +1003: ; preds = %987 tail call void @llvm.trap() unreachable "_ZN91_$LT$ockam_transport_tcp..registry..registry..TcpRegistry$u20$as$u20$core..clone..Clone$GT$5clone17ha02da283d8b56193E.exit.i242": ; preds = %987 + %1004 = getelementptr inbounds i8, ptr %0, i64 1707 store ptr %.val.i241, ptr %57, align 8, !noalias !2158 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %56), !noalias !2158 - store i8 0, ptr %991, align 1, !noalias !2158 - store ptr %1000, ptr %56, align 8, !noalias !2158 + store i8 0, ptr %1004, align 1, !noalias !2158 + store ptr %999, ptr %56, align 8, !noalias !2158 call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %55), !noalias !2158 - %1005 = getelementptr inbounds i8, ptr %996, i64 112 + %1005 = getelementptr inbounds i8, ptr %995, i64 112 invoke fastcc void @"_ZN88_$LT$ockam_transport_tcp..portal..addresses..Addresses$u20$as$u20$core..clone..Clone$GT$5clone17hf14494c7885dbd61E"(ptr noalias nocapture noundef align 8 dereferenceable(128) %55, ptr noalias noundef readonly align 8 dereferenceable(128) %1005) to label %1006 unwind label %1143 @@ -18360,7 +18358,7 @@ common.ret: ; preds = %1768, %977, %186 tail call void @llvm.experimental.noalias.scope.decl(metadata !2161) tail call void @llvm.experimental.noalias.scope.decl(metadata !2164) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %44), !noalias !2158 - store ptr %1000, ptr %44, align 8, !noalias !2166 + store ptr %999, ptr %44, align 8, !noalias !2166 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43), !noalias !2166 store ptr %.val.i241, ptr %43, align 8, !noalias !2166 %1007 = invoke { ptr, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h84e199e2371c4c9fE"(i64 noundef 49152, i1 noundef zeroext false) @@ -18401,7 +18399,7 @@ common.ret: ; preds = %1768, %977, %186 %.sroa.5.0..sroa_idx.i.i246 = getelementptr inbounds i8, ptr %58, i64 24 store i64 0, ptr %.sroa.5.0..sroa_idx.i.i246, align 8, !alias.scope !2161, !noalias !2170 %1019 = getelementptr inbounds i8, ptr %58, i64 32 - store ptr %1000, ptr %1019, align 8, !alias.scope !2161, !noalias !2170 + store ptr %999, ptr %1019, align 8, !alias.scope !2161, !noalias !2170 %1020 = getelementptr inbounds i8, ptr %58, i64 40 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(128) %1020, ptr noundef nonnull align 8 dereferenceable(128) %55, i64 128, i1 false), !alias.scope !2169, !noalias !2171 %1021 = getelementptr inbounds i8, ptr %58, i64 168 @@ -18410,19 +18408,19 @@ common.ret: ; preds = %1768, %977, %186 store i16 0, ptr %1022, align 8, !alias.scope !2161, !noalias !2170 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43), !noalias !2166 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44), !noalias !2158 - store i8 1, ptr %992, align 2, !noalias !2158 + store i8 1, ptr %991, align 2, !noalias !2158 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %54), !noalias !2158 call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %55), !noalias !2158 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %56), !noalias !2158 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %57), !noalias !2158 call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %53), !noalias !2158 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %52), !noalias !2158 - %1023 = getelementptr inbounds i8, ptr %996, i64 208 + %1023 = getelementptr inbounds i8, ptr %995, i64 208 tail call void @llvm.experimental.noalias.scope.decl(metadata !2172) tail call void @llvm.experimental.noalias.scope.decl(metadata !2175) - %1024 = getelementptr inbounds i8, ptr %996, i64 232 + %1024 = getelementptr inbounds i8, ptr %995, i64 232 %1025 = load i8, ptr %1024, align 8, !alias.scope !2175, !noalias !2172, !noundef !4 - %1026 = getelementptr inbounds i8, ptr %996, i64 224 + %1026 = getelementptr inbounds i8, ptr %995, i64 224 %1027 = load ptr, ptr %1023, align 8, !alias.scope !2177, !noalias !2180, !nonnull !4, !noundef !4 %1028 = load i64, ptr %1026, align 8, !alias.scope !2177, !noalias !2180, !noundef !4 %1029 = invoke { ptr, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h84e199e2371c4c9fE"(i64 noundef %1028, i1 noundef zeroext false) @@ -18468,9 +18466,9 @@ common.ret: ; preds = %1768, %977, %186 store i64 1, ptr %1038, align 8 %.sroa.4.0..sroa_idx.i102.i250 = getelementptr inbounds i8, ptr %1038, i64 8 store i64 1, ptr %.sroa.4.0..sroa_idx.i102.i250, align 8 - %1043 = getelementptr inbounds i8, ptr %996, i64 240 + %1043 = getelementptr inbounds i8, ptr %995, i64 240 %.val98.i251 = load ptr, ptr %1043, align 8, !nonnull !4, !noundef !4 - %1044 = getelementptr i8, ptr %996, i64 248 + %1044 = getelementptr i8, ptr %995, i64 248 %.val99.i252 = load ptr, ptr %1044, align 8 %1045 = atomicrmw add ptr %.val98.i251, i64 1 monotonic, align 8 %1046 = icmp slt i64 %1045, 0 @@ -18493,16 +18491,16 @@ common.ret: ; preds = %1768, %977, %186 store ptr %.val98.i251, ptr %1052, align 8, !alias.scope !2195, !noalias !2196 %1053 = getelementptr inbounds i8, ptr %53, i64 56 store ptr %.val99.i252, ptr %1053, align 8, !alias.scope !2195, !noalias !2196 - store i8 1, ptr %993, align 1, !noalias !2158 + store i8 1, ptr %992, align 1, !noalias !2158 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %52), !noalias !2158 call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %51), !noalias !2158 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %50), !noalias !2158 - %1054 = getelementptr inbounds i8, ptr %996, i64 176 + %1054 = getelementptr inbounds i8, ptr %995, i64 176 tail call void @llvm.experimental.noalias.scope.decl(metadata !2197) tail call void @llvm.experimental.noalias.scope.decl(metadata !2200) - %1055 = getelementptr inbounds i8, ptr %996, i64 200 + %1055 = getelementptr inbounds i8, ptr %995, i64 200 %1056 = load i8, ptr %1055, align 8, !alias.scope !2200, !noalias !2197, !noundef !4 - %1057 = getelementptr inbounds i8, ptr %996, i64 192 + %1057 = getelementptr inbounds i8, ptr %995, i64 192 %1058 = load ptr, ptr %1054, align 8, !alias.scope !2202, !noalias !2205, !nonnull !4, !noundef !4 %1059 = load i64, ptr %1057, align 8, !alias.scope !2202, !noalias !2205, !noundef !4 %1060 = invoke { ptr, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h84e199e2371c4c9fE"(i64 noundef %1059, i1 noundef zeroext false) @@ -18551,9 +18549,9 @@ common.ret: ; preds = %1768, %977, %186 store ptr %1069, ptr %49, align 8, !noalias !2158 %1075 = getelementptr inbounds i8, ptr %49, i64 8 store ptr @anon.4c65840fdadcee9e63ad31f6b1573f6b.110, ptr %1075, align 8, !noalias !2158 - %1076 = getelementptr inbounds i8, ptr %996, i64 136 + %1076 = getelementptr inbounds i8, ptr %995, i64 136 %1077 = load i8, ptr %1076, align 8, !alias.scope !2212, !noalias !2215, !noundef !4 - %1078 = getelementptr inbounds i8, ptr %996, i64 128 + %1078 = getelementptr inbounds i8, ptr %995, i64 128 %1079 = load ptr, ptr %1005, align 8, !alias.scope !2217, !noalias !2220, !nonnull !4, !noundef !4 %1080 = load i64, ptr %1078, align 8, !alias.scope !2217, !noalias !2220, !noundef !4 %1081 = invoke { ptr, i64 } @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$11allocate_in17h84e199e2371c4c9fE"(i64 noundef %1080, i1 noundef zeroext false) @@ -18619,17 +18617,17 @@ common.ret: ; preds = %1768, %977, %186 store ptr %1091, ptr %1101, align 8, !alias.scope !2238, !noalias !2239 %1102 = getelementptr inbounds i8, ptr %51, i64 56 store ptr @anon.4c65840fdadcee9e63ad31f6b1573f6b.112, ptr %1102, align 8, !alias.scope !2238, !noalias !2239 - store i8 1, ptr %994, align 8, !noalias !2158 + store i8 1, ptr %993, align 8, !noalias !2158 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %49), !noalias !2158 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %50), !noalias !2158 call void @llvm.lifetime.start.p0(i64 296, ptr nonnull %.sroa.0127.sroa.0.i104) call void @llvm.lifetime.start.p0(i64 296, ptr nonnull %.sroa.0130.i103) call void @llvm.lifetime.start.p0(i64 208, ptr nonnull %48), !noalias !2158 - store i8 0, ptr %992, align 2, !noalias !2158 + store i8 0, ptr %991, align 2, !noalias !2158 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(208) %48, ptr noundef nonnull align 8 dereferenceable(208) %58, i64 208, i1 false), !noalias !2158 call void @llvm.lifetime.start.p0(i64 88, ptr nonnull %47), !noalias !2158 call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %46), !noalias !2158 - store i8 0, ptr %993, align 1, !noalias !2158 + store i8 0, ptr %992, align 1, !noalias !2158 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %46, ptr noundef nonnull align 8 dereferenceable(64) %53, i64 64, i1 false), !noalias !2158 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %45), !noalias !2158 %1103 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !2158 @@ -18645,7 +18643,7 @@ common.ret: ; preds = %1768, %977, %186 unreachable 1107: ; preds = %1098 - store i8 0, ptr %994, align 8, !noalias !2158 + store i8 0, ptr %993, align 8, !noalias !2158 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %1104, ptr noundef nonnull align 8 dereferenceable(64) %51, i64 64, i1 false) store ptr %1104, ptr %45, align 8, !alias.scope !2240, !noalias !2245 %1108 = getelementptr inbounds i8, ptr %45, i64 8 @@ -18678,7 +18676,7 @@ common.ret: ; preds = %1768, %977, %186 %.sroa.0127.sroa.8.0..sroa_idx.i266 = getelementptr inbounds i8, ptr %0, i64 424 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.0127.sroa.8.0..sroa_idx.i266, i8 0, i64 16, i1 false), !noalias !2158 %.sroa.7128.0..sroa_idx.i267 = getelementptr inbounds i8, ptr %0, i64 440 - store ptr %998, ptr %.sroa.7128.0..sroa_idx.i267, align 8, !noalias !2158 + store ptr %997, ptr %.sroa.7128.0..sroa_idx.i267, align 8, !noalias !2158 %.sroa.9.0..sroa_idx.i268 = getelementptr inbounds i8, ptr %0, i64 1672 store i8 0, ptr %.sroa.9.0..sroa_idx.i268, align 8, !noalias !2158 br label %.thread.i.i235 @@ -18835,7 +18833,7 @@ common.ret: ; preds = %1768, %977, %186 .thread.i.i235: ; preds = %..thread.i.i235_crit_edge, %.thread.i263 %1159 = phi ptr [ %988, %.thread.i263 ], [ %986, %..thread.i.i235_crit_edge ] %1160 = phi ptr [ %989, %.thread.i263 ], [ %985, %..thread.i.i235_crit_edge ] - %1161 = phi ptr [ %998, %.thread.i263 ], [ %.pre320, %..thread.i.i235_crit_edge ] + %1161 = phi ptr [ %997, %.thread.i263 ], [ %.pre320, %..thread.i.i235_crit_edge ] %1162 = phi ptr [ %.sroa.9.0..sroa_idx.i268, %.thread.i263 ], [ %.phi.trans.insert.i105, %..thread.i.i235_crit_edge ] %1163 = phi ptr [ %1112, %.thread.i263 ], [ %1158, %..thread.i.i235_crit_edge ] call void @llvm.lifetime.start.p0(i64 880, ptr nonnull %.sroa.022.i.i102) diff --git a/bench/ockam-rs/optimized/37q648fnmlksdgjw.ll b/bench/ockam-rs/optimized/37q648fnmlksdgjw.ll index 529157e4de3..03684cbed00 100644 --- a/bench/ockam-rs/optimized/37q648fnmlksdgjw.ll +++ b/bench/ockam-rs/optimized/37q648fnmlksdgjw.ll @@ -27484,7 +27484,7 @@ default.unreachable41: ; preds = %210, %43, %3 %53 = getelementptr inbounds i8, ptr %1, i64 537 %54 = getelementptr inbounds i8, ptr %1, i64 536 %55 = getelementptr inbounds i8, ptr %1, i64 528 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(7) %54, i8 0, i64 7, i1 false), !noalias !3435 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(6) %54, i8 0, i64 6, i1 false), !noalias !3435 %56 = load ptr, ptr %55, align 8, !noalias !3435, !nonnull !5, !align !47, !noundef !5 store i8 1, ptr %48, align 2, !noalias !3435 %57 = getelementptr inbounds i8, ptr %1, i64 344 @@ -107655,20 +107655,17 @@ default.unreachable1.i.i: ; preds = %356 %412 = getelementptr inbounds i8, ptr %1, i64 2714 %413 = getelementptr inbounds i8, ptr %1, i64 2713 %414 = getelementptr inbounds i8, ptr %1, i64 200 - store i8 0, ptr %412, align 2, !noalias !17661 + store i32 16843008, ptr %412, align 2, !noalias !17661 %415 = load ptr, ptr %414, align 8, !noalias !17661, !nonnull !5, !align !47, !noundef !5 %416 = getelementptr inbounds i8, ptr %1, i64 272 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %416, ptr noundef nonnull align 8 dereferenceable(32) %408, i64 32, i1 false), !noalias !17661 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %42), !noalias !17661 - store i8 1, ptr %409, align 1, !noalias !17661 %417 = getelementptr inbounds i8, ptr %1, i64 120 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %42, ptr noundef nonnull align 8 dereferenceable(48) %417, i64 48, i1 false), !noalias !17661 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %41), !noalias !17661 - store i8 1, ptr %410, align 4, !noalias !17661 %418 = getelementptr inbounds i8, ptr %1, i64 208 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef nonnull align 8 dereferenceable(32) %418, i64 32, i1 false), !noalias !17661 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %40), !noalias !17661 - store i8 1, ptr %411, align 1, !noalias !17661 %419 = getelementptr inbounds i8, ptr %1, i64 240 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef nonnull align 8 dereferenceable(32) %419, i64 32, i1 false), !noalias !17661 store i8 1, ptr %413, align 1, !noalias !17661 diff --git a/bench/oiio/optimized/imagecache.cpp.ll b/bench/oiio/optimized/imagecache.cpp.ll index 88521f38120..945dfa5cfeb 100644 --- a/bench/oiio/optimized/imagecache.cpp.ll +++ b/bench/oiio/optimized/imagecache.cpp.ll @@ -5495,88 +5495,88 @@ if.end124: ; preds = %if.end124.critedge, br i1 %tobool128.not, label %if.end134, label %invoke.cont133 invoke.cont133: ; preds = %if.end124 - %66 = getelementptr inbounds i8, ptr %c2w, i64 4 %arrayidx6.i = getelementptr inbounds i8, ptr %c2w, i64 20 %arrayidx9.i = getelementptr inbounds i8, ptr %c2w, i64 40 %arrayidx12.i = getelementptr inbounds i8, ptr %c2w, i64 60 %m_imagecache = getelementptr inbounds i8, ptr %icfile, i64 232 - %67 = load ptr, ptr %m_imagecache, align 8 - %m_Mc2w.i = getelementptr inbounds i8, ptr %67, i64 232 - %68 = load float, ptr %m_Mc2w.i, align 4 - store float %68, ptr %c2w, align 4 - %arrayidx8.i.i = getelementptr inbounds i8, ptr %67, i64 236 - %69 = load float, ptr %arrayidx8.i.i, align 4 - store float %69, ptr %66, align 4 - %arrayidx14.i.i = getelementptr inbounds i8, ptr %67, i64 240 - %70 = load float, ptr %arrayidx14.i.i, align 4 + %66 = load ptr, ptr %m_imagecache, align 8 + %m_Mc2w.i = getelementptr inbounds i8, ptr %66, i64 232 + %67 = load float, ptr %m_Mc2w.i, align 4 + store float %67, ptr %c2w, align 4 + %arrayidx8.i.i = getelementptr inbounds i8, ptr %66, i64 236 + %68 = load float, ptr %arrayidx8.i.i, align 4 + %arrayidx11.i.i = getelementptr inbounds i8, ptr %c2w, i64 4 + store float %68, ptr %arrayidx11.i.i, align 4 + %arrayidx14.i.i = getelementptr inbounds i8, ptr %66, i64 240 + %69 = load float, ptr %arrayidx14.i.i, align 4 %arrayidx17.i.i = getelementptr inbounds i8, ptr %c2w, i64 8 - store float %70, ptr %arrayidx17.i.i, align 4 - %arrayidx20.i.i = getelementptr inbounds i8, ptr %67, i64 244 - %71 = load float, ptr %arrayidx20.i.i, align 4 + store float %69, ptr %arrayidx17.i.i, align 4 + %arrayidx20.i.i = getelementptr inbounds i8, ptr %66, i64 244 + %70 = load float, ptr %arrayidx20.i.i, align 4 %arrayidx23.i.i = getelementptr inbounds i8, ptr %c2w, i64 12 - store float %71, ptr %arrayidx23.i.i, align 4 - %arrayidx25.i.i = getelementptr inbounds i8, ptr %67, i64 248 - %72 = load float, ptr %arrayidx25.i.i, align 4 + store float %70, ptr %arrayidx23.i.i, align 4 + %arrayidx25.i.i = getelementptr inbounds i8, ptr %66, i64 248 + %71 = load float, ptr %arrayidx25.i.i, align 4 %arrayidx28.i.i = getelementptr inbounds i8, ptr %c2w, i64 16 - store float %72, ptr %arrayidx28.i.i, align 4 - %arrayidx32.i.i = getelementptr inbounds i8, ptr %67, i64 252 - %73 = load float, ptr %arrayidx32.i.i, align 4 - store float %73, ptr %arrayidx6.i, align 4 - %arrayidx38.i.i = getelementptr inbounds i8, ptr %67, i64 256 - %74 = load float, ptr %arrayidx38.i.i, align 4 + store float %71, ptr %arrayidx28.i.i, align 4 + %arrayidx32.i.i = getelementptr inbounds i8, ptr %66, i64 252 + %72 = load float, ptr %arrayidx32.i.i, align 4 + store float %72, ptr %arrayidx6.i, align 4 + %arrayidx38.i.i = getelementptr inbounds i8, ptr %66, i64 256 + %73 = load float, ptr %arrayidx38.i.i, align 4 %arrayidx41.i.i = getelementptr inbounds i8, ptr %c2w, i64 24 - store float %74, ptr %arrayidx41.i.i, align 4 - %arrayidx44.i.i = getelementptr inbounds i8, ptr %67, i64 260 - %75 = load float, ptr %arrayidx44.i.i, align 4 + store float %73, ptr %arrayidx41.i.i, align 4 + %arrayidx44.i.i = getelementptr inbounds i8, ptr %66, i64 260 + %74 = load float, ptr %arrayidx44.i.i, align 4 %arrayidx47.i.i = getelementptr inbounds i8, ptr %c2w, i64 28 - store float %75, ptr %arrayidx47.i.i, align 4 - %arrayidx49.i.i = getelementptr inbounds i8, ptr %67, i64 264 - %76 = load float, ptr %arrayidx49.i.i, align 4 + store float %74, ptr %arrayidx47.i.i, align 4 + %arrayidx49.i.i = getelementptr inbounds i8, ptr %66, i64 264 + %75 = load float, ptr %arrayidx49.i.i, align 4 %arrayidx52.i.i = getelementptr inbounds i8, ptr %c2w, i64 32 - store float %76, ptr %arrayidx52.i.i, align 4 - %arrayidx56.i.i = getelementptr inbounds i8, ptr %67, i64 268 - %77 = load float, ptr %arrayidx56.i.i, align 4 + store float %75, ptr %arrayidx52.i.i, align 4 + %arrayidx56.i.i = getelementptr inbounds i8, ptr %66, i64 268 + %76 = load float, ptr %arrayidx56.i.i, align 4 %arrayidx59.i.i = getelementptr inbounds i8, ptr %c2w, i64 36 - store float %77, ptr %arrayidx59.i.i, align 4 - %arrayidx62.i.i = getelementptr inbounds i8, ptr %67, i64 272 - %78 = load float, ptr %arrayidx62.i.i, align 4 - store float %78, ptr %arrayidx9.i, align 4 - %arrayidx68.i.i = getelementptr inbounds i8, ptr %67, i64 276 - %79 = load float, ptr %arrayidx68.i.i, align 4 + store float %76, ptr %arrayidx59.i.i, align 4 + %arrayidx62.i.i = getelementptr inbounds i8, ptr %66, i64 272 + %77 = load float, ptr %arrayidx62.i.i, align 4 + store float %77, ptr %arrayidx9.i, align 4 + %arrayidx68.i.i = getelementptr inbounds i8, ptr %66, i64 276 + %78 = load float, ptr %arrayidx68.i.i, align 4 %arrayidx71.i.i = getelementptr inbounds i8, ptr %c2w, i64 44 - store float %79, ptr %arrayidx71.i.i, align 4 - %arrayidx73.i.i = getelementptr inbounds i8, ptr %67, i64 280 - %80 = load float, ptr %arrayidx73.i.i, align 4 + store float %78, ptr %arrayidx71.i.i, align 4 + %arrayidx73.i.i = getelementptr inbounds i8, ptr %66, i64 280 + %79 = load float, ptr %arrayidx73.i.i, align 4 %arrayidx76.i.i = getelementptr inbounds i8, ptr %c2w, i64 48 - store float %80, ptr %arrayidx76.i.i, align 4 - %arrayidx80.i.i = getelementptr inbounds i8, ptr %67, i64 284 - %81 = load float, ptr %arrayidx80.i.i, align 4 + store float %79, ptr %arrayidx76.i.i, align 4 + %arrayidx80.i.i = getelementptr inbounds i8, ptr %66, i64 284 + %80 = load float, ptr %arrayidx80.i.i, align 4 %arrayidx83.i.i = getelementptr inbounds i8, ptr %c2w, i64 52 - store float %81, ptr %arrayidx83.i.i, align 4 - %arrayidx86.i.i = getelementptr inbounds i8, ptr %67, i64 288 - %82 = load float, ptr %arrayidx86.i.i, align 4 + store float %80, ptr %arrayidx83.i.i, align 4 + %arrayidx86.i.i = getelementptr inbounds i8, ptr %66, i64 288 + %81 = load float, ptr %arrayidx86.i.i, align 4 %arrayidx89.i.i = getelementptr inbounds i8, ptr %c2w, i64 56 - store float %82, ptr %arrayidx89.i.i, align 4 - %arrayidx92.i.i = getelementptr inbounds i8, ptr %67, i64 292 - %83 = load float, ptr %arrayidx92.i.i, align 4 - store float %83, ptr %arrayidx12.i, align 4 + store float %81, ptr %arrayidx89.i.i, align 4 + %arrayidx92.i.i = getelementptr inbounds i8, ptr %66, i64 292 + %82 = load float, ptr %arrayidx92.i.i, align 4 + store float %82, ptr %arrayidx12.i, align 4 %m_nonlocal.i = getelementptr inbounds i8, ptr %call127, i64 38 - %84 = load i8, ptr %m_nonlocal.i, align 2 - %tobool.i = trunc i8 %84 to i1 + %83 = load i8, ptr %m_nonlocal.i, align 2 + %tobool.i = trunc i8 %83 to i1 %m_data.i = getelementptr inbounds i8, ptr %call127, i64 16 - %85 = load ptr, ptr %m_data.i, align 8 - %cond.i134 = select i1 %tobool.i, ptr %85, ptr %m_data.i + %84 = load ptr, ptr %m_data.i, align 8 + %cond.i134 = select i1 %tobool.i, ptr %84, ptr %m_data.i %call131 = call noalias noundef nonnull dereferenceable(64) ptr @_Znwm(i64 noundef 64) #37 call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %call131, i8 0, i64 64, i1 false), !alias.scope !61 call void @_ZN9Imath_2_58Matrix44IfE8multiplyERKS1_S3_RS1_(ptr noundef nonnull align 4 dereferenceable(64) %c2w, ptr noundef nonnull align 4 dereferenceable(64) %cond.i134, ptr noundef nonnull align 4 dereferenceable(64) %call131) %Mlocal = getelementptr inbounds i8, ptr %this, i64 80 - %86 = load ptr, ptr %Mlocal, align 8 + %85 = load ptr, ptr %Mlocal, align 8 store ptr %call131, ptr %Mlocal, align 8 - %tobool.not.i.i = icmp eq ptr %86, null + %tobool.not.i.i = icmp eq ptr %85, null br i1 %tobool.not.i.i, label %if.end134, label %_ZNKSt14default_deleteIN9Imath_2_58Matrix44IfEEEclEPS2_.exit.i.i _ZNKSt14default_deleteIN9Imath_2_58Matrix44IfEEEclEPS2_.exit.i.i: ; preds = %invoke.cont133 - call void @_ZdlPv(ptr noundef nonnull %86) #36 + call void @_ZdlPv(ptr noundef nonnull %85) #36 br label %if.end134 if.end134: ; preds = %_ZNKSt14default_deleteIN9Imath_2_58Matrix44IfEEEclEPS2_.exit.i.i, %invoke.cont133, %if.end124 @@ -15465,8 +15465,7 @@ entry: %m_max_mip_res = getelementptr inbounds i8, ptr %this, i64 164 store i32 1073741824, ptr %m_max_mip_res, align 4 %m_Mw2c = getelementptr inbounds i8, ptr %this, i64 168 - %0 = getelementptr inbounds i8, ptr %this, i64 172 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %0, i8 0, i64 56, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %m_Mw2c, i8 0, i64 64, i1 false) store float 1.000000e+00, ptr %m_Mw2c, align 8 %arrayidx6.i = getelementptr inbounds i8, ptr %this, i64 188 store float 1.000000e+00, ptr %arrayidx6.i, align 4 @@ -15475,8 +15474,7 @@ entry: %arrayidx12.i = getelementptr inbounds i8, ptr %this, i64 228 store float 1.000000e+00, ptr %arrayidx12.i, align 4 %m_Mc2w = getelementptr inbounds i8, ptr %this, i64 232 - %1 = getelementptr inbounds i8, ptr %this, i64 236 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %1, i8 0, i64 56, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %m_Mc2w, i8 0, i64 64, i1 false) store float 1.000000e+00, ptr %m_Mc2w, align 8 %arrayidx6.i4 = getelementptr inbounds i8, ptr %this, i64 252 store float 1.000000e+00, ptr %arrayidx6.i4, align 4 @@ -15495,20 +15493,20 @@ arrayctor.loop.i: ; preds = %invoke.cont.i, %ent store i32 0, ptr %arrayctor.cur.ptr.ptr.i, align 64 %map.i.i = getelementptr inbounds i8, ptr %arrayctor.cur.ptr.ptr.i, i64 8 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %map.i.i, i8 0, i64 32, i1 false) - %2 = load atomic i8, ptr @_ZGVZN3tsl17detail_robin_hash10robin_hashISt4pairIN18OpenImageIO_v2_6_07ustringENS3_13intrusive_ptrINS3_3pvt14ImageCacheFileEEEENS_9robin_mapIS4_S8_St4hashIS4_ESt8equal_toIS4_ESaIS9_ELb0ENS_2rh26power_of_two_growth_policyILm2EEEE9KeySelectENSJ_11ValueSelectESC_SE_SF_Lb0ESI_E23static_empty_bucket_ptrEvE12empty_bucket acquire, align 8 - %guard.uninitialized.i.i.i.i.i = icmp eq i8 %2, 0 + %0 = load atomic i8, ptr @_ZGVZN3tsl17detail_robin_hash10robin_hashISt4pairIN18OpenImageIO_v2_6_07ustringENS3_13intrusive_ptrINS3_3pvt14ImageCacheFileEEEENS_9robin_mapIS4_S8_St4hashIS4_ESt8equal_toIS4_ESaIS9_ELb0ENS_2rh26power_of_two_growth_policyILm2EEEE9KeySelectENSJ_11ValueSelectESC_SE_SF_Lb0ESI_E23static_empty_bucket_ptrEvE12empty_bucket acquire, align 8 + %guard.uninitialized.i.i.i.i.i = icmp eq i8 %0, 0 br i1 %guard.uninitialized.i.i.i.i.i, label %init.check.i.i.i.i.i, label %invoke.cont.i, !prof !186 init.check.i.i.i.i.i: ; preds = %arrayctor.loop.i - %3 = tail call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN3tsl17detail_robin_hash10robin_hashISt4pairIN18OpenImageIO_v2_6_07ustringENS3_13intrusive_ptrINS3_3pvt14ImageCacheFileEEEENS_9robin_mapIS4_S8_St4hashIS4_ESt8equal_toIS4_ESaIS9_ELb0ENS_2rh26power_of_two_growth_policyILm2EEEE9KeySelectENSJ_11ValueSelectESC_SE_SF_Lb0ESI_E23static_empty_bucket_ptrEvE12empty_bucket) #35 - %tobool.not.i.i.i.i.i = icmp eq i32 %3, 0 + %1 = tail call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN3tsl17detail_robin_hash10robin_hashISt4pairIN18OpenImageIO_v2_6_07ustringENS3_13intrusive_ptrINS3_3pvt14ImageCacheFileEEEENS_9robin_mapIS4_S8_St4hashIS4_ESt8equal_toIS4_ESaIS9_ELb0ENS_2rh26power_of_two_growth_policyILm2EEEE9KeySelectENSJ_11ValueSelectESC_SE_SF_Lb0ESI_E23static_empty_bucket_ptrEvE12empty_bucket) #35 + %tobool.not.i.i.i.i.i = icmp eq i32 %1, 0 br i1 %tobool.not.i.i.i.i.i, label %invoke.cont.i, label %init.i.i.i.i.i init.i.i.i.i.i: ; preds = %init.check.i.i.i.i.i store i32 0, ptr @_ZZN3tsl17detail_robin_hash10robin_hashISt4pairIN18OpenImageIO_v2_6_07ustringENS3_13intrusive_ptrINS3_3pvt14ImageCacheFileEEEENS_9robin_mapIS4_S8_St4hashIS4_ESt8equal_toIS4_ESaIS9_ELb0ENS_2rh26power_of_two_growth_policyILm2EEEE9KeySelectENSJ_11ValueSelectESC_SE_SF_Lb0ESI_E23static_empty_bucket_ptrEvE12empty_bucket, align 8 store i16 -1, ptr getelementptr inbounds (i8, ptr @_ZZN3tsl17detail_robin_hash10robin_hashISt4pairIN18OpenImageIO_v2_6_07ustringENS3_13intrusive_ptrINS3_3pvt14ImageCacheFileEEEENS_9robin_mapIS4_S8_St4hashIS4_ESt8equal_toIS4_ESaIS9_ELb0ENS_2rh26power_of_two_growth_policyILm2EEEE9KeySelectENSJ_11ValueSelectESC_SE_SF_Lb0ESI_E23static_empty_bucket_ptrEvE12empty_bucket, i64 4), align 4 store i8 1, ptr getelementptr inbounds (i8, ptr @_ZZN3tsl17detail_robin_hash10robin_hashISt4pairIN18OpenImageIO_v2_6_07ustringENS3_13intrusive_ptrINS3_3pvt14ImageCacheFileEEEENS_9robin_mapIS4_S8_St4hashIS4_ESt8equal_toIS4_ESaIS9_ELb0ENS_2rh26power_of_two_growth_policyILm2EEEE9KeySelectENSJ_11ValueSelectESC_SE_SF_Lb0ESI_E23static_empty_bucket_ptrEvE12empty_bucket, i64 6), align 2 - %4 = tail call i32 @__cxa_atexit(ptr nonnull @_ZN3tsl17detail_robin_hash12bucket_entryISt4pairIN18OpenImageIO_v2_6_07ustringENS3_13intrusive_ptrINS3_3pvt14ImageCacheFileEEEELb1EED2Ev, ptr nonnull @_ZZN3tsl17detail_robin_hash10robin_hashISt4pairIN18OpenImageIO_v2_6_07ustringENS3_13intrusive_ptrINS3_3pvt14ImageCacheFileEEEENS_9robin_mapIS4_S8_St4hashIS4_ESt8equal_toIS4_ESaIS9_ELb0ENS_2rh26power_of_two_growth_policyILm2EEEE9KeySelectENSJ_11ValueSelectESC_SE_SF_Lb0ESI_E23static_empty_bucket_ptrEvE12empty_bucket, ptr nonnull @__dso_handle) #35 + %2 = tail call i32 @__cxa_atexit(ptr nonnull @_ZN3tsl17detail_robin_hash12bucket_entryISt4pairIN18OpenImageIO_v2_6_07ustringENS3_13intrusive_ptrINS3_3pvt14ImageCacheFileEEEELb1EED2Ev, ptr nonnull @_ZZN3tsl17detail_robin_hash10robin_hashISt4pairIN18OpenImageIO_v2_6_07ustringENS3_13intrusive_ptrINS3_3pvt14ImageCacheFileEEEENS_9robin_mapIS4_S8_St4hashIS4_ESt8equal_toIS4_ESaIS9_ELb0ENS_2rh26power_of_two_growth_policyILm2EEEE9KeySelectENSJ_11ValueSelectESC_SE_SF_Lb0ESI_E23static_empty_bucket_ptrEvE12empty_bucket, ptr nonnull @__dso_handle) #35 tail call void @__cxa_guard_release(ptr nonnull @_ZGVZN3tsl17detail_robin_hash10robin_hashISt4pairIN18OpenImageIO_v2_6_07ustringENS3_13intrusive_ptrINS3_3pvt14ImageCacheFileEEEENS_9robin_mapIS4_S8_St4hashIS4_ESt8equal_toIS4_ESaIS9_ELb0ENS_2rh26power_of_two_growth_policyILm2EEEE9KeySelectENSJ_11ValueSelectESC_SE_SF_Lb0ESI_E23static_empty_bucket_ptrEvE12empty_bucket) #35 br label %invoke.cont.i @@ -15542,20 +15540,20 @@ invoke.cont6: ; preds = %invoke.cont.i store i8 0, ptr %m_fingerprints_mutex, align 1 %m_fingerprints = getelementptr inbounds i8, ptr %this, i64 8592 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %m_fingerprints, i8 0, i64 32, i1 false) - %5 = load atomic i8, ptr @_ZGVZN3tsl17detail_robin_hash10robin_hashISt4pairIN18OpenImageIO_v2_6_07ustringENS3_13intrusive_ptrINS3_3pvt14ImageCacheFileEEEENS_9robin_mapIS4_S8_St4hashIS4_ESt8equal_toIS4_ESaIS9_ELb0ENS_2rh26power_of_two_growth_policyILm2EEEE9KeySelectENSJ_11ValueSelectESC_SE_SF_Lb0ESI_E23static_empty_bucket_ptrEvE12empty_bucket acquire, align 8 - %guard.uninitialized.i.i.i = icmp eq i8 %5, 0 + %3 = load atomic i8, ptr @_ZGVZN3tsl17detail_robin_hash10robin_hashISt4pairIN18OpenImageIO_v2_6_07ustringENS3_13intrusive_ptrINS3_3pvt14ImageCacheFileEEEENS_9robin_mapIS4_S8_St4hashIS4_ESt8equal_toIS4_ESaIS9_ELb0ENS_2rh26power_of_two_growth_policyILm2EEEE9KeySelectENSJ_11ValueSelectESC_SE_SF_Lb0ESI_E23static_empty_bucket_ptrEvE12empty_bucket acquire, align 8 + %guard.uninitialized.i.i.i = icmp eq i8 %3, 0 br i1 %guard.uninitialized.i.i.i, label %init.check.i.i.i, label %invoke.cont8, !prof !186 init.check.i.i.i: ; preds = %invoke.cont6 - %6 = tail call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN3tsl17detail_robin_hash10robin_hashISt4pairIN18OpenImageIO_v2_6_07ustringENS3_13intrusive_ptrINS3_3pvt14ImageCacheFileEEEENS_9robin_mapIS4_S8_St4hashIS4_ESt8equal_toIS4_ESaIS9_ELb0ENS_2rh26power_of_two_growth_policyILm2EEEE9KeySelectENSJ_11ValueSelectESC_SE_SF_Lb0ESI_E23static_empty_bucket_ptrEvE12empty_bucket) #35 - %tobool.not.i.i.i = icmp eq i32 %6, 0 + %4 = tail call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN3tsl17detail_robin_hash10robin_hashISt4pairIN18OpenImageIO_v2_6_07ustringENS3_13intrusive_ptrINS3_3pvt14ImageCacheFileEEEENS_9robin_mapIS4_S8_St4hashIS4_ESt8equal_toIS4_ESaIS9_ELb0ENS_2rh26power_of_two_growth_policyILm2EEEE9KeySelectENSJ_11ValueSelectESC_SE_SF_Lb0ESI_E23static_empty_bucket_ptrEvE12empty_bucket) #35 + %tobool.not.i.i.i = icmp eq i32 %4, 0 br i1 %tobool.not.i.i.i, label %invoke.cont8, label %init.i.i.i init.i.i.i: ; preds = %init.check.i.i.i store i32 0, ptr @_ZZN3tsl17detail_robin_hash10robin_hashISt4pairIN18OpenImageIO_v2_6_07ustringENS3_13intrusive_ptrINS3_3pvt14ImageCacheFileEEEENS_9robin_mapIS4_S8_St4hashIS4_ESt8equal_toIS4_ESaIS9_ELb0ENS_2rh26power_of_two_growth_policyILm2EEEE9KeySelectENSJ_11ValueSelectESC_SE_SF_Lb0ESI_E23static_empty_bucket_ptrEvE12empty_bucket, align 8 store i16 -1, ptr getelementptr inbounds (i8, ptr @_ZZN3tsl17detail_robin_hash10robin_hashISt4pairIN18OpenImageIO_v2_6_07ustringENS3_13intrusive_ptrINS3_3pvt14ImageCacheFileEEEENS_9robin_mapIS4_S8_St4hashIS4_ESt8equal_toIS4_ESaIS9_ELb0ENS_2rh26power_of_two_growth_policyILm2EEEE9KeySelectENSJ_11ValueSelectESC_SE_SF_Lb0ESI_E23static_empty_bucket_ptrEvE12empty_bucket, i64 4), align 4 store i8 1, ptr getelementptr inbounds (i8, ptr @_ZZN3tsl17detail_robin_hash10robin_hashISt4pairIN18OpenImageIO_v2_6_07ustringENS3_13intrusive_ptrINS3_3pvt14ImageCacheFileEEEENS_9robin_mapIS4_S8_St4hashIS4_ESt8equal_toIS4_ESaIS9_ELb0ENS_2rh26power_of_two_growth_policyILm2EEEE9KeySelectENSJ_11ValueSelectESC_SE_SF_Lb0ESI_E23static_empty_bucket_ptrEvE12empty_bucket, i64 6), align 2 - %7 = tail call i32 @__cxa_atexit(ptr nonnull @_ZN3tsl17detail_robin_hash12bucket_entryISt4pairIN18OpenImageIO_v2_6_07ustringENS3_13intrusive_ptrINS3_3pvt14ImageCacheFileEEEELb1EED2Ev, ptr nonnull @_ZZN3tsl17detail_robin_hash10robin_hashISt4pairIN18OpenImageIO_v2_6_07ustringENS3_13intrusive_ptrINS3_3pvt14ImageCacheFileEEEENS_9robin_mapIS4_S8_St4hashIS4_ESt8equal_toIS4_ESaIS9_ELb0ENS_2rh26power_of_two_growth_policyILm2EEEE9KeySelectENSJ_11ValueSelectESC_SE_SF_Lb0ESI_E23static_empty_bucket_ptrEvE12empty_bucket, ptr nonnull @__dso_handle) #35 + %5 = tail call i32 @__cxa_atexit(ptr nonnull @_ZN3tsl17detail_robin_hash12bucket_entryISt4pairIN18OpenImageIO_v2_6_07ustringENS3_13intrusive_ptrINS3_3pvt14ImageCacheFileEEEELb1EED2Ev, ptr nonnull @_ZZN3tsl17detail_robin_hash10robin_hashISt4pairIN18OpenImageIO_v2_6_07ustringENS3_13intrusive_ptrINS3_3pvt14ImageCacheFileEEEENS_9robin_mapIS4_S8_St4hashIS4_ESt8equal_toIS4_ESaIS9_ELb0ENS_2rh26power_of_two_growth_policyILm2EEEE9KeySelectENSJ_11ValueSelectESC_SE_SF_Lb0ESI_E23static_empty_bucket_ptrEvE12empty_bucket, ptr nonnull @__dso_handle) #35 tail call void @__cxa_guard_release(ptr nonnull @_ZGVZN3tsl17detail_robin_hash10robin_hashISt4pairIN18OpenImageIO_v2_6_07ustringENS3_13intrusive_ptrINS3_3pvt14ImageCacheFileEEEENS_9robin_mapIS4_S8_St4hashIS4_ESt8equal_toIS4_ESaIS9_ELb0ENS_2rh26power_of_two_growth_policyILm2EEEE9KeySelectENSJ_11ValueSelectESC_SE_SF_Lb0ESI_E23static_empty_bucket_ptrEvE12empty_bucket) #35 br label %invoke.cont8 @@ -15583,20 +15581,20 @@ arrayctor.loop.i8: ; preds = %invoke.cont.i13, %i store i32 0, ptr %arrayctor.cur.ptr.ptr.i10, align 64 %map.i.i11 = getelementptr inbounds i8, ptr %arrayctor.cur.ptr.ptr.i10, i64 8 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %map.i.i11, i8 0, i64 32, i1 false) - %8 = load atomic i8, ptr @_ZGVZN3tsl17detail_robin_hash10robin_hashISt4pairIN18OpenImageIO_v2_6_03pvt6TileIDENS3_13intrusive_ptrINS4_14ImageCacheTileEEEENS_9robin_mapIS5_S8_NS5_6HasherESt8equal_toIS5_ESaIS9_ELb0ENS_2rh26power_of_two_growth_policyILm2EEEE9KeySelectENSI_11ValueSelectESB_SD_SE_Lb0ESH_E23static_empty_bucket_ptrEvE12empty_bucket acquire, align 8 - %guard.uninitialized.i.i.i.i.i12 = icmp eq i8 %8, 0 + %6 = load atomic i8, ptr @_ZGVZN3tsl17detail_robin_hash10robin_hashISt4pairIN18OpenImageIO_v2_6_03pvt6TileIDENS3_13intrusive_ptrINS4_14ImageCacheTileEEEENS_9robin_mapIS5_S8_NS5_6HasherESt8equal_toIS5_ESaIS9_ELb0ENS_2rh26power_of_two_growth_policyILm2EEEE9KeySelectENSI_11ValueSelectESB_SD_SE_Lb0ESH_E23static_empty_bucket_ptrEvE12empty_bucket acquire, align 8 + %guard.uninitialized.i.i.i.i.i12 = icmp eq i8 %6, 0 br i1 %guard.uninitialized.i.i.i.i.i12, label %init.check.i.i.i.i.i24, label %invoke.cont.i13, !prof !186 init.check.i.i.i.i.i24: ; preds = %arrayctor.loop.i8 - %9 = tail call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN3tsl17detail_robin_hash10robin_hashISt4pairIN18OpenImageIO_v2_6_03pvt6TileIDENS3_13intrusive_ptrINS4_14ImageCacheTileEEEENS_9robin_mapIS5_S8_NS5_6HasherESt8equal_toIS5_ESaIS9_ELb0ENS_2rh26power_of_two_growth_policyILm2EEEE9KeySelectENSI_11ValueSelectESB_SD_SE_Lb0ESH_E23static_empty_bucket_ptrEvE12empty_bucket) #35 - %tobool.not.i.i.i.i.i25 = icmp eq i32 %9, 0 + %7 = tail call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN3tsl17detail_robin_hash10robin_hashISt4pairIN18OpenImageIO_v2_6_03pvt6TileIDENS3_13intrusive_ptrINS4_14ImageCacheTileEEEENS_9robin_mapIS5_S8_NS5_6HasherESt8equal_toIS5_ESaIS9_ELb0ENS_2rh26power_of_two_growth_policyILm2EEEE9KeySelectENSI_11ValueSelectESB_SD_SE_Lb0ESH_E23static_empty_bucket_ptrEvE12empty_bucket) #35 + %tobool.not.i.i.i.i.i25 = icmp eq i32 %7, 0 br i1 %tobool.not.i.i.i.i.i25, label %invoke.cont.i13, label %init.i.i.i.i.i26 init.i.i.i.i.i26: ; preds = %init.check.i.i.i.i.i24 store i32 0, ptr @_ZZN3tsl17detail_robin_hash10robin_hashISt4pairIN18OpenImageIO_v2_6_03pvt6TileIDENS3_13intrusive_ptrINS4_14ImageCacheTileEEEENS_9robin_mapIS5_S8_NS5_6HasherESt8equal_toIS5_ESaIS9_ELb0ENS_2rh26power_of_two_growth_policyILm2EEEE9KeySelectENSI_11ValueSelectESB_SD_SE_Lb0ESH_E23static_empty_bucket_ptrEvE12empty_bucket, align 8 store i16 -1, ptr getelementptr inbounds (i8, ptr @_ZZN3tsl17detail_robin_hash10robin_hashISt4pairIN18OpenImageIO_v2_6_03pvt6TileIDENS3_13intrusive_ptrINS4_14ImageCacheTileEEEENS_9robin_mapIS5_S8_NS5_6HasherESt8equal_toIS5_ESaIS9_ELb0ENS_2rh26power_of_two_growth_policyILm2EEEE9KeySelectENSI_11ValueSelectESB_SD_SE_Lb0ESH_E23static_empty_bucket_ptrEvE12empty_bucket, i64 4), align 4 store i8 1, ptr getelementptr inbounds (i8, ptr @_ZZN3tsl17detail_robin_hash10robin_hashISt4pairIN18OpenImageIO_v2_6_03pvt6TileIDENS3_13intrusive_ptrINS4_14ImageCacheTileEEEENS_9robin_mapIS5_S8_NS5_6HasherESt8equal_toIS5_ESaIS9_ELb0ENS_2rh26power_of_two_growth_policyILm2EEEE9KeySelectENSI_11ValueSelectESB_SD_SE_Lb0ESH_E23static_empty_bucket_ptrEvE12empty_bucket, i64 6), align 2 - %10 = tail call i32 @__cxa_atexit(ptr nonnull @_ZN3tsl17detail_robin_hash12bucket_entryISt4pairIN18OpenImageIO_v2_6_03pvt6TileIDENS3_13intrusive_ptrINS4_14ImageCacheTileEEEELb1EED2Ev, ptr nonnull @_ZZN3tsl17detail_robin_hash10robin_hashISt4pairIN18OpenImageIO_v2_6_03pvt6TileIDENS3_13intrusive_ptrINS4_14ImageCacheTileEEEENS_9robin_mapIS5_S8_NS5_6HasherESt8equal_toIS5_ESaIS9_ELb0ENS_2rh26power_of_two_growth_policyILm2EEEE9KeySelectENSI_11ValueSelectESB_SD_SE_Lb0ESH_E23static_empty_bucket_ptrEvE12empty_bucket, ptr nonnull @__dso_handle) #35 + %8 = tail call i32 @__cxa_atexit(ptr nonnull @_ZN3tsl17detail_robin_hash12bucket_entryISt4pairIN18OpenImageIO_v2_6_03pvt6TileIDENS3_13intrusive_ptrINS4_14ImageCacheTileEEEELb1EED2Ev, ptr nonnull @_ZZN3tsl17detail_robin_hash10robin_hashISt4pairIN18OpenImageIO_v2_6_03pvt6TileIDENS3_13intrusive_ptrINS4_14ImageCacheTileEEEENS_9robin_mapIS5_S8_NS5_6HasherESt8equal_toIS5_ESaIS9_ELb0ENS_2rh26power_of_two_growth_policyILm2EEEE9KeySelectENSI_11ValueSelectESB_SD_SE_Lb0ESH_E23static_empty_bucket_ptrEvE12empty_bucket, ptr nonnull @__dso_handle) #35 tail call void @__cxa_guard_release(ptr nonnull @_ZGVZN3tsl17detail_robin_hash10robin_hashISt4pairIN18OpenImageIO_v2_6_03pvt6TileIDENS3_13intrusive_ptrINS4_14ImageCacheTileEEEENS_9robin_mapIS5_S8_NS5_6HasherESt8equal_toIS5_ESaIS9_ELb0ENS_2rh26power_of_two_growth_policyILm2EEEE9KeySelectENSI_11ValueSelectESB_SD_SE_Lb0ESH_E23static_empty_bucket_ptrEvE12empty_bucket) #35 br label %invoke.cont.i13 @@ -15637,7 +15635,7 @@ invoke.cont16: ; preds = %invoke.cont10 ret void lpad15: ; preds = %invoke.cont10 - %11 = landingpad { ptr, i32 } + %9 = landingpad { ptr, i32 } cleanup tail call void @_ZN5boost19thread_specific_ptrINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %m_errormessage) #35 tail call void @_ZN18OpenImageIO_v2_6_024unordered_map_concurrentINS_3pvt6TileIDENS_13intrusive_ptrINS1_14ImageCacheTileEEENS2_6HasherESt8equal_toIS2_ELm128EN3tsl9robin_mapIS2_S5_S6_S8_SaISt4pairIS2_S5_EELb0ENS9_2rh26power_of_two_growth_policyILm2EEEEEED2Ev(ptr noundef nonnull align 64 dereferenceable(16448) %m_tilecache) #35 @@ -15646,17 +15644,17 @@ lpad15: ; preds = %invoke.cont10 tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %m_plugin_searchpath) #35 tail call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %m_searchdirs) #35 tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %m_searchpath) #35 - %12 = load ptr, ptr %m_all_perthread_info, align 16 - %tobool.not.i.i.i28 = icmp eq ptr %12, null + %10 = load ptr, ptr %m_all_perthread_info, align 16 + %tobool.not.i.i.i28 = icmp eq ptr %10, null br i1 %tobool.not.i.i.i28, label %_ZNSt6vectorIPN18OpenImageIO_v2_6_03pvt23ImageCachePerThreadInfoESaIS3_EED2Ev.exit, label %if.then.i.i.i if.then.i.i.i: ; preds = %lpad15 - tail call void @_ZdlPv(ptr noundef nonnull %12) #36 + tail call void @_ZdlPv(ptr noundef nonnull %10) #36 br label %_ZNSt6vectorIPN18OpenImageIO_v2_6_03pvt23ImageCachePerThreadInfoESaIS3_EED2Ev.exit _ZNSt6vectorIPN18OpenImageIO_v2_6_03pvt23ImageCachePerThreadInfoESaIS3_EED2Ev.exit: ; preds = %lpad15, %if.then.i.i.i tail call void @_ZN5boost19thread_specific_ptrIN18OpenImageIO_v2_6_03pvt23ImageCachePerThreadInfoEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %m_perthread_info) #35 - resume { ptr, i32 } %11 + resume { ptr, i32 } %9 } ; Function Attrs: mustprogress uwtable @@ -15845,8 +15843,7 @@ invoke.cont: %m_latlong_y_up_default = getelementptr inbounds i8, ptr %this, i64 155 store i8 1, ptr %m_latlong_y_up_default, align 1 %m_Mw2c = getelementptr inbounds i8, ptr %this, i64 168 - %1 = getelementptr inbounds i8, ptr %this, i64 172 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %1, i8 0, i64 56, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %m_Mw2c, i8 0, i64 64, i1 false) store float 1.000000e+00, ptr %m_Mw2c, align 8 %arrayidx6.i = getelementptr inbounds i8, ptr %this, i64 188 store float 1.000000e+00, ptr %arrayidx6.i, align 4 @@ -38001,7 +37998,7 @@ declare noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt7__cxx1112basic_st ; Function Attrs: mustprogress uwtable define linkonce_odr hidden ptr @_ZNK3fmt2v86detail14digit_groupingIcE5applyINS0_8appenderEcEET_S6_NS0_17basic_string_viewIT0_EE(ptr noundef nonnull align 8 dereferenceable(40) %this, ptr %out.coerce, ptr %digits.coerce0, i64 %digits.coerce1) local_unnamed_addr #5 comdat align 2 personality ptr @__gxx_personality_v0 { -invoke.cont5: +entry: %separators = alloca %"class.fmt::v8::basic_memory_buffer.197", align 8 %conv = trunc i64 %digits.coerce1 to i32 %ptr_.i.i = getelementptr inbounds i8, ptr %separators, i64 8 @@ -38019,9 +38016,9 @@ invoke.cont5: %tobool.not.i57 = icmp eq i8 %1, 0 br i1 %tobool.not.i57, label %while.end, label %if.end.i -if.end.i: ; preds = %invoke.cont5, %_ZN3fmt2v86detail6bufferIiE9push_backERKi.exit23 - %state.sroa.3.059 = phi i32 [ %add29.i, %_ZN3fmt2v86detail6bufferIiE9push_backERKi.exit23 ], [ 0, %invoke.cont5 ] - %state.sroa.0.058 = phi ptr [ %state.sroa.0.1, %_ZN3fmt2v86detail6bufferIiE9push_backERKi.exit23 ], [ %call.i, %invoke.cont5 ] +if.end.i: ; preds = %entry, %_ZN3fmt2v86detail6bufferIiE9push_backERKi.exit23 + %state.sroa.3.059 = phi i32 [ %add29.i, %_ZN3fmt2v86detail6bufferIiE9push_backERKi.exit23 ], [ 0, %entry ] + %state.sroa.0.058 = phi ptr [ %state.sroa.0.1, %_ZN3fmt2v86detail6bufferIiE9push_backERKi.exit23 ], [ %call.i, %entry ] %call3.i = call ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE3endEv(ptr noundef nonnull align 8 dereferenceable(32) %this) #35 %cmp.i.i9 = icmp eq ptr %state.sroa.0.058, %call3.i br i1 %cmp.i.i9, label %if.then5.i, label %if.end9.i @@ -38103,7 +38100,7 @@ _ZN3fmt2v86detail6bufferIiE9push_backERKi.exit23: ; preds = %if.end, %.noexc22 %tobool.not.i = icmp eq i8 %11, 0 br i1 %tobool.not.i, label %while.end, label %if.end.i -while.end: ; preds = %invoke.cont7, %_ZN3fmt2v86detail6bufferIiE9push_backERKi.exit23, %if.end9.i, %invoke.cont5 +while.end: ; preds = %invoke.cont7, %_ZN3fmt2v86detail6bufferIiE9push_backERKi.exit23, %if.end9.i, %entry %cmp1360 = icmp sgt i32 %conv, 0 br i1 %cmp1360, label %for.body.lr.ph, label %for.end @@ -80864,7 +80861,7 @@ entry: %_M_manager.i.i = getelementptr inbounds i8, ptr %agg.tmp, i64 16 %_M_invoker.i = getelementptr inbounds i8, ptr %agg.tmp, i64 24 %2 = getelementptr inbounds i8, ptr %agg.tmp, i64 8 - store i64 0, ptr %2, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %2, i8 0, i64 24, i1 false) %3 = ptrtoint ptr %1 to i64 store i64 %3, ptr %agg.tmp, align 8 store ptr @_ZNSt17_Function_handlerIFbcENSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb0ELb0ELb1EEEE9_M_invokeERKSt9_Any_dataOc, ptr %_M_invoker.i, align 8 @@ -80951,7 +80948,7 @@ entry: %_M_manager.i.i = getelementptr inbounds i8, ptr %agg.tmp, i64 16 %_M_invoker.i = getelementptr inbounds i8, ptr %agg.tmp, i64 24 %2 = getelementptr inbounds i8, ptr %agg.tmp, i64 8 - store i64 0, ptr %2, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %2, i8 0, i64 24, i1 false) %3 = ptrtoint ptr %1 to i64 store i64 %3, ptr %agg.tmp, align 8 store ptr @_ZNSt17_Function_handlerIFbcENSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb0ELb1ELb0EEEE9_M_invokeERKSt9_Any_dataOc, ptr %_M_invoker.i, align 8 @@ -81038,7 +81035,7 @@ entry: %_M_manager.i.i = getelementptr inbounds i8, ptr %agg.tmp, i64 16 %_M_invoker.i = getelementptr inbounds i8, ptr %agg.tmp, i64 24 %2 = getelementptr inbounds i8, ptr %agg.tmp, i64 8 - store i64 0, ptr %2, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %2, i8 0, i64 24, i1 false) %3 = ptrtoint ptr %1 to i64 store i64 %3, ptr %agg.tmp, align 8 store ptr @_ZNSt17_Function_handlerIFbcENSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb0ELb1ELb1EEEE9_M_invokeERKSt9_Any_dataOc, ptr %_M_invoker.i, align 8 @@ -81207,7 +81204,7 @@ entry: %_M_manager.i.i = getelementptr inbounds i8, ptr %agg.tmp, i64 16 %_M_invoker.i = getelementptr inbounds i8, ptr %agg.tmp, i64 24 %2 = getelementptr inbounds i8, ptr %agg.tmp, i64 8 - store i64 0, ptr %2, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %2, i8 0, i64 24, i1 false) %3 = ptrtoint ptr %1 to i64 store i64 %3, ptr %agg.tmp, align 8 store ptr @_ZNSt17_Function_handlerIFbcENSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb1ELb0ELb1EEEE9_M_invokeERKSt9_Any_dataOc, ptr %_M_invoker.i, align 8 @@ -81294,7 +81291,7 @@ entry: %_M_manager.i.i = getelementptr inbounds i8, ptr %agg.tmp, i64 16 %_M_invoker.i = getelementptr inbounds i8, ptr %agg.tmp, i64 24 %2 = getelementptr inbounds i8, ptr %agg.tmp, i64 8 - store i64 0, ptr %2, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %2, i8 0, i64 24, i1 false) %3 = ptrtoint ptr %1 to i64 store i64 %3, ptr %agg.tmp, align 8 store ptr @_ZNSt17_Function_handlerIFbcENSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb1ELb1ELb0EEEE9_M_invokeERKSt9_Any_dataOc, ptr %_M_invoker.i, align 8 @@ -81381,7 +81378,7 @@ entry: %_M_manager.i.i = getelementptr inbounds i8, ptr %agg.tmp, i64 16 %_M_invoker.i = getelementptr inbounds i8, ptr %agg.tmp, i64 24 %2 = getelementptr inbounds i8, ptr %agg.tmp, i64 8 - store i64 0, ptr %2, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %2, i8 0, i64 24, i1 false) %3 = ptrtoint ptr %1 to i64 store i64 %3, ptr %agg.tmp, align 8 store ptr @_ZNSt17_Function_handlerIFbcENSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb1ELb1ELb1EEEE9_M_invokeERKSt9_Any_dataOc, ptr %_M_invoker.i, align 8 @@ -81774,7 +81771,7 @@ entry: %_M_manager.i.i = getelementptr inbounds i8, ptr %agg.tmp, i64 16 %_M_invoker.i = getelementptr inbounds i8, ptr %agg.tmp, i64 24 %3 = getelementptr inbounds i8, ptr %agg.tmp, i64 8 - store i64 0, ptr %3, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %3, i8 0, i64 24, i1 false) store ptr %2, ptr %agg.tmp, align 8 %ref.tmp4.sroa.2.0.agg.tmp.sroa_idx = getelementptr inbounds i8, ptr %agg.tmp, i64 8 store i8 %1, ptr %ref.tmp4.sroa.2.0.agg.tmp.sroa_idx, align 8 @@ -81870,7 +81867,7 @@ entry: %_M_manager.i.i = getelementptr inbounds i8, ptr %agg.tmp, i64 16 %_M_invoker.i = getelementptr inbounds i8, ptr %agg.tmp, i64 24 %4 = getelementptr inbounds i8, ptr %agg.tmp, i64 8 - store i64 0, ptr %4, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %4, i8 0, i64 24, i1 false) store ptr %2, ptr %agg.tmp, align 8 %ref.tmp4.sroa.2.0.agg.tmp.sroa_idx = getelementptr inbounds i8, ptr %agg.tmp, i64 8 store i8 %call.i.i.i.i, ptr %ref.tmp4.sroa.2.0.agg.tmp.sroa_idx, align 8 @@ -81966,7 +81963,7 @@ entry: %_M_manager.i.i = getelementptr inbounds i8, ptr %agg.tmp, i64 16 %_M_invoker.i = getelementptr inbounds i8, ptr %agg.tmp, i64 24 %4 = getelementptr inbounds i8, ptr %agg.tmp, i64 8 - store i64 0, ptr %4, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %4, i8 0, i64 24, i1 false) store ptr %2, ptr %agg.tmp, align 8 %ref.tmp4.sroa.2.0.agg.tmp.sroa_idx = getelementptr inbounds i8, ptr %agg.tmp, i64 8 store i8 %call.i.i.i.i, ptr %ref.tmp4.sroa.2.0.agg.tmp.sroa_idx, align 8 diff --git a/bench/opencv/optimized/Geometric_Transforms_Demo.cpp.ll b/bench/opencv/optimized/Geometric_Transforms_Demo.cpp.ll index 08af0d4c81e..0f5578ab299 100644 --- a/bench/opencv/optimized/Geometric_Transforms_Demo.cpp.ll +++ b/bench/opencv/optimized/Geometric_Transforms_Demo.cpp.ll @@ -133,12 +133,14 @@ _ZNK2cv17CommandLineParser3getINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIc .preheader.preheader: ; preds = %46 %47 = getelementptr inbounds i8, ptr %9, i64 12 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %14, i8 0, i64 16, i1 false) + store i64 0, ptr %14, align 16 %48 = load i32, ptr %47, align 4 %49 = sitofp i32 %48 to float %50 = fadd float %49, -1.000000e+00 %51 = getelementptr inbounds i8, ptr %14, i64 8 store float %50, ptr %51, align 8 + %.sroa_idx84 = getelementptr inbounds i8, ptr %14, i64 12 + store i32 0, ptr %.sroa_idx84, align 4 %52 = getelementptr inbounds i8, ptr %9, i64 8 %53 = load i32, ptr %52, align 8 %54 = sitofp i32 %53 to float @@ -149,7 +151,7 @@ _ZNK2cv17CommandLineParser3getINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIc store float %55, ptr %.sroa_idx81, align 4 %57 = fmul float %54, 0x3FD51EB860000000 %.sroa_idx78 = getelementptr inbounds i8, ptr %15, i64 4 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %15, i8 0, i64 16, i1 false) + store i32 0, ptr %15, align 16 store float %57, ptr %.sroa_idx78, align 4 %58 = fmul float %49, 0x3FEB333340000000 %59 = fmul float %54, 2.500000e-01 diff --git a/bench/opencv/optimized/face_alignment.cpp.ll b/bench/opencv/optimized/face_alignment.cpp.ll index 3f8008c7e94..5ba519c7a85 100644 --- a/bench/opencv/optimized/face_alignment.cpp.ll +++ b/bench/opencv/optimized/face_alignment.cpp.ll @@ -832,8 +832,10 @@ define hidden noundef zeroext i1 @_ZN2cv4face18FacemarkKazemiImpl13convertToUnit %.sroa.0.0.extract.trunc = trunc i64 %1 to i32 %.sroa.9.8.extract.trunc = trunc nuw i64 %.sroa.9.8.extract.shift to i32 %7 = getelementptr inbounds i8, ptr %5, i64 8 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %5, i8 0, i64 16, i1 false) + store i64 0, ptr %5, align 16 store i32 1065353216, ptr %7, align 8 + %.sroa_idx21 = getelementptr inbounds i8, ptr %5, i64 12 + store i32 0, ptr %.sroa_idx21, align 4 %8 = getelementptr inbounds i8, ptr %5, i64 16 store i32 0, ptr %8, align 16 %.sroa_idx18 = getelementptr inbounds i8, ptr %5, i64 20 @@ -1094,6 +1096,7 @@ _ZNSt6vectorIN2cv6Point_IfEESaIS2_EE5clearEv.exit: ; preds = %53, %58 %65 = getelementptr inbounds i8, ptr %24, i64 8 %66 = getelementptr inbounds i8, ptr %24, i64 16 %67 = getelementptr inbounds i8, ptr %9, i64 8 + %.sroa_idx21.i = getelementptr inbounds i8, ptr %9, i64 12 %68 = getelementptr inbounds i8, ptr %9, i64 16 %.sroa_idx18.i = getelementptr inbounds i8, ptr %9, i64 20 %.sroa_idx15.i = getelementptr inbounds i8, ptr %8, i64 4 @@ -1232,8 +1235,9 @@ _ZNSt6vectorIN2cv6Point_IfEESaIS2_EE5clearEv.exit: ; preds = %53, %58 %.sroa.7.8.extract.trunc.i = trunc i64 %.sroa.5.0.copyload150 to i32 %.sroa.0.0.extract.trunc.i = trunc i64 %.sroa.0146.0.copyload to i32 %.sroa.9.8.extract.trunc.i = trunc nuw i64 %.sroa.9.8.extract.shift.i to i32 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %9, i8 0, i64 16, i1 false) + store i64 0, ptr %9, align 16 store i32 1065353216, ptr %67, align 8 + store i32 0, ptr %.sroa_idx21.i, align 4 store i32 0, ptr %68, align 16 store i32 1065353216, ptr %.sroa_idx18.i, align 4 %126 = sitofp i32 %.sroa.0.0.extract.trunc.i to float diff --git a/bench/opencv/optimized/tracking_online_mil.cpp.ll b/bench/opencv/optimized/tracking_online_mil.cpp.ll index c1cedc5913d..37eda30af9c 100644 --- a/bench/opencv/optimized/tracking_online_mil.cpp.ll +++ b/bench/opencv/optimized/tracking_online_mil.cpp.ll @@ -247,36 +247,34 @@ _ZNSt6vectorIPN2cv6detail8tracking14ClfOnlineStumpESaIS4_EE6resizeEm.exit: ; pre %29 = getelementptr inbounds i8, ptr %27, i64 8 %30 = getelementptr inbounds i8, ptr %27, i64 12 %31 = getelementptr inbounds i8, ptr %27, i64 40 - %32 = getelementptr inbounds i8, ptr %27, i64 44 - %33 = getelementptr inbounds i8, ptr %27, i64 48 - %34 = getelementptr inbounds i8, ptr %27, i64 16 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(24) %34, i8 0, i64 24, i1 false) - %35 = trunc nuw nsw i64 %indvars.iv to i32 - store i32 %35, ptr %33, align 4 + %32 = getelementptr inbounds i8, ptr %27, i64 48 + %33 = getelementptr inbounds i8, ptr %27, i64 16 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(29) %33, i8 0, i64 29, i1 false) + %34 = trunc nuw nsw i64 %indvars.iv to i32 + store i32 %34, ptr %32, align 4 store float 0.000000e+00, ptr %27, align 4 store float 0.000000e+00, ptr %28, align 4 store float 1.000000e+00, ptr %29, align 4 store float 1.000000e+00, ptr %30, align 4 store float 0x3FEB333340000000, ptr %31, align 4 - store i8 0, ptr %32, align 4 - %36 = load ptr, ptr %4, align 8 - %37 = getelementptr inbounds ptr, ptr %36, i64 %indvars.iv - store ptr %27, ptr %37, align 8 - %38 = load float, ptr %25, align 4 - %39 = load ptr, ptr %4, align 8 - %40 = getelementptr inbounds ptr, ptr %39, i64 %indvars.iv - %41 = load ptr, ptr %40, align 8 - %42 = getelementptr inbounds i8, ptr %41, i64 40 - store float %38, ptr %42, align 4 + %35 = load ptr, ptr %4, align 8 + %36 = getelementptr inbounds ptr, ptr %35, i64 %indvars.iv + store ptr %27, ptr %36, align 8 + %37 = load float, ptr %25, align 4 + %38 = load ptr, ptr %4, align 8 + %39 = getelementptr inbounds ptr, ptr %38, i64 %indvars.iv + %40 = load ptr, ptr %39, align 8 + %41 = getelementptr inbounds i8, ptr %40, i64 40 + store float %37, ptr %41, align 4 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %43 = load i32, ptr %5, align 8 - %44 = sext i32 %43 to i64 - %45 = icmp slt i64 %indvars.iv.next, %44 - br i1 %45, label %26, label %._crit_edge, !llvm.loop !6 + %42 = load i32, ptr %5, align 8 + %43 = sext i32 %42 to i64 + %44 = icmp slt i64 %indvars.iv.next, %43 + br i1 %44, label %26, label %._crit_edge, !llvm.loop !6 ._crit_edge: ; preds = %26, %_ZNSt6vectorIPN2cv6detail8tracking14ClfOnlineStumpESaIS4_EE6resizeEm.exit - %46 = getelementptr inbounds i8, ptr %0, i64 64 - store i32 0, ptr %46, align 8 + %45 = getelementptr inbounds i8, ptr %0, i64 64 + store i32 0, ptr %45, align 8 ret void } @@ -2596,17 +2594,15 @@ define hidden void @_ZN2cv6detail8tracking14ClfOnlineStumpC2Ev(ptr nocapture nou %3 = getelementptr inbounds i8, ptr %0, i64 8 %4 = getelementptr inbounds i8, ptr %0, i64 12 %5 = getelementptr inbounds i8, ptr %0, i64 40 - %6 = getelementptr inbounds i8, ptr %0, i64 44 - %7 = getelementptr inbounds i8, ptr %0, i64 48 - %8 = getelementptr inbounds i8, ptr %0, i64 16 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(24) %8, i8 0, i64 24, i1 false) - store i32 -1, ptr %7, align 4 + %6 = getelementptr inbounds i8, ptr %0, i64 48 + %7 = getelementptr inbounds i8, ptr %0, i64 16 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(29) %7, i8 0, i64 29, i1 false) + store i32 -1, ptr %6, align 4 store float 0.000000e+00, ptr %0, align 4 store float 0.000000e+00, ptr %2, align 4 store float 1.000000e+00, ptr %3, align 4 store float 1.000000e+00, ptr %4, align 4 store float 0x3FEB333340000000, ptr %5, align 4 - store i8 0, ptr %6, align 4 ret void } @@ -2632,17 +2628,15 @@ define hidden void @_ZN2cv6detail8tracking14ClfOnlineStumpC2Ei(ptr nocapture nou %4 = getelementptr inbounds i8, ptr %0, i64 8 %5 = getelementptr inbounds i8, ptr %0, i64 12 %6 = getelementptr inbounds i8, ptr %0, i64 40 - %7 = getelementptr inbounds i8, ptr %0, i64 44 - %8 = getelementptr inbounds i8, ptr %0, i64 48 - %9 = getelementptr inbounds i8, ptr %0, i64 16 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(24) %9, i8 0, i64 24, i1 false) - store i32 %1, ptr %8, align 4 + %7 = getelementptr inbounds i8, ptr %0, i64 48 + %8 = getelementptr inbounds i8, ptr %0, i64 16 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(29) %8, i8 0, i64 29, i1 false) + store i32 %1, ptr %7, align 4 store float 0.000000e+00, ptr %0, align 4 store float 0.000000e+00, ptr %3, align 4 store float 1.000000e+00, ptr %4, align 4 store float 1.000000e+00, ptr %5, align 4 store float 0x3FEB333340000000, ptr %6, align 4 - store i8 0, ptr %7, align 4 ret void } diff --git a/bench/openexr/optimized/internal_structs.c.ll b/bench/openexr/optimized/internal_structs.c.ll index f7ae23e1b71..07cc1e19f4a 100644 --- a/bench/openexr/optimized/internal_structs.c.ll +++ b/bench/openexr/optimized/internal_structs.c.ll @@ -407,22 +407,21 @@ if.end: ; preds = %lor.lhs.false, %ent br i1 %tobool2.not, label %if.else161, label %if.then3 if.then3: ; preds = %if.end - %3 = getelementptr inbounds i8, ptr %call, i64 1 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(552) %3, i8 0, i64 551, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(552) %call, i8 0, i64 552, i1 false) %conv = trunc i32 %mode to i8 store i8 %conv, ptr %call, align 8 %user_data = getelementptr inbounds i8, ptr %initializers, i64 32 - %4 = load ptr, ptr %user_data, align 8 + %3 = load ptr, ptr %user_data, align 8 %real_user_data = getelementptr inbounds i8, ptr %call, i64 128 - store ptr %4, ptr %real_user_data, align 8 - %5 = load ptr, ptr %read_fn, align 8 - %tobool6.not = icmp eq ptr %5, null + store ptr %3, ptr %real_user_data, align 8 + %4 = load ptr, ptr %read_fn, align 8 + %tobool6.not = icmp eq ptr %4, null br i1 %tobool6.not, label %lor.lhs.false7, label %if.end18.sink.split lor.lhs.false7: ; preds = %if.then3 %write_fn8 = getelementptr inbounds i8, ptr %initializers, i64 56 - %6 = load ptr, ptr %write_fn8, align 8 - %tobool9.not = icmp eq ptr %6, null + %5 = load ptr, ptr %write_fn8, align 8 + %tobool9.not = icmp eq ptr %5, null br i1 %tobool9.not, label %if.else13, label %if.end18.sink.split if.else13: ; preds = %lor.lhs.false7 @@ -434,7 +433,7 @@ if.then15: ; preds = %if.else13 br label %if.end18.sink.split if.end18.sink.split: ; preds = %if.then3, %lor.lhs.false7, %if.then15 - %add.ptr.sink = phi ptr [ %add.ptr, %if.then15 ], [ %4, %lor.lhs.false7 ], [ %4, %if.then3 ] + %add.ptr.sink = phi ptr [ %add.ptr, %if.then15 ], [ %3, %lor.lhs.false7 ], [ %3, %if.then3 ] %user_data16 = getelementptr inbounds i8, ptr %call, i64 136 store ptr %add.ptr.sink, ptr %user_data16, align 8 br label %if.end18 @@ -447,109 +446,109 @@ if.end18: ; preds = %if.end18.sink.split %print_error = getelementptr inbounds i8, ptr %call, i64 72 store ptr @dispatch_print_error, ptr %print_error, align 8 %error_handler_fn = getelementptr inbounds i8, ptr %initializers, i64 8 - %7 = load ptr, ptr %error_handler_fn, align 8 + %6 = load ptr, ptr %error_handler_fn, align 8 %error_handler_fn19 = getelementptr inbounds i8, ptr %call, i64 80 - store ptr %7, ptr %error_handler_fn19, align 8 - %8 = load ptr, ptr %alloc_fn, align 8 + store ptr %6, ptr %error_handler_fn19, align 8 + %7 = load ptr, ptr %alloc_fn, align 8 %alloc_fn21 = getelementptr inbounds i8, ptr %call, i64 88 - store ptr %8, ptr %alloc_fn21, align 8 + store ptr %7, ptr %alloc_fn21, align 8 %free_fn = getelementptr inbounds i8, ptr %initializers, i64 24 - %9 = load ptr, ptr %free_fn, align 8 + %8 = load ptr, ptr %free_fn, align 8 %free_fn22 = getelementptr inbounds i8, ptr %call, i64 96 - store ptr %9, ptr %free_fn22, align 8 + store ptr %8, ptr %free_fn22, align 8 call void @exr_get_default_maximum_image_size(ptr noundef nonnull %gmaxw, ptr noundef nonnull %gmaxh) #11 %max_image_width = getelementptr inbounds i8, ptr %initializers, i64 72 - %10 = load i32, ptr %max_image_width, align 8 - %cmp23 = icmp slt i32 %10, 1 - %11 = load i32, ptr %gmaxw, align 4 - %12 = getelementptr inbounds i8, ptr %call, i64 104 + %9 = load i32, ptr %max_image_width, align 8 + %cmp23 = icmp slt i32 %9, 1 + %10 = load i32, ptr %gmaxw, align 4 + %11 = getelementptr inbounds i8, ptr %call, i64 104 br i1 %cmp23, label %if.end44, label %if.end29 if.end29: ; preds = %if.end18 - %cmp33 = icmp sgt i32 %11, 0 - %13 = call i32 @llvm.smin.i32(i32 %10, i32 %11) - %spec.select144 = select i1 %cmp33, i32 %13, i32 %10 + %cmp33 = icmp sgt i32 %10, 0 + %12 = call i32 @llvm.smin.i32(i32 %9, i32 %10) + %spec.select144 = select i1 %cmp33, i32 %12, i32 %9 br label %if.end44 if.end44: ; preds = %if.end29, %if.end18 - %storemerge = phi i32 [ %spec.select144, %if.end29 ], [ %11, %if.end18 ] - store i32 %storemerge, ptr %12, align 8 + %storemerge = phi i32 [ %spec.select144, %if.end29 ], [ %10, %if.end18 ] + store i32 %storemerge, ptr %11, align 8 %max_image_height = getelementptr inbounds i8, ptr %initializers, i64 76 - %14 = load i32, ptr %max_image_height, align 4 - %cmp45 = icmp slt i32 %14, 1 - %15 = load i32, ptr %gmaxh, align 4 - %16 = getelementptr inbounds i8, ptr %call, i64 108 + %13 = load i32, ptr %max_image_height, align 4 + %cmp45 = icmp slt i32 %13, 1 + %14 = load i32, ptr %gmaxh, align 4 + %15 = getelementptr inbounds i8, ptr %call, i64 108 br i1 %cmp45, label %if.end67, label %if.end51 if.end51: ; preds = %if.end44 - %cmp56 = icmp sgt i32 %15, 0 - %17 = call i32 @llvm.smin.i32(i32 %14, i32 %15) - %spec.select145 = select i1 %cmp56, i32 %17, i32 %14 + %cmp56 = icmp sgt i32 %14, 0 + %16 = call i32 @llvm.smin.i32(i32 %13, i32 %14) + %spec.select145 = select i1 %cmp56, i32 %16, i32 %13 br label %if.end67 if.end67: ; preds = %if.end51, %if.end44 - %storemerge121 = phi i32 [ %15, %if.end44 ], [ %spec.select145, %if.end51 ] - store i32 %storemerge121, ptr %16, align 4 + %storemerge121 = phi i32 [ %14, %if.end44 ], [ %spec.select145, %if.end51 ] + store i32 %storemerge121, ptr %15, align 4 call void @exr_get_default_maximum_tile_size(ptr noundef nonnull %gmaxw, ptr noundef nonnull %gmaxh) #11 %max_tile_width = getelementptr inbounds i8, ptr %initializers, i64 80 - %18 = load i32, ptr %max_tile_width, align 8 - %cmp68 = icmp slt i32 %18, 1 - %19 = load i32, ptr %gmaxw, align 4 - %20 = getelementptr inbounds i8, ptr %call, i64 112 + %17 = load i32, ptr %max_tile_width, align 8 + %cmp68 = icmp slt i32 %17, 1 + %18 = load i32, ptr %gmaxw, align 4 + %19 = getelementptr inbounds i8, ptr %call, i64 112 br i1 %cmp68, label %if.end90, label %if.end74 if.end74: ; preds = %if.end67 - %cmp79 = icmp sgt i32 %19, 0 - %21 = call i32 @llvm.smin.i32(i32 %18, i32 %19) - %spec.select146 = select i1 %cmp79, i32 %21, i32 %18 + %cmp79 = icmp sgt i32 %18, 0 + %20 = call i32 @llvm.smin.i32(i32 %17, i32 %18) + %spec.select146 = select i1 %cmp79, i32 %20, i32 %17 br label %if.end90 if.end90: ; preds = %if.end74, %if.end67 - %storemerge122 = phi i32 [ %19, %if.end67 ], [ %spec.select146, %if.end74 ] - store i32 %storemerge122, ptr %20, align 8 + %storemerge122 = phi i32 [ %18, %if.end67 ], [ %spec.select146, %if.end74 ] + store i32 %storemerge122, ptr %19, align 8 %max_tile_height = getelementptr inbounds i8, ptr %initializers, i64 84 - %22 = load i32, ptr %max_tile_height, align 4 - %cmp91 = icmp slt i32 %22, 1 - %23 = load i32, ptr %gmaxh, align 4 - %24 = getelementptr inbounds i8, ptr %call, i64 116 + %21 = load i32, ptr %max_tile_height, align 4 + %cmp91 = icmp slt i32 %21, 1 + %22 = load i32, ptr %gmaxh, align 4 + %23 = getelementptr inbounds i8, ptr %call, i64 116 br i1 %cmp91, label %if.end113, label %if.end97 if.end97: ; preds = %if.end90 - %cmp102 = icmp sgt i32 %23, 0 - %25 = call i32 @llvm.smin.i32(i32 %22, i32 %23) - %spec.select147 = select i1 %cmp102, i32 %25, i32 %22 + %cmp102 = icmp sgt i32 %22, 0 + %24 = call i32 @llvm.smin.i32(i32 %21, i32 %22) + %spec.select147 = select i1 %cmp102, i32 %24, i32 %21 br label %if.end113 if.end113: ; preds = %if.end97, %if.end90 - %storemerge123 = phi i32 [ %23, %if.end90 ], [ %spec.select147, %if.end97 ] - store i32 %storemerge123, ptr %24, align 4 + %storemerge123 = phi i32 [ %22, %if.end90 ], [ %spec.select147, %if.end97 ] + store i32 %storemerge123, ptr %23, align 4 %default_zip_level = getelementptr inbounds i8, ptr %call, i64 120 call void @exr_get_default_zip_compression_level(ptr noundef nonnull %default_zip_level) #11 %default_dwa_quality = getelementptr inbounds i8, ptr %call, i64 124 call void @exr_get_default_dwa_compression_quality(ptr noundef nonnull %default_dwa_quality) #11 %zip_level = getelementptr inbounds i8, ptr %initializers, i64 88 - %26 = load i32, ptr %zip_level, align 8 - %cmp114 = icmp sgt i32 %26, -1 + %25 = load i32, ptr %zip_level, align 8 + %cmp114 = icmp sgt i32 %25, -1 br i1 %cmp114, label %if.then116, label %if.end119 if.then116: ; preds = %if.end113 - store i32 %26, ptr %default_zip_level, align 8 + store i32 %25, ptr %default_zip_level, align 8 br label %if.end119 if.end119: ; preds = %if.then116, %if.end113 %dwa_quality = getelementptr inbounds i8, ptr %initializers, i64 92 - %27 = load float, ptr %dwa_quality, align 4 - %cmp120 = fcmp ult float %27, 0.000000e+00 + %26 = load float, ptr %dwa_quality, align 4 + %cmp120 = fcmp ult float %26, 0.000000e+00 br i1 %cmp120, label %if.end125, label %if.then122 if.then122: ; preds = %if.end119 - store float %27, ptr %default_dwa_quality, align 4 + store float %26, ptr %default_dwa_quality, align 4 br label %if.end125 if.end125: ; preds = %if.then122, %if.end119 %flags = getelementptr inbounds i8, ptr %initializers, i64 96 - %28 = load i32, ptr %flags, align 8 - %and = and i32 %28, 1 + %27 = load i32, ptr %flags, align 8 + %and = and i32 %27, 1 %tobool126.not = icmp eq i32 %and, 0 br i1 %tobool126.not, label %if.end128, label %if.then127 @@ -560,8 +559,8 @@ if.then127: ; preds = %if.end125 br label %if.end128 if.end128: ; preds = %if.then127, %if.end125 - %29 = phi i32 [ %.pre119, %if.then127 ], [ %28, %if.end125 ] - %and130 = and i32 %29, 2 + %28 = phi i32 [ %.pre119, %if.then127 ], [ %27, %if.end125 ] + %and130 = and i32 %28, 2 %tobool131.not = icmp eq i32 %and130, 0 br i1 %tobool131.not, label %if.end133, label %if.then132 @@ -572,14 +571,14 @@ if.then132: ; preds = %if.end128 br label %if.end133 if.end133: ; preds = %if.then132, %if.end128 - %30 = phi i32 [ %.pre120, %if.then132 ], [ %29, %if.end128 ] - %31 = trunc i32 %30 to i8 - %conv136 = and i8 %31, 4 + %29 = phi i32 [ %.pre120, %if.then132 ], [ %28, %if.end128 ] + %30 = trunc i32 %29 to i8 + %conv136 = and i8 %30, 4 %disable_chunk_reconstruct = getelementptr inbounds i8, ptr %call, i64 544 store i8 %conv136, ptr %disable_chunk_reconstruct, align 8 - %32 = load i32, ptr %flags, align 8 - %33 = trunc i32 %32 to i8 - %conv139 = and i8 %33, 8 + %31 = load i32, ptr %flags, align 8 + %32 = trunc i32 %31 to i8 + %conv139 = and i8 %32, 8 %legacy_header = getelementptr inbounds i8, ptr %call, i64 545 store i8 %conv139, ptr %legacy_header, align 1 %file_size = getelementptr inbounds i8, ptr %call, i64 152 @@ -587,24 +586,24 @@ if.end133: ; preds = %if.then132, %if.end %max_name_length = getelementptr inbounds i8, ptr %call, i64 2 store i8 31, ptr %max_name_length, align 2 %destroy_fn = getelementptr inbounds i8, ptr %initializers, i64 64 - %34 = load ptr, ptr %destroy_fn, align 8 + %33 = load ptr, ptr %destroy_fn, align 8 %destroy_fn140 = getelementptr inbounds i8, ptr %call, i64 144 - store ptr %34, ptr %destroy_fn140, align 8 - %35 = load ptr, ptr %read_fn, align 8 + store ptr %33, ptr %destroy_fn140, align 8 + %34 = load ptr, ptr %read_fn, align 8 %read_fn142 = getelementptr inbounds i8, ptr %call, i64 160 - store ptr %35, ptr %read_fn142, align 8 + store ptr %34, ptr %read_fn142, align 8 %write_fn143 = getelementptr inbounds i8, ptr %initializers, i64 56 - %36 = load ptr, ptr %write_fn143, align 8 + %35 = load ptr, ptr %write_fn143, align 8 %write_fn144 = getelementptr inbounds i8, ptr %call, i64 168 - store ptr %36, ptr %write_fn144, align 8 + store ptr %35, ptr %write_fn144, align 8 %mutex = getelementptr inbounds i8, ptr %call, i64 504 %call145 = call i32 @pthread_mutex_init(ptr noundef nonnull %mutex, ptr noundef null) #11 %cmp146.not = icmp eq i32 %call145, 0 br i1 %cmp146.not, label %if.end150, label %if.then148 if.then148: ; preds = %if.end133 - %37 = load ptr, ptr %free_fn, align 8 - call void %37(ptr noundef nonnull %call) #11 + %36 = load ptr, ptr %free_fn, align 8 + call void %36(ptr noundef nonnull %call) #11 store ptr null, ptr %out, align 8 br label %return @@ -619,16 +618,16 @@ if.then153: ; preds = %if.end150 br i1 %cmp155.not, label %return, label %if.then157 if.then157: ; preds = %if.then153 - %38 = load ptr, ptr %free_fn, align 8 - call void %38(ptr noundef nonnull %call) #11 + %37 = load ptr, ptr %free_fn, align 8 + call void %37(ptr noundef nonnull %call) #11 store ptr null, ptr %out, align 8 br label %return if.else161: ; preds = %if.end %error_handler_fn162 = getelementptr inbounds i8, ptr %initializers, i64 8 - %39 = load ptr, ptr %error_handler_fn162, align 8 + %38 = load ptr, ptr %error_handler_fn162, align 8 %call163 = tail call ptr @exr_get_default_error_message(i32 noundef 1) #11 - tail call void %39(ptr noundef null, i32 noundef 1, ptr noundef %call163) #11 + tail call void %38(ptr noundef null, i32 noundef 1, ptr noundef %call163) #11 br label %return return: ; preds = %if.else161, %if.then153, %if.then157, %if.end150, %if.then148 diff --git a/bench/openjdk/optimized/foreignGlobals.ll b/bench/openjdk/optimized/foreignGlobals.ll index 6c53793eef5..5c362a055b2 100644 --- a/bench/openjdk/optimized/foreignGlobals.ll +++ b/bench/openjdk/optimized/foreignGlobals.ll @@ -1135,46 +1135,44 @@ define hidden void @_ZN15ArgumentShuffleC2ERK13GrowableArrayI9VMStorageES4_S1_(p .lr.ph.i.i.i: ; preds = %.lr.ph.i.i.i, %4 %indvars.iv.i.i.i = phi i64 [ 0, %4 ], [ %indvars.iv.next.i.i.i, %.lr.ph.i.i.i ] %9 = getelementptr inbounds %"struct.ArgumentShuffle::Move", ptr %6, i64 %indvars.iv.i.i.i - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %9, i8 0, i64 12, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %9, i8 0, i64 16, i1 false) store i8 -1, ptr %9, align 4 %10 = getelementptr inbounds i8, ptr %9, i64 8 store i8 -1, ptr %10, align 4 - %11 = getelementptr inbounds i8, ptr %9, i64 12 - store i32 0, ptr %11, align 4 %indvars.iv.next.i.i.i = add nuw nsw i64 %indvars.iv.i.i.i, 1 %exitcond.not.i.i.i = icmp eq i64 %indvars.iv.next.i.i.i, 2 br i1 %exitcond.not.i.i.i, label %_ZN13GrowableArrayIN15ArgumentShuffle4MoveEEC2Ev.exit, label %.lr.ph.i.i.i, !llvm.loop !17 _ZN13GrowableArrayIN15ArgumentShuffle4MoveEEC2Ev.exit: ; preds = %.lr.ph.i.i.i - %12 = getelementptr inbounds i8, ptr %0, i64 16 - store i64 0, ptr %12, align 8 + %11 = getelementptr inbounds i8, ptr %0, i64 16 + store i64 0, ptr %11, align 8 call void @_ZN15ArgumentShuffle16ComputeMoveOrder18compute_move_orderERK13GrowableArrayI9VMStorageES5_S2_(ptr dead_on_unwind nonnull writable sret(%class.GrowableArray.0) align 8 %5, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(24) %2, i64 %3) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %5, i64 24, i1 false) - %13 = getelementptr inbounds i8, ptr %5, i64 16 - %14 = load i64, ptr %13, align 8 - %15 = and i64 %14, 1 - %.not.i = icmp eq i64 %15, 0 - br i1 %.not.i, label %_ZN13GrowableArrayIN15ArgumentShuffle4MoveEED2Ev.exit, label %16 + %12 = getelementptr inbounds i8, ptr %5, i64 16 + %13 = load i64, ptr %12, align 8 + %14 = and i64 %13, 1 + %.not.i = icmp eq i64 %14, 0 + br i1 %.not.i, label %_ZN13GrowableArrayIN15ArgumentShuffle4MoveEED2Ev.exit, label %15 -16: ; preds = %_ZN13GrowableArrayIN15ArgumentShuffle4MoveEEC2Ev.exit +15: ; preds = %_ZN13GrowableArrayIN15ArgumentShuffle4MoveEEC2Ev.exit store i32 0, ptr %5, align 8 - %17 = getelementptr inbounds i8, ptr %5, i64 4 - %18 = load i32, ptr %17, align 4 - %19 = icmp eq i32 %18, 0 - br i1 %19, label %_ZN13GrowableArrayIN15ArgumentShuffle4MoveEED2Ev.exit, label %.loopexit.i + %16 = getelementptr inbounds i8, ptr %5, i64 4 + %17 = load i32, ptr %16, align 4 + %18 = icmp eq i32 %17, 0 + br i1 %18, label %_ZN13GrowableArrayIN15ArgumentShuffle4MoveEED2Ev.exit, label %.loopexit.i -.loopexit.i: ; preds = %16 - %20 = getelementptr inbounds i8, ptr %5, i64 8 - %21 = load ptr, ptr %20, align 8 - store i32 0, ptr %17, align 4 - %.not.i4 = icmp eq ptr %21, null +.loopexit.i: ; preds = %15 + %19 = getelementptr inbounds i8, ptr %5, i64 8 + %20 = load ptr, ptr %19, align 8 + store i32 0, ptr %16, align 4 + %.not.i4 = icmp eq ptr %20, null br i1 %.not.i4, label %_ZN13GrowableArrayIN15ArgumentShuffle4MoveEED2Ev.exit, label %.loopexit.thread.i .loopexit.thread.i: ; preds = %.loopexit.i - call void @_ZN27GrowableArrayCHeapAllocator10deallocateEPv(ptr noundef nonnull %21) #12 + call void @_ZN27GrowableArrayCHeapAllocator10deallocateEPv(ptr noundef nonnull %20) #12 br label %_ZN13GrowableArrayIN15ArgumentShuffle4MoveEED2Ev.exit -_ZN13GrowableArrayIN15ArgumentShuffle4MoveEED2Ev.exit: ; preds = %.loopexit.i, %.loopexit.thread.i, %16, %_ZN13GrowableArrayIN15ArgumentShuffle4MoveEEC2Ev.exit +_ZN13GrowableArrayIN15ArgumentShuffle4MoveEED2Ev.exit: ; preds = %.loopexit.i, %.loopexit.thread.i, %15, %_ZN13GrowableArrayIN15ArgumentShuffle4MoveEEC2Ev.exit ret void } @@ -1224,69 +1222,67 @@ _ZN13GrowableArrayIPN15ArgumentShuffle16ComputeMoveOrder13MoveOperationEEC2Ei.ex .lr.ph.i.i.i: ; preds = %.lr.ph.i.i.i, %.lr.ph.preheader.i.i5.i %indvars.iv.i.i.i = phi i64 [ 0, %.lr.ph.preheader.i.i5.i ], [ %indvars.iv.next.i.i.i, %.lr.ph.i.i.i ] %23 = getelementptr inbounds %"struct.ArgumentShuffle::Move", ptr %19, i64 %indvars.iv.i.i.i - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %23, i8 0, i64 12, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %23, i8 0, i64 16, i1 false) store i8 -1, ptr %23, align 4 %24 = getelementptr inbounds i8, ptr %23, i64 8 store i8 -1, ptr %24, align 4 - %25 = getelementptr inbounds i8, ptr %23, i64 12 - store i32 0, ptr %25, align 4 %indvars.iv.next.i.i.i = add nuw nsw i64 %indvars.iv.i.i.i, 1 %exitcond.not.i.i.i = icmp eq i64 %indvars.iv.next.i.i.i, %wide.trip.count.i.i.i br i1 %exitcond.not.i.i.i, label %_ZN15ArgumentShuffle16ComputeMoveOrderC2ERK13GrowableArrayI9VMStorageES5_S2_.exit, label %.lr.ph.i.i.i, !llvm.loop !17 _ZN15ArgumentShuffle16ComputeMoveOrderC2ERK13GrowableArrayI9VMStorageES5_S2_.exit: ; preds = %.lr.ph.i.i.i, %_ZN13GrowableArrayIPN15ArgumentShuffle16ComputeMoveOrder13MoveOperationEEC2Ei.exit.i - %26 = getelementptr inbounds i8, ptr %5, i64 64 - store i64 0, ptr %26, align 8 + %25 = getelementptr inbounds i8, ptr %5, i64 64 + store i64 0, ptr %25, align 8 call void @_ZN15ArgumentShuffle16ComputeMoveOrder7computeEv(ptr noundef nonnull align 8 dereferenceable(72) %5) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %17, i64 24, i1 false) - %27 = load i64, ptr %26, align 8 - %28 = and i64 %27, 1 - %.not.i.i = icmp eq i64 %28, 0 - br i1 %.not.i.i, label %_ZN13GrowableArrayIN15ArgumentShuffle4MoveEED2Ev.exit.i, label %29 + %26 = load i64, ptr %25, align 8 + %27 = and i64 %26, 1 + %.not.i.i = icmp eq i64 %27, 0 + br i1 %.not.i.i, label %_ZN13GrowableArrayIN15ArgumentShuffle4MoveEED2Ev.exit.i, label %28 -29: ; preds = %_ZN15ArgumentShuffle16ComputeMoveOrderC2ERK13GrowableArrayI9VMStorageES5_S2_.exit +28: ; preds = %_ZN15ArgumentShuffle16ComputeMoveOrderC2ERK13GrowableArrayI9VMStorageES5_S2_.exit store i32 0, ptr %17, align 8 - %30 = load i32, ptr %20, align 4 - %31 = icmp eq i32 %30, 0 - br i1 %31, label %_ZN13GrowableArrayIN15ArgumentShuffle4MoveEED2Ev.exit.i, label %.loopexit.i4 + %29 = load i32, ptr %20, align 4 + %30 = icmp eq i32 %29, 0 + br i1 %30, label %_ZN13GrowableArrayIN15ArgumentShuffle4MoveEED2Ev.exit.i, label %.loopexit.i4 -.loopexit.i4: ; preds = %29 - %32 = load ptr, ptr %21, align 8 +.loopexit.i4: ; preds = %28 + %31 = load ptr, ptr %21, align 8 store i32 0, ptr %20, align 4 - %.not.i5 = icmp eq ptr %32, null + %.not.i5 = icmp eq ptr %31, null br i1 %.not.i5, label %_ZN13GrowableArrayIN15ArgumentShuffle4MoveEE10deallocateEPS1_.exit.i, label %.loopexit.thread.i6 .loopexit.thread.i6: ; preds = %.loopexit.i4 - call void @_ZN27GrowableArrayCHeapAllocator10deallocateEPv(ptr noundef nonnull %32) #12 + call void @_ZN27GrowableArrayCHeapAllocator10deallocateEPv(ptr noundef nonnull %31) #12 br label %_ZN13GrowableArrayIN15ArgumentShuffle4MoveEE10deallocateEPS1_.exit.i _ZN13GrowableArrayIN15ArgumentShuffle4MoveEE10deallocateEPS1_.exit.i: ; preds = %.loopexit.thread.i6, %.loopexit.i4 store ptr null, ptr %21, align 8 br label %_ZN13GrowableArrayIN15ArgumentShuffle4MoveEED2Ev.exit.i -_ZN13GrowableArrayIN15ArgumentShuffle4MoveEED2Ev.exit.i: ; preds = %_ZN13GrowableArrayIN15ArgumentShuffle4MoveEE10deallocateEPS1_.exit.i, %29, %_ZN15ArgumentShuffle16ComputeMoveOrderC2ERK13GrowableArrayI9VMStorageES5_S2_.exit - %33 = load i64, ptr %16, align 8 - %34 = and i64 %33, 1 - %.not.i1.i = icmp eq i64 %34, 0 - br i1 %.not.i1.i, label %_ZN15ArgumentShuffle16ComputeMoveOrderD2Ev.exit, label %35 +_ZN13GrowableArrayIN15ArgumentShuffle4MoveEED2Ev.exit.i: ; preds = %_ZN13GrowableArrayIN15ArgumentShuffle4MoveEE10deallocateEPS1_.exit.i, %28, %_ZN15ArgumentShuffle16ComputeMoveOrderC2ERK13GrowableArrayI9VMStorageES5_S2_.exit + %32 = load i64, ptr %16, align 8 + %33 = and i64 %32, 1 + %.not.i1.i = icmp eq i64 %33, 0 + br i1 %.not.i1.i, label %_ZN15ArgumentShuffle16ComputeMoveOrderD2Ev.exit, label %34 -35: ; preds = %_ZN13GrowableArrayIN15ArgumentShuffle4MoveEED2Ev.exit.i +34: ; preds = %_ZN13GrowableArrayIN15ArgumentShuffle4MoveEED2Ev.exit.i store i32 0, ptr %8, align 8 - %36 = load i32, ptr %11, align 4 - %37 = icmp eq i32 %36, 0 - br i1 %37, label %_ZN15ArgumentShuffle16ComputeMoveOrderD2Ev.exit, label %.loopexit.i + %35 = load i32, ptr %11, align 4 + %36 = icmp eq i32 %35, 0 + br i1 %36, label %_ZN15ArgumentShuffle16ComputeMoveOrderD2Ev.exit, label %.loopexit.i -.loopexit.i: ; preds = %35 - %38 = load ptr, ptr %12, align 8 +.loopexit.i: ; preds = %34 + %37 = load ptr, ptr %12, align 8 store i32 0, ptr %11, align 4 - %.not.i = icmp eq ptr %38, null + %.not.i = icmp eq ptr %37, null br i1 %.not.i, label %_ZN15ArgumentShuffle16ComputeMoveOrderD2Ev.exit, label %.loopexit.thread.i .loopexit.thread.i: ; preds = %.loopexit.i - call void @_ZN27GrowableArrayCHeapAllocator10deallocateEPv(ptr noundef nonnull %38) #12 + call void @_ZN27GrowableArrayCHeapAllocator10deallocateEPv(ptr noundef nonnull %37) #12 br label %_ZN15ArgumentShuffle16ComputeMoveOrderD2Ev.exit -_ZN15ArgumentShuffle16ComputeMoveOrderD2Ev.exit: ; preds = %.loopexit.i, %.loopexit.thread.i, %35, %_ZN13GrowableArrayIN15ArgumentShuffle4MoveEED2Ev.exit.i +_ZN15ArgumentShuffle16ComputeMoveOrderD2Ev.exit: ; preds = %.loopexit.i, %.loopexit.thread.i, %34, %_ZN13GrowableArrayIN15ArgumentShuffle4MoveEED2Ev.exit.i ret void } @@ -3366,7 +3362,7 @@ _ZN15ArgumentShuffle16ComputeMoveOrder13MoveOperation4linkER17ResourceHashtableI br label %.lr.ph47 .lr.ph47: ; preds = %.lr.ph47.preheader, %_ZN26GrowableArrayWithAllocatorIN15ArgumentShuffle4MoveE13GrowableArrayIS1_EE4pushERKS1_.exit - %.146 = phi ptr [ %167, %_ZN26GrowableArrayWithAllocatorIN15ArgumentShuffle4MoveE13GrowableArrayIS1_EE4pushERKS1_.exit ], [ %.022, %.lr.ph47.preheader ] + %.146 = phi ptr [ %166, %_ZN26GrowableArrayWithAllocatorIN15ArgumentShuffle4MoveE13GrowableArrayIS1_EE4pushERKS1_.exit ], [ %.022, %.lr.ph47.preheader ] %.sroa.0.0.copyload.i27 = load i64, ptr %.146, align 8 %112 = getelementptr inbounds i8, ptr %.146, i64 8 %.sroa.2.8.copyload.i = load i64, ptr %112, align 8 @@ -3449,61 +3445,59 @@ _ZN13GrowableArrayIN15ArgumentShuffle4MoveEE8allocateEv.exit.i: ; preds = %134, .preheader.i: ; preds = %.lr.ph19.i, %.preheader16.i %149 = load ptr, ptr %56, align 8 %.not.i = icmp eq ptr %149, null - br i1 %.not.i, label %_ZN26GrowableArrayWithAllocatorIN15ArgumentShuffle4MoveE13GrowableArrayIS1_EE9expand_toEi.exit, label %156 + br i1 %.not.i, label %_ZN26GrowableArrayWithAllocatorIN15ArgumentShuffle4MoveE13GrowableArrayIS1_EE9expand_toEi.exit, label %155 .lr.ph19.i: ; preds = %.lr.ph19.i, %.lr.ph19.preheader.i %indvars.iv21.i = phi i64 [ %142, %.lr.ph19.preheader.i ], [ %indvars.iv.next22.i, %.lr.ph19.i ] %150 = getelementptr inbounds %"struct.ArgumentShuffle::Move", ptr %.0.i.i, i64 %indvars.iv21.i - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %150, i8 0, i64 12, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %150, i8 0, i64 16, i1 false) store i8 -1, ptr %150, align 4 %151 = getelementptr inbounds i8, ptr %150, i64 8 store i8 -1, ptr %151, align 4 - %152 = getelementptr inbounds i8, ptr %150, i64 12 - store i32 0, ptr %152, align 4 %indvars.iv.next22.i = add nuw nsw i64 %indvars.iv21.i, 1 - %153 = load i32, ptr %54, align 4 - %154 = trunc nuw i64 %indvars.iv.next22.i to i32 - %155 = icmp sgt i32 %153, %154 - br i1 %155, label %.lr.ph19.i, label %.preheader.i, !llvm.loop !29 - -156: ; preds = %.preheader.i - %157 = load i64, ptr %55, align 8 - %158 = and i64 %157, 1 - %.not.i15.i = icmp eq i64 %158, 0 - br i1 %.not.i15.i, label %_ZN26GrowableArrayWithAllocatorIN15ArgumentShuffle4MoveE13GrowableArrayIS1_EE9expand_toEi.exit, label %159 - -159: ; preds = %156 + %152 = load i32, ptr %54, align 4 + %153 = trunc nuw i64 %indvars.iv.next22.i to i32 + %154 = icmp sgt i32 %152, %153 + br i1 %154, label %.lr.ph19.i, label %.preheader.i, !llvm.loop !29 + +155: ; preds = %.preheader.i + %156 = load i64, ptr %55, align 8 + %157 = and i64 %156, 1 + %.not.i15.i = icmp eq i64 %157, 0 + br i1 %.not.i15.i, label %_ZN26GrowableArrayWithAllocatorIN15ArgumentShuffle4MoveE13GrowableArrayIS1_EE9expand_toEi.exit, label %158 + +158: ; preds = %155 tail call void @_ZN27GrowableArrayCHeapAllocator10deallocateEPv(ptr noundef nonnull %149) #12 br label %_ZN26GrowableArrayWithAllocatorIN15ArgumentShuffle4MoveE13GrowableArrayIS1_EE9expand_toEi.exit -_ZN26GrowableArrayWithAllocatorIN15ArgumentShuffle4MoveE13GrowableArrayIS1_EE9expand_toEi.exit: ; preds = %.preheader.i, %156, %159 +_ZN26GrowableArrayWithAllocatorIN15ArgumentShuffle4MoveE13GrowableArrayIS1_EE9expand_toEi.exit: ; preds = %.preheader.i, %155, %158 store ptr %.0.i.i, ptr %56, align 8 %.pre.i.i = load i32, ptr %53, align 8 br label %_ZN26GrowableArrayWithAllocatorIN15ArgumentShuffle4MoveE13GrowableArrayIS1_EE4pushERKS1_.exit _ZN26GrowableArrayWithAllocatorIN15ArgumentShuffle4MoveE13GrowableArrayIS1_EE4pushERKS1_.exit: ; preds = %.lr.ph47._ZN26GrowableArrayWithAllocatorIN15ArgumentShuffle4MoveE13GrowableArrayIS1_EE4pushERKS1_.exit_crit_edge, %_ZN26GrowableArrayWithAllocatorIN15ArgumentShuffle4MoveE13GrowableArrayIS1_EE9expand_toEi.exit - %160 = phi ptr [ %.0.i.i, %_ZN26GrowableArrayWithAllocatorIN15ArgumentShuffle4MoveE13GrowableArrayIS1_EE9expand_toEi.exit ], [ %.pre61, %.lr.ph47._ZN26GrowableArrayWithAllocatorIN15ArgumentShuffle4MoveE13GrowableArrayIS1_EE4pushERKS1_.exit_crit_edge ] - %161 = phi i32 [ %.pre.i.i, %_ZN26GrowableArrayWithAllocatorIN15ArgumentShuffle4MoveE13GrowableArrayIS1_EE9expand_toEi.exit ], [ %113, %.lr.ph47._ZN26GrowableArrayWithAllocatorIN15ArgumentShuffle4MoveE13GrowableArrayIS1_EE4pushERKS1_.exit_crit_edge ] - %162 = add nsw i32 %161, 1 - store i32 %162, ptr %53, align 8 - %163 = sext i32 %161 to i64 - %164 = getelementptr inbounds %"struct.ArgumentShuffle::Move", ptr %160, i64 %163 - store i64 %.sroa.0.0.copyload.i27, ptr %164, align 4 - %.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %164, i64 8 + %159 = phi ptr [ %.0.i.i, %_ZN26GrowableArrayWithAllocatorIN15ArgumentShuffle4MoveE13GrowableArrayIS1_EE9expand_toEi.exit ], [ %.pre61, %.lr.ph47._ZN26GrowableArrayWithAllocatorIN15ArgumentShuffle4MoveE13GrowableArrayIS1_EE4pushERKS1_.exit_crit_edge ] + %160 = phi i32 [ %.pre.i.i, %_ZN26GrowableArrayWithAllocatorIN15ArgumentShuffle4MoveE13GrowableArrayIS1_EE9expand_toEi.exit ], [ %113, %.lr.ph47._ZN26GrowableArrayWithAllocatorIN15ArgumentShuffle4MoveE13GrowableArrayIS1_EE4pushERKS1_.exit_crit_edge ] + %161 = add nsw i32 %160, 1 + store i32 %161, ptr %53, align 8 + %162 = sext i32 %160 to i64 + %163 = getelementptr inbounds %"struct.ArgumentShuffle::Move", ptr %159, i64 %162 + store i64 %.sroa.0.0.copyload.i27, ptr %163, align 4 + %.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %163, i64 8 store i64 %.sroa.2.8.copyload.i, ptr %.sroa.2.0..sroa_idx, align 4 - %165 = getelementptr inbounds i8, ptr %.146, i64 16 - store i8 1, ptr %165, align 8 - %166 = getelementptr inbounds i8, ptr %.146, i64 24 - %167 = load ptr, ptr %166, align 8 - %.not26 = icmp eq ptr %167, null + %164 = getelementptr inbounds i8, ptr %.146, i64 16 + store i8 1, ptr %164, align 8 + %165 = getelementptr inbounds i8, ptr %.146, i64 24 + %166 = load ptr, ptr %165, align 8 + %.not26 = icmp eq ptr %166, null br i1 %.not26, label %.loopexit, label %.lr.ph47, !llvm.loop !30 .loopexit: ; preds = %_ZN26GrowableArrayWithAllocatorIN15ArgumentShuffle4MoveE13GrowableArrayIS1_EE4pushERKS1_.exit, %93 %indvars.iv.next59 = add nuw nsw i64 %indvars.iv58, 1 - %168 = load i32, ptr %3, align 8 - %169 = sext i32 %168 to i64 - %170 = icmp slt i64 %indvars.iv.next59, %169 - br i1 %170, label %93, label %._crit_edge, !llvm.loop !31 + %167 = load i32, ptr %3, align 8 + %168 = sext i32 %167 to i64 + %169 = icmp slt i64 %indvars.iv.next59, %168 + br i1 %169, label %93, label %._crit_edge, !llvm.loop !31 ._crit_edge: ; preds = %.loopexit, %1, %.preheader32, %.preheader31 ret void @@ -3583,7 +3577,7 @@ _ZN13GrowableArrayIN15ArgumentShuffle4MoveEE8allocateEv.exit: ; preds = %7, %11, .lr.ph19: ; preds = %.lr.ph19.preheader, %.lr.ph19 %indvars.iv21 = phi i64 [ %24, %.lr.ph19.preheader ], [ %indvars.iv.next22, %.lr.ph19 ] %34 = getelementptr inbounds %"struct.ArgumentShuffle::Move", ptr %.0.i, i64 %indvars.iv21 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %34, i8 0, i64 12, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %34, i8 0, i64 16, i1 false) store i8 -1, ptr %34, align 4 %35 = getelementptr inbounds i8, ptr %34, i64 4 store i32 0, ptr %35, align 4 diff --git a/bench/openjdk/optimized/pngset.ll b/bench/openjdk/optimized/pngset.ll index 56ff179ff00..f6fd9b884d9 100644 --- a/bench/openjdk/optimized/pngset.ll +++ b/bench/openjdk/optimized/pngset.ll @@ -1745,98 +1745,99 @@ define hidden void @png_set_unknown_chunks(ptr noalias noundef %0, ptr noalias n %24 = getelementptr inbounds i8, ptr %0, i64 292 br label %25 -25: ; preds = %.lr.ph, %64 - %.056 = phi ptr [ %23, %.lr.ph ], [ %.1, %64 ] - %.04555 = phi i32 [ %3, %.lr.ph ], [ %65, %64 ] - %.04654 = phi ptr [ %2, %.lr.ph ], [ %66, %64 ] - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(5) %.056, ptr noundef nonnull align 8 dereferenceable(5) %.04654, i64 5, i1 false) - %26 = getelementptr inbounds i8, ptr %.056, i64 4 - store i8 0, ptr %26, align 4 - %27 = getelementptr inbounds i8, ptr %.04654, i64 24 - %28 = load i8, ptr %27, align 8 - %29 = and i8 %28, 11 - %30 = zext nneg i8 %29 to i32 - %31 = icmp eq i8 %29, 0 - br i1 %31, label %32, label %.preheader.i.preheader - -.preheader.i.preheader: ; preds = %36, %25 - %.1.i.ph = phi i32 [ %30, %25 ], [ %38, %36 ] +25: ; preds = %.lr.ph, %65 + %.056 = phi ptr [ %23, %.lr.ph ], [ %.1, %65 ] + %.04555 = phi i32 [ %3, %.lr.ph ], [ %66, %65 ] + %.04654 = phi ptr [ %2, %.lr.ph ], [ %67, %65 ] + %26 = load i32, ptr %.04654, align 8 + store i32 %26, ptr %.056, align 8 + %27 = getelementptr inbounds i8, ptr %.056, i64 4 + store i8 0, ptr %27, align 4 + %28 = getelementptr inbounds i8, ptr %.04654, i64 24 + %29 = load i8, ptr %28, align 8 + %30 = and i8 %29, 11 + %31 = zext nneg i8 %30 to i32 + %32 = icmp eq i8 %30, 0 + br i1 %32, label %33, label %.preheader.i.preheader + +.preheader.i.preheader: ; preds = %37, %25 + %.1.i.ph = phi i32 [ %31, %25 ], [ %39, %37 ] br label %.preheader.i -32: ; preds = %25 - %33 = load i32, ptr %24, align 4, !alias.scope !24 - %34 = and i32 %33, 32768 - %35 = icmp eq i32 %34, 0 - br i1 %35, label %36, label %.thread.i +33: ; preds = %25 + %34 = load i32, ptr %24, align 4, !alias.scope !24 + %35 = and i32 %34, 32768 + %36 = icmp eq i32 %35, 0 + br i1 %36, label %37, label %.thread.i -36: ; preds = %32 +37: ; preds = %33 tail call void @png_app_warning(ptr noundef nonnull %0, ptr noundef nonnull @.str.50) #12 - %37 = load i32, ptr %24, align 4, !alias.scope !24 - %38 = and i32 %37, 11 - %39 = icmp eq i32 %38, 0 - br i1 %39, label %.thread.i, label %.preheader.i.preheader + %38 = load i32, ptr %24, align 4, !alias.scope !24 + %39 = and i32 %38, 11 + %40 = icmp eq i32 %39, 0 + br i1 %40, label %.thread.i, label %.preheader.i.preheader -.thread.i: ; preds = %36, %32 +.thread.i: ; preds = %37, %33 tail call void @png_error(ptr noundef nonnull %0, ptr noundef nonnull @.str.51) #14 unreachable .preheader.i: ; preds = %.preheader.i.preheader, %.preheader.i - %.1.i = phi i32 [ %42, %.preheader.i ], [ %.1.i.ph, %.preheader.i.preheader ] - %40 = sub nsw i32 0, %.1.i - %41 = and i32 %.1.i, %40 - %.not.i = icmp eq i32 %.1.i, %41 - %42 = xor i32 %41, %.1.i + %.1.i = phi i32 [ %43, %.preheader.i ], [ %.1.i.ph, %.preheader.i.preheader ] + %41 = sub nsw i32 0, %.1.i + %42 = and i32 %.1.i, %41 + %.not.i = icmp eq i32 %.1.i, %42 + %43 = xor i32 %42, %.1.i br i1 %.not.i, label %check_location.exit, label %.preheader.i, !llvm.loop !27 check_location.exit: ; preds = %.preheader.i - %43 = trunc nuw nsw i32 %.1.i to i8 - %44 = getelementptr inbounds i8, ptr %.056, i64 24 - store i8 %43, ptr %44, align 8 - %45 = getelementptr inbounds i8, ptr %.04654, i64 16 - %46 = load i64, ptr %45, align 8 - %47 = icmp eq i64 %46, 0 - br i1 %47, label %48, label %50 - -48: ; preds = %check_location.exit - %49 = getelementptr inbounds i8, ptr %.056, i64 8 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %49, i8 0, i64 16, i1 false) - br label %60 + %44 = trunc nuw nsw i32 %.1.i to i8 + %45 = getelementptr inbounds i8, ptr %.056, i64 24 + store i8 %44, ptr %45, align 8 + %46 = getelementptr inbounds i8, ptr %.04654, i64 16 + %47 = load i64, ptr %46, align 8 + %48 = icmp eq i64 %47, 0 + br i1 %48, label %49, label %51 + +49: ; preds = %check_location.exit + %50 = getelementptr inbounds i8, ptr %.056, i64 8 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %50, i8 0, i64 16, i1 false) + br label %61 -50: ; preds = %check_location.exit - %51 = tail call noalias ptr @png_malloc_base(ptr noundef nonnull %0, i64 noundef %46) #12 - %52 = getelementptr inbounds i8, ptr %.056, i64 8 - store ptr %51, ptr %52, align 8 - %53 = icmp eq ptr %51, null - br i1 %53, label %54, label %55 +51: ; preds = %check_location.exit + %52 = tail call noalias ptr @png_malloc_base(ptr noundef nonnull %0, i64 noundef %47) #12 + %53 = getelementptr inbounds i8, ptr %.056, i64 8 + store ptr %52, ptr %53, align 8 + %54 = icmp eq ptr %52, null + br i1 %54, label %55, label %56 -54: ; preds = %50 +55: ; preds = %51 tail call void @png_chunk_report(ptr noundef nonnull %0, ptr noundef nonnull @.str.42, i32 noundef 1) #12 - br label %64 - -55: ; preds = %50 - %56 = getelementptr inbounds i8, ptr %.04654, i64 8 - %57 = load ptr, ptr %56, align 8 - %58 = load i64, ptr %45, align 8 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %51, ptr align 1 %57, i64 %58, i1 false) - %59 = getelementptr inbounds i8, ptr %.056, i64 16 - store i64 %58, ptr %59, align 8 - br label %60 + br label %65 + +56: ; preds = %51 + %57 = getelementptr inbounds i8, ptr %.04654, i64 8 + %58 = load ptr, ptr %57, align 8 + %59 = load i64, ptr %46, align 8 + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %52, ptr align 1 %58, i64 %59, i1 false) + %60 = getelementptr inbounds i8, ptr %.056, i64 16 + store i64 %59, ptr %60, align 8 + br label %61 -60: ; preds = %55, %48 - %61 = getelementptr inbounds i8, ptr %.056, i64 32 - %62 = load i32, ptr %12, align 8 - %63 = add nsw i32 %62, 1 - store i32 %63, ptr %12, align 8 - br label %64 - -64: ; preds = %60, %54 - %.1 = phi ptr [ %61, %60 ], [ %.056, %54 ] - %65 = add nsw i32 %.04555, -1 - %66 = getelementptr inbounds i8, ptr %.04654, i64 32 - %67 = icmp sgt i32 %.04555, 1 - br i1 %67, label %25, label %.loopexit, !llvm.loop !28 - -.loopexit: ; preds = %64, %4, %16 +61: ; preds = %56, %49 + %62 = getelementptr inbounds i8, ptr %.056, i64 32 + %63 = load i32, ptr %12, align 8 + %64 = add nsw i32 %63, 1 + store i32 %64, ptr %12, align 8 + br label %65 + +65: ; preds = %61, %55 + %.1 = phi ptr [ %62, %61 ], [ %.056, %55 ] + %66 = add nsw i32 %.04555, -1 + %67 = getelementptr inbounds i8, ptr %.04654, i64 32 + %68 = icmp sgt i32 %.04555, 1 + br i1 %68, label %25, label %.loopexit, !llvm.loop !28 + +.loopexit: ; preds = %65, %4, %16 ret void } diff --git a/bench/openmpi/optimized/libompi_dbg_msgq_la-ompi_msgq_dll.ll b/bench/openmpi/optimized/libompi_dbg_msgq_la-ompi_msgq_dll.ll index ecad3345909..7a65687a51a 100644 --- a/bench/openmpi/optimized/libompi_dbg_msgq_la-ompi_msgq_dll.ll +++ b/bench/openmpi/optimized/libompi_dbg_msgq_la-ompi_msgq_dll.ll @@ -103,21 +103,19 @@ define range(i32 0, 104) i32 @mqs_setup_image(ptr noundef %0, ptr noundef %1) lo %4 = load ptr, ptr %3, align 8 %5 = tail call ptr %4(i64 noundef 536) #12 %.not = icmp eq ptr %5, null - br i1 %.not, label %12, label %6 + br i1 %.not, label %11, label %6 6: ; preds = %2 %7 = getelementptr inbounds i8, ptr %5, i64 8 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(536) %7, i8 0, i64 520, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(536) %7, i8 0, i64 528, i1 false) store ptr %1, ptr %5, align 8 - %8 = getelementptr inbounds i8, ptr %5, i64 528 - store ptr null, ptr %8, align 8 - %9 = load ptr, ptr @mqs_basic_entrypoints, align 8 - %10 = getelementptr inbounds i8, ptr %9, i64 32 - %11 = load ptr, ptr %10, align 8 - tail call void %11(ptr noundef %0, ptr noundef nonnull %5) #12 - br label %12 + %8 = load ptr, ptr @mqs_basic_entrypoints, align 8 + %9 = getelementptr inbounds i8, ptr %8, i64 32 + %10 = load ptr, ptr %9, align 8 + tail call void %10(ptr noundef %0, ptr noundef nonnull %5) #12 + br label %11 -12: ; preds = %2, %6 +11: ; preds = %2, %6 %.0 = phi i32 [ 0, %6 ], [ 103, %2 ] ret i32 %.0 } diff --git a/bench/openmpi/optimized/mca_base_var_enum.ll b/bench/openmpi/optimized/mca_base_var_enum.ll index c89cb7d5b18..9b40a62fb66 100644 --- a/bench/openmpi/optimized/mca_base_var_enum.ll +++ b/bench/openmpi/optimized/mca_base_var_enum.ll @@ -63,19 +63,17 @@ target triple = "x86_64-pc-linux-gnu" ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: write) uwtable define internal void @mca_base_var_enum_constructor(ptr nocapture noundef writeonly %0) #0 { %2 = getelementptr inbounds i8, ptr %0, i64 16 - %3 = getelementptr inbounds i8, ptr %0, i64 17 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(72) %3, i8 0, i64 71, i1 false) - %4 = getelementptr inbounds i8, ptr %0, i64 40 - store ptr @enum_get_value, ptr %4, align 8 - %5 = getelementptr inbounds i8, ptr %0, i64 32 - store ptr @enum_get_count, ptr %5, align 8 - %6 = getelementptr inbounds i8, ptr %0, i64 48 - store ptr @enum_value_from_string, ptr %6, align 8 - %7 = getelementptr inbounds i8, ptr %0, i64 56 - store ptr @enum_string_from_value, ptr %7, align 8 - %8 = getelementptr inbounds i8, ptr %0, i64 64 - store ptr @enum_dump, ptr %8, align 8 - store i8 0, ptr %2, align 8 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(72) %2, i8 0, i64 72, i1 false) + %3 = getelementptr inbounds i8, ptr %0, i64 40 + store ptr @enum_get_value, ptr %3, align 8 + %4 = getelementptr inbounds i8, ptr %0, i64 32 + store ptr @enum_get_count, ptr %4, align 8 + %5 = getelementptr inbounds i8, ptr %0, i64 48 + store ptr @enum_value_from_string, ptr %5, align 8 + %6 = getelementptr inbounds i8, ptr %0, i64 56 + store ptr @enum_string_from_value, ptr %6, align 8 + %7 = getelementptr inbounds i8, ptr %0, i64 64 + store ptr @enum_dump, ptr %7, align 8 ret void } diff --git a/bench/openssl/optimized/libcrypto-lib-core_algorithm.ll b/bench/openssl/optimized/libcrypto-lib-core_algorithm.ll index 9244a5c76a8..8d9ecb2bbdc 100644 --- a/bench/openssl/optimized/libcrypto-lib-core_algorithm.ll +++ b/bench/openssl/optimized/libcrypto-lib-core_algorithm.ll @@ -12,7 +12,7 @@ define void @ossl_algorithm_do_all(ptr noundef %libctx, i32 noundef %operation_i entry: %cbdata = alloca %struct.algorithm_data_st, align 8 %0 = getelementptr inbounds i8, ptr %cbdata, i64 8 - store i64 0, ptr %0, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %0, i8 0, i64 56, i1 false) store ptr %libctx, ptr %cbdata, align 8 %operation_id2 = getelementptr inbounds i8, ptr %cbdata, i64 8 store i32 %operation_id, ptr %operation_id2, align 8 @@ -32,13 +32,13 @@ entry: br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry - %call = call i32 @ossl_provider_doall_activated(ptr noundef %libctx, ptr noundef nonnull @algorithm_do_this, ptr noundef nonnull %cbdata) #5 + %call = call i32 @ossl_provider_doall_activated(ptr noundef %libctx, ptr noundef nonnull @algorithm_do_this, ptr noundef nonnull %cbdata) #6 br label %if.end20 if.else: ; preds = %entry - %call9 = tail call ptr @ossl_provider_libctx(ptr noundef nonnull %provider) #5 - %call10 = tail call ptr @ossl_lib_ctx_get_concrete(ptr noundef %libctx) #5 - %call11 = tail call ptr @ossl_lib_ctx_get_concrete(ptr noundef %call9) #5 + %call9 = tail call ptr @ossl_provider_libctx(ptr noundef nonnull %provider) #6 + %call10 = tail call ptr @ossl_lib_ctx_get_concrete(ptr noundef %libctx) #6 + %call11 = tail call ptr @ossl_lib_ctx_get_concrete(ptr noundef %call9) #6 %cmp12 = icmp eq ptr %call10, %call11 br i1 %cmp12, label %if.end, label %if.end20 @@ -51,7 +51,10 @@ if.end20: ; preds = %if.else, %if.end, % ret void } -declare i32 @ossl_provider_doall_activated(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #1 +; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write) +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #1 + +declare i32 @ossl_provider_doall_activated(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2 ; Function Attrs: nounwind uwtable define internal range(i32 0, 2) i32 @algorithm_do_this(ptr noundef %provider, ptr nocapture noundef readonly %cbdata) #0 { @@ -79,19 +82,19 @@ for.body: ; preds = %for.body.lr.ph, %if %ok.019 = phi i32 [ 1, %for.body.lr.ph ], [ %spec.select12, %if.end6 ] %cur_operation.017 = phi i32 [ %spec.select, %for.body.lr.ph ], [ %inc, %if.end6 ] store i32 0, ptr %no_store, align 4 - %call = call ptr @ossl_provider_query_operation(ptr noundef %provider, i32 noundef %cur_operation.017, ptr noundef nonnull %no_store) #5 + %call = call ptr @ossl_provider_query_operation(ptr noundef %provider, i32 noundef %cur_operation.017, ptr noundef nonnull %no_store) #6 %1 = load i32, ptr %no_store, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %ret.i) store i32 0, ptr %ret.i, align 4 %2 = load ptr, ptr %reserve_store.i, align 8 %3 = load ptr, ptr %data1.i, align 8 - %call.i = call i32 %2(i32 noundef %1, ptr noundef %3) #5 + %call.i = call i32 %2(i32 noundef %1, ptr noundef %3) #6 %tobool.not.i = icmp eq i32 %call.i, 0 br i1 %tobool.not.i, label %algorithm_do_map.exit.thread, label %if.end.i algorithm_do_map.exit.thread: ; preds = %for.body call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %ret.i) - call void @ossl_provider_unquery_operation(ptr noundef %provider, i32 noundef %cur_operation.017, ptr noundef %call) #5 + call void @ossl_provider_unquery_operation(ptr noundef %provider, i32 noundef %cur_operation.017, ptr noundef %call) #6 br label %return if.end.i: ; preds = %for.body @@ -105,7 +108,7 @@ if.end9.thread.i: ; preds = %if.end.i if.else.i: ; preds = %if.end.i %5 = load ptr, ptr %data1.i, align 8 - %call5.i = call i32 %4(ptr noundef %provider, i32 noundef %cur_operation.017, i32 noundef %1, ptr noundef %5, ptr noundef nonnull %ret.i) #5 + %call5.i = call i32 %4(ptr noundef %provider, i32 noundef %cur_operation.017, i32 noundef %1, ptr noundef %5, ptr noundef nonnull %ret.i) #6 %tobool6.not.i = icmp eq i32 %call5.i, 0 br i1 %tobool6.not.i, label %end.sink.split.i, label %if.end9.i @@ -127,7 +130,7 @@ for.body.i: ; preds = %for.cond.preheader. %thismap.024.i = phi ptr [ %incdec.ptr.i, %for.body.i ], [ %call, %for.cond.preheader.i ] %7 = load ptr, ptr %fn.i, align 8 %8 = load ptr, ptr %data1.i, align 8 - call void %7(ptr noundef %provider, ptr noundef nonnull %thismap.024.i, i32 noundef %1, ptr noundef %8) #5 + call void %7(ptr noundef %provider, ptr noundef nonnull %thismap.024.i, i32 noundef %1, ptr noundef %8) #6 %incdec.ptr.i = getelementptr inbounds i8, ptr %thismap.024.i, i64 32 %9 = load ptr, ptr %incdec.ptr.i, align 8 %cmp15.not.i = icmp eq ptr %9, null @@ -140,7 +143,7 @@ if.end17.i: ; preds = %for.body.i, %for.co if.else20.i: ; preds = %if.end17.i %11 = load ptr, ptr %data1.i, align 8 - %call23.i = call i32 %10(ptr noundef %provider, i32 noundef %cur_operation.017, i32 noundef %1, ptr noundef %11, ptr noundef nonnull %ret.i) #5 + %call23.i = call i32 %10(ptr noundef %provider, i32 noundef %cur_operation.017, i32 noundef %1, ptr noundef %11, ptr noundef nonnull %ret.i) #6 %tobool24.not.i = icmp eq i32 %call23.i, 0 br i1 %tobool24.not.i, label %end.sink.split.i, label %algorithm_do_map.exit @@ -152,10 +155,10 @@ end.sink.split.i: ; preds = %if.else20.i, %if.en algorithm_do_map.exit: ; preds = %if.else20.i, %end.sink.split.i %12 = load ptr, ptr %unreserve_store.i, align 8 %13 = load ptr, ptr %data1.i, align 8 - %call29.i = call i32 %12(ptr noundef %13) #5 + %call29.i = call i32 %12(ptr noundef %13) #6 %14 = load i32, ptr %ret.i, align 4 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %ret.i) - call void @ossl_provider_unquery_operation(ptr noundef %provider, i32 noundef %cur_operation.017, ptr noundef %call) #5 + call void @ossl_provider_unquery_operation(ptr noundef %provider, i32 noundef %cur_operation.017, ptr noundef %call) #6 %cmp4 = icmp slt i32 %14, 0 br i1 %cmp4, label %return, label %if.end6 @@ -171,9 +174,9 @@ return: ; preds = %algorithm_do_map.ex ret i32 %retval.0 } -declare ptr @ossl_provider_libctx(ptr noundef) local_unnamed_addr #1 +declare ptr @ossl_provider_libctx(ptr noundef) local_unnamed_addr #2 -declare ptr @ossl_lib_ctx_get_concrete(ptr noundef) local_unnamed_addr #1 +declare ptr @ossl_lib_ctx_get_concrete(ptr noundef) local_unnamed_addr #2 ; Function Attrs: nounwind uwtable define noalias ptr @ossl_algorithm_get1_first_name(ptr nocapture noundef readonly %algo) local_unnamed_addr #0 { @@ -183,12 +186,12 @@ entry: br i1 %cmp, label %return, label %if.end if.end: ; preds = %entry - %call = tail call ptr @strchr(ptr noundef nonnull dereferenceable(1) %0, i32 noundef 58) #6 + %call = tail call ptr @strchr(ptr noundef nonnull dereferenceable(1) %0, i32 noundef 58) #7 %cmp2 = icmp eq ptr %call, null br i1 %cmp2, label %if.then3, label %if.else if.then3: ; preds = %if.end - %call5 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %0) #6 + %call5 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %0) #7 br label %if.end7 if.else: ; preds = %if.end @@ -199,7 +202,7 @@ if.else: ; preds = %if.end if.end7: ; preds = %if.else, %if.then3 %first_name_len.0 = phi i64 [ %call5, %if.then3 ], [ %sub.ptr.sub, %if.else ] - %call9 = tail call noalias ptr @CRYPTO_strndup(ptr noundef nonnull %0, i64 noundef %first_name_len.0, ptr noundef nonnull @.str, i32 noundef 195) #5 + %call9 = tail call noalias ptr @CRYPTO_strndup(ptr noundef nonnull %0, i64 noundef %first_name_len.0, ptr noundef nonnull @.str, i32 noundef 195) #6 br label %return return: ; preds = %entry, %if.end7 @@ -208,33 +211,34 @@ return: ; preds = %entry, %if.end7 } ; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read) -declare ptr @strchr(ptr noundef, i32 noundef) local_unnamed_addr #2 +declare ptr @strchr(ptr noundef, i32 noundef) local_unnamed_addr #3 ; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read) -declare i64 @strlen(ptr nocapture noundef) local_unnamed_addr #2 +declare i64 @strlen(ptr nocapture noundef) local_unnamed_addr #3 -declare noalias ptr @CRYPTO_strndup(ptr noundef, i64 noundef, ptr noundef, i32 noundef) local_unnamed_addr #1 +declare noalias ptr @CRYPTO_strndup(ptr noundef, i64 noundef, ptr noundef, i32 noundef) local_unnamed_addr #2 -declare ptr @ossl_provider_query_operation(ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #1 +declare ptr @ossl_provider_query_operation(ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #2 -declare void @ossl_provider_unquery_operation(ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #1 +declare void @ossl_provider_unquery_operation(ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #2 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #3 +declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #4 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #3 +declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #4 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.umax.i32(i32, i32) #4 +declare i32 @llvm.umax.i32(i32, i32) #5 attributes #0 = { nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #2 = { mustprogress nofree nounwind willreturn memory(argmem: read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #3 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #5 = { nounwind } -attributes #6 = { nounwind willreturn memory(read) } +attributes #1 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #2 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #3 = { mustprogress nofree nounwind willreturn memory(argmem: read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #4 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #6 = { nounwind } +attributes #7 = { nounwind willreturn memory(read) } !llvm.module.flags = !{!0, !1, !2, !3} diff --git a/bench/openusd/optimized/sdfdump.cpp.ll b/bench/openusd/optimized/sdfdump.cpp.ll index c4948390fbb..2447110e0b6 100644 --- a/bench/openusd/optimized/sdfdump.cpp.ll +++ b/bench/openusd/optimized/sdfdump.cpp.ll @@ -12353,7 +12353,7 @@ define linkonce_odr dso_local noundef ptr @_ZN32pxrInternal_v0_24__pxrReserved__ %10 = getelementptr inbounds nuw i8, ptr %6, i64 16 %11 = getelementptr inbounds nuw i8, ptr %6, i64 24 %12 = getelementptr inbounds i8, ptr %6, i64 8 - store i64 0, ptr %12, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %12, i8 0, i64 24, i1 false) %13 = ptrtoint ptr %2 to i64 store i64 %13, ptr %6, align 8 store ptr @_ZNSt17_Function_handlerIFbRKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EEEZN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI3App10add_optionIS8_S8_TnNSt9enable_ifIXntsr3std8is_constIT0_EE5valueENSE_6detail7enablerEE4typeELSK_0EEEPNSE_6OptionES6_RT_S6_EUlSA_E_E9_M_invokeERKSt9_Any_dataSA_, ptr %11, align 8 @@ -12365,7 +12365,7 @@ define linkonce_odr dso_local noundef ptr @_ZN32pxrInternal_v0_24__pxrReserved__ %15 = getelementptr inbounds nuw i8, ptr %8, i64 16 %16 = getelementptr inbounds nuw i8, ptr %8, i64 24 %17 = getelementptr inbounds i8, ptr %8, i64 8 - store i64 0, ptr %17, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %17, i8 0, i64 24, i1 false) store i64 %13, ptr %8, align 8 store ptr @_ZNSt17_Function_handlerIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEZN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI3App10add_optionISt6vectorIS5_SaIS5_EESE_TnNSt9enable_ifIXntsr3std8is_constIT0_EE5valueENS9_6detail7enablerEE4typeELSI_0EEEPNS9_6OptionES5_RT_S5_EUlvE_E9_M_invokeERKSt9_Any_data, ptr %16, align 8 store ptr @_ZNSt17_Function_handlerIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEZN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI3App10add_optionISt6vectorIS5_SaIS5_EESE_TnNSt9enable_ifIXntsr3std8is_constIT0_EE5valueENS9_6detail7enablerEE4typeELSI_0EEEPNS9_6OptionES5_RT_S5_EUlvE_E10_M_managerERSt9_Any_dataRKSR_St18_Manager_operation, ptr %15, align 8 @@ -12492,7 +12492,7 @@ define linkonce_odr dso_local noundef ptr @_ZN32pxrInternal_v0_24__pxrReserved__ %9 = getelementptr inbounds nuw i8, ptr %5, i64 16 %10 = getelementptr inbounds nuw i8, ptr %5, i64 24 %11 = getelementptr inbounds i8, ptr %5, i64 8 - store i64 0, ptr %11, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %11, i8 0, i64 24, i1 false) %12 = ptrtoint ptr %2 to i64 store i64 %12, ptr %5, align 8 store ptr @_ZNSt17_Function_handlerIFbRKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EEEZN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI3App8add_flagIbTnNSt9enable_ifIXaaaantsr6detail20is_mutable_containerIT_EE5valuentsr3std8is_constISI_EE5valuentsr3std16is_constructibleISt8functionIFviEESI_EE5valueENSE_6detail7enablerEE4typeELSN_0EEEPNSE_6OptionES6_RSI_S6_EUlSA_E_E9_M_invokeERKSt9_Any_dataSA_, ptr %10, align 8 @@ -12612,7 +12612,7 @@ define linkonce_odr dso_local noundef ptr @_ZN32pxrInternal_v0_24__pxrReserved__ %11 = getelementptr inbounds nuw i8, ptr %6, i64 16 %12 = getelementptr inbounds nuw i8, ptr %6, i64 24 %13 = getelementptr inbounds i8, ptr %6, i64 8 - store i64 0, ptr %13, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %13, i8 0, i64 24, i1 false) %14 = ptrtoint ptr %2 to i64 store i64 %14, ptr %6, align 8 store ptr @_ZNSt17_Function_handlerIFbRKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EEEZN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI3App10add_optionIS6_S6_TnNSt9enable_ifIXntsr3std8is_constIT0_EE5valueENSE_6detail7enablerEE4typeELSK_0EEEPNSE_6OptionES6_RT_S6_EUlSA_E_E9_M_invokeERKSt9_Any_dataSA_, ptr %12, align 8 @@ -12624,7 +12624,7 @@ define linkonce_odr dso_local noundef ptr @_ZN32pxrInternal_v0_24__pxrReserved__ %16 = getelementptr inbounds nuw i8, ptr %8, i64 16 %17 = getelementptr inbounds nuw i8, ptr %8, i64 24 %18 = getelementptr inbounds i8, ptr %8, i64 8 - store i64 0, ptr %18, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %18, i8 0, i64 24, i1 false) store i64 %14, ptr %8, align 8 store ptr @_ZNSt17_Function_handlerIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEZN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI3App10add_optionIS5_S5_TnNSt9enable_ifIXntsr3std8is_constIT0_EE5valueENS9_6detail7enablerEE4typeELSF_0EEEPNS9_6OptionES5_RT_S5_EUlvE_E9_M_invokeERKSt9_Any_data, ptr %17, align 8 store ptr @_ZNSt17_Function_handlerIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEZN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI3App10add_optionIS5_S5_TnNSt9enable_ifIXntsr3std8is_constIT0_EE5valueENS9_6detail7enablerEE4typeELSF_0EEEPNS9_6OptionES5_RT_S5_EUlvE_E10_M_managerERSt9_Any_dataRKSO_St18_Manager_operation, ptr %16, align 8 @@ -12785,7 +12785,7 @@ define linkonce_odr dso_local noundef ptr @_ZN32pxrInternal_v0_24__pxrReserved__ %11 = getelementptr inbounds nuw i8, ptr %6, i64 16 %12 = getelementptr inbounds nuw i8, ptr %6, i64 24 %13 = getelementptr inbounds i8, ptr %6, i64 8 - store i64 0, ptr %13, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %13, i8 0, i64 24, i1 false) %14 = ptrtoint ptr %2 to i64 store i64 %14, ptr %6, align 8 store ptr @_ZNSt17_Function_handlerIFbRKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EEEZN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI3App10add_optionIddTnNSt9enable_ifIXntsr3std8is_constIT0_EE5valueENSE_6detail7enablerEE4typeELSK_0EEEPNSE_6OptionES6_RT_S6_EUlSA_E_E9_M_invokeERKSt9_Any_dataSA_, ptr %12, align 8 @@ -12797,7 +12797,7 @@ define linkonce_odr dso_local noundef ptr @_ZN32pxrInternal_v0_24__pxrReserved__ %16 = getelementptr inbounds nuw i8, ptr %8, i64 16 %17 = getelementptr inbounds nuw i8, ptr %8, i64 24 %18 = getelementptr inbounds i8, ptr %8, i64 8 - store i64 0, ptr %18, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %18, i8 0, i64 24, i1 false) store i64 %14, ptr %8, align 8 store ptr @_ZNSt17_Function_handlerIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEZN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI3App10add_optionIddTnNSt9enable_ifIXntsr3std8is_constIT0_EE5valueENS9_6detail7enablerEE4typeELSF_0EEEPNS9_6OptionES5_RT_S5_EUlvE_E9_M_invokeERKSt9_Any_data, ptr %17, align 8 store ptr @_ZNSt17_Function_handlerIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEZN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI3App10add_optionIddTnNSt9enable_ifIXntsr3std8is_constIT0_EE5valueENS9_6detail7enablerEE4typeELSF_0EEEPNS9_6OptionES5_RT_S5_EUlvE_E10_M_managerERSt9_Any_dataRKSO_St18_Manager_operation, ptr %16, align 8 @@ -17282,7 +17282,7 @@ _ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char to label %85 unwind label %.loopexit.split.us 85: ; preds = %83 - store i64 0, ptr %79, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %79, i8 0, i64 24, i1 false) %86 = ptrtoint ptr %.sroa.052.085.us to i64 store i64 %86, ptr %12, align 8 store ptr @_ZNSt17_Function_handlerIFbPKN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI3AppEEZNKS2_9Formatter16make_subcommandsB5cxx11ES5_NS2_13AppFormatModeEEUlS5_E_E9_M_invokeERKSt9_Any_dataOS5_, ptr %76, align 8 @@ -17402,7 +17402,7 @@ _ZNSt6vectorIPKN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI3AppESaIS5_EED2Ev. to label %121 unwind label %.loopexit.split 121: ; preds = %119 - store i64 0, ptr %79, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %79, i8 0, i64 24, i1 false) %122 = ptrtoint ptr %.sroa.052.085 to i64 store i64 %122, ptr %12, align 8 store ptr @_ZNSt17_Function_handlerIFbPKN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI3AppEEZNKS2_9Formatter16make_subcommandsB5cxx11ES5_NS2_13AppFormatModeEEUlS5_E_E9_M_invokeERKSt9_Any_dataOS5_, ptr %76, align 8 @@ -61974,7 +61974,7 @@ define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(102) ptr @ call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(32) %1) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) %5 = getelementptr inbounds i8, ptr %3, i64 8 - store i64 0, ptr %5, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %5, i8 0, i64 24, i1 false) %6 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #36 to label %.noexc unwind label %19 @@ -62263,53 +62263,58 @@ _ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_in ; Function Attrs: mustprogress uwtable define linkonce_odr dso_local noundef ptr @_ZN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI6Option9type_nameENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(591) %0, ptr noundef %1) local_unnamed_addr #3 comdat align 2 personality ptr @__gxx_personality_v0 { %3 = alloca %"class.std::function", align 8 + %.sroa.2 = alloca [24 x i8], align 8 %4 = alloca %class.anon.496, align 8 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(32) %1) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.2, i8 0, i64 24, i1 false) %5 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #36 - to label %_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEEC2EOS7_.exit.i.i unwind label %18 + to label %_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEEC2EOS7_.exit.i.i unwind label %19 _ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEEC2EOS7_.exit.i.i: ; preds = %2 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EOS4_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(32) %4) #35 %6 = getelementptr inbounds nuw i8, ptr %0, i64 296 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) %7 = getelementptr inbounds nuw i8, ptr %3, i64 24 + %.sroa.2.8..sroa_idx = getelementptr inbounds i8, ptr %.sroa.2, i64 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.2.8..sroa_idx, i8 0, i64 16, i1 false) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(16) %6, i64 16, i1 false) store ptr %5, ptr %6, align 8 %.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 304 - store i64 0, ptr %.sroa.2.0..sroa_idx, align 8 - %8 = getelementptr inbounds nuw i8, ptr %3, i64 16 - %9 = getelementptr inbounds nuw i8, ptr %0, i64 312 - %10 = load ptr, ptr %9, align 8 - store ptr %10, ptr %8, align 8 - store ptr @_ZNSt17_Function_handlerIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEZN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI6Option9type_nameES5_EUlvE_E10_M_managerERSt9_Any_dataRKSD_St18_Manager_operation, ptr %9, align 8 - %11 = getelementptr inbounds nuw i8, ptr %0, i64 320 - %12 = load ptr, ptr %11, align 8 - store ptr %12, ptr %7, align 8 - store ptr @_ZNSt17_Function_handlerIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEZN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI6Option9type_nameES5_EUlvE_E9_M_invokeERKSt9_Any_data, ptr %11, align 8 - %.not.i.i.i.i = icmp eq ptr %10, null - br i1 %.not.i.i.i.i, label %_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEED2Ev.exit, label %13 + %8 = load i64, ptr %.sroa.2, align 8 + store i64 %8, ptr %.sroa.2.0..sroa_idx, align 8 + %9 = getelementptr inbounds nuw i8, ptr %3, i64 16 + %10 = getelementptr inbounds nuw i8, ptr %0, i64 312 + %11 = load ptr, ptr %10, align 8 + store ptr %11, ptr %9, align 8 + store ptr @_ZNSt17_Function_handlerIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEZN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI6Option9type_nameES5_EUlvE_E10_M_managerERSt9_Any_dataRKSD_St18_Manager_operation, ptr %10, align 8 + %12 = getelementptr inbounds nuw i8, ptr %0, i64 320 + %13 = load ptr, ptr %12, align 8 + store ptr %13, ptr %7, align 8 + store ptr @_ZNSt17_Function_handlerIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEZN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI6Option9type_nameES5_EUlvE_E9_M_invokeERKSt9_Any_data, ptr %12, align 8 + %.not.i.i.i.i = icmp eq ptr %11, null + br i1 %.not.i.i.i.i, label %_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEED2Ev.exit, label %14 -13: ; preds = %_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEEC2EOS7_.exit.i.i - %14 = invoke noundef zeroext i1 %10(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(16) %3, i32 noundef 3) - to label %_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEED2Ev.exit unwind label %15 +14: ; preds = %_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEEC2EOS7_.exit.i.i + %15 = invoke noundef zeroext i1 %11(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(16) %3, i32 noundef 3) + to label %_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEED2Ev.exit unwind label %16 -15: ; preds = %13 - %16 = landingpad { ptr, i32 } +16: ; preds = %14 + %17 = landingpad { ptr, i32 } catch ptr null - %17 = extractvalue { ptr, i32 } %16, 0 - call void @__clang_call_terminate(ptr %17) #37 + %18 = extractvalue { ptr, i32 } %17, 0 + call void @__clang_call_terminate(ptr %18) #37 unreachable -_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEED2Ev.exit: ; preds = %13, %_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEEC2EOS7_.exit.i.i +_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEED2Ev.exit: ; preds = %14, %_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEEC2EOS7_.exit.i.i call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #35 ret ptr %0 -18: ; preds = %2 - %19 = landingpad { ptr, i32 } +19: ; preds = %2 + %20 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #35 - resume { ptr, i32 } %19 + resume { ptr, i32 } %20 } ; Function Attrs: mustprogress uwtable @@ -62859,7 +62864,7 @@ _ZNSt16allocator_traitsISaIPKcEE8allocateERS2_m.exit.i.i.i.i: ; preds = %23 %27 = phi ptr [ %25, %26 ], [ null, %3 ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) %28 = getelementptr inbounds i8, ptr %5, i64 8 - store i64 0, ptr %28, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %28, i8 0, i64 24, i1 false) %29 = invoke noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #36 to label %.noexc5 unwind label %123 @@ -62992,7 +62997,7 @@ _ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EEC2ERKS7 %82 = phi ptr [ %71, %69 ], [ null, %57 ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) %83 = getelementptr inbounds i8, ptr %4, i64 8 - store i64 0, ptr %83, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %83, i8 0, i64 24, i1 false) %84 = invoke noalias noundef nonnull dereferenceable(56) ptr @_Znwm(i64 noundef 56) #36 to label %.noexc16 unwind label %132 diff --git a/bench/openusd/optimized/testSdfPathThreading.cpp.ll b/bench/openusd/optimized/testSdfPathThreading.cpp.ll index 116ea903da3..01385552e3a 100644 --- a/bench/openusd/optimized/testSdfPathThreading.cpp.ll +++ b/bench/openusd/optimized/testSdfPathThreading.cpp.ll @@ -6488,7 +6488,7 @@ define linkonce_odr dso_local noundef ptr @_ZN32pxrInternal_v0_24__pxrReserved__ %11 = getelementptr inbounds nuw i8, ptr %6, i64 16 %12 = getelementptr inbounds nuw i8, ptr %6, i64 24 %13 = getelementptr inbounds i8, ptr %6, i64 8 - store i64 0, ptr %13, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %13, i8 0, i64 24, i1 false) %14 = ptrtoint ptr %2 to i64 store i64 %14, ptr %6, align 8 store ptr @_ZNSt17_Function_handlerIFbRKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EEEZN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI3App10add_optionIjjTnNSt9enable_ifIXntsr3std8is_constIT0_EE5valueENSE_6detail7enablerEE4typeELSK_0EEEPNSE_6OptionES6_RT_S6_EUlSA_E_E9_M_invokeERKSt9_Any_dataSA_, ptr %12, align 8 @@ -6500,7 +6500,7 @@ define linkonce_odr dso_local noundef ptr @_ZN32pxrInternal_v0_24__pxrReserved__ %16 = getelementptr inbounds nuw i8, ptr %8, i64 16 %17 = getelementptr inbounds nuw i8, ptr %8, i64 24 %18 = getelementptr inbounds i8, ptr %8, i64 8 - store i64 0, ptr %18, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %18, i8 0, i64 24, i1 false) store i64 %14, ptr %8, align 8 store ptr @_ZNSt17_Function_handlerIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEZN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI3App10add_optionIjjTnNSt9enable_ifIXntsr3std8is_constIT0_EE5valueENS9_6detail7enablerEE4typeELSF_0EEEPNS9_6OptionES5_RT_S5_EUlvE_E9_M_invokeERKSt9_Any_data, ptr %17, align 8 store ptr @_ZNSt17_Function_handlerIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEZN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI3App10add_optionIjjTnNSt9enable_ifIXntsr3std8is_constIT0_EE5valueENS9_6detail7enablerEE4typeELSF_0EEEPNS9_6OptionES5_RT_S5_EUlvE_E10_M_managerERSt9_Any_dataRKSO_St18_Manager_operation, ptr %16, align 8 @@ -6824,7 +6824,7 @@ define linkonce_odr dso_local noundef ptr @_ZN32pxrInternal_v0_24__pxrReserved__ %11 = getelementptr inbounds nuw i8, ptr %6, i64 16 %12 = getelementptr inbounds nuw i8, ptr %6, i64 24 %13 = getelementptr inbounds i8, ptr %6, i64 8 - store i64 0, ptr %13, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %13, i8 0, i64 24, i1 false) %14 = ptrtoint ptr %2 to i64 store i64 %14, ptr %6, align 8 store ptr @_ZNSt17_Function_handlerIFbRKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EEEZN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI3App10add_optionImmTnNSt9enable_ifIXntsr3std8is_constIT0_EE5valueENSE_6detail7enablerEE4typeELSK_0EEEPNSE_6OptionES6_RT_S6_EUlSA_E_E9_M_invokeERKSt9_Any_dataSA_, ptr %12, align 8 @@ -6836,7 +6836,7 @@ define linkonce_odr dso_local noundef ptr @_ZN32pxrInternal_v0_24__pxrReserved__ %16 = getelementptr inbounds nuw i8, ptr %8, i64 16 %17 = getelementptr inbounds nuw i8, ptr %8, i64 24 %18 = getelementptr inbounds i8, ptr %8, i64 8 - store i64 0, ptr %18, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %18, i8 0, i64 24, i1 false) store i64 %14, ptr %8, align 8 store ptr @_ZNSt17_Function_handlerIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEZN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI3App10add_optionImmTnNSt9enable_ifIXntsr3std8is_constIT0_EE5valueENS9_6detail7enablerEE4typeELSF_0EEEPNS9_6OptionES5_RT_S5_EUlvE_E9_M_invokeERKSt9_Any_data, ptr %17, align 8 store ptr @_ZNSt17_Function_handlerIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEZN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI3App10add_optionImmTnNSt9enable_ifIXntsr3std8is_constIT0_EE5valueENS9_6detail7enablerEE4typeELSF_0EEEPNS9_6OptionES5_RT_S5_EUlvE_E10_M_managerERSt9_Any_dataRKSO_St18_Manager_operation, ptr %16, align 8 @@ -11128,7 +11128,7 @@ _ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char to label %85 unwind label %.loopexit.split.us 85: ; preds = %83 - store i64 0, ptr %79, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %79, i8 0, i64 24, i1 false) %86 = ptrtoint ptr %.sroa.052.085.us to i64 store i64 %86, ptr %12, align 8 store ptr @_ZNSt17_Function_handlerIFbPKN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI3AppEEZNKS2_9Formatter16make_subcommandsB5cxx11ES5_NS2_13AppFormatModeEEUlS5_E_E9_M_invokeERKSt9_Any_dataOS5_, ptr %76, align 8 @@ -11248,7 +11248,7 @@ _ZNSt6vectorIPKN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI3AppESaIS5_EED2Ev. to label %121 unwind label %.loopexit.split 121: ; preds = %119 - store i64 0, ptr %79, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %79, i8 0, i64 24, i1 false) %122 = ptrtoint ptr %.sroa.052.085 to i64 store i64 %122, ptr %12, align 8 store ptr @_ZNSt17_Function_handlerIFbPKN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI3AppEEZNKS2_9Formatter16make_subcommandsB5cxx11ES5_NS2_13AppFormatModeEEUlS5_E_E9_M_invokeERKSt9_Any_dataOS5_, ptr %76, align 8 @@ -51000,7 +51000,7 @@ define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(102) ptr @ call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(32) %1) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) %5 = getelementptr inbounds i8, ptr %3, i64 8 - store i64 0, ptr %5, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %5, i8 0, i64 24, i1 false) %6 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #30 to label %.noexc unwind label %19 @@ -51289,53 +51289,58 @@ _ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE13_M_in ; Function Attrs: mustprogress uwtable define linkonce_odr dso_local noundef ptr @_ZN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI6Option9type_nameENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(591) %0, ptr noundef %1) local_unnamed_addr #3 comdat align 2 personality ptr @__gxx_personality_v0 { %3 = alloca %"class.std::function", align 8 + %.sroa.2 = alloca [24 x i8], align 8 %4 = alloca %class.anon.300, align 8 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(32) %1) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.2, i8 0, i64 24, i1 false) %5 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #30 - to label %_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEEC2EOS7_.exit.i.i unwind label %18 + to label %_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEEC2EOS7_.exit.i.i unwind label %19 _ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEEC2EOS7_.exit.i.i: ; preds = %2 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EOS4_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(32) %4) #29 %6 = getelementptr inbounds nuw i8, ptr %0, i64 296 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) %7 = getelementptr inbounds nuw i8, ptr %3, i64 24 + %.sroa.2.8..sroa_idx = getelementptr inbounds i8, ptr %.sroa.2, i64 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.2.8..sroa_idx, i8 0, i64 16, i1 false) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(16) %6, i64 16, i1 false) store ptr %5, ptr %6, align 8 %.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 304 - store i64 0, ptr %.sroa.2.0..sroa_idx, align 8 - %8 = getelementptr inbounds nuw i8, ptr %3, i64 16 - %9 = getelementptr inbounds nuw i8, ptr %0, i64 312 - %10 = load ptr, ptr %9, align 8 - store ptr %10, ptr %8, align 8 - store ptr @_ZNSt17_Function_handlerIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEZN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI6Option9type_nameES5_EUlvE_E10_M_managerERSt9_Any_dataRKSD_St18_Manager_operation, ptr %9, align 8 - %11 = getelementptr inbounds nuw i8, ptr %0, i64 320 - %12 = load ptr, ptr %11, align 8 - store ptr %12, ptr %7, align 8 - store ptr @_ZNSt17_Function_handlerIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEZN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI6Option9type_nameES5_EUlvE_E9_M_invokeERKSt9_Any_data, ptr %11, align 8 - %.not.i.i.i.i = icmp eq ptr %10, null - br i1 %.not.i.i.i.i, label %_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEED2Ev.exit, label %13 + %8 = load i64, ptr %.sroa.2, align 8 + store i64 %8, ptr %.sroa.2.0..sroa_idx, align 8 + %9 = getelementptr inbounds nuw i8, ptr %3, i64 16 + %10 = getelementptr inbounds nuw i8, ptr %0, i64 312 + %11 = load ptr, ptr %10, align 8 + store ptr %11, ptr %9, align 8 + store ptr @_ZNSt17_Function_handlerIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEZN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI6Option9type_nameES5_EUlvE_E10_M_managerERSt9_Any_dataRKSD_St18_Manager_operation, ptr %10, align 8 + %12 = getelementptr inbounds nuw i8, ptr %0, i64 320 + %13 = load ptr, ptr %12, align 8 + store ptr %13, ptr %7, align 8 + store ptr @_ZNSt17_Function_handlerIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEZN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI6Option9type_nameES5_EUlvE_E9_M_invokeERKSt9_Any_data, ptr %12, align 8 + %.not.i.i.i.i = icmp eq ptr %11, null + br i1 %.not.i.i.i.i, label %_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEED2Ev.exit, label %14 -13: ; preds = %_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEEC2EOS7_.exit.i.i - %14 = invoke noundef zeroext i1 %10(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(16) %3, i32 noundef 3) - to label %_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEED2Ev.exit unwind label %15 +14: ; preds = %_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEEC2EOS7_.exit.i.i + %15 = invoke noundef zeroext i1 %11(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(16) %3, i32 noundef 3) + to label %_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEED2Ev.exit unwind label %16 -15: ; preds = %13 - %16 = landingpad { ptr, i32 } +16: ; preds = %14 + %17 = landingpad { ptr, i32 } catch ptr null - %17 = extractvalue { ptr, i32 } %16, 0 - call void @__clang_call_terminate(ptr %17) #31 + %18 = extractvalue { ptr, i32 } %17, 0 + call void @__clang_call_terminate(ptr %18) #31 unreachable -_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEED2Ev.exit: ; preds = %13, %_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEEC2EOS7_.exit.i.i +_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEED2Ev.exit: ; preds = %14, %_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEEC2EOS7_.exit.i.i call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #29 ret ptr %0 -18: ; preds = %2 - %19 = landingpad { ptr, i32 } +19: ; preds = %2 + %20 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #29 - resume { ptr, i32 } %19 + resume { ptr, i32 } %20 } ; Function Attrs: mustprogress uwtable diff --git a/bench/openusd/optimized/testUsdStageThreading.cpp.ll b/bench/openusd/optimized/testUsdStageThreading.cpp.ll index c354e64c42f..94d8b00e361 100644 --- a/bench/openusd/optimized/testUsdStageThreading.cpp.ll +++ b/bench/openusd/optimized/testUsdStageThreading.cpp.ll @@ -7358,7 +7358,7 @@ define linkonce_odr dso_local noundef ptr @_ZN32pxrInternal_v0_24__pxrReserved__ %9 = getelementptr inbounds nuw i8, ptr %5, i64 16 %10 = getelementptr inbounds nuw i8, ptr %5, i64 24 %11 = getelementptr inbounds i8, ptr %5, i64 8 - store i64 0, ptr %11, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %11, i8 0, i64 24, i1 false) %12 = ptrtoint ptr %2 to i64 store i64 %12, ptr %5, align 8 store ptr @_ZNSt17_Function_handlerIFbRKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EEEZN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI3App8add_flagIbTnNSt9enable_ifIXaaaantsr6detail20is_mutable_containerIT_EE5valuentsr3std8is_constISI_EE5valuentsr3std16is_constructibleISt8functionIFviEESI_EE5valueENSE_6detail7enablerEE4typeELSN_0EEEPNSE_6OptionES6_RSI_S6_EUlSA_E_E9_M_invokeERKSt9_Any_dataSA_, ptr %10, align 8 @@ -7478,7 +7478,7 @@ define linkonce_odr dso_local noundef ptr @_ZN32pxrInternal_v0_24__pxrReserved__ %11 = getelementptr inbounds nuw i8, ptr %6, i64 16 %12 = getelementptr inbounds nuw i8, ptr %6, i64 24 %13 = getelementptr inbounds i8, ptr %6, i64 8 - store i64 0, ptr %13, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %13, i8 0, i64 24, i1 false) %14 = ptrtoint ptr %2 to i64 store i64 %14, ptr %6, align 8 store ptr @_ZNSt17_Function_handlerIFbRKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EEEZN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI3App10add_optionImmTnNSt9enable_ifIXntsr3std8is_constIT0_EE5valueENSE_6detail7enablerEE4typeELSK_0EEEPNSE_6OptionES6_RT_S6_EUlSA_E_E9_M_invokeERKSt9_Any_dataSA_, ptr %12, align 8 @@ -7490,7 +7490,7 @@ define linkonce_odr dso_local noundef ptr @_ZN32pxrInternal_v0_24__pxrReserved__ %16 = getelementptr inbounds nuw i8, ptr %8, i64 16 %17 = getelementptr inbounds nuw i8, ptr %8, i64 24 %18 = getelementptr inbounds i8, ptr %8, i64 8 - store i64 0, ptr %18, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %18, i8 0, i64 24, i1 false) store i64 %14, ptr %8, align 8 store ptr @_ZNSt17_Function_handlerIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEZN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI3App10add_optionImmTnNSt9enable_ifIXntsr3std8is_constIT0_EE5valueENS9_6detail7enablerEE4typeELSF_0EEEPNS9_6OptionES5_RT_S5_EUlvE_E9_M_invokeERKSt9_Any_data, ptr %17, align 8 store ptr @_ZNSt17_Function_handlerIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEZN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI3App10add_optionImmTnNSt9enable_ifIXntsr3std8is_constIT0_EE5valueENS9_6detail7enablerEE4typeELSF_0EEEPNS9_6OptionES5_RT_S5_EUlvE_E10_M_managerERSt9_Any_dataRKSO_St18_Manager_operation, ptr %16, align 8 @@ -11286,7 +11286,7 @@ _ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char to label %85 unwind label %.loopexit.split.us 85: ; preds = %83 - store i64 0, ptr %79, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %79, i8 0, i64 24, i1 false) %86 = ptrtoint ptr %.sroa.052.085.us to i64 store i64 %86, ptr %12, align 8 store ptr @_ZNSt17_Function_handlerIFbPKN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI3AppEEZNKS2_9Formatter16make_subcommandsB5cxx11ES5_NS2_13AppFormatModeEEUlS5_E_E9_M_invokeERKSt9_Any_dataOS5_, ptr %76, align 8 @@ -11406,7 +11406,7 @@ _ZNSt6vectorIPKN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI3AppESaIS5_EED2Ev. to label %121 unwind label %.loopexit.split 121: ; preds = %119 - store i64 0, ptr %79, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %79, i8 0, i64 24, i1 false) %122 = ptrtoint ptr %.sroa.052.085 to i64 store i64 %122, ptr %12, align 8 store ptr @_ZNSt17_Function_handlerIFbPKN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI3AppEEZNKS2_9Formatter16make_subcommandsB5cxx11ES5_NS2_13AppFormatModeEEUlS5_E_E9_M_invokeERKSt9_Any_dataOS5_, ptr %76, align 8 @@ -52691,7 +52691,7 @@ define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(102) ptr @ call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(32) %1) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) %5 = getelementptr inbounds i8, ptr %3, i64 8 - store i64 0, ptr %5, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %5, i8 0, i64 24, i1 false) %6 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #31 to label %.noexc unwind label %19 @@ -53080,53 +53080,58 @@ define linkonce_odr dso_local noundef zeroext i1 @_ZN32pxrInternal_v0_24__pxrRes ; Function Attrs: mustprogress uwtable define linkonce_odr dso_local noundef ptr @_ZN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI6Option9type_nameENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(591) %0, ptr noundef %1) local_unnamed_addr #3 comdat align 2 personality ptr @__gxx_personality_v0 { %3 = alloca %"class.std::function", align 8 + %.sroa.2 = alloca [24 x i8], align 8 %4 = alloca %class.anon.489, align 8 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(32) %1) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.2, i8 0, i64 24, i1 false) %5 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #31 - to label %_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEEC2EOS7_.exit.i.i unwind label %18 + to label %_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEEC2EOS7_.exit.i.i unwind label %19 _ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEEC2EOS7_.exit.i.i: ; preds = %2 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EOS4_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(32) %4) #30 %6 = getelementptr inbounds nuw i8, ptr %0, i64 296 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) %7 = getelementptr inbounds nuw i8, ptr %3, i64 24 + %.sroa.2.8..sroa_idx = getelementptr inbounds i8, ptr %.sroa.2, i64 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.2.8..sroa_idx, i8 0, i64 16, i1 false) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(16) %6, i64 16, i1 false) store ptr %5, ptr %6, align 8 %.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 304 - store i64 0, ptr %.sroa.2.0..sroa_idx, align 8 - %8 = getelementptr inbounds nuw i8, ptr %3, i64 16 - %9 = getelementptr inbounds nuw i8, ptr %0, i64 312 - %10 = load ptr, ptr %9, align 8 - store ptr %10, ptr %8, align 8 - store ptr @_ZNSt17_Function_handlerIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEZN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI6Option9type_nameES5_EUlvE_E10_M_managerERSt9_Any_dataRKSD_St18_Manager_operation, ptr %9, align 8 - %11 = getelementptr inbounds nuw i8, ptr %0, i64 320 - %12 = load ptr, ptr %11, align 8 - store ptr %12, ptr %7, align 8 - store ptr @_ZNSt17_Function_handlerIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEZN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI6Option9type_nameES5_EUlvE_E9_M_invokeERKSt9_Any_data, ptr %11, align 8 - %.not.i.i.i.i = icmp eq ptr %10, null - br i1 %.not.i.i.i.i, label %_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEED2Ev.exit, label %13 + %8 = load i64, ptr %.sroa.2, align 8 + store i64 %8, ptr %.sroa.2.0..sroa_idx, align 8 + %9 = getelementptr inbounds nuw i8, ptr %3, i64 16 + %10 = getelementptr inbounds nuw i8, ptr %0, i64 312 + %11 = load ptr, ptr %10, align 8 + store ptr %11, ptr %9, align 8 + store ptr @_ZNSt17_Function_handlerIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEZN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI6Option9type_nameES5_EUlvE_E10_M_managerERSt9_Any_dataRKSD_St18_Manager_operation, ptr %10, align 8 + %12 = getelementptr inbounds nuw i8, ptr %0, i64 320 + %13 = load ptr, ptr %12, align 8 + store ptr %13, ptr %7, align 8 + store ptr @_ZNSt17_Function_handlerIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEZN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI6Option9type_nameES5_EUlvE_E9_M_invokeERKSt9_Any_data, ptr %12, align 8 + %.not.i.i.i.i = icmp eq ptr %11, null + br i1 %.not.i.i.i.i, label %_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEED2Ev.exit, label %14 -13: ; preds = %_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEEC2EOS7_.exit.i.i - %14 = invoke noundef zeroext i1 %10(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(16) %3, i32 noundef 3) - to label %_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEED2Ev.exit unwind label %15 +14: ; preds = %_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEEC2EOS7_.exit.i.i + %15 = invoke noundef zeroext i1 %11(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(16) %3, i32 noundef 3) + to label %_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEED2Ev.exit unwind label %16 -15: ; preds = %13 - %16 = landingpad { ptr, i32 } +16: ; preds = %14 + %17 = landingpad { ptr, i32 } catch ptr null - %17 = extractvalue { ptr, i32 } %16, 0 - call void @__clang_call_terminate(ptr %17) #32 + %18 = extractvalue { ptr, i32 } %17, 0 + call void @__clang_call_terminate(ptr %18) #32 unreachable -_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEED2Ev.exit: ; preds = %13, %_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEEC2EOS7_.exit.i.i +_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEED2Ev.exit: ; preds = %14, %_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEEC2EOS7_.exit.i.i call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #30 ret ptr %0 -18: ; preds = %2 - %19 = landingpad { ptr, i32 } +19: ; preds = %2 + %20 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #30 - resume { ptr, i32 } %19 + resume { ptr, i32 } %20 } ; Function Attrs: mustprogress uwtable diff --git a/bench/openusd/optimized/usdcat.cpp.ll b/bench/openusd/optimized/usdcat.cpp.ll index cf86ad9e2be..6a504d98b85 100644 --- a/bench/openusd/optimized/usdcat.cpp.ll +++ b/bench/openusd/optimized/usdcat.cpp.ll @@ -13112,7 +13112,7 @@ _ZSt7find_ifIN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char to label %85 unwind label %.loopexit.split.us 85: ; preds = %83 - store i64 0, ptr %79, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %79, i8 0, i64 24, i1 false) %86 = ptrtoint ptr %.sroa.052.085.us to i64 store i64 %86, ptr %12, align 8 store ptr @_ZNSt17_Function_handlerIFbPKN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI3AppEEZNKS2_9Formatter16make_subcommandsB5cxx11ES5_NS2_13AppFormatModeEEUlS5_E_E9_M_invokeERKSt9_Any_dataOS5_, ptr %76, align 8 @@ -13232,7 +13232,7 @@ _ZNSt6vectorIPKN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI3AppESaIS5_EED2Ev. to label %121 unwind label %.loopexit.split 121: ; preds = %119 - store i64 0, ptr %79, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %79, i8 0, i64 24, i1 false) %122 = ptrtoint ptr %.sroa.052.085 to i64 store i64 %122, ptr %12, align 8 store ptr @_ZNSt17_Function_handlerIFbPKN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI3AppEEZNKS2_9Formatter16make_subcommandsB5cxx11ES5_NS2_13AppFormatModeEEUlS5_E_E9_M_invokeERKSt9_Any_dataOS5_, ptr %76, align 8 @@ -32270,7 +32270,7 @@ define linkonce_odr dso_local noundef ptr @_ZN32pxrInternal_v0_24__pxrReserved__ %10 = getelementptr inbounds nuw i8, ptr %6, i64 16 %11 = getelementptr inbounds nuw i8, ptr %6, i64 24 %12 = getelementptr inbounds i8, ptr %6, i64 8 - store i64 0, ptr %12, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %12, i8 0, i64 24, i1 false) %13 = ptrtoint ptr %2 to i64 store i64 %13, ptr %6, align 8 store ptr @_ZNSt17_Function_handlerIFbRKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EEEZN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI3App10add_optionIS8_S8_TnNSt9enable_ifIXntsr3std8is_constIT0_EE5valueENSE_6detail7enablerEE4typeELSK_0EEEPNSE_6OptionES6_RT_S6_EUlSA_E_E9_M_invokeERKSt9_Any_dataSA_, ptr %11, align 8 @@ -32282,7 +32282,7 @@ define linkonce_odr dso_local noundef ptr @_ZN32pxrInternal_v0_24__pxrReserved__ %15 = getelementptr inbounds nuw i8, ptr %8, i64 16 %16 = getelementptr inbounds nuw i8, ptr %8, i64 24 %17 = getelementptr inbounds i8, ptr %8, i64 8 - store i64 0, ptr %17, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %17, i8 0, i64 24, i1 false) store i64 %13, ptr %8, align 8 store ptr @_ZNSt17_Function_handlerIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEZN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI3App10add_optionISt6vectorIS5_SaIS5_EESE_TnNSt9enable_ifIXntsr3std8is_constIT0_EE5valueENS9_6detail7enablerEE4typeELSI_0EEEPNS9_6OptionES5_RT_S5_EUlvE_E9_M_invokeERKSt9_Any_data, ptr %16, align 8 store ptr @_ZNSt17_Function_handlerIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEZN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI3App10add_optionISt6vectorIS5_SaIS5_EESE_TnNSt9enable_ifIXntsr3std8is_constIT0_EE5valueENS9_6detail7enablerEE4typeELSI_0EEEPNS9_6OptionES5_RT_S5_EUlvE_E10_M_managerERSt9_Any_dataRKSR_St18_Manager_operation, ptr %15, align 8 @@ -32412,7 +32412,7 @@ define linkonce_odr dso_local noundef ptr @_ZN32pxrInternal_v0_24__pxrReserved__ %11 = getelementptr inbounds nuw i8, ptr %6, i64 16 %12 = getelementptr inbounds nuw i8, ptr %6, i64 24 %13 = getelementptr inbounds i8, ptr %6, i64 8 - store i64 0, ptr %13, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %13, i8 0, i64 24, i1 false) %14 = ptrtoint ptr %2 to i64 store i64 %14, ptr %6, align 8 store ptr @_ZNSt17_Function_handlerIFbRKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EEEZN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI3App10add_optionIS6_S6_TnNSt9enable_ifIXntsr3std8is_constIT0_EE5valueENSE_6detail7enablerEE4typeELSK_0EEEPNSE_6OptionES6_RT_S6_EUlSA_E_E9_M_invokeERKSt9_Any_dataSA_, ptr %12, align 8 @@ -32424,7 +32424,7 @@ define linkonce_odr dso_local noundef ptr @_ZN32pxrInternal_v0_24__pxrReserved__ %16 = getelementptr inbounds nuw i8, ptr %8, i64 16 %17 = getelementptr inbounds nuw i8, ptr %8, i64 24 %18 = getelementptr inbounds i8, ptr %8, i64 8 - store i64 0, ptr %18, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %18, i8 0, i64 24, i1 false) store i64 %14, ptr %8, align 8 store ptr @_ZNSt17_Function_handlerIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEZN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI3App10add_optionIS5_S5_TnNSt9enable_ifIXntsr3std8is_constIT0_EE5valueENS9_6detail7enablerEE4typeELSF_0EEEPNS9_6OptionES5_RT_S5_EUlvE_E9_M_invokeERKSt9_Any_data, ptr %17, align 8 store ptr @_ZNSt17_Function_handlerIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEZN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI3App10add_optionIS5_S5_TnNSt9enable_ifIXntsr3std8is_constIT0_EE5valueENS9_6detail7enablerEE4typeELSF_0EEEPNS9_6OptionES5_RT_S5_EUlvE_E10_M_managerERSt9_Any_dataRKSO_St18_Manager_operation, ptr %16, align 8 @@ -32727,7 +32727,7 @@ define linkonce_odr dso_local noundef ptr @_ZN32pxrInternal_v0_24__pxrReserved__ %9 = getelementptr inbounds nuw i8, ptr %5, i64 16 %10 = getelementptr inbounds nuw i8, ptr %5, i64 24 %11 = getelementptr inbounds i8, ptr %5, i64 8 - store i64 0, ptr %11, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %11, i8 0, i64 24, i1 false) %12 = ptrtoint ptr %2 to i64 store i64 %12, ptr %5, align 8 store ptr @_ZNSt17_Function_handlerIFbRKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS6_EEEZN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI3App8add_flagIbTnNSt9enable_ifIXaaaantsr6detail20is_mutable_containerIT_EE5valuentsr3std8is_constISI_EE5valuentsr3std16is_constructibleISt8functionIFviEESI_EE5valueENSE_6detail7enablerEE4typeELSN_0EEEPNSE_6OptionES6_RSI_S6_EUlSA_E_E9_M_invokeERKSt9_Any_dataSA_, ptr %10, align 8 @@ -32838,53 +32838,58 @@ _ZNSt8functionIFbRKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE ; Function Attrs: mustprogress uwtable define linkonce_odr dso_local noundef ptr @_ZN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI6Option9type_nameENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(591) %0, ptr noundef %1) local_unnamed_addr #3 comdat align 2 personality ptr @__gxx_personality_v0 { %3 = alloca %"class.std::function", align 8 + %.sroa.2 = alloca [24 x i8], align 8 %4 = alloca %class.anon.200, align 8 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(32) %1) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.2, i8 0, i64 24, i1 false) %5 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #30 - to label %_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEEC2EOS7_.exit.i.i unwind label %18 + to label %_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEEC2EOS7_.exit.i.i unwind label %19 _ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEEC2EOS7_.exit.i.i: ; preds = %2 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1EOS4_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(32) %4) #29 %6 = getelementptr inbounds nuw i8, ptr %0, i64 296 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) %7 = getelementptr inbounds nuw i8, ptr %3, i64 24 + %.sroa.2.8..sroa_idx = getelementptr inbounds i8, ptr %.sroa.2, i64 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.sroa.2.8..sroa_idx, i8 0, i64 16, i1 false) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(16) %6, i64 16, i1 false) store ptr %5, ptr %6, align 8 %.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 304 - store i64 0, ptr %.sroa.2.0..sroa_idx, align 8 - %8 = getelementptr inbounds nuw i8, ptr %3, i64 16 - %9 = getelementptr inbounds nuw i8, ptr %0, i64 312 - %10 = load ptr, ptr %9, align 8 - store ptr %10, ptr %8, align 8 - store ptr @_ZNSt17_Function_handlerIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEZN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI6Option9type_nameES5_EUlvE_E10_M_managerERSt9_Any_dataRKSD_St18_Manager_operation, ptr %9, align 8 - %11 = getelementptr inbounds nuw i8, ptr %0, i64 320 - %12 = load ptr, ptr %11, align 8 - store ptr %12, ptr %7, align 8 - store ptr @_ZNSt17_Function_handlerIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEZN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI6Option9type_nameES5_EUlvE_E9_M_invokeERKSt9_Any_data, ptr %11, align 8 - %.not.i.i.i.i = icmp eq ptr %10, null - br i1 %.not.i.i.i.i, label %_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEED2Ev.exit, label %13 + %8 = load i64, ptr %.sroa.2, align 8 + store i64 %8, ptr %.sroa.2.0..sroa_idx, align 8 + %9 = getelementptr inbounds nuw i8, ptr %3, i64 16 + %10 = getelementptr inbounds nuw i8, ptr %0, i64 312 + %11 = load ptr, ptr %10, align 8 + store ptr %11, ptr %9, align 8 + store ptr @_ZNSt17_Function_handlerIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEZN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI6Option9type_nameES5_EUlvE_E10_M_managerERSt9_Any_dataRKSD_St18_Manager_operation, ptr %10, align 8 + %12 = getelementptr inbounds nuw i8, ptr %0, i64 320 + %13 = load ptr, ptr %12, align 8 + store ptr %13, ptr %7, align 8 + store ptr @_ZNSt17_Function_handlerIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEZN32pxrInternal_v0_24__pxrReserved__7pxr_CLI3CLI6Option9type_nameES5_EUlvE_E9_M_invokeERKSt9_Any_data, ptr %12, align 8 + %.not.i.i.i.i = icmp eq ptr %11, null + br i1 %.not.i.i.i.i, label %_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEED2Ev.exit, label %14 -13: ; preds = %_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEEC2EOS7_.exit.i.i - %14 = invoke noundef zeroext i1 %10(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(16) %3, i32 noundef 3) - to label %_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEED2Ev.exit unwind label %15 +14: ; preds = %_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEEC2EOS7_.exit.i.i + %15 = invoke noundef zeroext i1 %11(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(16) %3, i32 noundef 3) + to label %_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEED2Ev.exit unwind label %16 -15: ; preds = %13 - %16 = landingpad { ptr, i32 } +16: ; preds = %14 + %17 = landingpad { ptr, i32 } catch ptr null - %17 = extractvalue { ptr, i32 } %16, 0 - call void @__clang_call_terminate(ptr %17) #31 + %18 = extractvalue { ptr, i32 } %17, 0 + call void @__clang_call_terminate(ptr %18) #31 unreachable -_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEED2Ev.exit: ; preds = %13, %_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEEC2EOS7_.exit.i.i +_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEED2Ev.exit: ; preds = %14, %_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvEEC2EOS7_.exit.i.i call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #29 ret ptr %0 -18: ; preds = %2 - %19 = landingpad { ptr, i32 } +19: ; preds = %2 + %20 = landingpad { ptr, i32 } cleanup call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #29 - resume { ptr, i32 } %19 + resume { ptr, i32 } %20 } ; Function Attrs: mustprogress uwtable @@ -33842,7 +33847,7 @@ _ZNSt16allocator_traitsISaIPKcEE8allocateERS2_m.exit.i.i.i.i: ; preds = %26 %30 = phi ptr [ %28, %29 ], [ null, %_ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EEC2IRPS6_vEEOT_.exit ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) %31 = getelementptr inbounds i8, ptr %5, i64 8 - store i64 0, ptr %31, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %31, i8 0, i64 24, i1 false) %32 = invoke noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #30 to label %.noexc5 unwind label %126 @@ -33975,7 +33980,7 @@ _ZNSt8functionIFNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_EEC2ERKS7 %85 = phi ptr [ %74, %72 ], [ null, %60 ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) %86 = getelementptr inbounds i8, ptr %4, i64 8 - store i64 0, ptr %86, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %86, i8 0, i64 24, i1 false) %87 = invoke noalias noundef nonnull dereferenceable(56) ptr @_Znwm(i64 noundef 56) #30 to label %.noexc16 unwind label %135 @@ -54982,7 +54987,7 @@ define linkonce_odr dso_local noundef nonnull align 8 dereferenceable(102) ptr @ call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(32) %1) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) %5 = getelementptr inbounds i8, ptr %3, i64 8 - store i64 0, ptr %5, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %5, i8 0, i64 24, i1 false) %6 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #30 to label %.noexc unwind label %19 diff --git a/bench/openvdb/optimized/FindActiveValues.cc.ll b/bench/openvdb/optimized/FindActiveValues.cc.ll index c1fb96aedaf..acc58282778 100644 --- a/bench/openvdb/optimized/FindActiveValues.cc.ll +++ b/bench/openvdb/optimized/FindActiveValues.cc.ll @@ -178437,15 +178437,14 @@ _ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataIbEESaIS4_EEC2EmRKS5_.exit.i: for.inc.i.i.i.i.i: ; preds = %for.inc.i.i.i.i.i, %_ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataIbEESaIS4_EEC2EmRKS5_.exit.i %__cur.08.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %call5.i.i.i.i2.i.i70, %_ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataIbEESaIS4_EEC2EmRKS5_.exit.i ] %__n.addr.07.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %conv, %_ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataIbEESaIS4_EEC2EmRKS5_.exit.i ] - %51 = getelementptr inbounds i8, ptr %__cur.08.i.i.i.i.i, i64 24 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %51, i8 0, i64 12, i1 false) + %51 = getelementptr inbounds i8, ptr %__cur.08.i.i.i.i.i, i64 20 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %51, i8 0, i64 16, i1 false) store i64 9223372034707292159, ptr %__cur.08.i.i.i.i.i, align 4 %tmp.coerce.sroa.2.0.coerce.dive2.sroa_idx.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.08.i.i.i.i.i, i64 8 store i32 2147483647, ptr %tmp.coerce.sroa.2.0.coerce.dive2.sroa_idx.i.i.i.i.i.i.i.i, align 4 %mMax.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.08.i.i.i.i.i, i64 12 store i64 -9223372034707292160, ptr %mMax.i.i.i.i.i.i.i.i, align 4 - %tmp.coerce6.sroa.2.0.coerce.dive5.sroa_idx.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.08.i.i.i.i.i, i64 20 - store i32 -2147483648, ptr %tmp.coerce6.sroa.2.0.coerce.dive5.sroa_idx.i.i.i.i.i.i.i.i, align 4 + store i32 -2147483648, ptr %51, align 4 %dec.i.i.i.i.i = add nsw i64 %__n.addr.07.i.i.i.i.i, -1 %incdec.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.08.i.i.i.i.i, i64 36 %cmp.not.i.i.i.i.i = icmp eq i64 %dec.i.i.i.i.i, 0 @@ -179032,15 +179031,14 @@ _ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataIbEESaIS4_EEC2EmRKS5_.exit.i: for.inc.i.i.i.i.i: ; preds = %for.inc.i.i.i.i.i, %_ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataIbEESaIS4_EEC2EmRKS5_.exit.i %__cur.08.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %call5.i.i.i.i2.i.i21, %_ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataIbEESaIS4_EEC2EmRKS5_.exit.i ] %__n.addr.07.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %conv, %_ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataIbEESaIS4_EEC2EmRKS5_.exit.i ] - %42 = getelementptr inbounds i8, ptr %__cur.08.i.i.i.i.i, i64 24 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %42, i8 0, i64 12, i1 false) + %42 = getelementptr inbounds i8, ptr %__cur.08.i.i.i.i.i, i64 20 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %42, i8 0, i64 16, i1 false) store i64 9223372034707292159, ptr %__cur.08.i.i.i.i.i, align 4 %tmp.coerce.sroa.2.0.coerce.dive2.sroa_idx.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.08.i.i.i.i.i, i64 8 store i32 2147483647, ptr %tmp.coerce.sroa.2.0.coerce.dive2.sroa_idx.i.i.i.i.i.i.i.i, align 4 %mMax.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.08.i.i.i.i.i, i64 12 store i64 -9223372034707292160, ptr %mMax.i.i.i.i.i.i.i.i, align 4 - %tmp.coerce6.sroa.2.0.coerce.dive5.sroa_idx.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.08.i.i.i.i.i, i64 20 - store i32 -2147483648, ptr %tmp.coerce6.sroa.2.0.coerce.dive5.sroa_idx.i.i.i.i.i.i.i.i, align 4 + store i32 -2147483648, ptr %42, align 4 %dec.i.i.i.i.i = add nsw i64 %__n.addr.07.i.i.i.i.i, -1 %incdec.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.08.i.i.i.i.i, i64 36 %cmp.not.i.i.i.i.i = icmp eq i64 %dec.i.i.i.i.i, 0 @@ -181664,15 +181662,14 @@ _ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataIiEESaIS4_EEC2EmRKS5_.exit.i: for.inc.i.i.i.i.i: ; preds = %for.inc.i.i.i.i.i, %_ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataIiEESaIS4_EEC2EmRKS5_.exit.i %__cur.08.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %call5.i.i.i.i2.i.i70, %_ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataIiEESaIS4_EEC2EmRKS5_.exit.i ] %__n.addr.07.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %conv, %_ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataIiEESaIS4_EEC2EmRKS5_.exit.i ] - %51 = getelementptr inbounds i8, ptr %__cur.08.i.i.i.i.i, i64 24 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %51, i8 0, i64 12, i1 false) + %51 = getelementptr inbounds i8, ptr %__cur.08.i.i.i.i.i, i64 20 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %51, i8 0, i64 16, i1 false) store i64 9223372034707292159, ptr %__cur.08.i.i.i.i.i, align 4 %tmp.coerce.sroa.2.0.coerce.dive2.sroa_idx.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.08.i.i.i.i.i, i64 8 store i32 2147483647, ptr %tmp.coerce.sroa.2.0.coerce.dive2.sroa_idx.i.i.i.i.i.i.i.i, align 4 %mMax.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.08.i.i.i.i.i, i64 12 store i64 -9223372034707292160, ptr %mMax.i.i.i.i.i.i.i.i, align 4 - %tmp.coerce6.sroa.2.0.coerce.dive5.sroa_idx.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.08.i.i.i.i.i, i64 20 - store i32 -2147483648, ptr %tmp.coerce6.sroa.2.0.coerce.dive5.sroa_idx.i.i.i.i.i.i.i.i, align 4 + store i32 -2147483648, ptr %51, align 4 %dec.i.i.i.i.i = add nsw i64 %__n.addr.07.i.i.i.i.i, -1 %incdec.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.08.i.i.i.i.i, i64 36 %cmp.not.i.i.i.i.i = icmp eq i64 %dec.i.i.i.i.i, 0 @@ -182074,15 +182071,14 @@ _ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataIiEESaIS4_EEC2EmRKS5_.exit.i: for.inc.i.i.i.i.i: ; preds = %for.inc.i.i.i.i.i, %_ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataIiEESaIS4_EEC2EmRKS5_.exit.i %__cur.08.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %call5.i.i.i.i2.i.i21, %_ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataIiEESaIS4_EEC2EmRKS5_.exit.i ] %__n.addr.07.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %conv, %_ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataIiEESaIS4_EEC2EmRKS5_.exit.i ] - %42 = getelementptr inbounds i8, ptr %__cur.08.i.i.i.i.i, i64 24 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %42, i8 0, i64 12, i1 false) + %42 = getelementptr inbounds i8, ptr %__cur.08.i.i.i.i.i, i64 20 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %42, i8 0, i64 16, i1 false) store i64 9223372034707292159, ptr %__cur.08.i.i.i.i.i, align 4 %tmp.coerce.sroa.2.0.coerce.dive2.sroa_idx.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.08.i.i.i.i.i, i64 8 store i32 2147483647, ptr %tmp.coerce.sroa.2.0.coerce.dive2.sroa_idx.i.i.i.i.i.i.i.i, align 4 %mMax.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.08.i.i.i.i.i, i64 12 store i64 -9223372034707292160, ptr %mMax.i.i.i.i.i.i.i.i, align 4 - %tmp.coerce6.sroa.2.0.coerce.dive5.sroa_idx.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.08.i.i.i.i.i, i64 20 - store i32 -2147483648, ptr %tmp.coerce6.sroa.2.0.coerce.dive5.sroa_idx.i.i.i.i.i.i.i.i, align 4 + store i32 -2147483648, ptr %42, align 4 %dec.i.i.i.i.i = add nsw i64 %__n.addr.07.i.i.i.i.i, -1 %incdec.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.08.i.i.i.i.i, i64 36 %cmp.not.i.i.i.i.i = icmp eq i64 %dec.i.i.i.i.i, 0 @@ -187740,15 +187736,14 @@ _ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataIfEESaIS4_EEC2EmRKS5_.exit.i: for.inc.i.i.i.i.i: ; preds = %for.inc.i.i.i.i.i, %_ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataIfEESaIS4_EEC2EmRKS5_.exit.i %__cur.08.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %call5.i.i.i.i2.i.i70, %_ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataIfEESaIS4_EEC2EmRKS5_.exit.i ] %__n.addr.07.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %conv, %_ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataIfEESaIS4_EEC2EmRKS5_.exit.i ] - %51 = getelementptr inbounds i8, ptr %__cur.08.i.i.i.i.i, i64 24 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %51, i8 0, i64 12, i1 false) + %51 = getelementptr inbounds i8, ptr %__cur.08.i.i.i.i.i, i64 20 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %51, i8 0, i64 16, i1 false) store i64 9223372034707292159, ptr %__cur.08.i.i.i.i.i, align 4 %tmp.coerce.sroa.2.0.coerce.dive2.sroa_idx.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.08.i.i.i.i.i, i64 8 store i32 2147483647, ptr %tmp.coerce.sroa.2.0.coerce.dive2.sroa_idx.i.i.i.i.i.i.i.i, align 4 %mMax.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.08.i.i.i.i.i, i64 12 store i64 -9223372034707292160, ptr %mMax.i.i.i.i.i.i.i.i, align 4 - %tmp.coerce6.sroa.2.0.coerce.dive5.sroa_idx.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.08.i.i.i.i.i, i64 20 - store i32 -2147483648, ptr %tmp.coerce6.sroa.2.0.coerce.dive5.sroa_idx.i.i.i.i.i.i.i.i, align 4 + store i32 -2147483648, ptr %51, align 4 %dec.i.i.i.i.i = add nsw i64 %__n.addr.07.i.i.i.i.i, -1 %incdec.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.08.i.i.i.i.i, i64 36 %cmp.not.i.i.i.i.i = icmp eq i64 %dec.i.i.i.i.i, 0 @@ -188150,15 +188145,14 @@ _ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataIfEESaIS4_EEC2EmRKS5_.exit.i: for.inc.i.i.i.i.i: ; preds = %for.inc.i.i.i.i.i, %_ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataIfEESaIS4_EEC2EmRKS5_.exit.i %__cur.08.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %call5.i.i.i.i2.i.i21, %_ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataIfEESaIS4_EEC2EmRKS5_.exit.i ] %__n.addr.07.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %conv, %_ZNSt12_Vector_baseIN7openvdb5v11_05tools8TileDataIfEESaIS4_EEC2EmRKS5_.exit.i ] - %42 = getelementptr inbounds i8, ptr %__cur.08.i.i.i.i.i, i64 24 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %42, i8 0, i64 12, i1 false) + %42 = getelementptr inbounds i8, ptr %__cur.08.i.i.i.i.i, i64 20 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(36) %42, i8 0, i64 16, i1 false) store i64 9223372034707292159, ptr %__cur.08.i.i.i.i.i, align 4 %tmp.coerce.sroa.2.0.coerce.dive2.sroa_idx.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.08.i.i.i.i.i, i64 8 store i32 2147483647, ptr %tmp.coerce.sroa.2.0.coerce.dive2.sroa_idx.i.i.i.i.i.i.i.i, align 4 %mMax.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.08.i.i.i.i.i, i64 12 store i64 -9223372034707292160, ptr %mMax.i.i.i.i.i.i.i.i, align 4 - %tmp.coerce6.sroa.2.0.coerce.dive5.sroa_idx.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.08.i.i.i.i.i, i64 20 - store i32 -2147483648, ptr %tmp.coerce6.sroa.2.0.coerce.dive5.sroa_idx.i.i.i.i.i.i.i.i, align 4 + store i32 -2147483648, ptr %42, align 4 %dec.i.i.i.i.i = add nsw i64 %__n.addr.07.i.i.i.i.i, -1 %incdec.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.08.i.i.i.i.i, i64 36 %cmp.not.i.i.i.i.i = icmp eq i64 %dec.i.i.i.i.i, 0 diff --git a/bench/openvdb/optimized/LevelSetFracture.cc.ll b/bench/openvdb/optimized/LevelSetFracture.cc.ll index 8e529e5e32f..629650e752c 100644 --- a/bench/openvdb/optimized/LevelSetFracture.cc.ll +++ b/bench/openvdb/optimized/LevelSetFracture.cc.ll @@ -6645,6 +6645,7 @@ declare void @_ZN7openvdb5v11_04math9Transform13postTranslateERKNS1_4Vec3IdEE(pt ; Function Attrs: mustprogress uwtable define linkonce_odr void @_ZN7openvdb5v11_05tools17doResampleToMatchINS1_10BoxSamplerENS0_4util15NullInterrupterENS0_4GridINS0_4tree4TreeINS7_8RootNodeINS7_12InternalNodeINSA_INS7_8LeafNodeIfLj3EEELj4EEELj5EEEEEEEEEEEvRKT1_RSI_RT0_(ptr noundef nonnull align 8 dereferenceable(88) %inGrid, ptr noundef nonnull align 8 dereferenceable(88) %outGrid, ptr noundef nonnull align 8 dereferenceable(8) %interrupter) local_unnamed_addr #8 comdat personality ptr @__gxx_personality_v0 { entry: + %ref.tmp.i.i164.sroa.4 = alloca [24 x i8], align 8 %__tmp.sroa.0.i.i.i.i = alloca { i64, i64 }, align 8 %ref.tmp.i.i = alloca %"class.std::function.696", align 8 %m0.i.i = alloca %"class.openvdb::v11_0::math::Mat4", align 8 @@ -7252,7 +7253,7 @@ _ZNSt10shared_ptrIKN7openvdb5v11_04math7MapBaseEED2Ev.exit154: ; preds = %_ZNSt1 %mInterrupt.i = getelementptr inbounds i8, ptr %transformer, i64 16 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i.i) %119 = getelementptr inbounds i8, ptr %ref.tmp.i.i, i64 8 - store i64 0, ptr %119, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %119, i8 0, i64 24, i1 false) %call.i.i2.i.i.i156 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #26 to label %call.i.i2.i.i.i.noexc unwind label %lpad39 @@ -7360,6 +7361,8 @@ if.else43: ; preds = %land.rhs.i, %land.e store i8 1, ptr %mTransformTiles.i, align 1 %mInterrupt.i162 = getelementptr inbounds i8, ptr %resampler, i64 16 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %mInterrupt.i162, i8 0, i64 32, i1 false) + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %ref.tmp.i.i164.sroa.4) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp.i.i164.sroa.4, i8 0, i64 24, i1 false) %call.i.i2.i.i.i177 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #26 to label %invoke.cont45 unwind label %lpad44 @@ -7374,7 +7377,8 @@ invoke.cont45: ; preds = %if.else43 store i64 %134, ptr %133, align 8 store ptr %call.i.i2.i.i.i177, ptr %mInterrupt.i162, align 8 %ref.tmp.i.i164.sroa.4.0.mInterrupt.i162.sroa_idx = getelementptr inbounds i8, ptr %resampler, i64 24 - store i64 0, ptr %ref.tmp.i.i164.sroa.4.0.mInterrupt.i162.sroa_idx, align 8 + %135 = load i64, ptr %ref.tmp.i.i164.sroa.4, align 8 + store i64 %135, ptr %ref.tmp.i.i164.sroa.4.0.mInterrupt.i162.sroa_idx, align 8 %_M_manager3.i.i.i170 = getelementptr inbounds i8, ptr %resampler, i64 32 store ptr @_ZNSt17_Function_handlerIFbvESt5_BindIFMN7openvdb5v11_04util15NullInterrupterEFbiEPS5_iEEE10_M_managerERSt9_Any_dataRKSC_St18_Manager_operation, ptr %_M_manager3.i.i.i170, align 8 %_M_invoker4.i.i.i171 = getelementptr inbounds i8, ptr %resampler, i64 40 @@ -7383,6 +7387,7 @@ invoke.cont45: ; preds = %if.else43 %.pre185 = load ptr, ptr %mTree.i3.i.phi.trans.insert, align 8 %mTree.i.i.phi.trans.insert = getelementptr inbounds i8, ptr %outGrid, i64 72 %.pre = load ptr, ptr %mTree.i.i.phi.trans.insert, align 8 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %ref.tmp.i.i164.sroa.4) %mBackground.i.i.i.i = getelementptr inbounds i8, ptr %.pre185, i64 56 invoke void @_ZN7openvdb5v11_05tools16changeBackgroundINS0_4tree4TreeINS3_8RootNodeINS3_12InternalNodeINS6_INS3_8LeafNodeIfLj3EEELj4EEELj5EEEEEEEEEvRT_RKNSD_9ValueTypeEbm(ptr noundef nonnull align 8 dereferenceable(1232) %.pre, ptr noundef nonnull align 4 dereferenceable(4) %mBackground.i.i.i.i, i1 noundef zeroext true, i64 noundef 32) to label %.noexc unwind label %lpad44 @@ -7393,23 +7398,23 @@ invoke.cont45: ; preds = %if.else43 invoke.cont46: ; preds = %.noexc store ptr getelementptr inbounds (i8, ptr @_ZTVN7openvdb5v11_05tools13GridResamplerE, i64 16), ptr %resampler, align 8 - %135 = load ptr, ptr %_M_manager3.i.i.i170, align 8 - %tobool.not.i.i.i = icmp eq ptr %135, null + %136 = load ptr, ptr %_M_manager3.i.i.i170, align 8 + %tobool.not.i.i.i = icmp eq ptr %136, null br i1 %tobool.not.i.i.i, label %if.end48, label %if.then.i.i.i180 if.then.i.i.i180: ; preds = %invoke.cont46 - %call.i.i.i = invoke noundef zeroext i1 %135(ptr noundef nonnull align 8 dereferenceable(16) %mInterrupt.i162, ptr noundef nonnull align 8 dereferenceable(16) %mInterrupt.i162, i32 noundef 3) + %call.i.i.i = invoke noundef zeroext i1 %136(ptr noundef nonnull align 8 dereferenceable(16) %mInterrupt.i162, ptr noundef nonnull align 8 dereferenceable(16) %mInterrupt.i162, i32 noundef 3) to label %if.end48 unwind label %terminate.lpad.i.i.i terminate.lpad.i.i.i: ; preds = %if.then.i.i.i180 - %136 = landingpad { ptr, i32 } + %137 = landingpad { ptr, i32 } catch ptr null - %137 = extractvalue { ptr, i32 } %136, 0 - call void @__clang_call_terminate(ptr %137) #29 + %138 = extractvalue { ptr, i32 } %137, 0 + call void @__clang_call_terminate(ptr %138) #29 unreachable lpad44: ; preds = %.noexc, %invoke.cont45, %if.else43 - %138 = landingpad { ptr, i32 } + %139 = landingpad { ptr, i32 } cleanup call void @_ZN7openvdb5v11_05tools13GridResamplerD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %resampler) #19 br label %eh.resume @@ -7418,13 +7423,14 @@ if.end48: ; preds = %if.then.i.i.i180, % ret void eh.resume: ; preds = %lpad44, %lpad39, %ehcleanup38, %lpad - %.pn10 = phi { ptr, i32 } [ %21, %lpad ], [ %132, %lpad39 ], [ %.pn.pn, %ehcleanup38 ], [ %138, %lpad44 ] + %.pn10 = phi { ptr, i32 } [ %21, %lpad ], [ %132, %lpad39 ], [ %.pn.pn, %ehcleanup38 ], [ %139, %lpad44 ] resume { ptr, i32 } %.pn10 } ; Function Attrs: mustprogress uwtable define linkonce_odr void @_ZN7openvdb5v11_05tools17doResampleToMatchINS1_12PointSamplerENS0_4util15NullInterrupterENS0_4GridINS0_4tree4TreeINS7_8RootNodeINS7_12InternalNodeINSA_INS7_8LeafNodeIfLj3EEELj4EEELj5EEEEEEEEEEEvRKT1_RSI_RT0_(ptr noundef nonnull align 8 dereferenceable(88) %inGrid, ptr noundef nonnull align 8 dereferenceable(88) %outGrid, ptr noundef nonnull align 8 dereferenceable(8) %interrupter) local_unnamed_addr #8 comdat personality ptr @__gxx_personality_v0 { entry: + %ref.tmp.i.i167.sroa.4 = alloca [24 x i8], align 8 %xform.i = alloca %"struct.openvdb::v11_0::tools::GridTransformer::MatrixTransform", align 8 %__tmp.sroa.0.i.i.i.i = alloca { i64, i64 }, align 8 %ref.tmp.i.i = alloca %"class.std::function.696", align 8 @@ -8033,7 +8039,7 @@ _ZNSt10shared_ptrIKN7openvdb5v11_04math7MapBaseEED2Ev.exit154: ; preds = %_ZNSt1 %mInterrupt.i = getelementptr inbounds i8, ptr %transformer, i64 16 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i.i) %119 = getelementptr inbounds i8, ptr %ref.tmp.i.i, i64 8 - store i64 0, ptr %119, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %119, i8 0, i64 24, i1 false) %call.i.i2.i.i.i156 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #26 to label %call.i.i2.i.i.i.noexc unwind label %lpad34 @@ -8159,6 +8165,8 @@ if.else38: ; preds = %land.rhs.i, %land.e store i8 1, ptr %mTransformTiles.i, align 1 %mInterrupt.i165 = getelementptr inbounds i8, ptr %resampler, i64 16 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %mInterrupt.i165, i8 0, i64 32, i1 false) + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %ref.tmp.i.i167.sroa.4) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp.i.i167.sroa.4, i8 0, i64 24, i1 false) %call.i.i2.i.i.i180 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #26 to label %invoke.cont40 unwind label %lpad39 @@ -8173,7 +8181,8 @@ invoke.cont40: ; preds = %if.else38 store i64 %136, ptr %135, align 8 store ptr %call.i.i2.i.i.i180, ptr %mInterrupt.i165, align 8 %ref.tmp.i.i167.sroa.4.0.mInterrupt.i165.sroa_idx = getelementptr inbounds i8, ptr %resampler, i64 24 - store i64 0, ptr %ref.tmp.i.i167.sroa.4.0.mInterrupt.i165.sroa_idx, align 8 + %137 = load i64, ptr %ref.tmp.i.i167.sroa.4, align 8 + store i64 %137, ptr %ref.tmp.i.i167.sroa.4.0.mInterrupt.i165.sroa_idx, align 8 %_M_manager3.i.i.i173 = getelementptr inbounds i8, ptr %resampler, i64 32 store ptr @_ZNSt17_Function_handlerIFbvESt5_BindIFMN7openvdb5v11_04util15NullInterrupterEFbiEPS5_iEEE10_M_managerERSt9_Any_dataRKSC_St18_Manager_operation, ptr %_M_manager3.i.i.i173, align 8 %_M_invoker4.i.i.i174 = getelementptr inbounds i8, ptr %resampler, i64 40 @@ -8182,6 +8191,7 @@ invoke.cont40: ; preds = %if.else38 %.pre191 = load ptr, ptr %mTree.i3.i.phi.trans.insert, align 8 %mTree.i.i182.phi.trans.insert = getelementptr inbounds i8, ptr %outGrid, i64 72 %.pre = load ptr, ptr %mTree.i.i182.phi.trans.insert, align 8 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %ref.tmp.i.i167.sroa.4) %mBackground.i.i.i.i183 = getelementptr inbounds i8, ptr %.pre191, i64 56 invoke void @_ZN7openvdb5v11_05tools16changeBackgroundINS0_4tree4TreeINS3_8RootNodeINS3_12InternalNodeINS6_INS3_8LeafNodeIfLj3EEELj4EEELj5EEEEEEEEEvRT_RKNSD_9ValueTypeEbm(ptr noundef nonnull align 8 dereferenceable(1232) %.pre, ptr noundef nonnull align 4 dereferenceable(4) %mBackground.i.i.i.i183, i1 noundef zeroext true, i64 noundef 32) to label %.noexc184 unwind label %lpad39 @@ -8192,23 +8202,23 @@ invoke.cont40: ; preds = %if.else38 invoke.cont41: ; preds = %.noexc184 store ptr getelementptr inbounds (i8, ptr @_ZTVN7openvdb5v11_05tools13GridResamplerE, i64 16), ptr %resampler, align 8 - %137 = load ptr, ptr %_M_manager3.i.i.i173, align 8 - %tobool.not.i.i.i = icmp eq ptr %137, null + %138 = load ptr, ptr %_M_manager3.i.i.i173, align 8 + %tobool.not.i.i.i = icmp eq ptr %138, null br i1 %tobool.not.i.i.i, label %if.end43, label %if.then.i.i.i186 if.then.i.i.i186: ; preds = %invoke.cont41 - %call.i.i.i = invoke noundef zeroext i1 %137(ptr noundef nonnull align 8 dereferenceable(16) %mInterrupt.i165, ptr noundef nonnull align 8 dereferenceable(16) %mInterrupt.i165, i32 noundef 3) + %call.i.i.i = invoke noundef zeroext i1 %138(ptr noundef nonnull align 8 dereferenceable(16) %mInterrupt.i165, ptr noundef nonnull align 8 dereferenceable(16) %mInterrupt.i165, i32 noundef 3) to label %if.end43 unwind label %terminate.lpad.i.i.i terminate.lpad.i.i.i: ; preds = %if.then.i.i.i186 - %138 = landingpad { ptr, i32 } + %139 = landingpad { ptr, i32 } catch ptr null - %139 = extractvalue { ptr, i32 } %138, 0 - call void @__clang_call_terminate(ptr %139) #29 + %140 = extractvalue { ptr, i32 } %139, 0 + call void @__clang_call_terminate(ptr %140) #29 unreachable lpad39: ; preds = %.noexc184, %invoke.cont40, %if.else38 - %140 = landingpad { ptr, i32 } + %141 = landingpad { ptr, i32 } cleanup call void @_ZN7openvdb5v11_05tools13GridResamplerD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %resampler) #19 br label %eh.resume @@ -8217,7 +8227,7 @@ if.end43: ; preds = %if.then.i.i.i186, % ret void eh.resume: ; preds = %lpad39, %lpad34, %ehcleanup33, %lpad - %.pn10 = phi { ptr, i32 } [ %21, %lpad ], [ %134, %lpad34 ], [ %.pn.pn, %ehcleanup33 ], [ %140, %lpad39 ] + %.pn10 = phi { ptr, i32 } [ %21, %lpad ], [ %134, %lpad34 ], [ %.pn.pn, %ehcleanup33 ], [ %141, %lpad39 ] resume { ptr, i32 } %.pn10 } @@ -10775,6 +10785,7 @@ ehcleanup: ; preds = %lpad, %lpad3.i.i.i. ; Function Attrs: mustprogress uwtable define linkonce_odr void @_ZN7openvdb5v11_05tools17doResampleToMatchINS1_10BoxSamplerENS0_4util15NullInterrupterENS0_4GridINS0_4tree4TreeINS7_8RootNodeINS7_12InternalNodeINSA_INS7_8LeafNodeIdLj3EEELj4EEELj5EEEEEEEEEEEvRKT1_RSI_RT0_(ptr noundef nonnull align 8 dereferenceable(88) %inGrid, ptr noundef nonnull align 8 dereferenceable(88) %outGrid, ptr noundef nonnull align 8 dereferenceable(8) %interrupter) local_unnamed_addr #8 comdat personality ptr @__gxx_personality_v0 { entry: + %ref.tmp.i.i164.sroa.4 = alloca [24 x i8], align 8 %__tmp.sroa.0.i.i.i.i = alloca { i64, i64 }, align 8 %ref.tmp.i.i = alloca %"class.std::function.696", align 8 %m0.i.i = alloca %"class.openvdb::v11_0::math::Mat4", align 8 @@ -11382,7 +11393,7 @@ _ZNSt10shared_ptrIKN7openvdb5v11_04math7MapBaseEED2Ev.exit154: ; preds = %_ZNSt1 %mInterrupt.i = getelementptr inbounds i8, ptr %transformer, i64 16 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i.i) %119 = getelementptr inbounds i8, ptr %ref.tmp.i.i, i64 8 - store i64 0, ptr %119, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %119, i8 0, i64 24, i1 false) %call.i.i2.i.i.i156 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #26 to label %call.i.i2.i.i.i.noexc unwind label %lpad34 @@ -11490,6 +11501,8 @@ if.else38: ; preds = %land.rhs.i, %land.e store i8 1, ptr %mTransformTiles.i, align 1 %mInterrupt.i162 = getelementptr inbounds i8, ptr %resampler, i64 16 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %mInterrupt.i162, i8 0, i64 32, i1 false) + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %ref.tmp.i.i164.sroa.4) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp.i.i164.sroa.4, i8 0, i64 24, i1 false) %call.i.i2.i.i.i177 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #26 to label %invoke.cont40 unwind label %lpad39 @@ -11504,7 +11517,8 @@ invoke.cont40: ; preds = %if.else38 store i64 %134, ptr %133, align 8 store ptr %call.i.i2.i.i.i177, ptr %mInterrupt.i162, align 8 %ref.tmp.i.i164.sroa.4.0.mInterrupt.i162.sroa_idx = getelementptr inbounds i8, ptr %resampler, i64 24 - store i64 0, ptr %ref.tmp.i.i164.sroa.4.0.mInterrupt.i162.sroa_idx, align 8 + %135 = load i64, ptr %ref.tmp.i.i164.sroa.4, align 8 + store i64 %135, ptr %ref.tmp.i.i164.sroa.4.0.mInterrupt.i162.sroa_idx, align 8 %_M_manager3.i.i.i170 = getelementptr inbounds i8, ptr %resampler, i64 32 store ptr @_ZNSt17_Function_handlerIFbvESt5_BindIFMN7openvdb5v11_04util15NullInterrupterEFbiEPS5_iEEE10_M_managerERSt9_Any_dataRKSC_St18_Manager_operation, ptr %_M_manager3.i.i.i170, align 8 %_M_invoker4.i.i.i171 = getelementptr inbounds i8, ptr %resampler, i64 40 @@ -11513,6 +11527,7 @@ invoke.cont40: ; preds = %if.else38 %.pre185 = load ptr, ptr %mTree.i3.i.phi.trans.insert, align 8 %mTree.i.i.phi.trans.insert = getelementptr inbounds i8, ptr %outGrid, i64 72 %.pre = load ptr, ptr %mTree.i.i.phi.trans.insert, align 8 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %ref.tmp.i.i164.sroa.4) %mBackground.i.i.i.i = getelementptr inbounds i8, ptr %.pre185, i64 56 invoke void @_ZN7openvdb5v11_05tools16changeBackgroundINS0_4tree4TreeINS3_8RootNodeINS3_12InternalNodeINS6_INS3_8LeafNodeIdLj3EEELj4EEELj5EEEEEEEEEvRT_RKNSD_9ValueTypeEbm(ptr noundef nonnull align 8 dereferenceable(1232) %.pre, ptr noundef nonnull align 8 dereferenceable(8) %mBackground.i.i.i.i, i1 noundef zeroext true, i64 noundef 32) to label %.noexc unwind label %lpad39 @@ -11523,23 +11538,23 @@ invoke.cont40: ; preds = %if.else38 invoke.cont41: ; preds = %.noexc store ptr getelementptr inbounds (i8, ptr @_ZTVN7openvdb5v11_05tools13GridResamplerE, i64 16), ptr %resampler, align 8 - %135 = load ptr, ptr %_M_manager3.i.i.i170, align 8 - %tobool.not.i.i.i = icmp eq ptr %135, null + %136 = load ptr, ptr %_M_manager3.i.i.i170, align 8 + %tobool.not.i.i.i = icmp eq ptr %136, null br i1 %tobool.not.i.i.i, label %if.end43, label %if.then.i.i.i180 if.then.i.i.i180: ; preds = %invoke.cont41 - %call.i.i.i = invoke noundef zeroext i1 %135(ptr noundef nonnull align 8 dereferenceable(16) %mInterrupt.i162, ptr noundef nonnull align 8 dereferenceable(16) %mInterrupt.i162, i32 noundef 3) + %call.i.i.i = invoke noundef zeroext i1 %136(ptr noundef nonnull align 8 dereferenceable(16) %mInterrupt.i162, ptr noundef nonnull align 8 dereferenceable(16) %mInterrupt.i162, i32 noundef 3) to label %if.end43 unwind label %terminate.lpad.i.i.i terminate.lpad.i.i.i: ; preds = %if.then.i.i.i180 - %136 = landingpad { ptr, i32 } + %137 = landingpad { ptr, i32 } catch ptr null - %137 = extractvalue { ptr, i32 } %136, 0 - call void @__clang_call_terminate(ptr %137) #29 + %138 = extractvalue { ptr, i32 } %137, 0 + call void @__clang_call_terminate(ptr %138) #29 unreachable lpad39: ; preds = %.noexc, %invoke.cont40, %if.else38 - %138 = landingpad { ptr, i32 } + %139 = landingpad { ptr, i32 } cleanup call void @_ZN7openvdb5v11_05tools13GridResamplerD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %resampler) #19 br label %eh.resume @@ -11548,13 +11563,14 @@ if.end43: ; preds = %if.then.i.i.i180, % ret void eh.resume: ; preds = %lpad39, %lpad34, %ehcleanup33, %lpad - %.pn10 = phi { ptr, i32 } [ %21, %lpad ], [ %132, %lpad34 ], [ %.pn.pn, %ehcleanup33 ], [ %138, %lpad39 ] + %.pn10 = phi { ptr, i32 } [ %21, %lpad ], [ %132, %lpad34 ], [ %.pn.pn, %ehcleanup33 ], [ %139, %lpad39 ] resume { ptr, i32 } %.pn10 } ; Function Attrs: mustprogress uwtable define linkonce_odr void @_ZN7openvdb5v11_05tools17doResampleToMatchINS1_12PointSamplerENS0_4util15NullInterrupterENS0_4GridINS0_4tree4TreeINS7_8RootNodeINS7_12InternalNodeINSA_INS7_8LeafNodeIdLj3EEELj4EEELj5EEEEEEEEEEEvRKT1_RSI_RT0_(ptr noundef nonnull align 8 dereferenceable(88) %inGrid, ptr noundef nonnull align 8 dereferenceable(88) %outGrid, ptr noundef nonnull align 8 dereferenceable(8) %interrupter) local_unnamed_addr #8 comdat personality ptr @__gxx_personality_v0 { entry: + %ref.tmp.i.i167.sroa.4 = alloca [24 x i8], align 8 %xform.i = alloca %"struct.openvdb::v11_0::tools::GridTransformer::MatrixTransform", align 8 %__tmp.sroa.0.i.i.i.i = alloca { i64, i64 }, align 8 %ref.tmp.i.i = alloca %"class.std::function.696", align 8 @@ -12163,7 +12179,7 @@ _ZNSt10shared_ptrIKN7openvdb5v11_04math7MapBaseEED2Ev.exit154: ; preds = %_ZNSt1 %mInterrupt.i = getelementptr inbounds i8, ptr %transformer, i64 16 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i.i) %119 = getelementptr inbounds i8, ptr %ref.tmp.i.i, i64 8 - store i64 0, ptr %119, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %119, i8 0, i64 24, i1 false) %call.i.i2.i.i.i156 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #26 to label %call.i.i2.i.i.i.noexc unwind label %lpad34 @@ -12289,6 +12305,8 @@ if.else38: ; preds = %land.rhs.i, %land.e store i8 1, ptr %mTransformTiles.i, align 1 %mInterrupt.i165 = getelementptr inbounds i8, ptr %resampler, i64 16 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %mInterrupt.i165, i8 0, i64 32, i1 false) + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %ref.tmp.i.i167.sroa.4) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp.i.i167.sroa.4, i8 0, i64 24, i1 false) %call.i.i2.i.i.i180 = invoke noalias noundef nonnull dereferenceable(32) ptr @_Znwm(i64 noundef 32) #26 to label %invoke.cont40 unwind label %lpad39 @@ -12303,7 +12321,8 @@ invoke.cont40: ; preds = %if.else38 store i64 %136, ptr %135, align 8 store ptr %call.i.i2.i.i.i180, ptr %mInterrupt.i165, align 8 %ref.tmp.i.i167.sroa.4.0.mInterrupt.i165.sroa_idx = getelementptr inbounds i8, ptr %resampler, i64 24 - store i64 0, ptr %ref.tmp.i.i167.sroa.4.0.mInterrupt.i165.sroa_idx, align 8 + %137 = load i64, ptr %ref.tmp.i.i167.sroa.4, align 8 + store i64 %137, ptr %ref.tmp.i.i167.sroa.4.0.mInterrupt.i165.sroa_idx, align 8 %_M_manager3.i.i.i173 = getelementptr inbounds i8, ptr %resampler, i64 32 store ptr @_ZNSt17_Function_handlerIFbvESt5_BindIFMN7openvdb5v11_04util15NullInterrupterEFbiEPS5_iEEE10_M_managerERSt9_Any_dataRKSC_St18_Manager_operation, ptr %_M_manager3.i.i.i173, align 8 %_M_invoker4.i.i.i174 = getelementptr inbounds i8, ptr %resampler, i64 40 @@ -12312,6 +12331,7 @@ invoke.cont40: ; preds = %if.else38 %.pre191 = load ptr, ptr %mTree.i3.i.phi.trans.insert, align 8 %mTree.i.i182.phi.trans.insert = getelementptr inbounds i8, ptr %outGrid, i64 72 %.pre = load ptr, ptr %mTree.i.i182.phi.trans.insert, align 8 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %ref.tmp.i.i167.sroa.4) %mBackground.i.i.i.i183 = getelementptr inbounds i8, ptr %.pre191, i64 56 invoke void @_ZN7openvdb5v11_05tools16changeBackgroundINS0_4tree4TreeINS3_8RootNodeINS3_12InternalNodeINS6_INS3_8LeafNodeIdLj3EEELj4EEELj5EEEEEEEEEvRT_RKNSD_9ValueTypeEbm(ptr noundef nonnull align 8 dereferenceable(1232) %.pre, ptr noundef nonnull align 8 dereferenceable(8) %mBackground.i.i.i.i183, i1 noundef zeroext true, i64 noundef 32) to label %.noexc184 unwind label %lpad39 @@ -12322,23 +12342,23 @@ invoke.cont40: ; preds = %if.else38 invoke.cont41: ; preds = %.noexc184 store ptr getelementptr inbounds (i8, ptr @_ZTVN7openvdb5v11_05tools13GridResamplerE, i64 16), ptr %resampler, align 8 - %137 = load ptr, ptr %_M_manager3.i.i.i173, align 8 - %tobool.not.i.i.i = icmp eq ptr %137, null + %138 = load ptr, ptr %_M_manager3.i.i.i173, align 8 + %tobool.not.i.i.i = icmp eq ptr %138, null br i1 %tobool.not.i.i.i, label %if.end43, label %if.then.i.i.i186 if.then.i.i.i186: ; preds = %invoke.cont41 - %call.i.i.i = invoke noundef zeroext i1 %137(ptr noundef nonnull align 8 dereferenceable(16) %mInterrupt.i165, ptr noundef nonnull align 8 dereferenceable(16) %mInterrupt.i165, i32 noundef 3) + %call.i.i.i = invoke noundef zeroext i1 %138(ptr noundef nonnull align 8 dereferenceable(16) %mInterrupt.i165, ptr noundef nonnull align 8 dereferenceable(16) %mInterrupt.i165, i32 noundef 3) to label %if.end43 unwind label %terminate.lpad.i.i.i terminate.lpad.i.i.i: ; preds = %if.then.i.i.i186 - %138 = landingpad { ptr, i32 } + %139 = landingpad { ptr, i32 } catch ptr null - %139 = extractvalue { ptr, i32 } %138, 0 - call void @__clang_call_terminate(ptr %139) #29 + %140 = extractvalue { ptr, i32 } %139, 0 + call void @__clang_call_terminate(ptr %140) #29 unreachable lpad39: ; preds = %.noexc184, %invoke.cont40, %if.else38 - %140 = landingpad { ptr, i32 } + %141 = landingpad { ptr, i32 } cleanup call void @_ZN7openvdb5v11_05tools13GridResamplerD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %resampler) #19 br label %eh.resume @@ -12347,7 +12367,7 @@ if.end43: ; preds = %if.then.i.i.i186, % ret void eh.resume: ; preds = %lpad39, %lpad34, %ehcleanup33, %lpad - %.pn10 = phi { ptr, i32 } [ %21, %lpad ], [ %134, %lpad34 ], [ %.pn.pn, %ehcleanup33 ], [ %140, %lpad39 ] + %.pn10 = phi { ptr, i32 } [ %21, %lpad ], [ %134, %lpad34 ], [ %.pn.pn, %ehcleanup33 ], [ %141, %lpad39 ] resume { ptr, i32 } %.pn10 } @@ -36135,7 +36155,7 @@ sw.bb2: ; preds = %entry %_M_manager.i.i.i = getelementptr inbounds i8, ptr %ref.tmp.i, i64 16 %_M_invoker.i.i = getelementptr inbounds i8, ptr %ref.tmp.i, i64 24 %1 = getelementptr inbounds i8, ptr %ref.tmp.i, i64 8 - store i64 0, ptr %1, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %1, i8 0, i64 24, i1 false) %call.i.i2.i.i = tail call noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #26 store i64 ptrtoint (ptr @_ZN7openvdb5v11_04tree11LeafManagerIKNS1_4TreeINS1_8RootNodeINS1_12InternalNodeINS5_INS1_8LeafNodeIfLj3EEELj4EEELj5EEEEEEEE17doSyncAllBuffers1ERKN3tbb6detail2d113blocked_rangeImEE to i64), ptr %call.i.i2.i.i, align 8 %this.repack4.i.i.i.i.i = getelementptr inbounds i8, ptr %call.i.i2.i.i, i64 8 @@ -36178,7 +36198,7 @@ sw.bb4: ; preds = %entry %_M_manager.i.i.i11 = getelementptr inbounds i8, ptr %ref.tmp.i10, i64 16 %_M_invoker.i.i12 = getelementptr inbounds i8, ptr %ref.tmp.i10, i64 24 %6 = getelementptr inbounds i8, ptr %ref.tmp.i10, i64 8 - store i64 0, ptr %6, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %6, i8 0, i64 24, i1 false) %call.i.i2.i.i13 = tail call noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #26 store i64 ptrtoint (ptr @_ZN7openvdb5v11_04tree11LeafManagerIKNS1_4TreeINS1_8RootNodeINS1_12InternalNodeINS5_INS1_8LeafNodeIfLj3EEELj4EEELj5EEEEEEEE17doSyncAllBuffers2ERKN3tbb6detail2d113blocked_rangeImEE to i64), ptr %call.i.i2.i.i13, align 8 %this.repack4.i.i.i.i.i17 = getelementptr inbounds i8, ptr %call.i.i2.i.i13, i64 8 @@ -36221,7 +36241,7 @@ sw.default: ; preds = %entry %_M_manager.i.i.i31 = getelementptr inbounds i8, ptr %ref.tmp.i30, i64 16 %_M_invoker.i.i32 = getelementptr inbounds i8, ptr %ref.tmp.i30, i64 24 %11 = getelementptr inbounds i8, ptr %ref.tmp.i30, i64 8 - store i64 0, ptr %11, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %11, i8 0, i64 24, i1 false) %call.i.i2.i.i33 = tail call noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #26 store i64 ptrtoint (ptr @_ZN7openvdb5v11_04tree11LeafManagerIKNS1_4TreeINS1_8RootNodeINS1_12InternalNodeINS5_INS1_8LeafNodeIfLj3EEELj4EEELj5EEEEEEEE17doSyncAllBuffersNERKN3tbb6detail2d113blocked_rangeImEE to i64), ptr %call.i.i2.i.i33, align 8 %this.repack4.i.i.i.i.i37 = getelementptr inbounds i8, ptr %call.i.i2.i.i33, i64 8 @@ -158662,7 +158682,7 @@ sw.bb2: ; preds = %entry %_M_manager.i.i.i = getelementptr inbounds i8, ptr %ref.tmp.i, i64 16 %_M_invoker.i.i = getelementptr inbounds i8, ptr %ref.tmp.i, i64 24 %1 = getelementptr inbounds i8, ptr %ref.tmp.i, i64 8 - store i64 0, ptr %1, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %1, i8 0, i64 24, i1 false) %call.i.i2.i.i = tail call noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #26 store i64 ptrtoint (ptr @_ZN7openvdb5v11_04tree11LeafManagerIKNS1_4TreeINS1_8RootNodeINS1_12InternalNodeINS5_INS1_8LeafNodeIdLj3EEELj4EEELj5EEEEEEEE17doSyncAllBuffers1ERKN3tbb6detail2d113blocked_rangeImEE to i64), ptr %call.i.i2.i.i, align 8 %this.repack4.i.i.i.i.i = getelementptr inbounds i8, ptr %call.i.i2.i.i, i64 8 @@ -158705,7 +158725,7 @@ sw.bb4: ; preds = %entry %_M_manager.i.i.i11 = getelementptr inbounds i8, ptr %ref.tmp.i10, i64 16 %_M_invoker.i.i12 = getelementptr inbounds i8, ptr %ref.tmp.i10, i64 24 %6 = getelementptr inbounds i8, ptr %ref.tmp.i10, i64 8 - store i64 0, ptr %6, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %6, i8 0, i64 24, i1 false) %call.i.i2.i.i13 = tail call noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #26 store i64 ptrtoint (ptr @_ZN7openvdb5v11_04tree11LeafManagerIKNS1_4TreeINS1_8RootNodeINS1_12InternalNodeINS5_INS1_8LeafNodeIdLj3EEELj4EEELj5EEEEEEEE17doSyncAllBuffers2ERKN3tbb6detail2d113blocked_rangeImEE to i64), ptr %call.i.i2.i.i13, align 8 %this.repack4.i.i.i.i.i17 = getelementptr inbounds i8, ptr %call.i.i2.i.i13, i64 8 @@ -158748,7 +158768,7 @@ sw.default: ; preds = %entry %_M_manager.i.i.i31 = getelementptr inbounds i8, ptr %ref.tmp.i30, i64 16 %_M_invoker.i.i32 = getelementptr inbounds i8, ptr %ref.tmp.i30, i64 24 %11 = getelementptr inbounds i8, ptr %ref.tmp.i30, i64 8 - store i64 0, ptr %11, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %11, i8 0, i64 24, i1 false) %call.i.i2.i.i33 = tail call noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #26 store i64 ptrtoint (ptr @_ZN7openvdb5v11_04tree11LeafManagerIKNS1_4TreeINS1_8RootNodeINS1_12InternalNodeINS5_INS1_8LeafNodeIdLj3EEELj4EEELj5EEEEEEEE17doSyncAllBuffersNERKN3tbb6detail2d113blocked_rangeImEE to i64), ptr %call.i.i2.i.i33, align 8 %this.repack4.i.i.i.i.i37 = getelementptr inbounds i8, ptr %call.i.i2.i.i33, i64 8 diff --git a/bench/pbrt-v4/optimized/bssrdf.cpp.ll b/bench/pbrt-v4/optimized/bssrdf.cpp.ll index 694b75034c5..70a2f56fb83 100644 --- a/bench/pbrt-v4/optimized/bssrdf.cpp.ll +++ b/bench/pbrt-v4/optimized/bssrdf.cpp.ll @@ -578,8 +578,7 @@ for.end33: ; preds = %_ZN4pbrt7FastExpEf. %.lcssa = phi i64 [ 0, %for.cond12.preheader ], [ %18, %_ZN4pbrt7FastExpEf.exit ] %_M_manager.i.i = getelementptr inbounds i8, ptr %agg.tmp, i64 16 %_M_invoker.i = getelementptr inbounds i8, ptr %agg.tmp, i64 24 - %19 = getelementptr inbounds i8, ptr %agg.tmp, i64 8 - store i64 0, ptr %19, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp, i8 0, i64 16, i1 false) %call.i.i2.i = tail call noalias noundef nonnull dereferenceable(24) ptr @_Znwm(i64 noundef 24) #20 store ptr %t.addr, ptr %call.i.i2.i, align 16 %ref.tmp.sroa.2.0.call.i.i2.i.sroa_idx = getelementptr inbounds i8, ptr %call.i.i2.i, i64 8 @@ -592,87 +591,87 @@ for.end33: ; preds = %_ZN4pbrt7FastExpEf. call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %agg.tmp.i) %_M_manager.i.i.i = getelementptr inbounds i8, ptr %agg.tmp.i, i64 16 %_M_invoker.i.i = getelementptr inbounds i8, ptr %agg.tmp.i, i64 24 - %20 = getelementptr inbounds i8, ptr %agg.tmp.i, i64 8 - store i64 0, ptr %20, align 8 - %21 = ptrtoint ptr %agg.tmp to i64 - store i64 %21, ptr %agg.tmp.i, align 8 + %19 = getelementptr inbounds i8, ptr %agg.tmp.i, i64 8 + store i64 0, ptr %19, align 8 + %20 = ptrtoint ptr %agg.tmp to i64 + store i64 %20, ptr %agg.tmp.i, align 8 store ptr @_ZNSt17_Function_handlerIFvllEZN4pbrt11ParallelForEllSt8functionIFvlEEEUlllE_E9_M_invokeERKSt9_Any_dataOlSA_, ptr %_M_invoker.i.i, align 8 store ptr @_ZNSt17_Function_handlerIFvllEZN4pbrt11ParallelForEllSt8functionIFvlEEEUlllE_E10_M_managerERSt9_Any_dataRKS7_St18_Manager_operation, ptr %_M_manager.i.i.i, align 8 invoke void @_ZN4pbrt11ParallelForEllSt8functionIFvllEE(i64 noundef 0, i64 noundef %.lcssa, ptr noundef nonnull %agg.tmp.i) to label %invoke.cont.i unwind label %lpad.i invoke.cont.i: ; preds = %for.end33 - %22 = load ptr, ptr %_M_manager.i.i.i, align 8 - %tobool.not.i.i.i = icmp eq ptr %22, null + %21 = load ptr, ptr %_M_manager.i.i.i, align 8 + %tobool.not.i.i.i = icmp eq ptr %21, null br i1 %tobool.not.i.i.i, label %invoke.cont, label %if.then.i.i.i if.then.i.i.i: ; preds = %invoke.cont.i - %call.i.i.i = invoke noundef zeroext i1 %22(ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp.i, ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp.i, i32 noundef 3) + %call.i.i.i = invoke noundef zeroext i1 %21(ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp.i, ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp.i, i32 noundef 3) to label %invoke.cont unwind label %terminate.lpad.i.i.i terminate.lpad.i.i.i: ; preds = %if.then.i.i.i - %23 = landingpad { ptr, i32 } + %22 = landingpad { ptr, i32 } catch ptr null - %24 = extractvalue { ptr, i32 } %23, 0 - call void @__clang_call_terminate(ptr %24) #21 + %23 = extractvalue { ptr, i32 } %22, 0 + call void @__clang_call_terminate(ptr %23) #21 unreachable lpad.i: ; preds = %for.end33 - %25 = landingpad { ptr, i32 } + %24 = landingpad { ptr, i32 } cleanup - %26 = load ptr, ptr %_M_manager.i.i.i, align 8 - %tobool.not.i.i3.i = icmp eq ptr %26, null + %25 = load ptr, ptr %_M_manager.i.i.i, align 8 + %tobool.not.i.i3.i = icmp eq ptr %25, null br i1 %tobool.not.i.i3.i, label %lpad.body, label %if.then.i.i4.i if.then.i.i4.i: ; preds = %lpad.i - %call.i.i5.i = invoke noundef zeroext i1 %26(ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp.i, ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp.i, i32 noundef 3) + %call.i.i5.i = invoke noundef zeroext i1 %25(ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp.i, ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp.i, i32 noundef 3) to label %lpad.body unwind label %terminate.lpad.i.i6.i terminate.lpad.i.i6.i: ; preds = %if.then.i.i4.i - %27 = landingpad { ptr, i32 } + %26 = landingpad { ptr, i32 } catch ptr null - %28 = extractvalue { ptr, i32 } %27, 0 - call void @__clang_call_terminate(ptr %28) #21 + %27 = extractvalue { ptr, i32 } %26, 0 + call void @__clang_call_terminate(ptr %27) #21 unreachable invoke.cont: ; preds = %if.then.i.i.i, %invoke.cont.i call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %agg.tmp.i) - %29 = load ptr, ptr %_M_manager.i.i, align 8 - %tobool.not.i.i = icmp eq ptr %29, null + %28 = load ptr, ptr %_M_manager.i.i, align 8 + %tobool.not.i.i = icmp eq ptr %28, null br i1 %tobool.not.i.i, label %_ZNSt8functionIFvlEED2Ev.exit, label %if.then.i.i if.then.i.i: ; preds = %invoke.cont - %call.i.i = invoke noundef zeroext i1 %29(ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp, ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp, i32 noundef 3) + %call.i.i = invoke noundef zeroext i1 %28(ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp, ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp, i32 noundef 3) to label %_ZNSt8functionIFvlEED2Ev.exit unwind label %terminate.lpad.i.i terminate.lpad.i.i: ; preds = %if.then.i.i - %30 = landingpad { ptr, i32 } + %29 = landingpad { ptr, i32 } catch ptr null - %31 = extractvalue { ptr, i32 } %30, 0 - call void @__clang_call_terminate(ptr %31) #21 + %30 = extractvalue { ptr, i32 } %29, 0 + call void @__clang_call_terminate(ptr %30) #21 unreachable _ZNSt8functionIFvlEED2Ev.exit: ; preds = %invoke.cont, %if.then.i.i ret void lpad.body: ; preds = %lpad.i, %if.then.i.i4.i - %32 = load ptr, ptr %_M_manager.i.i, align 8 - %tobool.not.i.i22 = icmp eq ptr %32, null + %31 = load ptr, ptr %_M_manager.i.i, align 8 + %tobool.not.i.i22 = icmp eq ptr %31, null br i1 %tobool.not.i.i22, label %_ZNSt8functionIFvlEED2Ev.exit26, label %if.then.i.i23 if.then.i.i23: ; preds = %lpad.body - %call.i.i24 = invoke noundef zeroext i1 %32(ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp, ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp, i32 noundef 3) + %call.i.i24 = invoke noundef zeroext i1 %31(ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp, ptr noundef nonnull align 8 dereferenceable(16) %agg.tmp, i32 noundef 3) to label %_ZNSt8functionIFvlEED2Ev.exit26 unwind label %terminate.lpad.i.i25 terminate.lpad.i.i25: ; preds = %if.then.i.i23 - %33 = landingpad { ptr, i32 } + %32 = landingpad { ptr, i32 } catch ptr null - %34 = extractvalue { ptr, i32 } %33, 0 - call void @__clang_call_terminate(ptr %34) #21 + %33 = extractvalue { ptr, i32 } %32, 0 + call void @__clang_call_terminate(ptr %33) #21 unreachable _ZNSt8functionIFvlEED2Ev.exit26: ; preds = %lpad.body, %if.then.i.i23 - resume { ptr, i32 } %25 + resume { ptr, i32 } %24 } declare i32 @__gxx_personality_v0(...) diff --git a/bench/pbrt-v4/optimized/image.cpp.ll b/bench/pbrt-v4/optimized/image.cpp.ll index eaedf57dadd..fae74c8c778 100644 --- a/bench/pbrt-v4/optimized/image.cpp.ll +++ b/bench/pbrt-v4/optimized/image.cpp.ll @@ -3614,8 +3614,7 @@ invoke.cont44.lr.ph: ; preds = %for.cond.preheader %_M_invoker.i = getelementptr inbounds i8, ptr %agg.tmp113, i64 24 %_M_manager.i.i.i = getelementptr inbounds i8, ptr %agg.tmp.i, i64 16 %_M_invoker.i.i = getelementptr inbounds i8, ptr %agg.tmp.i, i64 24 - %19 = getelementptr inbounds i8, ptr %agg.tmp.i, i64 8 - %20 = ptrtoint ptr %agg.tmp113 to i64 + %19 = ptrtoint ptr %agg.tmp113 to i64 %channelNames3.i69 = getelementptr inbounds i8, ptr %nextImage, i64 16 %encoding4.i72 = getelementptr inbounds i8, ptr %nextImage, i64 48 %p8.i73 = getelementptr inbounds i8, ptr %image, i64 56 @@ -3624,6 +3623,7 @@ invoke.cont44.lr.ph: ; preds = %for.cond.preheader %p168.i76 = getelementptr inbounds i8, ptr %nextImage, i64 88 %p32.i77 = getelementptr inbounds i8, ptr %image, i64 120 %p3210.i78 = getelementptr inbounds i8, ptr %nextImage, i64 120 + %20 = getelementptr inbounds i8, ptr %agg.tmp.i, i64 8 br label %invoke.cont44 invoke.cont44: ; preds = %invoke.cont44.lr.ph, %invoke.cont118 @@ -3814,8 +3814,8 @@ invoke.cont115: ; preds = %if.end109 store ptr @"_ZNSt17_Function_handlerIFvlEZN4pbrt5Image15GeneratePyramidES2_NS1_10WrapMode2DEN4pstd3pmr21polymorphic_allocatorISt4byteEEE3$_0E10_M_managerERSt9_Any_dataRKSB_St18_Manager_operation", ptr %_M_manager.i.i, align 8 %conv112 = sext i32 %56 to i64 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %agg.tmp.i) - store i64 0, ptr %19, align 8 - store i64 %20, ptr %agg.tmp.i, align 8 + store i64 0, ptr %20, align 8 + store i64 %19, ptr %agg.tmp.i, align 8 store ptr @_ZNSt17_Function_handlerIFvllEZN4pbrt11ParallelForEllSt8functionIFvlEEEUlllE_E9_M_invokeERKSt9_Any_dataOlSA_, ptr %_M_invoker.i.i, align 8 store ptr @_ZNSt17_Function_handlerIFvllEZN4pbrt11ParallelForEllSt8functionIFvlEEEUlllE_E10_M_managerERSt9_Any_dataRKS7_St18_Manager_operation, ptr %_M_manager.i.i.i, align 8 invoke void @_ZN4pbrt11ParallelForEllSt8functionIFvllEE(i64 noundef 0, i64 noundef %conv112, ptr noundef nonnull %agg.tmp.i) @@ -51116,8 +51116,7 @@ entry: invoke.cont: ; preds = %entry store ptr getelementptr inbounds (i8, ptr @_ZTVN7Imf_2_514TypedAttributeIN9Imath_2_58Matrix44IfEEEE, i64 16), ptr %call, align 8 %_value.i = getelementptr inbounds i8, ptr %call, i64 8 - %0 = getelementptr inbounds i8, ptr %call, i64 12 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %0, i8 0, i64 56, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %_value.i, i8 0, i64 64, i1 false) store float 1.000000e+00, ptr %_value.i, align 4 %arrayidx6.i.i = getelementptr inbounds i8, ptr %call, i64 28 store float 1.000000e+00, ptr %arrayidx6.i.i, align 4 @@ -51129,10 +51128,10 @@ invoke.cont: ; preds = %entry ret ptr %call lpad: ; preds = %entry - %1 = landingpad { ptr, i32 } + %0 = landingpad { ptr, i32 } cleanup tail call void @_ZdlPv(ptr noundef nonnull %call) #36 - resume { ptr, i32 } %1 + resume { ptr, i32 } %0 } declare void @_ZNK7Imf_2_514TypedAttributeIN9Imath_2_58Matrix44IfEEE12writeValueToERNS_7OStreamEi(ptr noundef nonnull align 8 dereferenceable(72), ptr noundef nonnull align 8 dereferenceable(40), i32 noundef) unnamed_addr #0 diff --git a/bench/pbrt-v4/optimized/integrators.cpp.ll b/bench/pbrt-v4/optimized/integrators.cpp.ll index 6574ea27f20..275d9b5b2b8 100644 --- a/bench/pbrt-v4/optimized/integrators.cpp.ll +++ b/bench/pbrt-v4/optimized/integrators.cpp.ll @@ -5172,12 +5172,12 @@ if.then.i: ; preds = %entry _ZN4pbrt15GetCameraSampleINS_7SamplerEEENS_12CameraSampleET_NS_6Point2IiEENS_6FilterE.exit: ; preds = %entry, %if.then.i %cameraSample.sroa.0.0 = phi <2 x float> [ %retval.sroa.0.4.vec.insert.i31.i, %if.then.i ], [ %retval.sroa.0.4.vec.insert.i9.i, %entry ] - %cameraSample.sroa.3.0 = phi <2 x float> [ , %if.then.i ], [ %call3.i.i21.i, %entry ] + %cameraSample.sroa.4.0 = phi <2 x float> [ , %if.then.i ], [ %call3.i.i21.i, %entry ] %cameraSample.sroa.9.0 = phi float [ 1.000000e+00, %if.then.i ], [ %call3.fca.1.extract.i, %entry ] %cameraSample.sroa.7.0 = phi float [ 5.000000e-01, %if.then.i ], [ %call3.i.i15.i, %entry ] store <2 x float> %cameraSample.sroa.0.0, ptr %agg.tmp8, align 8 - %cameraSample.sroa.3.0.agg.tmp8.sroa_idx = getelementptr inbounds i8, ptr %agg.tmp8, i64 8 - store <2 x float> %cameraSample.sroa.3.0, ptr %cameraSample.sroa.3.0.agg.tmp8.sroa_idx, align 8 + %cameraSample.sroa.4.0.agg.tmp8.sroa_idx = getelementptr inbounds i8, ptr %agg.tmp8, i64 8 + store <2 x float> %cameraSample.sroa.4.0, ptr %cameraSample.sroa.4.0.agg.tmp8.sroa_idx, align 8 %cameraSample.sroa.7.0.agg.tmp8.sroa_idx = getelementptr inbounds i8, ptr %agg.tmp8, i64 16 store float %cameraSample.sroa.7.0, ptr %cameraSample.sroa.7.0.agg.tmp8.sroa_idx, align 8 %cameraSample.sroa.9.0.agg.tmp8.sroa_idx = getelementptr inbounds i8, ptr %agg.tmp8, i64 20 @@ -40537,20 +40537,17 @@ for.body70.lr.ph: ; preds = %invoke.cont66 %61 = ptrtoint ptr %pixels to i64 %_M_manager.i.i277 = getelementptr inbounds i8, ptr %agg.tmp224, i64 16 %_M_invoker.i278 = getelementptr inbounds i8, ptr %agg.tmp224, i64 24 - %62 = getelementptr inbounds i8, ptr %agg.tmp224, i64 8 %_M_manager.i.i.i = getelementptr inbounds i8, ptr %agg.tmp.i, i64 16 %_M_invoker.i.i = getelementptr inbounds i8, ptr %agg.tmp.i, i64 24 - %63 = getelementptr inbounds i8, ptr %agg.tmp.i, i64 8 - %64 = ptrtoint ptr %agg.tmp224 to i64 + %62 = ptrtoint ptr %agg.tmp224 to i64 %arrayinit.element261 = getelementptr inbounds i8, ptr %ref.tmp255, i64 32 %arrayinit.element265 = getelementptr inbounds i8, ptr %ref.tmp255, i64 64 - %65 = getelementptr inbounds i8, ptr %ref.tmp255, i64 96 + %63 = getelementptr inbounds i8, ptr %ref.tmp255, i64 96 %_M_manager.i.i332 = getelementptr inbounds i8, ptr %agg.tmp307, i64 16 %_M_invoker.i333 = getelementptr inbounds i8, ptr %agg.tmp307, i64 24 %_M_manager.i.i.i336 = getelementptr inbounds i8, ptr %agg.tmp.i335, i64 16 %_M_invoker.i.i337 = getelementptr inbounds i8, ptr %agg.tmp.i335, i64 24 - %66 = getelementptr inbounds i8, ptr %agg.tmp.i335, i64 8 - %67 = ptrtoint ptr %agg.tmp307 to i64 + %64 = ptrtoint ptr %agg.tmp307 to i64 %set.i.i357 = getelementptr inbounds i8, ptr %metadata, i64 4 %set.i1.i = getelementptr inbounds i8, ptr %metadata, i64 72 %set.i2.i = getelementptr inbounds i8, ptr %metadata, i64 140 @@ -40559,12 +40556,12 @@ for.body70.lr.ph: ; preds = %invoke.cont66 %set.i5.i = getelementptr inbounds i8, ptr %metadata, i64 180 %set.i6.i = getelementptr inbounds i8, ptr %metadata, i64 188 %set.i7.i = getelementptr inbounds i8, ptr %metadata, i64 200 - %68 = getelementptr inbounds i8, ptr %metadata, i64 216 + %65 = getelementptr inbounds i8, ptr %metadata, i64 216 %_M_parent.i.i.i.i.i.i = getelementptr inbounds i8, ptr %metadata, i64 224 %_M_left.i.i.i.i.i.i = getelementptr inbounds i8, ptr %metadata, i64 232 %_M_right.i.i.i.i.i.i = getelementptr inbounds i8, ptr %metadata, i64 240 %_M_node_count.i.i.i.i.i.i = getelementptr inbounds i8, ptr %metadata, i64 248 - %69 = getelementptr inbounds i8, ptr %metadata, i64 264 + %66 = getelementptr inbounds i8, ptr %metadata, i64 264 %_M_parent.i.i.i.i.i8.i = getelementptr inbounds i8, ptr %metadata, i64 272 %_M_left.i.i.i.i.i9.i = getelementptr inbounds i8, ptr %metadata, i64 280 %_M_right.i.i.i.i.i10.i = getelementptr inbounds i8, ptr %metadata, i64 288 @@ -40586,12 +40583,12 @@ for.body70.lr.ph: ; preds = %invoke.cont66 %set.i5.i497 = getelementptr inbounds i8, ptr %metadata469, i64 180 %set.i6.i498 = getelementptr inbounds i8, ptr %metadata469, i64 188 %set.i7.i499 = getelementptr inbounds i8, ptr %metadata469, i64 200 - %70 = getelementptr inbounds i8, ptr %metadata469, i64 216 + %67 = getelementptr inbounds i8, ptr %metadata469, i64 216 %_M_parent.i.i.i.i.i.i500 = getelementptr inbounds i8, ptr %metadata469, i64 224 %_M_left.i.i.i.i.i.i501 = getelementptr inbounds i8, ptr %metadata469, i64 232 %_M_right.i.i.i.i.i.i502 = getelementptr inbounds i8, ptr %metadata469, i64 240 %_M_node_count.i.i.i.i.i.i503 = getelementptr inbounds i8, ptr %metadata469, i64 248 - %71 = getelementptr inbounds i8, ptr %metadata469, i64 264 + %68 = getelementptr inbounds i8, ptr %metadata469, i64 264 %_M_parent.i.i.i.i.i8.i504 = getelementptr inbounds i8, ptr %metadata469, i64 272 %_M_left.i.i.i.i.i9.i505 = getelementptr inbounds i8, ptr %metadata469, i64 280 %_M_right.i.i.i.i.i10.i506 = getelementptr inbounds i8, ptr %metadata469, i64 288 @@ -40602,6 +40599,9 @@ for.body70.lr.ph: ; preds = %invoke.cont66 %create.i = getelementptr inbounds i8, ptr %photonShootScratchBuffers, i64 80 %hashTable.i534 = getelementptr inbounds i8, ptr %photonShootScratchBuffers, i64 56 %_M_finish.i.i535 = getelementptr inbounds i8, ptr %photonShootScratchBuffers, i64 64 + %69 = getelementptr inbounds i8, ptr %agg.tmp224, i64 8 + %70 = getelementptr inbounds i8, ptr %agg.tmp.i, i64 8 + %71 = getelementptr inbounds i8, ptr %agg.tmp.i335, i64 8 br label %for.body70 for.body70: ; preds = %for.body70.lr.ph, %_ZNSt6vectorISt6atomicIPN4pbrt17SPPMPixelListNodeEESaIS4_EED2Ev.exit @@ -41551,13 +41551,13 @@ _ZN4pbrt16ProgressReporter6UpdateEl.exit276: ; preds = %invoke.cont219, %if %172 = load i64, ptr %60, align 8 %add223 = add nsw i64 %172, %conv222 store i64 %add223, ptr %60, align 8 - store i64 0, ptr %62, align 8 + store i64 0, ptr %69, align 8 store i64 %61, ptr %agg.tmp224, align 8 store ptr @"_ZNSt17_Function_handlerIFvN4pbrt6Point2IiEEEZNS0_14SPPMIntegrator6RenderEvE3$_7E9_M_invokeERKSt9_Any_dataOS2_", ptr %_M_invoker.i278, align 8 store ptr @"_ZNSt17_Function_handlerIFvN4pbrt6Point2IiEEEZNS0_14SPPMIntegrator6RenderEvE3$_7E10_M_managerERSt9_Any_dataRKS7_St18_Manager_operation", ptr %_M_manager.i.i277, align 8 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %agg.tmp.i) - store i64 0, ptr %63, align 8 - store i64 %64, ptr %agg.tmp.i, align 8 + store i64 0, ptr %70, align 8 + store i64 %62, ptr %agg.tmp.i, align 8 store ptr @_ZNSt17_Function_handlerIFvN4pbrt7Bounds2IiEEEZNS0_13ParallelFor2DERKS2_St8functionIFvNS0_6Point2IiEEEEEUlS2_E_E9_M_invokeERKSt9_Any_dataOS2_, ptr %_M_invoker.i.i, align 8 store ptr @_ZNSt17_Function_handlerIFvN4pbrt7Bounds2IiEEEZNS0_13ParallelFor2DERKS2_St8functionIFvNS0_6Point2IiEEEEEUlS2_E_E10_M_managerERSt9_Any_dataRKSD_St18_Manager_operation, ptr %_M_manager.i.i.i, align 8 invoke void @_ZN4pbrt13ParallelFor2DERKNS_7Bounds2IiEESt8functionIFvS1_EE(ptr noundef nonnull align 4 dereferenceable(16) %pixelBounds, ptr noundef nonnull %agg.tmp.i) @@ -41712,7 +41712,7 @@ invoke.cont276: ; preds = %.noexc327 to label %arraydestroy.body282 unwind label %lpad273 arraydestroy.body282: ; preds = %invoke.cont276, %arraydestroy.body282 - %arraydestroy.elementPast283 = phi ptr [ %arraydestroy.element284, %arraydestroy.body282 ], [ %65, %invoke.cont276 ] + %arraydestroy.elementPast283 = phi ptr [ %arraydestroy.element284, %arraydestroy.body282 ], [ %63, %invoke.cont276 ] %arraydestroy.element284 = getelementptr inbounds i8, ptr %arraydestroy.elementPast283, i64 -32 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %arraydestroy.element284) #33 %arraydestroy.done285 = icmp eq ptr %arraydestroy.element284, %ref.tmp255 @@ -41740,8 +41740,8 @@ invoke.cont310: ; preds = %arraydestroy.done28 store ptr @"_ZNSt17_Function_handlerIFvN4pbrt6Point2IiEEEZNS0_14SPPMIntegrator6RenderEvE3$_8E9_M_invokeERKSt9_Any_dataOS2_", ptr %_M_invoker.i333, align 8 store ptr @"_ZNSt17_Function_handlerIFvN4pbrt6Point2IiEEEZNS0_14SPPMIntegrator6RenderEvE3$_8E10_M_managerERSt9_Any_dataRKS7_St18_Manager_operation", ptr %_M_manager.i.i332, align 8 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %agg.tmp.i335) - store i64 0, ptr %66, align 8 - store i64 %67, ptr %agg.tmp.i335, align 8 + store i64 0, ptr %71, align 8 + store i64 %64, ptr %agg.tmp.i335, align 8 store ptr @_ZNSt17_Function_handlerIFvN4pbrt7Bounds2IiEEEZNS0_13ParallelFor2DERKS2_St8functionIFvNS0_6Point2IiEEEEEUlS2_E_E9_M_invokeERKSt9_Any_dataOS2_, ptr %_M_invoker.i.i337, align 8 store ptr @_ZNSt17_Function_handlerIFvN4pbrt7Bounds2IiEEEZNS0_13ParallelFor2DERKS2_St8functionIFvNS0_6Point2IiEEEEEUlS2_E_E10_M_managerERSt9_Any_dataRKSD_St18_Manager_operation, ptr %_M_manager.i.i.i336, align 8 invoke void @_ZN4pbrt13ParallelFor2DERKNS_7Bounds2IiEESt8functionIFvS1_EE(ptr noundef nonnull align 4 dereferenceable(16) %pixelBounds, ptr noundef nonnull %agg.tmp.i335) @@ -41807,15 +41807,15 @@ _ZNSt8functionIFvN4pbrt6Point2IiEEEED2Ev.exit356: ; preds = %invoke.cont312, %if store i8 0, ptr %set.i5.i, align 4 store i8 0, ptr %set.i6.i, align 4 store i8 0, ptr %set.i7.i, align 8 - store i32 0, ptr %68, align 8 + store i32 0, ptr %65, align 8 store ptr null, ptr %_M_parent.i.i.i.i.i.i, align 8 - store ptr %68, ptr %_M_left.i.i.i.i.i.i, align 8 - store ptr %68, ptr %_M_right.i.i.i.i.i.i, align 8 + store ptr %65, ptr %_M_left.i.i.i.i.i.i, align 8 + store ptr %65, ptr %_M_right.i.i.i.i.i.i, align 8 store i64 0, ptr %_M_node_count.i.i.i.i.i.i, align 8 - store i32 0, ptr %69, align 8 + store i32 0, ptr %66, align 8 store ptr null, ptr %_M_parent.i.i.i.i.i8.i, align 8 - store ptr %69, ptr %_M_left.i.i.i.i.i9.i, align 8 - store ptr %69, ptr %_M_right.i.i.i.i.i10.i, align 8 + store ptr %66, ptr %_M_left.i.i.i.i.i9.i, align 8 + store ptr %66, ptr %_M_right.i.i.i.i.i10.i, align 8 store i64 0, ptr %_M_node_count.i.i.i.i.i11.i, align 8 %203 = load i8, ptr %set.i.i358, align 4 %tobool.i.i359 = trunc i8 %203 to i1 @@ -42065,7 +42065,7 @@ lpad273: ; preds = %invoke.cont276 br label %arraydestroy.body289 arraydestroy.body289: ; preds = %arraydestroy.body289, %lpad273 - %arraydestroy.elementPast290 = phi ptr [ %65, %lpad273 ], [ %arraydestroy.element291, %arraydestroy.body289 ] + %arraydestroy.elementPast290 = phi ptr [ %63, %lpad273 ], [ %arraydestroy.element291, %arraydestroy.body289 ] %arraydestroy.element291 = getelementptr inbounds i8, ptr %arraydestroy.elementPast290, i64 -32 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %arraydestroy.element291) #33 %arraydestroy.done292 = icmp eq ptr %arraydestroy.element291, %ref.tmp255 @@ -42247,15 +42247,15 @@ invoke.cont482: ; preds = %for.inc465, %invoke store i8 0, ptr %set.i5.i497, align 4 store i8 0, ptr %set.i6.i498, align 4 store i8 0, ptr %set.i7.i499, align 8 - store i32 0, ptr %70, align 8 + store i32 0, ptr %67, align 8 store ptr null, ptr %_M_parent.i.i.i.i.i.i500, align 8 - store ptr %70, ptr %_M_left.i.i.i.i.i.i501, align 8 - store ptr %70, ptr %_M_right.i.i.i.i.i.i502, align 8 + store ptr %67, ptr %_M_left.i.i.i.i.i.i501, align 8 + store ptr %67, ptr %_M_right.i.i.i.i.i.i502, align 8 store i64 0, ptr %_M_node_count.i.i.i.i.i.i503, align 8 - store i32 0, ptr %71, align 8 + store i32 0, ptr %68, align 8 store ptr null, ptr %_M_parent.i.i.i.i.i8.i504, align 8 - store ptr %71, ptr %_M_left.i.i.i.i.i9.i505, align 8 - store ptr %71, ptr %_M_right.i.i.i.i.i10.i506, align 8 + store ptr %68, ptr %_M_left.i.i.i.i.i9.i505, align 8 + store ptr %68, ptr %_M_right.i.i.i.i.i10.i506, align 8 store i64 0, ptr %_M_node_count.i.i.i.i.i11.i507, align 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %pixelBounds470, ptr noundef nonnull align 8 dereferenceable(16) %pixelBounds, i64 16, i1 false) store i8 1, ptr %set.i3.i495, align 8 @@ -46084,11 +46084,11 @@ for.body196.lr.ph: ; preds = %_ZNSt8functionIFN4p %_M_invoker.i165 = getelementptr inbounds i8, ptr %agg.tmp253, i64 24 %_M_manager.i.i.i = getelementptr inbounds i8, ptr %agg.tmp.i, i64 16 %_M_invoker.i.i = getelementptr inbounds i8, ptr %agg.tmp.i, i64 24 - %64 = getelementptr inbounds i8, ptr %agg.tmp.i, i64 8 - %65 = ptrtoint ptr %agg.tmp253 to i64 + %64 = ptrtoint ptr %agg.tmp253 to i64 %values.i194 = getelementptr inbounds i8, ptr %sumv, i64 24 %y.i.i.i.i = getelementptr inbounds i8, ptr %sumv, i64 12 %conv283 = sitofp i32 %mul.i to double + %65 = getelementptr inbounds i8, ptr %agg.tmp.i, i64 8 br label %for.body196 for.body196: ; preds = %for.body196.lr.ph, %for.inc296 @@ -46237,8 +46237,8 @@ invoke.cont255: ; preds = %while.end252 store ptr @"_ZNSt17_Function_handlerIFvN4pbrt6Point2IiEEEZNS0_18FunctionIntegrator6RenderEvE3$_1E9_M_invokeERKSt9_Any_dataOS2_", ptr %_M_invoker.i165, align 8 store ptr @"_ZNSt17_Function_handlerIFvN4pbrt6Point2IiEEEZNS0_18FunctionIntegrator6RenderEvE3$_1E10_M_managerERSt9_Any_dataRKS7_St18_Manager_operation", ptr %_M_manager.i.i164, align 8 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %agg.tmp.i) - store i64 0, ptr %64, align 8 - store i64 %65, ptr %agg.tmp.i, align 8 + store i64 0, ptr %65, align 8 + store i64 %64, ptr %agg.tmp.i, align 8 store ptr @_ZNSt17_Function_handlerIFvN4pbrt7Bounds2IiEEEZNS0_13ParallelFor2DERKS2_St8functionIFvNS0_6Point2IiEEEEEUlS2_E_E9_M_invokeERKSt9_Any_dataOS2_, ptr %_M_invoker.i.i, align 8 store ptr @_ZNSt17_Function_handlerIFvN4pbrt7Bounds2IiEEEZNS0_13ParallelFor2DERKS2_St8functionIFvNS0_6Point2IiEEEEEUlS2_E_E10_M_managerERSt9_Any_dataRKSD_St18_Manager_operation, ptr %_M_manager.i.i.i, align 8 invoke void @_ZN4pbrt13ParallelFor2DERKNS_7Bounds2IiEESt8functionIFvS1_EE(ptr noundef nonnull align 4 dereferenceable(16) %pixelBounds, ptr noundef nonnull %agg.tmp.i) @@ -52524,8 +52524,7 @@ sw.default: ; preds = %entry %8 = load float, ptr %lambdaMin.i.i, align 8, !noalias !708 %lambdaMax.i.i = getelementptr inbounds i8, ptr %ptr, i64 92 %9 = load float, ptr %lambdaMax.i.i, align 4, !noalias !708 - %10 = getelementptr inbounds i8, ptr %agg.result, i64 4 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(32) %10, i8 0, i64 28, i1 false), !alias.scope !709 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(32) %agg.result, i8 0, i64 32, i1 false), !alias.scope !709 %sub.i.i.i.i34 = fsub float 1.000000e+00, %7 %mul.i.i.i.i35 = fmul float %sub.i.i.i.i34, %8 %mul1.i.i.i.i36 = fmul float %7, %9 @@ -52541,9 +52540,9 @@ for.cond21.preheader.i.i.i: ; preds = %for.body.i.i.i39 br label %for.body23.i.i.i for.body.i.i.i39: ; preds = %for.body.i.i.i39, %sw.default - %11 = phi float [ %add.i.i.i.i, %sw.default ], [ %storemerge.i.i.i, %for.body.i.i.i39 ] + %10 = phi float [ %add.i.i.i.i, %sw.default ], [ %storemerge.i.i.i, %for.body.i.i.i39 ] %indvars.iv.i.i.i40 = phi i64 [ 1, %sw.default ], [ %indvars.iv.next.i.i.i42, %for.body.i.i.i39 ] - %add.i.i.i41 = fadd float %div.i.i.i38, %11 + %add.i.i.i41 = fadd float %div.i.i.i38, %10 %arrayidx.i16.i.i.i = getelementptr inbounds [4 x float], ptr %agg.result, i64 0, i64 %indvars.iv.i.i.i40 %cmp11.i.i.i = fcmp ogt float %add.i.i.i41, %9 %sub15.i.i.i = fsub float %add.i.i.i41, %9 @@ -91197,7 +91196,7 @@ for.body.lr.ph.i.i.i: ; preds = %entry %12 = getelementptr inbounds i8, ptr %__functor.val, i64 24 %13 = getelementptr inbounds i8, ptr %__functor.val, i64 32 %camera.i.i.i = getelementptr inbounds i8, ptr %2, i64 64 - %cs.sroa.3.0.agg.tmp12.sroa_idx.i.i.i = getelementptr inbounds i8, ptr %agg.tmp12.i.i.i, i64 8 + %cs.sroa.4.0.agg.tmp12.sroa_idx.i.i.i = getelementptr inbounds i8, ptr %agg.tmp12.i.i.i, i64 8 %cs.sroa.7.0.agg.tmp12.sroa_idx.i.i.i = getelementptr inbounds i8, ptr %agg.tmp12.i.i.i, i64 16 %cs.sroa.9.0.agg.tmp12.sroa_idx.i.i.i = getelementptr inbounds i8, ptr %agg.tmp12.i.i.i, i64 20 %set.i.i.i.i = getelementptr inbounds i8, ptr %crd.i.i.i, i64 112 @@ -91387,12 +91386,12 @@ if.then.i.i.i.i: ; preds = %for.body.i.i.i br label %_ZN4pbrt15GetCameraSampleINS_7SamplerEEENS_12CameraSampleET_NS_6Point2IiEENS_6FilterE.exit.i.i.i _ZN4pbrt15GetCameraSampleINS_7SamplerEEENS_12CameraSampleET_NS_6Point2IiEENS_6FilterE.exit.i.i.i: ; preds = %if.then.i.i.i.i, %for.body.i.i.i - %cs.sroa.0.0.i.i.i = phi <2 x float> [ %retval.sroa.0.4.vec.insert.i31.i.i.i.i, %if.then.i.i.i.i ], [ %retval.sroa.0.4.vec.insert.i9.i.i.i.i, %for.body.i.i.i ] - %cs.sroa.3.1.i.i.i = phi <2 x float> [ , %if.then.i.i.i.i ], [ %call3.i.i21.i.i.i.i, %for.body.i.i.i ] + %cs.sroa.0.1.i.i.i = phi <2 x float> [ %retval.sroa.0.4.vec.insert.i31.i.i.i.i, %if.then.i.i.i.i ], [ %retval.sroa.0.4.vec.insert.i9.i.i.i.i, %for.body.i.i.i ] + %cs.sroa.4.1.i.i.i = phi <2 x float> [ , %if.then.i.i.i.i ], [ %call3.i.i21.i.i.i.i, %for.body.i.i.i ] %cs.sroa.9.0.i.i.i = phi float [ 1.000000e+00, %if.then.i.i.i.i ], [ %call3.fca.1.extract.i.i.i.i, %for.body.i.i.i ] %cs.sroa.7.1.i.i.i = phi float [ 5.000000e-01, %if.then.i.i.i.i ], [ %call3.i.i15.i.i.i.i, %for.body.i.i.i ] - store <2 x float> %cs.sroa.0.0.i.i.i, ptr %agg.tmp12.i.i.i, align 8 - store <2 x float> %cs.sroa.3.1.i.i.i, ptr %cs.sroa.3.0.agg.tmp12.sroa_idx.i.i.i, align 8 + store <2 x float> %cs.sroa.0.1.i.i.i, ptr %agg.tmp12.i.i.i, align 8 + store <2 x float> %cs.sroa.4.1.i.i.i, ptr %cs.sroa.4.0.agg.tmp12.sroa_idx.i.i.i, align 8 store float %cs.sroa.7.1.i.i.i, ptr %cs.sroa.7.0.agg.tmp12.sroa_idx.i.i.i, align 8 store float %cs.sroa.9.0.i.i.i, ptr %cs.sroa.9.0.agg.tmp12.sroa_idx.i.i.i, align 4 call void @_ZNK4pbrt6Camera23GenerateRayDifferentialENS_12CameraSampleERNS_18SampledWavelengthsE(ptr nonnull sret(%"class.pstd::optional.102") align 8 %crd.i.i.i, ptr noundef nonnull align 8 dereferenceable(8) %camera.i.i.i, ptr noundef nonnull byval(%"struct.pbrt::CameraSample") align 8 %agg.tmp12.i.i.i, ptr noundef nonnull align 4 dereferenceable(32) %lambda.i.i.i) diff --git a/bench/php/optimized/ir_perf.ll b/bench/php/optimized/ir_perf.ll index dc5761e6950..dbe2fe4b708 100644 --- a/bench/php/optimized/ir_perf.ll +++ b/bench/php/optimized/ir_perf.ll @@ -26,10 +26,10 @@ define hidden range(i32 0, 2) i32 @ir_perf_jitdump_open() local_unnamed_addr #0 %3 = alloca [64 x i8], align 16 %4 = alloca %struct._ir_elf_header, align 8 %5 = alloca %struct.ir_perf_jitdump_header, align 8 - %6 = tail call i32 @getpid() #7 - %7 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %3, i64 noundef 64, ptr noundef nonnull @.str, i32 noundef %6) #7 + %6 = tail call i32 @getpid() #8 + %7 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %3, i64 noundef 64, ptr noundef nonnull @.str, i32 noundef %6) #8 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2) - %8 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %2) #7 + %8 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %2) #8 %.not.i = icmp eq i32 %8, 0 br i1 %.not.i, label %ir_perf_timestamp.exit, label %ir_perf_timestamp.exit.thread @@ -48,13 +48,13 @@ ir_perf_timestamp.exit: ; preds = %0 br i1 %.not, label %64, label %14 14: ; preds = %ir_perf_timestamp.exit - %15 = call i32 (ptr, i32, ...) @open(ptr noundef nonnull @.str.1, i32 noundef 0) #7 + %15 = call i32 (ptr, i32, ...) @open(ptr noundef nonnull @.str.1, i32 noundef 0) #8 %16 = icmp slt i32 %15, 0 br i1 %16, label %64, label %17 17: ; preds = %14 - %18 = call i64 @read(i32 noundef %15, ptr noundef nonnull %4, i64 noundef 64) #7 - %19 = call i32 @close(i32 noundef %15) #7 + %18 = call i64 @read(i32 noundef %15, ptr noundef nonnull %4, i64 noundef 64) #8 + %19 = call i32 @close(i32 noundef %15) #8 %sext.mask = and i64 %18, 4294967295 %20 = icmp ne i64 %sext.mask, 64 %21 = load i8, ptr %4, align 8 @@ -75,28 +75,28 @@ ir_perf_timestamp.exit: ; preds = %0 br i1 %or.cond19, label %64, label %32 32: ; preds = %17 - %33 = call i32 (ptr, i32, ...) @open(ptr noundef nonnull %3, i32 noundef 578, i32 noundef 438) #7 + %33 = call i32 (ptr, i32, ...) @open(ptr noundef nonnull %3, i32 noundef 578, i32 noundef 438) #8 store i32 %33, ptr @jitdump_fd, align 4 %34 = icmp slt i32 %33, 0 br i1 %34, label %64, label %35 35: ; preds = %32 - %36 = call i64 @sysconf(i32 noundef 30) #7 + %36 = call i64 @sysconf(i32 noundef 30) #8 %37 = load i32, ptr @jitdump_fd, align 4 - %38 = call ptr @mmap(ptr noundef null, i64 noundef %36, i32 noundef 5, i32 noundef 2, i32 noundef %37, i64 noundef 0) #7 + %38 = call ptr @mmap(ptr noundef null, i64 noundef %36, i32 noundef 5, i32 noundef 2, i32 noundef %37, i64 noundef 0) #8 store ptr %38, ptr @jitdump_mem, align 8 %39 = icmp eq ptr %38, inttoptr (i64 -1 to ptr) br i1 %39, label %40, label %43 40: ; preds = %35 %41 = load i32, ptr @jitdump_fd, align 4 - %42 = call i32 @close(i32 noundef %41) #7 + %42 = call i32 @close(i32 noundef %41) #8 store i32 -1, ptr @jitdump_fd, align 4 br label %64 43: ; preds = %35 %44 = getelementptr inbounds i8, ptr %5, i64 16 - store i64 0, ptr %44, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %44, i8 0, i64 24, i1 false) store i32 1248416836, ptr %5, align 8 %45 = getelementptr inbounds i8, ptr %5, i64 4 store i32 1, ptr %45, align 4 @@ -107,11 +107,11 @@ ir_perf_timestamp.exit: ; preds = %0 %49 = zext i16 %48 to i32 %50 = getelementptr inbounds i8, ptr %5, i64 12 store i32 %49, ptr %50, align 4 - %51 = call i32 @getpid() #7 + %51 = call i32 @getpid() #8 %52 = getelementptr inbounds i8, ptr %5, i64 20 store i32 %51, ptr %52, align 4 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %1) - %53 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %1) #7 + %53 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %1) #8 %.not.i26 = icmp eq i32 %53, 0 br i1 %.not.i26, label %54, label %ir_perf_timestamp.exit28 @@ -131,7 +131,7 @@ ir_perf_timestamp.exit28: ; preds = %43, %54 %61 = getelementptr inbounds i8, ptr %5, i64 32 store i64 0, ptr %61, align 8 %62 = load i32, ptr @jitdump_fd, align 4 - %63 = call i64 @write(i32 noundef %62, ptr noundef nonnull %5, i64 noundef 40) #7 + %63 = call i64 @write(i32 noundef %62, ptr noundef nonnull %5, i64 noundef 40) #8 %.not25 = icmp eq i64 %63, 40 %. = zext i1 %.not25 to i32 br label %64 @@ -161,6 +161,9 @@ declare ptr @mmap(ptr noundef, i64 noundef, i32 noundef, i32 noundef, i32 nounde ; Function Attrs: nounwind declare i64 @sysconf(i32 noundef) local_unnamed_addr #2 +; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write) +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5 + ; Function Attrs: nofree declare noundef i64 @write(i32 noundef, ptr nocapture noundef readonly, i64 noundef) local_unnamed_addr #3 @@ -177,7 +180,7 @@ define hidden range(i32 0, 2) i32 @ir_perf_jitdump_close() local_unnamed_addr #0 %6 = getelementptr inbounds i8, ptr %2, i64 4 store i32 16, ptr %6, align 4 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %1) - %7 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %1) #7 + %7 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %1) #8 %.not.i = icmp eq i32 %7, 0 br i1 %.not.i, label %8, label %ir_perf_timestamp.exit @@ -195,17 +198,17 @@ ir_perf_timestamp.exit: ; preds = %5, %8 %14 = getelementptr inbounds i8, ptr %2, i64 8 store i64 %.0.i, ptr %14, align 8 %15 = load i32, ptr @jitdump_fd, align 4 - %16 = call i64 @write(i32 noundef %15, ptr noundef nonnull %2, i64 noundef 16) #7 + %16 = call i64 @write(i32 noundef %15, ptr noundef nonnull %2, i64 noundef 16) #8 %.not = icmp eq i64 %16, 16 %17 = load i32, ptr @jitdump_fd, align 4 - %18 = call i32 @close(i32 noundef %17) #7 + %18 = call i32 @close(i32 noundef %17) #8 %19 = load ptr, ptr @jitdump_mem, align 8 %.not2 = icmp eq ptr %19, inttoptr (i64 -1 to ptr) br i1 %.not2, label %23, label %20 20: ; preds = %ir_perf_timestamp.exit - %21 = call i64 @sysconf(i32 noundef 30) #7 - %22 = call i32 @munmap(ptr noundef %19, i64 noundef %21) #7 + %21 = call i64 @sysconf(i32 noundef 30) #8 + %22 = call i32 @munmap(ptr noundef %19, i64 noundef %21) #8 br label %23 23: ; preds = %ir_perf_timestamp.exit, %20, %0 @@ -226,17 +229,17 @@ define hidden range(i32 0, 2) i32 @ir_perf_jitdump_register(ptr nocapture nounde br i1 %7, label %8, label %45 8: ; preds = %3 - %9 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %0) #8 - %10 = tail call i64 (i64, ...) @syscall(i64 noundef 186) #7 + %9 = tail call i64 @strlen(ptr noundef nonnull dereferenceable(1) %0) #9 + %10 = tail call i64 (i64, ...) @syscall(i64 noundef 186) #8 %11 = trunc i64 %10 to i32 %12 = add i64 %2, 57 %13 = add i64 %12, %9 %14 = trunc i64 %13 to i32 %15 = getelementptr inbounds i8, ptr %5, i64 4 - store i64 0, ptr %5, align 8 + store i32 0, ptr %5, align 8 store i32 %14, ptr %15, align 4 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) - %16 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %4) #7 + %16 = call i32 @clock_gettime(i32 noundef 1, ptr noundef nonnull %4) #8 %.not.i = icmp eq i32 %16, 0 br i1 %.not.i, label %17, label %ir_perf_timestamp.exit @@ -253,7 +256,7 @@ ir_perf_timestamp.exit: ; preds = %8, %17 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) %23 = getelementptr inbounds i8, ptr %5, i64 8 store i64 %.0.i, ptr %23, align 8 - %24 = call i32 @getpid() #7 + %24 = call i32 @getpid() #8 %25 = getelementptr inbounds i8, ptr %5, i64 16 store i32 %24, ptr %25, align 8 %26 = getelementptr inbounds i8, ptr %5, i64 20 @@ -271,20 +274,20 @@ ir_perf_timestamp.exit: ; preds = %8, %17 %33 = getelementptr inbounds i8, ptr %5, i64 48 store i64 %31, ptr %33, align 8 %34 = load i32, ptr @jitdump_fd, align 4 - %35 = call i64 @write(i32 noundef %34, ptr noundef nonnull %5, i64 noundef 56) #7 + %35 = call i64 @write(i32 noundef %34, ptr noundef nonnull %5, i64 noundef 56) #8 %.not = icmp eq i64 %35, 56 br i1 %.not, label %36, label %46 36: ; preds = %ir_perf_timestamp.exit %37 = load i32, ptr @jitdump_fd, align 4 %38 = add i64 %9, 1 - %39 = call i64 @write(i32 noundef %37, ptr noundef %0, i64 noundef %38) #7 + %39 = call i64 @write(i32 noundef %37, ptr noundef %0, i64 noundef %38) #8 %40 = icmp slt i64 %39, 0 br i1 %40, label %46, label %41 41: ; preds = %36 %42 = load i32, ptr @jitdump_fd, align 4 - %43 = call i64 @write(i32 noundef %42, ptr noundef %1, i64 noundef %2) #7 + %43 = call i64 @write(i32 noundef %42, ptr noundef %1, i64 noundef %2) #8 %44 = icmp slt i64 %43, 0 br i1 %44, label %46, label %45 @@ -297,7 +300,7 @@ ir_perf_timestamp.exit: ; preds = %8, %17 } ; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read) -declare i64 @strlen(ptr nocapture noundef) local_unnamed_addr #5 +declare i64 @strlen(ptr nocapture noundef) local_unnamed_addr #6 ; Function Attrs: nounwind declare i64 @syscall(i64 noundef, ...) local_unnamed_addr #2 @@ -310,22 +313,22 @@ define hidden void @ir_perf_map_register(ptr noundef %0, ptr noundef %1, i64 nou br i1 %.not, label %6, label %11 6: ; preds = %3 - %7 = tail call i32 @getpid() #7 - %8 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %4, i64 noundef 64, ptr noundef nonnull @.str.2, i32 noundef %7) #7 + %7 = tail call i32 @getpid() #8 + %8 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %4, i64 noundef 64, ptr noundef nonnull @.str.2, i32 noundef %7) #8 %9 = call noalias ptr @fopen(ptr noundef nonnull %4, ptr noundef nonnull @.str.3) store ptr %9, ptr @ir_perf_map_register.fp, align 8 %.not2 = icmp eq ptr %9, null br i1 %.not2, label %15, label %10 10: ; preds = %6 - tail call void @setlinebuf(ptr noundef nonnull %9) #7 + tail call void @setlinebuf(ptr noundef nonnull %9) #8 %.pre = load ptr, ptr @ir_perf_map_register.fp, align 8 br label %11 11: ; preds = %10, %3 %12 = phi ptr [ %.pre, %10 ], [ %5, %3 ] %13 = ptrtoint ptr %1 to i64 - %14 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %12, ptr noundef nonnull @.str.4, i64 noundef %13, i64 noundef %2, ptr noundef %0) #7 + %14 = tail call i32 (ptr, ptr, ...) @fprintf(ptr noundef %12, ptr noundef nonnull @.str.4, i64 noundef %13, i64 noundef %2, ptr noundef %0) #8 br label %15 15: ; preds = %6, %11 @@ -345,20 +348,21 @@ declare noundef i32 @fprintf(ptr nocapture noundef, ptr nocapture noundef readon declare i32 @clock_gettime(i32 noundef, ptr noundef) local_unnamed_addr #2 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #6 +declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #7 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #6 +declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #7 attributes #0 = { nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { nofree nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #3 = { nofree "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #4 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { mustprogress nofree nounwind willreturn memory(argmem: read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #7 = { nounwind } -attributes #8 = { nounwind willreturn memory(read) } +attributes #5 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #6 = { mustprogress nofree nounwind willreturn memory(argmem: read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #7 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #8 = { nounwind } +attributes #9 = { nounwind willreturn memory(read) } !llvm.module.flags = !{!0, !1, !2, !3} diff --git a/bench/pocketpy/optimized/compiler.cpp.ll b/bench/pocketpy/optimized/compiler.cpp.ll index 8b9c481b9a6..2122b477a76 100644 --- a/bench/pocketpy/optimized/compiler.cpp.ll +++ b/bench/pocketpy/optimized/compiler.cpp.ll @@ -5999,7 +5999,7 @@ define void @_ZN4pkpy8Compiler8exprCallEv(ptr noundef nonnull align 8 dereferenc %8 = alloca %"class.pkpy::unique_ptr_128", align 8 %9 = tail call noundef ptr @_ZN4pkpy13pool128_allocEm(i64 noundef 104) #36, !noalias !34 %10 = getelementptr inbounds i8, ptr %9, i64 8 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %10, i8 0, i64 48, i1 false), !noalias !34 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(96) %10, i8 0, i64 48, i1 false), !noalias !34 store ptr getelementptr inbounds inrange(-16, 96) (i8, ptr @_ZTVN4pkpy8CallExprE, i64 16), ptr %9, align 8, !noalias !34 %11 = getelementptr inbounds i8, ptr %9, i64 24 %12 = getelementptr inbounds i8, ptr %9, i64 56 @@ -7659,7 +7659,7 @@ define void @_ZN4pkpy8Compiler10exprSubscrEv(ptr noundef nonnull align 8 derefer %2 = alloca %"class.pkpy::unique_ptr_128", align 8 %3 = tail call noundef ptr @_ZN4pkpy13pool128_allocEm(i64 noundef 32) #36, !noalias !61 %4 = getelementptr inbounds i8, ptr %3, i64 8 - store i64 0, ptr %4, align 8, !noalias !61 + store i64 0, ptr %4, align 8 store ptr getelementptr inbounds inrange(-16, 96) (i8, ptr @_ZTVN4pkpy10SubscrExprE, i64 16), ptr %3, align 8, !noalias !61 %5 = getelementptr inbounds i8, ptr %3, i64 16 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %5, i8 0, i64 16, i1 false), !noalias !61 @@ -8116,7 +8116,7 @@ _ZN4pkpy2TKEPKc.exit43: ; preds = %93, %91 %.2276 = phi i8 [ %.0, %95 ], [ 1, %64 ], [ 1, %_ZN4pkpy2TKEPKc.exit43 ] %97 = call noundef ptr @_ZN4pkpy13pool128_allocEm(i64 noundef 32) #36, !noalias !70 %98 = getelementptr inbounds i8, ptr %97, i64 8 - store i64 0, ptr %98, align 8, !noalias !70 + store i64 0, ptr %98, align 8 store ptr getelementptr inbounds inrange(-16, 96) (i8, ptr @_ZTVN4pkpy12DictItemExprE, i64 16), ptr %97, align 8, !noalias !70 %99 = getelementptr inbounds i8, ptr %97, i64 16 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %99, i8 0, i64 16, i1 false), !noalias !70 @@ -9215,7 +9215,7 @@ define void @_ZN4pkpy8Compiler12exprBinaryOpEv(ptr noundef nonnull align 8 deref %2 = alloca %"class.pkpy::unique_ptr_128", align 8 %3 = tail call noundef ptr @_ZN4pkpy13pool128_allocEm(i64 noundef 32) #36, !noalias !98 %4 = getelementptr inbounds i8, ptr %3, i64 8 - store i64 0, ptr %4, align 8, !noalias !98 + store i64 0, ptr %4, align 8 store ptr getelementptr inbounds inrange(-16, 96) (i8, ptr @_ZTVN4pkpy10BinaryExprE, i64 16), ptr %3, align 8, !noalias !98 %5 = getelementptr inbounds i8, ptr %3, i64 16 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %5, i8 0, i64 16, i1 false), !noalias !98 @@ -10015,7 +10015,7 @@ define void @_ZN4pkpy8Compiler11exprTernaryEv(ptr noundef nonnull align 8 derefe %2 = alloca %"class.pkpy::unique_ptr_128", align 8 %3 = tail call noundef ptr @_ZN4pkpy13pool128_allocEm(i64 noundef 40) #36, !noalias !131 %4 = getelementptr inbounds i8, ptr %3, i64 8 - store i64 0, ptr %4, align 8, !noalias !131 + store i64 0, ptr %4, align 8 store ptr getelementptr inbounds inrange(-16, 96) (i8, ptr @_ZTVN4pkpy11TernaryExprE, i64 16), ptr %3, align 8, !noalias !131 %5 = getelementptr inbounds i8, ptr %3, i64 16 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %5, i8 0, i64 24, i1 false), !noalias !131 @@ -10306,7 +10306,7 @@ define void @_ZN4pkpy8Compiler7exprAndEv(ptr noundef nonnull align 8 dereference %2 = alloca %"class.pkpy::unique_ptr_128", align 8 %3 = tail call noundef ptr @_ZN4pkpy13pool128_allocEm(i64 noundef 32) #36, !noalias !143 %4 = getelementptr inbounds i8, ptr %3, i64 8 - store i64 0, ptr %4, align 8, !noalias !143 + store i64 0, ptr %4, align 8 store ptr getelementptr inbounds inrange(-16, 96) (i8, ptr @_ZTVN4pkpy7AndExprE, i64 16), ptr %3, align 8, !noalias !143 %5 = getelementptr inbounds i8, ptr %3, i64 16 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %5, i8 0, i64 16, i1 false), !noalias !143 @@ -10498,7 +10498,7 @@ define void @_ZN4pkpy8Compiler6exprOrEv(ptr noundef nonnull align 8 dereferencea %2 = alloca %"class.pkpy::unique_ptr_128", align 8 %3 = tail call noundef ptr @_ZN4pkpy13pool128_allocEm(i64 noundef 32) #36, !noalias !152 %4 = getelementptr inbounds i8, ptr %3, i64 8 - store i64 0, ptr %4, align 8, !noalias !152 + store i64 0, ptr %4, align 8 store ptr getelementptr inbounds inrange(-16, 96) (i8, ptr @_ZTVN4pkpy6OrExprE, i64 16), ptr %3, align 8, !noalias !152 %5 = getelementptr inbounds i8, ptr %3, i64 16 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %5, i8 0, i64 16, i1 false), !noalias !152 @@ -12274,7 +12274,7 @@ define void @_ZN4pkpy8Compiler10exprSlice0Ev(ptr noundef nonnull align 8 derefer %2 = alloca %"class.pkpy::unique_ptr_128", align 8 %3 = tail call noundef ptr @_ZN4pkpy13pool128_allocEm(i64 noundef 40) #36, !noalias !192 %4 = getelementptr inbounds i8, ptr %3, i64 8 - store i64 0, ptr %4, align 8, !noalias !192 + store i64 0, ptr %4, align 8 store ptr getelementptr inbounds inrange(-16, 96) (i8, ptr @_ZTVN4pkpy9SliceExprE, i64 16), ptr %3, align 8, !noalias !192 %5 = getelementptr inbounds i8, ptr %3, i64 16 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %5, i8 0, i64 24, i1 false), !noalias !192 @@ -12782,7 +12782,7 @@ define void @_ZN4pkpy8Compiler10exprSlice1Ev(ptr noundef nonnull align 8 derefer %2 = alloca %"class.pkpy::unique_ptr_128", align 8 %3 = tail call noundef ptr @_ZN4pkpy13pool128_allocEm(i64 noundef 40) #36, !noalias !204 %4 = getelementptr inbounds i8, ptr %3, i64 8 - store i64 0, ptr %4, align 8, !noalias !204 + store i64 0, ptr %4, align 8 store ptr getelementptr inbounds inrange(-16, 96) (i8, ptr @_ZTVN4pkpy9SliceExprE, i64 16), ptr %3, align 8, !noalias !204 %5 = getelementptr inbounds i8, ptr %3, i64 16 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %5, i8 0, i64 24, i1 false), !noalias !204 @@ -25069,7 +25069,7 @@ _ZNK4pkpy8Compiler4currEv.exit: ; preds = %1 store i32 %41, ptr %4, align 4 %42 = call noundef ptr @_ZN4pkpy13pool128_allocEm(i64 noundef 32) #36, !noalias !295 %43 = getelementptr inbounds i8, ptr %42, i64 8 - store i64 0, ptr %43, align 8, !noalias !295 + store i64 0, ptr %43, align 8 store ptr getelementptr inbounds inrange(-16, 96) (i8, ptr @_ZTVN4pkpy10BinaryExprE, i64 16), ptr %42, align 8, !noalias !295 %44 = getelementptr inbounds i8, ptr %42, i64 16 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %44, i8 0, i64 16, i1 false), !noalias !295 diff --git a/bench/postgres/optimized/dsa.ll b/bench/postgres/optimized/dsa.ll index 7329a1e9cdc..6e406c0c06b 100644 --- a/bench/postgres/optimized/dsa.ll +++ b/bench/postgres/optimized/dsa.ll @@ -107,86 +107,85 @@ dsa_minimum_size.exit: ; preds = %6 %.067 = select i1 %.not, i64 %22, i64 %25 %26 = sub i64 %1, %.067 %27 = lshr i64 %26, 12 - %28 = getelementptr inbounds i8, ptr %0, i64 4 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(6176) %28, i8 0, i64 6172, i1 false) - %29 = xor i32 %3, 216163848 - store i32 %29, ptr %0, align 8 - %30 = getelementptr inbounds i8, ptr %0, i64 24 - %31 = getelementptr inbounds i8, ptr %0, i64 8 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %30, i8 -1, i64 16, i1 false) - store i64 %27, ptr %31, align 8 - %32 = getelementptr inbounds i8, ptr %0, i64 16 - store i64 1048576, ptr %32, align 8 - %33 = getelementptr inbounds i8, ptr %0, i64 56 - store i32 %3, ptr %33, align 8 - %34 = getelementptr inbounds i8, ptr %0, i64 6120 - store i64 -1, ptr %34, align 8 - %35 = getelementptr inbounds i8, ptr %0, i64 6112 - store i64 %1, ptr %35, align 8 - %36 = getelementptr inbounds i8, ptr %0, i64 60 - store i32 %3, ptr %36, align 4 - %37 = getelementptr inbounds i8, ptr %0, i64 4160 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(128) %37, i8 -1, i64 128, i1 false) - %38 = getelementptr inbounds i8, ptr %0, i64 6136 - store i32 1, ptr %38, align 8 - %39 = getelementptr inbounds i8, ptr %0, i64 6152 - store i32 %2, ptr %39, align 8 - %40 = tail call ptr @palloc(i64 noundef 40992) #10 - store ptr %0, ptr %40, align 8 - %41 = load ptr, ptr @CurrentResourceOwner, align 8 - %42 = getelementptr inbounds i8, ptr %40, i64 8 - store ptr %41, ptr %42, align 8 - %43 = getelementptr inbounds i8, ptr %40, i64 16 - %44 = getelementptr inbounds i8, ptr %0, i64 6156 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40976) %43, i8 0, i64 40976, i1 false) - %45 = load i32, ptr %39, align 8 - tail call void @LWLockInitialize(ptr noundef nonnull %44, i32 noundef %45) #10 - br label %46 - -46: ; preds = %19, %46 - %indvars.iv = phi i64 [ 0, %19 ], [ %indvars.iv.next, %46 ] - %47 = load ptr, ptr %40, align 8 - %48 = getelementptr inbounds i8, ptr %47, i64 4288 - %49 = getelementptr [38 x %struct.dsa_area_pool], ptr %48, i64 0, i64 %indvars.iv - %50 = load i32, ptr %39, align 8 - tail call void @LWLockInitialize(ptr noundef %49, i32 noundef %50) #10 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(6176) %0, i8 0, i64 6176, i1 false) + %28 = xor i32 %3, 216163848 + store i32 %28, ptr %0, align 8 + %29 = getelementptr inbounds i8, ptr %0, i64 24 + %30 = getelementptr inbounds i8, ptr %0, i64 8 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %29, i8 -1, i64 16, i1 false) + store i64 %27, ptr %30, align 8 + %31 = getelementptr inbounds i8, ptr %0, i64 16 + store i64 1048576, ptr %31, align 8 + %32 = getelementptr inbounds i8, ptr %0, i64 56 + store i32 %3, ptr %32, align 8 + %33 = getelementptr inbounds i8, ptr %0, i64 6120 + store i64 -1, ptr %33, align 8 + %34 = getelementptr inbounds i8, ptr %0, i64 6112 + store i64 %1, ptr %34, align 8 + %35 = getelementptr inbounds i8, ptr %0, i64 60 + store i32 %3, ptr %35, align 4 + %36 = getelementptr inbounds i8, ptr %0, i64 4160 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(128) %36, i8 -1, i64 128, i1 false) + %37 = getelementptr inbounds i8, ptr %0, i64 6136 + store i32 1, ptr %37, align 8 + %38 = getelementptr inbounds i8, ptr %0, i64 6152 + store i32 %2, ptr %38, align 8 + %39 = tail call ptr @palloc(i64 noundef 40992) #10 + store ptr %0, ptr %39, align 8 + %40 = load ptr, ptr @CurrentResourceOwner, align 8 + %41 = getelementptr inbounds i8, ptr %39, i64 8 + store ptr %40, ptr %41, align 8 + %42 = getelementptr inbounds i8, ptr %39, i64 16 + %43 = getelementptr inbounds i8, ptr %0, i64 6156 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40976) %42, i8 0, i64 40976, i1 false) + %44 = load i32, ptr %38, align 8 + tail call void @LWLockInitialize(ptr noundef nonnull %43, i32 noundef %44) #10 + br label %45 + +45: ; preds = %19, %45 + %indvars.iv = phi i64 [ 0, %19 ], [ %indvars.iv.next, %45 ] + %46 = load ptr, ptr %39, align 8 + %47 = getelementptr inbounds i8, ptr %46, i64 4288 + %48 = getelementptr [38 x %struct.dsa_area_pool], ptr %47, i64 0, i64 %indvars.iv + %49 = load i32, ptr %38, align 8 + tail call void @LWLockInitialize(ptr noundef %48, i32 noundef %49) #10 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 38 - br i1 %exitcond.not, label %51, label %46, !llvm.loop !7 + br i1 %exitcond.not, label %50, label %45, !llvm.loop !7 -51: ; preds = %46 - store ptr %4, ptr %43, align 8 - %52 = getelementptr inbounds i8, ptr %40, i64 24 +50: ; preds = %45 + store ptr %4, ptr %42, align 8 + %51 = getelementptr inbounds i8, ptr %39, i64 24 + store ptr %0, ptr %51, align 8 + %52 = getelementptr inbounds i8, ptr %39, i64 32 store ptr %0, ptr %52, align 8 - %53 = getelementptr inbounds i8, ptr %40, i64 32 - store ptr %0, ptr %53, align 8 - %54 = getelementptr i8, ptr %0, i64 6176 - %55 = getelementptr inbounds i8, ptr %40, i64 40 - store ptr %54, ptr %55, align 8 - %56 = getelementptr i8, ptr %0, i64 7272 - %57 = getelementptr inbounds i8, ptr %40, i64 48 - store ptr %56, ptr %57, align 8 - tail call void @FreePageManagerInitialize(ptr noundef %54, ptr noundef nonnull %0) #10 + %53 = getelementptr i8, ptr %0, i64 6176 + %54 = getelementptr inbounds i8, ptr %39, i64 40 + store ptr %53, ptr %54, align 8 + %55 = getelementptr i8, ptr %0, i64 7272 + %56 = getelementptr inbounds i8, ptr %39, i64 48 + store ptr %55, ptr %56, align 8 + tail call void @FreePageManagerInitialize(ptr noundef %53, ptr noundef nonnull %0) #10 %.not73 = icmp ult i64 %26, 4096 - br i1 %.not73, label %61, label %58 + br i1 %.not73, label %60, label %57 -58: ; preds = %51 - %59 = load ptr, ptr %55, align 8 - %60 = lshr i64 %.067, 12 - tail call void @FreePageManagerPut(ptr noundef %59, i64 noundef %60, i64 noundef %27) #10 - br label %61 +57: ; preds = %50 + %58 = load ptr, ptr %54, align 8 + %59 = lshr i64 %.067, 12 + tail call void @FreePageManagerPut(ptr noundef %58, i64 noundef %59, i64 noundef %27) #10 + br label %60 -61: ; preds = %58, %51 - %62 = tail call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %27, i1 true) - %63 = sub nuw nsw i64 64, %62 - %64 = tail call i64 @llvm.umin.i64(i64 %63, i64 15) - %65 = select i1 %.not73, i64 0, i64 %64 - %66 = getelementptr [16 x i64], ptr %37, i64 0, i64 %65 - store i64 0, ptr %66, align 8 - %67 = load ptr, ptr %53, align 8 - %68 = getelementptr inbounds i8, ptr %67, i64 40 - store i64 %65, ptr %68, align 8 - ret ptr %40 +60: ; preds = %57, %50 + %61 = tail call range(i64 0, 65) i64 @llvm.ctlz.i64(i64 %27, i1 true) + %62 = sub nuw nsw i64 64, %61 + %63 = tail call i64 @llvm.umin.i64(i64 %62, i64 15) + %64 = select i1 %.not73, i64 0, i64 %63 + %65 = getelementptr [16 x i64], ptr %36, i64 0, i64 %64 + store i64 0, ptr %65, align 8 + %66 = load ptr, ptr %52, align 8 + %67 = getelementptr inbounds i8, ptr %66, i64 40 + store i64 %64, ptr %67, align 8 + ret ptr %39 } declare ptr @dsm_segment_address(ptr noundef) local_unnamed_addr #1 diff --git a/bench/postgres/optimized/md.ll b/bench/postgres/optimized/md.ll index 0b3f1ab7dbe..71be71d83da 100644 --- a/bench/postgres/optimized/md.ll +++ b/bench/postgres/optimized/md.ll @@ -376,7 +376,7 @@ declare void @pfree(ptr noundef) local_unnamed_addr #1 define internal fastcc void @register_dirty_segment(ptr nocapture noundef readonly %0, i32 noundef %1, ptr nocapture noundef readonly %2) unnamed_addr #0 { %4 = alloca %struct.FileTag, align 8 %5 = getelementptr inbounds i8, ptr %4, i64 4 - store i64 0, ptr %4, align 8 + store i16 0, ptr %4, align 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %5, ptr noundef nonnull align 8 dereferenceable(12) %0, i64 12, i1 false) %6 = trunc i32 %1 to i16 %7 = getelementptr inbounds i8, ptr %4, i64 2 @@ -505,7 +505,7 @@ define internal fastcc void @mdunlinkfork(i64 %0, i64 %1, i32 noundef %2, i1 nou %27 = phi i32 [ %19, %26 ], [ 2, %20 ], [ %19, %15 ] call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) %28 = getelementptr inbounds i8, ptr %7, i64 4 - store i64 0, ptr %7, align 8 + store i16 0, ptr %7, align 8 store i64 %0, ptr %28, align 4 %.sroa.2.0..sroa_idx.i = getelementptr inbounds i8, ptr %7, i64 12 store i32 %.sroa.6.8.extract.trunc, ptr %.sroa.2.0..sroa_idx.i, align 4 @@ -576,100 +576,102 @@ define internal fastcc void @mdunlinkfork(i64 %0, i64 %1, i32 noundef %2, i1 nou %56 = load i32, ptr %47, align 4 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) %57 = getelementptr inbounds i8, ptr %6, i64 4 - store i64 0, ptr %6, align 8 + store i16 0, ptr %6, align 8 store i64 %0, ptr %57, align 4 %.sroa.2.0..sroa_idx.i83 = getelementptr inbounds i8, ptr %6, i64 12 store i32 %.sroa.6.8.extract.trunc, ptr %.sroa.2.0..sroa_idx.i83, align 4 - %58 = getelementptr inbounds i8, ptr %6, i64 16 - store i64 0, ptr %58, align 8 - %59 = call zeroext i1 @RegisterSyncRequest(ptr noundef nonnull %6, i32 noundef 1, i1 noundef zeroext true) #14 + %58 = getelementptr inbounds i8, ptr %6, i64 2 + store i16 0, ptr %58, align 2 + %59 = getelementptr inbounds i8, ptr %6, i64 16 + store i64 0, ptr %59, align 8 + %60 = call zeroext i1 @RegisterSyncRequest(ptr noundef nonnull %6, i32 noundef 1, i1 noundef zeroext true) #14 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) store i32 %56, ptr %47, align 4 - %60 = icmp slt i32 %45, 0 + %61 = icmp slt i32 %45, 0 %.not78 = icmp eq i32 %56, 2 - %or.cond107 = select i1 %60, i1 %.not78, i1 false + %or.cond107 = select i1 %61, i1 %.not78, i1 false br i1 %or.cond107, label %.thread90.thread, label %.thread92 .thread92: ; preds = %.thread90.thread101, %.thread, %._crit_edge - %61 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %8) #17 - %62 = add i64 %61, 12 - %63 = call ptr @palloc(i64 noundef %62) #14 + %62 = call i64 @strlen(ptr noundef nonnull dereferenceable(1) %8) #17 + %63 = add i64 %62, 12 + %64 = call ptr @palloc(i64 noundef %63) #14 %.not79 = icmp eq i64 %.sroa.11.8.extract.shift, 4294967295 - %64 = getelementptr inbounds i8, ptr %5, i64 4 + %65 = getelementptr inbounds i8, ptr %5, i64 4 %.sroa.2.0..sroa_idx.i87 = getelementptr inbounds i8, ptr %5, i64 12 - %65 = trunc i32 %2 to i16 - %66 = getelementptr inbounds i8, ptr %5, i64 2 - %67 = getelementptr inbounds i8, ptr %5, i64 16 + %66 = trunc i32 %2 to i16 + %67 = getelementptr inbounds i8, ptr %5, i64 2 + %68 = getelementptr inbounds i8, ptr %5, i64 16 br i1 %.not79, label %.thread92.split.us, label %.thread92.split .thread92.split.us: ; preds = %.thread92, %do_truncate.exit86.us - %.0.us = phi i32 [ %84, %do_truncate.exit86.us ], [ 1, %.thread92 ] - %68 = call i32 (ptr, ptr, ...) @pg_sprintf(ptr noundef %63, ptr noundef nonnull @.str.17, ptr noundef %8, i32 noundef %.0.us) #14 - %69 = call i32 @pg_truncate(ptr noundef %63, i64 noundef 0) #14 - %70 = icmp slt i32 %69, 0 - br i1 %70, label %71, label %do_truncate.exit86.us - -71: ; preds = %.thread92.split.us - %72 = tail call ptr @__errno_location() #15 - %73 = load i32, ptr %72, align 4 - %.not.i85.us = icmp eq i32 %73, 2 - br i1 %.not.i85.us, label %.loopexit, label %74 - -74: ; preds = %71 - %75 = call zeroext i1 @errstart(i32 noundef 19, ptr noundef null) #14 - br i1 %75, label %76, label %79 - -76: ; preds = %74 - %77 = call i32 @errcode_for_file_access() #14 - %78 = call i32 (ptr, ...) @errmsg(ptr noundef nonnull @.str.13, ptr noundef %63) #14 + %.0.us = phi i32 [ %85, %do_truncate.exit86.us ], [ 1, %.thread92 ] + %69 = call i32 (ptr, ptr, ...) @pg_sprintf(ptr noundef %64, ptr noundef nonnull @.str.17, ptr noundef %8, i32 noundef %.0.us) #14 + %70 = call i32 @pg_truncate(ptr noundef %64, i64 noundef 0) #14 + %71 = icmp slt i32 %70, 0 + br i1 %71, label %72, label %do_truncate.exit86.us + +72: ; preds = %.thread92.split.us + %73 = tail call ptr @__errno_location() #15 + %74 = load i32, ptr %73, align 4 + %.not.i85.us = icmp eq i32 %74, 2 + br i1 %.not.i85.us, label %.loopexit, label %75 + +75: ; preds = %72 + %76 = call zeroext i1 @errstart(i32 noundef 19, ptr noundef null) #14 + br i1 %76, label %77, label %80 + +77: ; preds = %75 + %78 = call i32 @errcode_for_file_access() #14 + %79 = call i32 (ptr, ...) @errmsg(ptr noundef nonnull @.str.13, ptr noundef %64) #14 call void @errfinish(ptr noundef nonnull @.str.2, i32 noundef 339, ptr noundef nonnull @__func__.do_truncate) #14 - br label %79 + br label %80 -79: ; preds = %74, %76 - store i32 %73, ptr %72, align 4 +80: ; preds = %75, %77 + store i32 %74, ptr %73, align 4 br label %do_truncate.exit86.us -do_truncate.exit86.us: ; preds = %79, %.thread92.split.us +do_truncate.exit86.us: ; preds = %80, %.thread92.split.us call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) - store i64 0, ptr %5, align 8 - store i64 %0, ptr %64, align 4 + store i16 0, ptr %5, align 8 + store i64 %0, ptr %65, align 4 store i32 %.sroa.6.8.extract.trunc, ptr %.sroa.2.0..sroa_idx.i87, align 4 - store i16 %65, ptr %66, align 2 - %80 = zext i32 %.0.us to i64 - store i64 %80, ptr %67, align 8 - %81 = call zeroext i1 @RegisterSyncRequest(ptr noundef nonnull %5, i32 noundef 2, i1 noundef zeroext true) #14 + store i16 %66, ptr %67, align 2 + %81 = zext i32 %.0.us to i64 + store i64 %81, ptr %68, align 8 + %82 = call zeroext i1 @RegisterSyncRequest(ptr noundef nonnull %5, i32 noundef 2, i1 noundef zeroext true) #14 call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) - %82 = call i32 @unlink(ptr noundef %63) #14 - %83 = icmp slt i32 %82, 0 - %84 = add i32 %.0.us, 1 - br i1 %83, label %.split.us, label %.thread92.split.us + %83 = call i32 @unlink(ptr noundef %64) #14 + %84 = icmp slt i32 %83, 0 + %85 = add i32 %.0.us, 1 + br i1 %84, label %.split.us, label %.thread92.split.us .thread92.split: ; preds = %.thread92, %.thread92.split - %.0 = phi i32 [ %88, %.thread92.split ], [ 1, %.thread92 ] - %85 = call i32 (ptr, ptr, ...) @pg_sprintf(ptr noundef %63, ptr noundef nonnull @.str.17, ptr noundef %8, i32 noundef %.0) #14 - %86 = call i32 @unlink(ptr noundef %63) #14 - %87 = icmp slt i32 %86, 0 - %88 = add i32 %.0, 1 - br i1 %87, label %.split.us, label %.thread92.split + %.0 = phi i32 [ %89, %.thread92.split ], [ 1, %.thread92 ] + %86 = call i32 (ptr, ptr, ...) @pg_sprintf(ptr noundef %64, ptr noundef nonnull @.str.17, ptr noundef %8, i32 noundef %.0) #14 + %87 = call i32 @unlink(ptr noundef %64) #14 + %88 = icmp slt i32 %87, 0 + %89 = add i32 %.0, 1 + br i1 %88, label %.split.us, label %.thread92.split .split.us: ; preds = %.thread92.split, %do_truncate.exit86.us - %89 = tail call ptr @__errno_location() #15 - %90 = load i32, ptr %89, align 4 - %.not80 = icmp eq i32 %90, 2 - br i1 %.not80, label %.loopexit, label %91 - -91: ; preds = %.split.us - %92 = call zeroext i1 @errstart(i32 noundef 19, ptr noundef null) #14 - br i1 %92, label %93, label %.loopexit - -93: ; preds = %91 - %94 = call i32 @errcode_for_file_access() #14 - %95 = call i32 (ptr, ...) @errmsg(ptr noundef nonnull @.str.16, ptr noundef %63) #14 + %90 = tail call ptr @__errno_location() #15 + %91 = load i32, ptr %90, align 4 + %.not80 = icmp eq i32 %91, 2 + br i1 %.not80, label %.loopexit, label %92 + +92: ; preds = %.split.us + %93 = call zeroext i1 @errstart(i32 noundef 19, ptr noundef null) #14 + br i1 %93, label %94, label %.loopexit + +94: ; preds = %92 + %95 = call i32 @errcode_for_file_access() #14 + %96 = call i32 (ptr, ...) @errmsg(ptr noundef nonnull @.str.16, ptr noundef %64) #14 call void @errfinish(ptr noundef nonnull @.str.2, i32 noundef 443, ptr noundef nonnull @__func__.mdunlinkfork) #14 br label %.loopexit -.loopexit: ; preds = %71, %.split.us, %91, %93 - call void @pfree(ptr noundef %63) #14 +.loopexit: ; preds = %72, %.split.us, %92, %94 + call void @pfree(ptr noundef %64) #14 br label %.thread90.thread .thread90.thread: ; preds = %._crit_edge, %._crit_edge95, %36, %.loopexit diff --git a/bench/postgres/optimized/pg_basebackup.ll b/bench/postgres/optimized/pg_basebackup.ll index ca761e8a7b5..f85054569a8 100644 --- a/bench/postgres/optimized/pg_basebackup.ll +++ b/bench/postgres/optimized/pg_basebackup.ll @@ -3472,7 +3472,7 @@ declare i32 @fork() local_unnamed_addr #4 define internal fastcc range(i32 0, 2) i32 @LogStreamerMain(ptr noundef %0) unnamed_addr #0 { %2 = alloca %struct.StreamCtl, align 8 %3 = getelementptr inbounds i8, ptr %2, i64 8 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %3, i8 0, i64 40, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(72) %3, i8 0, i64 64, i1 false) store i1 true, ptr @in_log_streamer, align 1 %4 = getelementptr inbounds i8, ptr %0, i64 8 %5 = load i64, ptr %4, align 8 @@ -3497,60 +3497,58 @@ define internal fastcc range(i32 0, 2) i32 @LogStreamerMain(ptr noundef %0) unna store i8 0, ptr %17, align 2 %18 = getelementptr inbounds i8, ptr %2, i64 29 store i8 1, ptr %18, align 1 - %19 = getelementptr inbounds i8, ptr %2, i64 56 - store ptr null, ptr %19, align 8 - %20 = load ptr, ptr @replication_slot, align 8 - %21 = getelementptr inbounds i8, ptr %2, i64 64 - store ptr %20, ptr %21, align 8 - %22 = load i8, ptr @format, align 1 - %23 = icmp eq i8 %22, 112 - %24 = getelementptr inbounds i8, ptr %0, i64 16 - br i1 %23, label %25, label %27 - -25: ; preds = %1 - %26 = tail call ptr @CreateWalDirectoryMethod(ptr noundef nonnull %24, i32 noundef 0, i32 noundef 0, i1 noundef zeroext false) #18 - br label %33 - -27: ; preds = %1 - %28 = getelementptr inbounds i8, ptr %0, i64 1052 - %29 = load i32, ptr %28, align 4 - %30 = getelementptr inbounds i8, ptr %0, i64 1056 - %31 = load i32, ptr %30, align 8 - %32 = tail call ptr @CreateWalTarMethod(ptr noundef nonnull %24, i32 noundef %29, i32 noundef %31, i1 noundef zeroext false) #18 - br label %33 - -33: ; preds = %27, %25 - %.sink = phi ptr [ %26, %25 ], [ %32, %27 ] - %34 = getelementptr inbounds i8, ptr %2, i64 48 - store ptr %.sink, ptr %34, align 8 - %35 = load ptr, ptr %0, align 8 - %36 = call zeroext i1 @ReceiveXlogStream(ptr noundef %35, ptr noundef nonnull %2) #18 - br i1 %36, label %37, label %50 - -37: ; preds = %33 - %38 = load ptr, ptr %34, align 8 - %39 = load ptr, ptr %38, align 8 - %40 = getelementptr inbounds i8, ptr %39, i64 56 - %41 = load ptr, ptr %40, align 8 - %42 = call zeroext i1 %41(ptr noundef nonnull %38) #18 - br i1 %42, label %44, label %43 - -43: ; preds = %37 + %19 = load ptr, ptr @replication_slot, align 8 + %20 = getelementptr inbounds i8, ptr %2, i64 64 + store ptr %19, ptr %20, align 8 + %21 = load i8, ptr @format, align 1 + %22 = icmp eq i8 %21, 112 + %23 = getelementptr inbounds i8, ptr %0, i64 16 + br i1 %22, label %24, label %26 + +24: ; preds = %1 + %25 = tail call ptr @CreateWalDirectoryMethod(ptr noundef nonnull %23, i32 noundef 0, i32 noundef 0, i1 noundef zeroext false) #18 + br label %32 + +26: ; preds = %1 + %27 = getelementptr inbounds i8, ptr %0, i64 1052 + %28 = load i32, ptr %27, align 4 + %29 = getelementptr inbounds i8, ptr %0, i64 1056 + %30 = load i32, ptr %29, align 8 + %31 = tail call ptr @CreateWalTarMethod(ptr noundef nonnull %23, i32 noundef %28, i32 noundef %30, i1 noundef zeroext false) #18 + br label %32 + +32: ; preds = %26, %24 + %.sink = phi ptr [ %25, %24 ], [ %31, %26 ] + %33 = getelementptr inbounds i8, ptr %2, i64 48 + store ptr %.sink, ptr %33, align 8 + %34 = load ptr, ptr %0, align 8 + %35 = call zeroext i1 @ReceiveXlogStream(ptr noundef %34, ptr noundef nonnull %2) #18 + br i1 %35, label %36, label %49 + +36: ; preds = %32 + %37 = load ptr, ptr %33, align 8 + %38 = load ptr, ptr %37, align 8 + %39 = getelementptr inbounds i8, ptr %38, i64 56 + %40 = load ptr, ptr %39, align 8 + %41 = call zeroext i1 %40(ptr noundef nonnull %37) #18 + br i1 %41, label %43, label %42 + +42: ; preds = %36 call void (i32, i32, ptr, ...) @pg_log_generic(i32 noundef 4, i32 noundef 0, ptr noundef nonnull @.str.244) #18 - br label %50 + br label %49 -44: ; preds = %37 - %45 = load ptr, ptr %0, align 8 - call void @PQfinish(ptr noundef %45) #18 - %46 = load ptr, ptr %34, align 8 - %47 = load ptr, ptr %46, align 8 - %48 = getelementptr inbounds i8, ptr %47, i64 64 - %49 = load ptr, ptr %48, align 8 - call void %49(ptr noundef nonnull %46) #18 - br label %50 +43: ; preds = %36 + %44 = load ptr, ptr %0, align 8 + call void @PQfinish(ptr noundef %44) #18 + %45 = load ptr, ptr %33, align 8 + %46 = load ptr, ptr %45, align 8 + %47 = getelementptr inbounds i8, ptr %46, i64 64 + %48 = load ptr, ptr %47, align 8 + call void %48(ptr noundef nonnull %45) #18 + br label %49 -50: ; preds = %33, %44, %43 - %.0 = phi i32 [ 0, %44 ], [ 1, %43 ], [ 1, %33 ] +49: ; preds = %32, %43, %42 + %.0 = phi i32 [ 0, %43 ], [ 1, %42 ], [ 1, %32 ] ret i32 %.0 } diff --git a/bench/postgres/optimized/xlog.ll b/bench/postgres/optimized/xlog.ll index f599c56ed27..db080d58aa8 100644 --- a/bench/postgres/optimized/xlog.ll +++ b/bench/postgres/optimized/xlog.ll @@ -2875,7 +2875,7 @@ define internal fastcc void @AdvanceXLInsertBuffer(i64 noundef %0, i32 noundef % .lr.ph: ; preds = %.lr.ph.lr.ph, %.outer %14 = phi i64 [ %10, %.lr.ph.lr.ph ], [ %92, %.outer ] - %15 = phi ptr [ %8, %.lr.ph.lr.ph ], [ %119, %.outer ] + %15 = phi ptr [ %8, %.lr.ph.lr.ph ], [ %118, %.outer ] br i1 %2, label %.lr.ph.split.us, label %.lr.ph.split .lr.ph.split.us: ; preds = %.lr.ph @@ -3009,61 +3009,60 @@ define internal fastcc void @AdvanceXLInsertBuffer(i64 noundef %0, i32 noundef % %97 = getelementptr %struct.pg_atomic_uint64, ptr %88, i64 %.us-phi52 store volatile i64 0, ptr %97, align 8 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #26, !srcloc !34 - %98 = getelementptr inbounds i8, ptr %96, i64 2 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(8192) %98, i8 0, i64 8190, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(8192) %96, i8 0, i64 8192, i1 false) store i16 -12012, ptr %96, align 8 - %99 = getelementptr inbounds i8, ptr %96, i64 4 - store i32 %1, ptr %99, align 4 - %100 = getelementptr inbounds i8, ptr %96, i64 8 - store i64 %91, ptr %100, align 8 - %101 = load i32, ptr %13, align 4 - %102 = icmp eq i32 %101, 0 - br i1 %102, label %103, label %105 - -103: ; preds = %.split.us - %104 = getelementptr inbounds i8, ptr %96, i64 2 - store i16 4, ptr %104, align 2 - br label %105 - -105: ; preds = %103, %.split.us - %106 = phi i16 [ 6, %103 ], [ 2, %.split.us ] - %107 = load i32, ptr @wal_segment_size, align 4 - %108 = add i32 %107, -1 - %109 = sext i32 %108 to i64 - %110 = and i64 %91, %109 - %111 = icmp eq i64 %110, 0 - br i1 %111, label %112, label %.outer - -112: ; preds = %105 - %113 = load ptr, ptr @ControlFile, align 8 - %114 = load i64, ptr %113, align 8 - %115 = getelementptr inbounds i8, ptr %96, i64 24 - store i64 %114, ptr %115, align 8 - %116 = getelementptr inbounds i8, ptr %96, i64 32 - store i32 %107, ptr %116, align 8 - %117 = getelementptr inbounds i8, ptr %96, i64 36 - store i32 8192, ptr %117, align 4 - %118 = getelementptr inbounds i8, ptr %96, i64 2 - store i16 %106, ptr %118, align 2 + %98 = getelementptr inbounds i8, ptr %96, i64 4 + store i32 %1, ptr %98, align 4 + %99 = getelementptr inbounds i8, ptr %96, i64 8 + store i64 %91, ptr %99, align 8 + %100 = load i32, ptr %13, align 4 + %101 = icmp eq i32 %100, 0 + br i1 %101, label %102, label %104 + +102: ; preds = %.split.us + %103 = getelementptr inbounds i8, ptr %96, i64 2 + store i16 4, ptr %103, align 2 + br label %104 + +104: ; preds = %102, %.split.us + %105 = phi i16 [ 6, %102 ], [ 2, %.split.us ] + %106 = load i32, ptr @wal_segment_size, align 4 + %107 = add i32 %106, -1 + %108 = sext i32 %107 to i64 + %109 = and i64 %91, %108 + %110 = icmp eq i64 %109, 0 + br i1 %110, label %111, label %.outer + +111: ; preds = %104 + %112 = load ptr, ptr @ControlFile, align 8 + %113 = load i64, ptr %112, align 8 + %114 = getelementptr inbounds i8, ptr %96, i64 24 + store i64 %113, ptr %114, align 8 + %115 = getelementptr inbounds i8, ptr %96, i64 32 + store i32 %106, ptr %115, align 8 + %116 = getelementptr inbounds i8, ptr %96, i64 36 + store i32 8192, ptr %116, align 4 + %117 = getelementptr inbounds i8, ptr %96, i64 2 + store i16 %105, ptr %117, align 2 br label %.outer -.outer: ; preds = %112, %105 +.outer: ; preds = %111, %104 tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #26, !srcloc !35 - %119 = load ptr, ptr @XLogCtl, align 8 - %120 = getelementptr inbounds i8, ptr %119, i64 296 - %121 = load ptr, ptr %120, align 8 - %122 = getelementptr %struct.pg_atomic_uint64, ptr %121, i64 %.us-phi52 - store volatile i64 %92, ptr %122, align 8 - %123 = getelementptr inbounds i8, ptr %119, i64 280 - store i64 %92, ptr %123, align 8 - %124 = icmp uge i64 %0, %92 - %125 = or i1 %2, %124 - br i1 %125, label %.lr.ph, label %.outer._crit_edge, !llvm.loop !33 + %118 = load ptr, ptr @XLogCtl, align 8 + %119 = getelementptr inbounds i8, ptr %118, i64 296 + %120 = load ptr, ptr %119, align 8 + %121 = getelementptr %struct.pg_atomic_uint64, ptr %120, i64 %.us-phi52 + store volatile i64 %92, ptr %121, align 8 + %122 = getelementptr inbounds i8, ptr %118, i64 280 + store i64 %92, ptr %122, align 8 + %123 = icmp uge i64 %0, %92 + %124 = or i1 %2, %123 + br i1 %124, label %.lr.ph, label %.outer._crit_edge, !llvm.loop !33 .outer._crit_edge: ; preds = %.lr.ph.split.us, %.outer, %81, %3 - %126 = load ptr, ptr @MainLWLockArray, align 8 - %127 = getelementptr i8, ptr %126, i64 896 - tail call void @LWLockRelease(ptr noundef %127) #26 + %125 = load ptr, ptr @MainLWLockArray, align 8 + %126 = getelementptr i8, ptr %125, i64 896 + tail call void @LWLockRelease(ptr noundef %126) #26 ret void } diff --git a/bench/proj/optimized/grids.cpp.ll b/bench/proj/optimized/grids.cpp.ll index d86dd258030..95cca78c1f8 100644 --- a/bench/proj/optimized/grids.cpp.ll +++ b/bench/proj/optimized/grids.cpp.ll @@ -7063,7 +7063,7 @@ define linkonce_odr hidden void @_ZN5osgeo4proj18GTiffVGridShiftSetC2EP6pj_ctxOS tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %6, i8 0, i64 24, i1 false) store ptr getelementptr inbounds (i8, ptr @_ZTVN5osgeo4proj18GTiffVGridShiftSetE, i64 16), ptr %0, align 8 %7 = invoke noalias noundef nonnull dereferenceable(192) ptr @_Znwm(i64 noundef 192) #33 - to label %8 unwind label %31 + to label %8 unwind label %30 8: ; preds = %3 store ptr getelementptr inbounds (i8, ptr @_ZTVN5osgeo4proj12GTiffDatasetE, i64 16), ptr %7, align 8 @@ -7085,11 +7085,10 @@ define linkonce_odr hidden void @_ZN5osgeo4proj18GTiffVGridShiftSetC2EP6pj_ctxOS tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #30 %17 = getelementptr inbounds i8, ptr %7, i64 80 %18 = getelementptr inbounds i8, ptr %7, i64 88 - store i64 0, ptr %18, align 8 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(112) %18, i8 0, i64 88, i1 false) store ptr getelementptr inbounds (i8, ptr @_ZTVN5osgeo4proj5lru115CacheImSt6vectorIhSaIhEENS1_8NullLockESt13unordered_mapImSt14_List_iteratorINS1_12KeyValuePairImS5_EEESt4hashImESt8equal_toImESaISt4pairIKmSB_EEEEE, i64 16), ptr %17, align 8 %19 = getelementptr inbounds i8, ptr %7, i64 96 %20 = getelementptr inbounds i8, ptr %7, i64 128 - store i64 0, ptr %20, align 8 %21 = getelementptr inbounds i8, ptr %7, i64 144 store ptr %21, ptr %19, align 8 %22 = getelementptr inbounds i8, ptr %7, i64 104 @@ -7103,21 +7102,19 @@ define linkonce_odr hidden void @_ZN5osgeo4proj18GTiffVGridShiftSetC2EP6pj_ctxOS tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %24, i8 0, i64 16, i1 false) store ptr %25, ptr %26, align 8 store ptr %25, ptr %25, align 8 - %27 = getelementptr inbounds i8, ptr %7, i64 168 - store i64 0, ptr %27, align 8 - %28 = getelementptr inbounds i8, ptr %7, i64 176 - store i64 12, ptr %28, align 8 - %29 = getelementptr inbounds i8, ptr %7, i64 184 - store i64 10, ptr %29, align 8 - %30 = getelementptr inbounds i8, ptr %0, i64 96 - store ptr %7, ptr %30, align 8 + %27 = getelementptr inbounds i8, ptr %7, i64 176 + store i64 12, ptr %27, align 8 + %28 = getelementptr inbounds i8, ptr %7, i64 184 + store i64 10, ptr %28, align 8 + %29 = getelementptr inbounds i8, ptr %0, i64 96 + store ptr %7, ptr %29, align 8 ret void -31: ; preds = %3 - %32 = landingpad { ptr, i32 } +30: ; preds = %3 + %31 = landingpad { ptr, i32 } cleanup tail call void @_ZN5osgeo4proj20VerticalShiftGridSetD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %0) #30 - resume { ptr, i32 } %32 + resume { ptr, i32 } %31 } declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #3 @@ -11849,7 +11846,7 @@ define linkonce_odr hidden void @_ZN5osgeo4proj18GTiffHGridShiftSetC2EP6pj_ctxOS tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %6, i8 0, i64 24, i1 false) store ptr getelementptr inbounds (i8, ptr @_ZTVN5osgeo4proj18GTiffHGridShiftSetE, i64 16), ptr %0, align 8 %7 = invoke noalias noundef nonnull dereferenceable(192) ptr @_Znwm(i64 noundef 192) #33 - to label %8 unwind label %31 + to label %8 unwind label %30 8: ; preds = %3 store ptr getelementptr inbounds (i8, ptr @_ZTVN5osgeo4proj12GTiffDatasetE, i64 16), ptr %7, align 8 @@ -11871,11 +11868,10 @@ define linkonce_odr hidden void @_ZN5osgeo4proj18GTiffHGridShiftSetC2EP6pj_ctxOS tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #30 %17 = getelementptr inbounds i8, ptr %7, i64 80 %18 = getelementptr inbounds i8, ptr %7, i64 88 - store i64 0, ptr %18, align 8 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(112) %18, i8 0, i64 88, i1 false) store ptr getelementptr inbounds (i8, ptr @_ZTVN5osgeo4proj5lru115CacheImSt6vectorIhSaIhEENS1_8NullLockESt13unordered_mapImSt14_List_iteratorINS1_12KeyValuePairImS5_EEESt4hashImESt8equal_toImESaISt4pairIKmSB_EEEEE, i64 16), ptr %17, align 8 %19 = getelementptr inbounds i8, ptr %7, i64 96 %20 = getelementptr inbounds i8, ptr %7, i64 128 - store i64 0, ptr %20, align 8 %21 = getelementptr inbounds i8, ptr %7, i64 144 store ptr %21, ptr %19, align 8 %22 = getelementptr inbounds i8, ptr %7, i64 104 @@ -11889,21 +11885,19 @@ define linkonce_odr hidden void @_ZN5osgeo4proj18GTiffHGridShiftSetC2EP6pj_ctxOS tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %24, i8 0, i64 16, i1 false) store ptr %25, ptr %26, align 8 store ptr %25, ptr %25, align 8 - %27 = getelementptr inbounds i8, ptr %7, i64 168 - store i64 0, ptr %27, align 8 - %28 = getelementptr inbounds i8, ptr %7, i64 176 - store i64 12, ptr %28, align 8 - %29 = getelementptr inbounds i8, ptr %7, i64 184 - store i64 10, ptr %29, align 8 - %30 = getelementptr inbounds i8, ptr %0, i64 96 - store ptr %7, ptr %30, align 8 + %27 = getelementptr inbounds i8, ptr %7, i64 176 + store i64 12, ptr %27, align 8 + %28 = getelementptr inbounds i8, ptr %7, i64 184 + store i64 10, ptr %28, align 8 + %29 = getelementptr inbounds i8, ptr %0, i64 96 + store ptr %7, ptr %29, align 8 ret void -31: ; preds = %3 - %32 = landingpad { ptr, i32 } +30: ; preds = %3 + %31 = landingpad { ptr, i32 } cleanup tail call void @_ZN5osgeo4proj22HorizontalShiftGridSetD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %0) #30 - resume { ptr, i32 } %32 + resume { ptr, i32 } %31 } ; Function Attrs: mustprogress nounwind uwtable @@ -14706,7 +14700,7 @@ define linkonce_odr hidden void @_ZN5osgeo4proj24GTiffGenericGridShiftSetC2EP6pj tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %6, i8 0, i64 24, i1 false) store ptr getelementptr inbounds (i8, ptr @_ZTVN5osgeo4proj24GTiffGenericGridShiftSetE, i64 16), ptr %0, align 8 %7 = invoke noalias noundef nonnull dereferenceable(192) ptr @_Znwm(i64 noundef 192) #33 - to label %8 unwind label %31 + to label %8 unwind label %30 8: ; preds = %3 store ptr getelementptr inbounds (i8, ptr @_ZTVN5osgeo4proj12GTiffDatasetE, i64 16), ptr %7, align 8 @@ -14728,11 +14722,10 @@ define linkonce_odr hidden void @_ZN5osgeo4proj24GTiffGenericGridShiftSetC2EP6pj tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #30 %17 = getelementptr inbounds i8, ptr %7, i64 80 %18 = getelementptr inbounds i8, ptr %7, i64 88 - store i64 0, ptr %18, align 8 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(112) %18, i8 0, i64 88, i1 false) store ptr getelementptr inbounds (i8, ptr @_ZTVN5osgeo4proj5lru115CacheImSt6vectorIhSaIhEENS1_8NullLockESt13unordered_mapImSt14_List_iteratorINS1_12KeyValuePairImS5_EEESt4hashImESt8equal_toImESaISt4pairIKmSB_EEEEE, i64 16), ptr %17, align 8 %19 = getelementptr inbounds i8, ptr %7, i64 96 %20 = getelementptr inbounds i8, ptr %7, i64 128 - store i64 0, ptr %20, align 8 %21 = getelementptr inbounds i8, ptr %7, i64 144 store ptr %21, ptr %19, align 8 %22 = getelementptr inbounds i8, ptr %7, i64 104 @@ -14746,21 +14739,19 @@ define linkonce_odr hidden void @_ZN5osgeo4proj24GTiffGenericGridShiftSetC2EP6pj tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %24, i8 0, i64 16, i1 false) store ptr %25, ptr %26, align 8 store ptr %25, ptr %25, align 8 - %27 = getelementptr inbounds i8, ptr %7, i64 168 - store i64 0, ptr %27, align 8 - %28 = getelementptr inbounds i8, ptr %7, i64 176 - store i64 12, ptr %28, align 8 - %29 = getelementptr inbounds i8, ptr %7, i64 184 - store i64 10, ptr %29, align 8 - %30 = getelementptr inbounds i8, ptr %0, i64 96 - store ptr %7, ptr %30, align 8 + %27 = getelementptr inbounds i8, ptr %7, i64 176 + store i64 12, ptr %27, align 8 + %28 = getelementptr inbounds i8, ptr %7, i64 184 + store i64 10, ptr %28, align 8 + %29 = getelementptr inbounds i8, ptr %0, i64 96 + store ptr %7, ptr %29, align 8 ret void -31: ; preds = %3 - %32 = landingpad { ptr, i32 } +30: ; preds = %3 + %31 = landingpad { ptr, i32 } cleanup tail call void @_ZN5osgeo4proj19GenericShiftGridSetD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %0) #30 - resume { ptr, i32 } %32 + resume { ptr, i32 } %31 } ; Function Attrs: mustprogress uwtable diff --git a/bench/pybind11/optimized/cross_module_interleaved_error_already_set.cpp.ll b/bench/pybind11/optimized/cross_module_interleaved_error_already_set.cpp.ll index 6e0324a97bf..d3b587f95eb 100644 --- a/bench/pybind11/optimized/cross_module_interleaved_error_already_set.cpp.ll +++ b/bench/pybind11/optimized/cross_module_interleaved_error_already_set.cpp.ll @@ -1375,7 +1375,7 @@ _ZN8pybind116objectD2Ev.exit48: ; preds = %_ZN8pybind116detail 61: ; preds = %58 %62 = getelementptr inbounds i8, ptr %60, i64 32 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(472) %62, i8 0, i64 432, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(472) %62, i8 0, i64 424, i1 false) %63 = getelementptr inbounds i8, ptr %60, i64 48 store ptr %63, ptr %60, align 8 %64 = getelementptr inbounds i8, ptr %60, i64 8 @@ -7005,7 +7005,7 @@ define linkonce_odr hidden void @_ZN8pybind1112cpp_functionC2IZNS_6detail23all_t call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) tail call void @llvm.experimental.noalias.scope.decl(metadata !77) %4 = invoke noalias noundef nonnull dereferenceable(136) ptr @_Znwm(i64 noundef 136) #29 - to label %.noexc unwind label %20 + to label %.noexc unwind label %21 .noexc: ; preds = %2 %5 = getelementptr inbounds i8, ptr %4, i64 94 @@ -7013,7 +7013,7 @@ define linkonce_odr hidden void @_ZN8pybind1112cpp_functionC2IZNS_6detail23all_t store i16 0, ptr %6, align 8, !noalias !77 %7 = getelementptr inbounds i8, ptr %4, i64 104 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %7, i8 0, i64 32, i1 false), !noalias !77 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(91) %4, i8 0, i64 91, i1 false), !noalias !77 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(91) %4, i8 0, i64 89, i1 false), !noalias !77 store ptr %4, ptr %3, align 8, !alias.scope !77 %8 = getelementptr inbounds i8, ptr %4, i64 56 %9 = load i64, ptr %1, align 8 @@ -7021,42 +7021,44 @@ define linkonce_odr hidden void @_ZN8pybind1112cpp_functionC2IZNS_6detail23all_t %10 = getelementptr inbounds i8, ptr %4, i64 48 store ptr @_ZZN8pybind1112cpp_function10initializeIZNS_6detail23all_type_info_get_cacheEP11_typeobjectEUlNS_6handleEE_vJS5_EJEEEvOT_PFT0_DpT1_EDpRKT2_ENUlRNS2_13function_callEE_8__invokeESJ_, ptr %10, align 8 store i16 1, ptr %5, align 2 + %11 = getelementptr inbounds i8, ptr %4, i64 89 + store i16 0, ptr %11, align 1 invoke void @_ZN8pybind1112cpp_function18initialize_genericEOSt10unique_ptrINS_6detail15function_recordENS0_33InitializingFunctionRecordDeleterEEPKcPKPKSt9type_infom(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull @_ZZN8pybind1112cpp_function10initializeIZNS_6detail23all_type_info_get_cacheEP11_typeobjectEUlNS_6handleEE_vJS5_EJEEEvOT_PFT0_DpT1_EDpRKT2_E9signature, ptr noundef nonnull @_ZZN8pybind1112cpp_function10initializeIZNS_6detail23all_type_info_get_cacheEP11_typeobjectEUlNS_6handleEE_vJS5_EJEEEvOT_PFT0_DpT1_EDpRKT2_E5types, i64 noundef 1) - to label %11 unwind label %17 + to label %12 unwind label %18 -11: ; preds = %.noexc - %12 = load ptr, ptr %3, align 8 - %.not.i.i = icmp eq ptr %12, null - br i1 %.not.i.i, label %19, label %13 +12: ; preds = %.noexc + %13 = load ptr, ptr %3, align 8 + %.not.i.i = icmp eq ptr %13, null + br i1 %.not.i.i, label %20, label %14 -13: ; preds = %11 - invoke void @_ZN8pybind1112cpp_function8destructEPNS_6detail15function_recordEb(ptr noundef nonnull %12, i1 noundef zeroext false) - to label %19 unwind label %14 +14: ; preds = %12 + invoke void @_ZN8pybind1112cpp_function8destructEPNS_6detail15function_recordEb(ptr noundef nonnull %13, i1 noundef zeroext false) + to label %20 unwind label %15 -14: ; preds = %13 - %15 = landingpad { ptr, i32 } +15: ; preds = %14 + %16 = landingpad { ptr, i32 } catch ptr null - %16 = extractvalue { ptr, i32 } %15, 0 - call void @__clang_call_terminate(ptr %16) #25 + %17 = extractvalue { ptr, i32 } %16, 0 + call void @__clang_call_terminate(ptr %17) #25 unreachable -17: ; preds = %.noexc - %18 = landingpad { ptr, i32 } +18: ; preds = %.noexc + %19 = landingpad { ptr, i32 } cleanup call void @_ZNSt10unique_ptrIN8pybind116detail15function_recordENS0_12cpp_function33InitializingFunctionRecordDeleterEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #24 br label %.body -19: ; preds = %13, %11 +20: ; preds = %14, %12 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) ret void -20: ; preds = %2 - %21 = landingpad { ptr, i32 } +21: ; preds = %2 + %22 = landingpad { ptr, i32 } cleanup br label %.body -.body: ; preds = %17, %20 - %eh.lpad-body = phi { ptr, i32 } [ %21, %20 ], [ %18, %17 ] +.body: ; preds = %18, %21 + %eh.lpad-body = phi { ptr, i32 } [ %22, %21 ], [ %19, %18 ] call void @_ZN8pybind118functionD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %0) #24 resume { ptr, i32 } %eh.lpad-body } @@ -18600,7 +18602,7 @@ define linkonce_odr hidden void @_ZN8pybind116detail14clear_instanceEP7_object(p store ptr %12, ptr %13, align 8, !alias.scope !316 %14 = getelementptr inbounds i8, ptr %2, i64 16 %15 = getelementptr inbounds i8, ptr %2, i64 24 - store i64 0, ptr %15, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %15, i8 0, i64 24, i1 false), !alias.scope !316 %16 = load ptr, ptr %12, align 8, !noalias !316 %17 = load ptr, ptr %16, align 8, !noalias !316 %18 = getelementptr inbounds i8, ptr %0, i64 48 diff --git a/bench/pybind11/optimized/test_exceptions.cpp.ll b/bench/pybind11/optimized/test_exceptions.cpp.ll index 09ddf19ec2e..0c39b1fd72b 100644 --- a/bench/pybind11/optimized/test_exceptions.cpp.ll +++ b/bench/pybind11/optimized/test_exceptions.cpp.ll @@ -5537,7 +5537,7 @@ _ZN8pybind117module_C2ERKS0_.exit: ; preds = %1388, %1385 %1405 = getelementptr inbounds i8, ptr %1402, i64 104 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %1405, i8 0, i64 32, i1 false), !noalias !262 %1406 = getelementptr inbounds i8, ptr %1402, i64 8 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(91) %1406, i8 0, i64 83, i1 false), !noalias !262 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(91) %1406, i8 0, i64 81, i1 false), !noalias !262 store ptr %1402, ptr %42, align 8, !alias.scope !262 %1407 = getelementptr inbounds i8, ptr %1402, i64 56 store i64 %1386, ptr %1407, align 8 @@ -8457,7 +8457,7 @@ _ZN8pybind116objectD2Ev.exit48: ; preds = %_ZN8pybind116detail 61: ; preds = %58 %62 = getelementptr inbounds i8, ptr %60, i64 32 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(472) %62, i8 0, i64 432, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(472) %62, i8 0, i64 424, i1 false) %63 = getelementptr inbounds i8, ptr %60, i64 48 store ptr %63, ptr %60, align 8 %64 = getelementptr inbounds i8, ptr %60, i64 8 @@ -14078,7 +14078,7 @@ define linkonce_odr hidden void @_ZN8pybind1112cpp_functionC2IZNS_6detail23all_t call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) tail call void @llvm.experimental.noalias.scope.decl(metadata !487) %4 = invoke noalias noundef nonnull dereferenceable(136) ptr @_Znwm(i64 noundef 136) #30 - to label %.noexc unwind label %20 + to label %.noexc unwind label %21 .noexc: ; preds = %2 %5 = getelementptr inbounds i8, ptr %4, i64 94 @@ -14086,7 +14086,7 @@ define linkonce_odr hidden void @_ZN8pybind1112cpp_functionC2IZNS_6detail23all_t store i16 0, ptr %6, align 8, !noalias !487 %7 = getelementptr inbounds i8, ptr %4, i64 104 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %7, i8 0, i64 32, i1 false), !noalias !487 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(91) %4, i8 0, i64 91, i1 false), !noalias !487 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(91) %4, i8 0, i64 89, i1 false), !noalias !487 store ptr %4, ptr %3, align 8, !alias.scope !487 %8 = getelementptr inbounds i8, ptr %4, i64 56 %9 = load i64, ptr %1, align 8 @@ -14094,42 +14094,44 @@ define linkonce_odr hidden void @_ZN8pybind1112cpp_functionC2IZNS_6detail23all_t %10 = getelementptr inbounds i8, ptr %4, i64 48 store ptr @_ZZN8pybind1112cpp_function10initializeIZNS_6detail23all_type_info_get_cacheEP11_typeobjectEUlNS_6handleEE_vJS5_EJEEEvOT_PFT0_DpT1_EDpRKT2_ENUlRNS2_13function_callEE_8__invokeESJ_, ptr %10, align 8 store i16 1, ptr %5, align 2 + %11 = getelementptr inbounds i8, ptr %4, i64 89 + store i16 0, ptr %11, align 1 invoke void @_ZN8pybind1112cpp_function18initialize_genericEOSt10unique_ptrINS_6detail15function_recordENS0_33InitializingFunctionRecordDeleterEEPKcPKPKSt9type_infom(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull @_ZZN8pybind1112cpp_function10initializeIZNS_6detail23all_type_info_get_cacheEP11_typeobjectEUlNS_6handleEE_vJS5_EJEEEvOT_PFT0_DpT1_EDpRKT2_E9signature, ptr noundef nonnull @_ZZN8pybind1112cpp_function10initializeIZNS_6detail23all_type_info_get_cacheEP11_typeobjectEUlNS_6handleEE_vJS5_EJEEEvOT_PFT0_DpT1_EDpRKT2_E5types, i64 noundef 1) - to label %11 unwind label %17 + to label %12 unwind label %18 -11: ; preds = %.noexc - %12 = load ptr, ptr %3, align 8 - %.not.i.i = icmp eq ptr %12, null - br i1 %.not.i.i, label %19, label %13 +12: ; preds = %.noexc + %13 = load ptr, ptr %3, align 8 + %.not.i.i = icmp eq ptr %13, null + br i1 %.not.i.i, label %20, label %14 -13: ; preds = %11 - invoke void @_ZN8pybind1112cpp_function8destructEPNS_6detail15function_recordEb(ptr noundef nonnull %12, i1 noundef zeroext false) - to label %19 unwind label %14 +14: ; preds = %12 + invoke void @_ZN8pybind1112cpp_function8destructEPNS_6detail15function_recordEb(ptr noundef nonnull %13, i1 noundef zeroext false) + to label %20 unwind label %15 -14: ; preds = %13 - %15 = landingpad { ptr, i32 } +15: ; preds = %14 + %16 = landingpad { ptr, i32 } catch ptr null - %16 = extractvalue { ptr, i32 } %15, 0 - call void @__clang_call_terminate(ptr %16) #28 + %17 = extractvalue { ptr, i32 } %16, 0 + call void @__clang_call_terminate(ptr %17) #28 unreachable -17: ; preds = %.noexc - %18 = landingpad { ptr, i32 } +18: ; preds = %.noexc + %19 = landingpad { ptr, i32 } cleanup call void @_ZNSt10unique_ptrIN8pybind116detail15function_recordENS0_12cpp_function33InitializingFunctionRecordDeleterEED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #27 br label %.body -19: ; preds = %13, %11 +20: ; preds = %14, %12 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) ret void -20: ; preds = %2 - %21 = landingpad { ptr, i32 } +21: ; preds = %2 + %22 = landingpad { ptr, i32 } cleanup br label %.body -.body: ; preds = %17, %20 - %eh.lpad-body = phi { ptr, i32 } [ %21, %20 ], [ %18, %17 ] +.body: ; preds = %18, %21 + %eh.lpad-body = phi { ptr, i32 } [ %22, %21 ], [ %19, %18 ] call void @_ZN8pybind118functionD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %0) #27 resume { ptr, i32 } %eh.lpad-body } @@ -25636,7 +25638,7 @@ define linkonce_odr hidden void @_ZN8pybind116detail14clear_instanceEP7_object(p store ptr %12, ptr %13, align 8, !alias.scope !726 %14 = getelementptr inbounds i8, ptr %2, i64 16 %15 = getelementptr inbounds i8, ptr %2, i64 24 - store i64 0, ptr %15, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %15, i8 0, i64 24, i1 false), !alias.scope !726 %16 = load ptr, ptr %12, align 8, !noalias !726 %17 = load ptr, ptr %16, align 8, !noalias !726 %18 = getelementptr inbounds i8, ptr %0, i64 48 diff --git a/bench/qemu/optimized/hw_net_cadence_gem.c.ll b/bench/qemu/optimized/hw_net_cadence_gem.c.ll index c817b772254..f81b95275a2 100644 --- a/bench/qemu/optimized/hw_net_cadence_gem.c.ll +++ b/bench/qemu/optimized/hw_net_cadence_gem.c.ll @@ -105,8 +105,7 @@ entry: %call.i = tail call ptr @object_dynamic_cast_assert(ptr noundef %obj, ptr noundef nonnull @.str, ptr noundef nonnull @.str.3, i32 noundef 30, ptr noundef nonnull @__func__.CADENCE_GEM) #9 %call.i6 = tail call ptr @object_dynamic_cast_assert(ptr noundef %obj, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, i32 noundef 77, ptr noundef nonnull @__func__.DEVICE) #9 %regs_ro.i = getelementptr inbounds i8, ptr %call.i, i64 13580 - %0 = getelementptr inbounds i8, ptr %call.i, i64 13584 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(2048) %0, i8 0, i64 2044, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(2048) %regs_ro.i, i8 0, i64 2048, i1 false) store i32 -524288, ptr %regs_ro.i, align 4 %arrayidx4.i = getelementptr i8, ptr %call.i, i64 13588 store i32 -1, ptr %arrayidx4.i, align 4 @@ -127,8 +126,8 @@ entry: %arrayidx20.i = getelementptr i8, ptr %call.i, i64 13832 store i32 -1, ptr %arrayidx20.i, align 4 %num_priority_queues.i = getelementptr inbounds i8, ptr %call.i, i64 9472 - %1 = load i8, ptr %num_priority_queues.i, align 16 - %cmp43.not.i = icmp eq i8 %1, 0 + %0 = load i8, ptr %num_priority_queues.i, align 16 + %cmp43.not.i = icmp eq i8 %0, 0 br i1 %cmp43.not.i, label %for.end.thread.i, label %for.body.preheader.i for.end.thread.i: ; preds = %entry @@ -139,22 +138,22 @@ for.end.thread.i: ; preds = %entry br label %for.end51.i for.body.preheader.i: ; preds = %entry - %wide.trip.count.i = zext i8 %1 to i64 + %wide.trip.count.i = zext i8 %0 to i64 br label %for.body.i for.body.i: ; preds = %for.body.i, %for.body.preheader.i %indvars.iv.i = phi i64 [ 0, %for.body.preheader.i ], [ %indvars.iv.next.i, %for.body.i ] - %2 = add nuw nsw i64 %indvars.iv.i, 256 - %arrayidx23.i = getelementptr [512 x i32], ptr %regs_ro.i, i64 0, i64 %2 + %1 = add nuw nsw i64 %indvars.iv.i, 256 + %arrayidx23.i = getelementptr [512 x i32], ptr %regs_ro.i, i64 0, i64 %1 store i32 -1, ptr %arrayidx23.i, align 4 - %3 = add nuw nsw i64 %indvars.iv.i, 384 - %arrayidx27.i = getelementptr [512 x i32], ptr %regs_ro.i, i64 0, i64 %3 + %2 = add nuw nsw i64 %indvars.iv.i, 384 + %arrayidx27.i = getelementptr [512 x i32], ptr %regs_ro.i, i64 0, i64 %2 store i32 -3303, ptr %arrayidx27.i, align 4 - %4 = add nuw nsw i64 %indvars.iv.i, 392 - %arrayidx31.i = getelementptr [512 x i32], ptr %regs_ro.i, i64 0, i64 %4 + %3 = add nuw nsw i64 %indvars.iv.i, 392 + %arrayidx31.i = getelementptr [512 x i32], ptr %regs_ro.i, i64 0, i64 %3 store i32 -3303, ptr %arrayidx31.i, align 4 - %5 = add nuw nsw i64 %indvars.iv.i, 400 - %arrayidx35.i = getelementptr [512 x i32], ptr %regs_ro.i, i64 0, i64 %5 + %4 = add nuw nsw i64 %indvars.iv.i, 400 + %arrayidx35.i = getelementptr [512 x i32], ptr %regs_ro.i, i64 0, i64 %4 store i32 -1, ptr %arrayidx35.i, align 4 %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %exitcond.not.i = icmp eq i64 %indvars.iv.next.i, %wide.trip.count.i @@ -169,8 +168,8 @@ for.end.i: ; preds = %for.body.i for.body44.i: ; preds = %for.body44.i, %for.end.i %indvars.iv54.i = phi i64 [ 0, %for.end.i ], [ %indvars.iv.next55.i, %for.body44.i ] - %6 = add nuw nsw i64 %indvars.iv54.i, 256 - %arrayidx48.i = getelementptr [512 x i32], ptr %regs_rtc.i, i64 0, i64 %6 + %5 = add nuw nsw i64 %indvars.iv54.i, 256 + %arrayidx48.i = getelementptr [512 x i32], ptr %regs_rtc.i, i64 0, i64 %5 store i32 3302, ptr %arrayidx48.i, align 4 %indvars.iv.next55.i = add nuw nsw i64 %indvars.iv54.i, 1 %exitcond59.not.i = icmp eq i64 %indvars.iv.next55.i, %wide.trip.count.i @@ -184,8 +183,7 @@ for.end51.i: ; preds = %for.body44.i, %for. %arrayidx56.i = getelementptr i8, ptr %call.i, i64 17708 store i32 15, ptr %arrayidx56.i, align 4 %regs_wo.i = getelementptr inbounds i8, ptr %call.i, i64 11532 - %7 = getelementptr inbounds i8, ptr %call.i, i64 11536 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(2048) %7, i8 0, i64 2044, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(2048) %regs_wo.i, i8 0, i64 2048, i1 false) store i32 474720, ptr %regs_wo.i, align 4 %arrayidx61.i = getelementptr i8, ptr %call.i, i64 11572 store i32 134217727, ptr %arrayidx61.i, align 4 @@ -194,16 +192,16 @@ for.end51.i: ; preds = %for.body44.i, %for. br i1 %cmp43.not.i, label %gem_init_register_masks.exit, label %for.body69.preheader.i for.body69.preheader.i: ; preds = %for.end51.i - %wide.trip.count65.i = zext i8 %1 to i64 + %wide.trip.count65.i = zext i8 %0 to i64 br label %for.body69.i for.body69.i: ; preds = %for.body69.i, %for.body69.preheader.i %indvars.iv60.i = phi i64 [ 0, %for.body69.preheader.i ], [ %indvars.iv.next61.i, %for.body69.i ] - %8 = add nuw nsw i64 %indvars.iv60.i, 384 - %arrayidx73.i = getelementptr [512 x i32], ptr %regs_wo.i, i64 0, i64 %8 + %6 = add nuw nsw i64 %indvars.iv60.i, 384 + %arrayidx73.i = getelementptr [512 x i32], ptr %regs_wo.i, i64 0, i64 %6 store i32 3302, ptr %arrayidx73.i, align 4 - %9 = add nuw nsw i64 %indvars.iv60.i, 392 - %arrayidx77.i = getelementptr [512 x i32], ptr %regs_wo.i, i64 0, i64 %9 + %7 = add nuw nsw i64 %indvars.iv60.i, 392 + %arrayidx77.i = getelementptr [512 x i32], ptr %regs_wo.i, i64 0, i64 %7 store i32 3302, ptr %arrayidx77.i, align 4 %indvars.iv.next61.i = add nuw nsw i64 %indvars.iv60.i, 1 %exitcond66.not.i = icmp eq i64 %indvars.iv.next61.i, %wide.trip.count65.i @@ -817,8 +815,8 @@ sw.bb.i.i168: ; preds = %sw.bb23.i if.then.i.i: ; preds = %sw.bb.i.i168 %phy_regs.i.i.i = getelementptr inbounds i8, ptr %opaque, i64 19726 - %84 = getelementptr inbounds i8, ptr %opaque, i64 19748 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 2 dereferenceable(64) %84, i8 0, i64 42, i1 false) + %84 = getelementptr inbounds i8, ptr %opaque, i64 19742 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 2 dereferenceable(64) %84, i8 0, i64 48, i1 false) store i16 4416, ptr %phy_regs.i.i.i, align 2 %arrayidx4.i.i.i = getelementptr i8, ptr %opaque, i64 19728 store i16 31081, ptr %arrayidx4.i.i.i, align 2 @@ -834,8 +832,7 @@ if.then.i.i: ; preds = %sw.bb.i.i168 store i16 15, ptr %arrayidx14.i.i.i, align 2 %arrayidx16.i.i.i = getelementptr i8, ptr %opaque, i64 19740 store i16 8193, ptr %arrayidx16.i.i.i, align 2 - %arrayidx18.i.i.i = getelementptr i8, ptr %opaque, i64 19742 - store i16 16614, ptr %arrayidx18.i.i.i, align 2 + store i16 16614, ptr %84, align 2 %arrayidx20.i.i.i = getelementptr i8, ptr %opaque, i64 19744 store i16 768, ptr %arrayidx20.i.i.i, align 2 %arrayidx22.i.i.i = getelementptr i8, ptr %opaque, i64 19746 @@ -1994,8 +1991,8 @@ if.end: ; preds = %if.then, %entry %sar_active = getelementptr inbounds i8, ptr %call.i, i64 52816 store i32 0, ptr %sar_active, align 1 %phy_regs.i = getelementptr inbounds i8, ptr %call.i, i64 19726 - %6 = getelementptr inbounds i8, ptr %call.i, i64 19748 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 2 dereferenceable(64) %6, i8 0, i64 42, i1 false) + %6 = getelementptr inbounds i8, ptr %call.i, i64 19742 + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 2 dereferenceable(64) %6, i8 0, i64 48, i1 false) store i16 4416, ptr %phy_regs.i, align 2 %arrayidx4.i = getelementptr i8, ptr %call.i, i64 19728 store i16 31081, ptr %arrayidx4.i, align 2 @@ -2011,8 +2008,7 @@ if.end: ; preds = %if.then, %entry store i16 15, ptr %arrayidx14.i, align 2 %arrayidx16.i = getelementptr i8, ptr %call.i, i64 19740 store i16 8193, ptr %arrayidx16.i, align 2 - %arrayidx18.i = getelementptr i8, ptr %call.i, i64 19742 - store i16 16614, ptr %arrayidx18.i, align 2 + store i16 16614, ptr %6, align 2 %arrayidx20.i = getelementptr i8, ptr %call.i, i64 19744 store i16 768, ptr %arrayidx20.i, align 2 %arrayidx22.i = getelementptr i8, ptr %call.i, i64 19746 diff --git a/bench/qemu/optimized/hw_scsi_scsi-generic.c.ll b/bench/qemu/optimized/hw_scsi_scsi-generic.c.ll index 5ec5cf4c18c..3ff017bcb19 100644 --- a/bench/qemu/optimized/hw_scsi_scsi-generic.c.ll +++ b/bench/qemu/optimized/hw_scsi_scsi-generic.c.ll @@ -252,16 +252,12 @@ entry: %buf.i = alloca [250 x i8], align 16 call void @llvm.lifetime.start.p0(i64 6, ptr nonnull %cmd.i) call void @llvm.lifetime.start.p0(i64 250, ptr nonnull %buf.i) - %0 = getelementptr inbounds i8, ptr %cmd.i, i64 3 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(6) %0, i8 0, i64 3, i1 false) + %0 = getelementptr inbounds i8, ptr %cmd.i, i64 2 + store i32 16384131, ptr %0, align 1 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(250) %buf.i, i8 0, i64 250, i1 false) store i8 18, ptr %cmd.i, align 1 %arrayidx2.i = getelementptr inbounds i8, ptr %cmd.i, i64 1 store i8 1, ptr %arrayidx2.i, align 1 - %arrayidx3.i = getelementptr inbounds i8, ptr %cmd.i, i64 2 - store i8 -125, ptr %arrayidx3.i, align 1 - %arrayidx4.i = getelementptr inbounds i8, ptr %cmd.i, i64 4 - store i8 -6, ptr %arrayidx4.i, align 1 %conf.i = getelementptr inbounds i8, ptr %s, i64 184 %1 = load ptr, ptr %conf.i, align 8 %io_timeout.i = getelementptr inbounds i8, ptr %s, i64 600 @@ -459,48 +455,44 @@ scsi_generic_read_device_identification.exit: ; preds = %for.body.i, %if.end if.then: ; preds = %scsi_generic_read_device_identification.exit, %scsi_generic_read_device_identification.exit call void @llvm.lifetime.start.p0(i64 6, ptr nonnull %cmd.i5) call void @llvm.lifetime.start.p0(i64 250, ptr nonnull %buf.i6) - %22 = getelementptr inbounds i8, ptr %cmd.i5, i64 3 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(6) %22, i8 0, i64 3, i1 false) + %22 = getelementptr inbounds i8, ptr %cmd.i5, i64 2 + store i32 16384000, ptr %22, align 1 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(250) %buf.i6, i8 0, i64 250, i1 false) store i8 18, ptr %cmd.i5, align 1 %arrayidx2.i7 = getelementptr inbounds i8, ptr %cmd.i5, i64 1 store i8 1, ptr %arrayidx2.i7, align 1 - %arrayidx3.i8 = getelementptr inbounds i8, ptr %cmd.i5, i64 2 - store i8 0, ptr %arrayidx3.i8, align 1 - %arrayidx4.i9 = getelementptr inbounds i8, ptr %cmd.i5, i64 4 - store i8 -6, ptr %arrayidx4.i9, align 1 %23 = load ptr, ptr %conf.i, align 8 %24 = load i32, ptr %io_timeout.i, align 8 - %call.i12 = call i32 @scsi_SG_IO_FROM_DEV(ptr noundef %23, ptr noundef nonnull %cmd.i5, i8 noundef zeroext 6, ptr noundef nonnull %buf.i6, i8 noundef zeroext -6, i32 noundef %24) - %cmp.i13 = icmp slt i32 %call.i12, 0 - br i1 %cmp.i13, label %scsi_generic_set_vpd_bl_emulation.exit, label %if.end.i14 + %call.i11 = call i32 @scsi_SG_IO_FROM_DEV(ptr noundef %23, ptr noundef nonnull %cmd.i5, i8 noundef zeroext 6, ptr noundef nonnull %buf.i6, i8 noundef zeroext -6, i32 noundef %24) + %cmp.i12 = icmp slt i32 %call.i11, 0 + br i1 %cmp.i12, label %scsi_generic_set_vpd_bl_emulation.exit, label %if.end.i13 -if.end.i14: ; preds = %if.then - %arrayidx7.i15 = getelementptr inbounds i8, ptr %buf.i6, i64 3 - %25 = load i8, ptr %arrayidx7.i15, align 1 +if.end.i13: ; preds = %if.then + %arrayidx7.i14 = getelementptr inbounds i8, ptr %buf.i6, i64 3 + %25 = load i8, ptr %arrayidx7.i14, align 1 %cmp129.not.i = icmp eq i8 %25, 0 br i1 %cmp129.not.i, label %scsi_generic_set_vpd_bl_emulation.exit, label %for.body.preheader.i -for.body.preheader.i: ; preds = %if.end.i14 +for.body.preheader.i: ; preds = %if.end.i13 %26 = call i8 @llvm.umin.i8(i8 %25, i8 -10) %narrow.i = add nuw i8 %26, 4 %wide.trip.count = zext i8 %narrow.i to i64 - br label %for.body.i16 + br label %for.body.i15 -for.cond.i: ; preds = %for.body.i16 +for.cond.i: ; preds = %for.body.i15 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond.not, label %scsi_generic_set_vpd_bl_emulation.exit, label %for.body.i16, !llvm.loop !8 + br i1 %exitcond.not, label %scsi_generic_set_vpd_bl_emulation.exit, label %for.body.i15, !llvm.loop !8 -for.body.i16: ; preds = %for.cond.i, %for.body.preheader.i +for.body.i15: ; preds = %for.cond.i, %for.body.preheader.i %indvars.iv = phi i64 [ %indvars.iv.next, %for.cond.i ], [ 4, %for.body.preheader.i ] %arrayidx14.i = getelementptr [250 x i8], ptr %buf.i6, i64 0, i64 %indvars.iv %27 = load i8, ptr %arrayidx14.i, align 1 %cmp16.i = icmp eq i8 %27, -80 br i1 %cmp16.i, label %scsi_generic_set_vpd_bl_emulation.exit, label %for.cond.i -scsi_generic_set_vpd_bl_emulation.exit: ; preds = %for.cond.i, %for.body.i16, %if.then, %if.end.i14 - %.sink.i = phi i8 [ 0, %if.then ], [ 1, %if.end.i14 ], [ 1, %for.cond.i ], [ 0, %for.body.i16 ] +scsi_generic_set_vpd_bl_emulation.exit: ; preds = %for.cond.i, %for.body.i15, %if.then, %if.end.i13 + %.sink.i = phi i8 [ 0, %if.then ], [ 1, %if.end.i13 ], [ 1, %for.cond.i ], [ 0, %for.body.i15 ] %needs_vpd_bl_emulation21.i = getelementptr inbounds i8, ptr %s, i64 604 store i8 %.sink.i, ptr %needs_vpd_bl_emulation21.i, align 4 call void @llvm.lifetime.end.p0(i64 6, ptr nonnull %cmd.i5) diff --git a/bench/qemu/optimized/hw_virtio_virtio-pci.c.ll b/bench/qemu/optimized/hw_virtio_virtio-pci.c.ll index 08850e7a019..c6b070408db 100644 --- a/bench/qemu/optimized/hw_virtio_virtio-pci.c.ll +++ b/bench/qemu/optimized/hw_virtio_virtio-pci.c.ll @@ -12,8 +12,8 @@ target triple = "x86_64-unknown-linux-gnu" %struct.VMStateDescription = type { ptr, i8, i8, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr } %struct.VMStateField = type { ptr, ptr, i64, i64, i64, i32, i64, i64, ptr, i32, ptr, i32, i32, ptr } %struct.VMStateInfo = type { ptr, ptr, ptr } -%struct.virtio_pci_cap = type { i8, i8, i8, i8, i8, i8, [2 x i8], i32, i32 } %struct.virtio_pci_cfg_cap = type { %struct.virtio_pci_cap, [4 x i8] } +%struct.virtio_pci_cap = type { i8, i8, i8, i8, i8, i8, [2 x i8], i32, i32 } %struct.MemoryRegionOps = type { ptr, ptr, ptr, ptr, i32, %struct.anon.10, %struct.anon.11 } %struct.anon.10 = type { i32, i32, i8, ptr } %struct.anon.11 = type { i32, i32, i8 } @@ -104,7 +104,6 @@ target triple = "x86_64-unknown-linux-gnu" @.str.43 = private unnamed_addr constant [72 x i8] c"device is modern-only, but for backward compatibility legacy is allowed\00", align 1 @.str.44 = private unnamed_addr constant [45 x i8] c"device is modern-only, use disable-legacy=on\00", align 1 @.str.45 = private unnamed_addr constant [80 x i8] c"VIRTIO_F_IOMMU_PLATFORM was supported by neither legacy nor transitional device\00", align 1 -@__const.virtio_pci_device_plugged.cap = private unnamed_addr constant %struct.virtio_pci_cap { i8 0, i8 0, i8 16, i8 0, i8 0, i8 0, [2 x i8] zeroinitializer, i32 0, i32 0 }, align 4 @__const.virtio_pci_device_plugged.cfg = private unnamed_addr constant %struct.virtio_pci_cfg_cap { %struct.virtio_pci_cap { i8 0, i8 0, i8 20, i8 5, i8 0, i8 0, [2 x i8] zeroinitializer, i32 0, i32 0 }, [4 x i8] zeroinitializer }, align 4 @.str.46 = private unnamed_addr constant [14 x i8] c"virtio-pci-io\00", align 1 @.str.47 = private unnamed_addr constant [34 x i8] c"unable to init msix vectors to %u\00", align 1 @@ -258,27 +257,27 @@ declare void @virtio_queue_set_guest_notifier_fd_handler(ptr noundef, i1 noundef ; Function Attrs: nounwind sspstrong uwtable define dso_local i32 @virtio_pci_add_shm_cap(ptr noundef %proxy, i8 noundef zeroext %bar, i64 noundef %offset, i64 noundef %length, i8 noundef zeroext %id) local_unnamed_addr #0 { virtio_pci_add_mem_cap.exit: + %cap.sroa.1.sroa.0 = alloca [10 x i8], align 8 + store i64 2072, ptr %cap.sroa.1.sroa.0, align 8 + %cap.sroa.1.sroa.0.2.bar2.sroa_idx10 = getelementptr inbounds i8, ptr %cap.sroa.1.sroa.0, i64 2 + store i8 %bar, ptr %cap.sroa.1.sroa.0.2.bar2.sroa_idx10, align 2 %conv = trunc i64 %length to i32 %shr = lshr i64 %length, 32 %conv5 = trunc nuw i64 %shr to i32 %conv7 = trunc i64 %offset to i32 + %cap.sroa.1.sroa.0.6.offset10.sroa_idx12 = getelementptr inbounds i8, ptr %cap.sroa.1.sroa.0, i64 6 + store i32 %conv7, ptr %cap.sroa.1.sroa.0.6.offset10.sroa_idx12, align 2 %shr11 = lshr i64 %offset, 32 %conv12 = trunc nuw i64 %shr11 to i32 + %cap.sroa.1.sroa.0.3.id15.sroa_idx11 = getelementptr inbounds i8, ptr %cap.sroa.1.sroa.0, i64 3 + store i8 %id, ptr %cap.sroa.1.sroa.0.3.id15.sroa_idx11, align 1 %call.i = tail call i32 @pci_add_capability(ptr noundef %proxy, i8 noundef zeroext 9, i8 noundef zeroext 0, i8 noundef zeroext 24, ptr noundef nonnull @error_abort) #14 %config.i = getelementptr inbounds i8, ptr %proxy, i64 168 %0 = load ptr, ptr %config.i, align 8 %idx.ext.i = sext i32 %call.i to i64 %add.ptr.i = getelementptr i8, ptr %0, i64 %idx.ext.i %add.ptr3.i = getelementptr i8, ptr %add.ptr.i, i64 2 - store i16 2072, ptr %add.ptr3.i, align 1 - %cap.sroa.1.sroa.2.0.add.ptr3.i.sroa_idx = getelementptr i8, ptr %add.ptr.i, i64 4 - store i8 %bar, ptr %cap.sroa.1.sroa.2.0.add.ptr3.i.sroa_idx, align 1 - %cap.sroa.1.sroa.3.0.add.ptr3.i.sroa_idx = getelementptr i8, ptr %add.ptr.i, i64 5 - store i8 %id, ptr %cap.sroa.1.sroa.3.0.add.ptr3.i.sroa_idx, align 1 - %cap.sroa.1.sroa.4.0.add.ptr3.i.sroa_idx = getelementptr i8, ptr %add.ptr.i, i64 6 - store i16 0, ptr %cap.sroa.1.sroa.4.0.add.ptr3.i.sroa_idx, align 1 - %cap.sroa.1.sroa.414.0.add.ptr3.i.sroa_idx = getelementptr i8, ptr %add.ptr.i, i64 8 - store i32 %conv7, ptr %cap.sroa.1.sroa.414.0.add.ptr3.i.sroa_idx, align 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(10) %add.ptr3.i, ptr noundef nonnull align 8 dereferenceable(10) %cap.sroa.1.sroa.0, i64 10, i1 false) %cap.sroa.1.sroa.5.0.add.ptr3.i.sroa_idx = getelementptr i8, ptr %add.ptr.i, i64 12 store i32 %conv, ptr %cap.sroa.1.sroa.5.0.add.ptr3.i.sroa_idx, align 1 %cap.sroa.1.sroa.6.0.add.ptr3.i.sroa_idx = getelementptr i8, ptr %add.ptr.i, i64 16 @@ -1224,6 +1223,7 @@ entry: ; Function Attrs: nounwind sspstrong uwtable define internal void @virtio_pci_device_plugged(ptr noundef %d, ptr noundef %errp) #0 { entry: + %cap.sroa.1.sroa.0 = alloca [10 x i8], align 8 %call.i = tail call ptr @object_dynamic_cast_assert(ptr noundef %d, ptr noundef nonnull @.str, ptr noundef nonnull @.str.14, i32 noundef 102, ptr noundef nonnull @__func__.VIRTIO_PCI) #14 %bus1 = getelementptr inbounds i8, ptr %call.i, i64 33616 %0 = getelementptr i8, ptr %call.i, i64 4892 @@ -1344,6 +1344,7 @@ if.end40: ; preds = %if.end28, %if.then3 br i1 %tobool.i77, label %if.end68, label %virtio_pci_modern_mem_region_map.exit153 virtio_pci_modern_mem_region_map.exit153: ; preds = %if.end40 + store i64 16, ptr %cap.sroa.1.sroa.0, align 8 %call.val75 = load i32, ptr %flags, align 4 %name = getelementptr inbounds i8, ptr %cond.i, i64 160 %11 = load ptr, ptr %name, align 8 @@ -1395,7 +1396,13 @@ virtio_pci_modern_mem_region_map.exit153: ; preds = %if.end40 %type.i.i = getelementptr inbounds i8, ptr %call.i, i64 3160 %25 = load i32, ptr %type.i.i, align 8 %conv2.i.i = trunc i32 %25 to i8 + %cap.sroa.1.sroa.0.1.cfg_type.i.i.sroa_idx210 = getelementptr inbounds i8, ptr %cap.sroa.1.sroa.0, i64 1 + store i8 %conv2.i.i, ptr %cap.sroa.1.sroa.0.1.cfg_type.i.i.sroa_idx210, align 1 + %cap.sroa.1.sroa.0.2.bar3.i.i.sroa_idx213 = getelementptr inbounds i8, ptr %cap.sroa.1.sroa.0, i64 2 + store i8 %conv.i84, ptr %cap.sroa.1.sroa.0.2.bar3.i.i.sroa_idx213, align 2 %26 = load i32, ptr %offset.i.i, align 16 + %cap.sroa.1.sroa.0.6.offset5.i.i.sroa_idx216 = getelementptr inbounds i8, ptr %cap.sroa.1.sroa.0, i64 6 + store i32 %26, ptr %cap.sroa.1.sroa.0.6.offset5.i.i.sroa_idx216, align 2 %27 = load i32, ptr %size.i, align 4 %call.i.i.i = tail call i32 @pci_add_capability(ptr noundef nonnull %call.i, i8 noundef zeroext 9, i8 noundef zeroext 0, i8 noundef zeroext 16, ptr noundef nonnull @error_abort) #14 %and.i80 = and i32 %call.val75, 32 @@ -1405,15 +1412,7 @@ virtio_pci_modern_mem_region_map.exit153: ; preds = %if.end40 %idx.ext.i.i.i = sext i32 %call.i.i.i to i64 %add.ptr.i.i.i = getelementptr i8, ptr %28, i64 %idx.ext.i.i.i %add.ptr3.i.i.i = getelementptr i8, ptr %add.ptr.i.i.i, i64 2 - store i8 16, ptr %add.ptr3.i.i.i, align 1 - %cap.sroa.1.sroa.4.0.add.ptr3.i.i.i.sroa_idx = getelementptr i8, ptr %add.ptr.i.i.i, i64 3 - store i8 %conv2.i.i, ptr %cap.sroa.1.sroa.4.0.add.ptr3.i.i.i.sroa_idx, align 1 - %cap.sroa.1.sroa.7.0.add.ptr3.i.i.i.sroa_idx = getelementptr i8, ptr %add.ptr.i.i.i, i64 4 - store i8 %conv.i84, ptr %cap.sroa.1.sroa.7.0.add.ptr3.i.i.i.sroa_idx, align 1 - %cap.sroa.1.sroa.10.0.add.ptr3.i.i.i.sroa_idx = getelementptr i8, ptr %add.ptr.i.i.i, i64 5 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %cap.sroa.1.sroa.10.0.add.ptr3.i.i.i.sroa_idx, ptr noundef nonnull align 1 dereferenceable(3) getelementptr inbounds (i8, ptr @__const.virtio_pci_device_plugged.cap, i64 5), i64 3, i1 false) - %cap.sroa.1.sroa.10211.0.add.ptr3.i.i.i.sroa_idx = getelementptr i8, ptr %add.ptr.i.i.i, i64 8 - store i32 %26, ptr %cap.sroa.1.sroa.10211.0.add.ptr3.i.i.i.sroa_idx, align 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(10) %add.ptr3.i.i.i, ptr noundef nonnull align 8 dereferenceable(10) %cap.sroa.1.sroa.0, i64 10, i1 false) %cap.sroa.1.sroa.13.0.add.ptr3.i.i.i.sroa_idx = getelementptr i8, ptr %add.ptr.i.i.i, i64 12 store i32 %27, ptr %cap.sroa.1.sroa.13.0.add.ptr3.i.i.i.sroa_idx, align 1 %29 = load i32, ptr %modern_mem_bar_idx.i, align 4 @@ -1425,22 +1424,20 @@ virtio_pci_modern_mem_region_map.exit153: ; preds = %if.end40 %type.i.i90 = getelementptr inbounds i8, ptr %call.i, i64 3448 %31 = load i32, ptr %type.i.i90, align 8 %conv2.i.i91 = trunc i32 %31 to i8 + %cap.sroa.1.sroa.0.1.cfg_type.i.i.sroa_idx211 = getelementptr inbounds i8, ptr %cap.sroa.1.sroa.0, i64 1 + store i8 %conv2.i.i91, ptr %cap.sroa.1.sroa.0.1.cfg_type.i.i.sroa_idx211, align 1 + %cap.sroa.1.sroa.0.2.bar3.i.i.sroa_idx214 = getelementptr inbounds i8, ptr %cap.sroa.1.sroa.0, i64 2 + store i8 %conv.i87, ptr %cap.sroa.1.sroa.0.2.bar3.i.i.sroa_idx214, align 2 %32 = load i32, ptr %offset.i.i88, align 16 + %cap.sroa.1.sroa.0.6.offset5.i.i.sroa_idx217 = getelementptr inbounds i8, ptr %cap.sroa.1.sroa.0, i64 6 + store i32 %32, ptr %cap.sroa.1.sroa.0.6.offset5.i.i.sroa_idx217, align 2 %33 = load i32, ptr %size5.i, align 4 %call.i.i.i98 = tail call i32 @pci_add_capability(ptr noundef nonnull %call.i, i8 noundef zeroext 9, i8 noundef zeroext 0, i8 noundef zeroext 16, ptr noundef nonnull @error_abort) #14 %34 = load ptr, ptr %config13, align 8 %idx.ext.i.i.i102 = sext i32 %call.i.i.i98 to i64 %add.ptr.i.i.i103 = getelementptr i8, ptr %34, i64 %idx.ext.i.i.i102 %add.ptr3.i.i.i104 = getelementptr i8, ptr %add.ptr.i.i.i103, i64 2 - store i8 16, ptr %add.ptr3.i.i.i104, align 1 - %cap.sroa.1.sroa.4.0.add.ptr3.i.i.i104.sroa_idx = getelementptr i8, ptr %add.ptr.i.i.i103, i64 3 - store i8 %conv2.i.i91, ptr %cap.sroa.1.sroa.4.0.add.ptr3.i.i.i104.sroa_idx, align 1 - %cap.sroa.1.sroa.7.0.add.ptr3.i.i.i104.sroa_idx = getelementptr i8, ptr %add.ptr.i.i.i103, i64 4 - store i8 %conv.i87, ptr %cap.sroa.1.sroa.7.0.add.ptr3.i.i.i104.sroa_idx, align 1 - %cap.sroa.1.sroa.10.0.add.ptr3.i.i.i104.sroa_idx = getelementptr i8, ptr %add.ptr.i.i.i103, i64 5 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %cap.sroa.1.sroa.10.0.add.ptr3.i.i.i104.sroa_idx, ptr noundef nonnull align 1 dereferenceable(3) getelementptr inbounds (i8, ptr @__const.virtio_pci_device_plugged.cap, i64 5), i64 3, i1 false) - %cap.sroa.1.sroa.10211.0.add.ptr3.i.i.i104.sroa_idx = getelementptr i8, ptr %add.ptr.i.i.i103, i64 8 - store i32 %32, ptr %cap.sroa.1.sroa.10211.0.add.ptr3.i.i.i104.sroa_idx, align 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(10) %add.ptr3.i.i.i104, ptr noundef nonnull align 8 dereferenceable(10) %cap.sroa.1.sroa.0, i64 10, i1 false) %cap.sroa.1.sroa.13.0.add.ptr3.i.i.i104.sroa_idx = getelementptr i8, ptr %add.ptr.i.i.i103, i64 12 store i32 %33, ptr %cap.sroa.1.sroa.13.0.add.ptr3.i.i.i104.sroa_idx, align 1 %35 = load i32, ptr %modern_mem_bar_idx.i, align 4 @@ -1452,22 +1449,20 @@ virtio_pci_modern_mem_region_map.exit153: ; preds = %if.end40 %type.i.i113 = getelementptr inbounds i8, ptr %call.i, i64 3736 %37 = load i32, ptr %type.i.i113, align 8 %conv2.i.i114 = trunc i32 %37 to i8 + %cap.sroa.1.sroa.0.1.cfg_type.i.i.sroa_idx212 = getelementptr inbounds i8, ptr %cap.sroa.1.sroa.0, i64 1 + store i8 %conv2.i.i114, ptr %cap.sroa.1.sroa.0.1.cfg_type.i.i.sroa_idx212, align 1 + %cap.sroa.1.sroa.0.2.bar3.i.i.sroa_idx215 = getelementptr inbounds i8, ptr %cap.sroa.1.sroa.0, i64 2 + store i8 %conv.i110, ptr %cap.sroa.1.sroa.0.2.bar3.i.i.sroa_idx215, align 2 %38 = load i32, ptr %offset.i.i111, align 16 + %cap.sroa.1.sroa.0.6.offset5.i.i.sroa_idx218 = getelementptr inbounds i8, ptr %cap.sroa.1.sroa.0, i64 6 + store i32 %38, ptr %cap.sroa.1.sroa.0.6.offset5.i.i.sroa_idx218, align 2 %39 = load i32, ptr %size10.i, align 4 %call.i.i.i121 = tail call i32 @pci_add_capability(ptr noundef nonnull %call.i, i8 noundef zeroext 9, i8 noundef zeroext 0, i8 noundef zeroext 16, ptr noundef nonnull @error_abort) #14 %40 = load ptr, ptr %config13, align 8 %idx.ext.i.i.i125 = sext i32 %call.i.i.i121 to i64 %add.ptr.i.i.i126 = getelementptr i8, ptr %40, i64 %idx.ext.i.i.i125 %add.ptr3.i.i.i127 = getelementptr i8, ptr %add.ptr.i.i.i126, i64 2 - store i8 16, ptr %add.ptr3.i.i.i127, align 1 - %cap.sroa.1.sroa.4.0.add.ptr3.i.i.i127.sroa_idx = getelementptr i8, ptr %add.ptr.i.i.i126, i64 3 - store i8 %conv2.i.i114, ptr %cap.sroa.1.sroa.4.0.add.ptr3.i.i.i127.sroa_idx, align 1 - %cap.sroa.1.sroa.7.0.add.ptr3.i.i.i127.sroa_idx = getelementptr i8, ptr %add.ptr.i.i.i126, i64 4 - store i8 %conv.i110, ptr %cap.sroa.1.sroa.7.0.add.ptr3.i.i.i127.sroa_idx, align 1 - %cap.sroa.1.sroa.10.0.add.ptr3.i.i.i127.sroa_idx = getelementptr i8, ptr %add.ptr.i.i.i126, i64 5 - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %cap.sroa.1.sroa.10.0.add.ptr3.i.i.i127.sroa_idx, ptr noundef nonnull align 1 dereferenceable(3) getelementptr inbounds (i8, ptr @__const.virtio_pci_device_plugged.cap, i64 5), i64 3, i1 false) - %cap.sroa.1.sroa.10211.0.add.ptr3.i.i.i127.sroa_idx = getelementptr i8, ptr %add.ptr.i.i.i126, i64 8 - store i32 %38, ptr %cap.sroa.1.sroa.10211.0.add.ptr3.i.i.i127.sroa_idx, align 1 + call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(10) %add.ptr3.i.i.i127, ptr noundef nonnull align 8 dereferenceable(10) %cap.sroa.1.sroa.0, i64 10, i1 false) %cap.sroa.1.sroa.13.0.add.ptr3.i.i.i127.sroa_idx = getelementptr i8, ptr %add.ptr.i.i.i126, i64 12 store i32 %39, ptr %cap.sroa.1.sroa.13.0.add.ptr3.i.i.i127.sroa_idx, align 1 %41 = load i32, ptr %modern_mem_bar_idx.i, align 4 diff --git a/bench/quantlib/optimized/china.ll b/bench/quantlib/optimized/china.ll index ef1f9198c58..f0b56ee98bf 100644 --- a/bench/quantlib/optimized/china.ll +++ b/bench/quantlib/optimized/china.ll @@ -3045,19 +3045,15 @@ cond.true.i.i: ; preds = %entry %5 = getelementptr inbounds i8, ptr %call.i.i, i64 48 %_M_left.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %call.i.i, i64 64 %6 = getelementptr inbounds i8, ptr %call.i.i, i64 40 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %6, i8 0, i64 64, i1 false) + tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(96) %6, i8 0, i64 96, i1 false) store ptr %5, ptr %_M_left.i.i.i.i.i.i.i, align 8, !tbaa !13 %_M_right.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %call.i.i, i64 72 store ptr %5, ptr %_M_right.i.i.i.i.i.i.i, align 8, !tbaa !14 %7 = getelementptr inbounds i8, ptr %call.i.i, i64 96 - %_M_parent.i.i.i.i.i1.i.i = getelementptr inbounds i8, ptr %call.i.i, i64 104 - store ptr null, ptr %_M_parent.i.i.i.i.i1.i.i, align 8, !tbaa !12 %_M_left.i.i.i.i.i2.i.i = getelementptr inbounds i8, ptr %call.i.i, i64 112 store ptr %7, ptr %_M_left.i.i.i.i.i2.i.i, align 8, !tbaa !13 %_M_right.i.i.i.i.i3.i.i = getelementptr inbounds i8, ptr %call.i.i, i64 120 store ptr %7, ptr %_M_right.i.i.i.i.i3.i.i, align 8, !tbaa !14 - %_M_node_count.i.i.i.i.i4.i.i = getelementptr inbounds i8, ptr %call.i.i, i64 128 - store i64 0, ptr %_M_node_count.i.i.i.i.i4.i.i, align 8, !tbaa !15 store ptr getelementptr inbounds inrange(-16, 40) (i8, ptr @_ZTVN8QuantLib5China7SseImplE, i64 16), ptr %storage_.i, align 8, !tbaa !16 store i8 1, ptr %del.i.i.i, align 8, !tbaa !47 store ptr %storage_.i, ptr %agg.result, align 8, !tbaa !28 diff --git a/bench/quantlib/optimized/normalclvmodel.ll b/bench/quantlib/optimized/normalclvmodel.ll index fcf4104c543..b6ecc3e0d06 100644 --- a/bench/quantlib/optimized/normalclvmodel.ll +++ b/bench/quantlib/optimized/normalclvmodel.ll @@ -4550,9 +4550,12 @@ lpad: ; preds = %cond.false.i1, %inv define void @_ZNK8QuantLib14NormalCLVModel19performCalculationsEv(ptr noundef nonnull align 8 dereferenceable(168) %this) unnamed_addr #9 align 2 personality ptr @__gxx_personality_v0 { entry: %ref.tmp.i = alloca %"class.std::function", align 8 + %ref.tmp.sroa.5 = alloca [24 x i8], align 8 %ref.tmp2 = alloca %"class.QuantLib::NormalCLVModel::MappingFunction", align 8 + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %ref.tmp.sroa.5) call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %ref.tmp2) #28 call void @_ZN8QuantLib14NormalCLVModel15MappingFunctionC1ERKS0_(ptr noundef nonnull align 8 dereferenceable(56) %ref.tmp2, ptr noundef nonnull align 8 dereferenceable(168) %this) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %ref.tmp.sroa.5, i8 0, i64 24, i1 false) %call.i.i2.i1 = invoke noalias noundef nonnull dereferenceable(56) ptr @_Znwm(i64 noundef 56) #31 to label %call.i.i2.i.noexc unwind label %lpad @@ -4606,31 +4609,34 @@ _ZNSt8functionIFdddEEC2EOS1_.exit.i: ; preds = %if.then.i.i7.i.i.i. %g_ = getelementptr inbounds nuw i8, ptr %this, i64 136 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ref.tmp.i) #28 %_M_invoker.i.i = getelementptr inbounds nuw i8, ptr %ref.tmp.i, i64 24 + %ref.tmp.sroa.5.8._M_manager.i.i.sroa_idx = getelementptr inbounds i8, ptr %ref.tmp.sroa.5, i64 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.sroa.5.8._M_manager.i.i.sroa_idx, i8 0, i64 16, i1 false) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i, ptr noundef nonnull align 8 dereferenceable(16) %g_, i64 16, i1 false), !tbaa.struct !151 store ptr %call.i.i2.i1, ptr %g_, align 8 %ref.tmp.sroa.5.0.g_.sroa_idx = getelementptr inbounds i8, ptr %this, i64 144 - store i64 0, ptr %ref.tmp.sroa.5.0.g_.sroa_idx, align 8 + %9 = load i64, ptr %ref.tmp.sroa.5, align 8 + store i64 %9, ptr %ref.tmp.sroa.5.0.g_.sroa_idx, align 8 %_M_manager.i.i2 = getelementptr inbounds nuw i8, ptr %ref.tmp.i, i64 16 %_M_manager3.i.i = getelementptr inbounds nuw i8, ptr %this, i64 152 - %9 = load ptr, ptr %_M_manager3.i.i, align 8, !tbaa !3 - store ptr %9, ptr %_M_manager.i.i2, align 8, !tbaa !3 + %10 = load ptr, ptr %_M_manager3.i.i, align 8, !tbaa !3 + store ptr %10, ptr %_M_manager.i.i2, align 8, !tbaa !3 store ptr @_ZNSt17_Function_handlerIFdddEN8QuantLib14NormalCLVModel15MappingFunctionEE10_M_managerERSt9_Any_dataRKS5_St18_Manager_operation, ptr %_M_manager3.i.i, align 8, !tbaa !3 %_M_invoker4.i.i = getelementptr inbounds nuw i8, ptr %this, i64 160 - %10 = load ptr, ptr %_M_invoker4.i.i, align 8, !tbaa !3 - store ptr %10, ptr %_M_invoker.i.i, align 8, !tbaa !3 + %11 = load ptr, ptr %_M_invoker4.i.i, align 8, !tbaa !3 + store ptr %11, ptr %_M_invoker.i.i, align 8, !tbaa !3 store ptr @_ZNSt17_Function_handlerIFdddEN8QuantLib14NormalCLVModel15MappingFunctionEE9_M_invokeERKSt9_Any_dataOdS8_, ptr %_M_invoker4.i.i, align 8, !tbaa !3 - %tobool.not.i.i = icmp eq ptr %9, null + %tobool.not.i.i = icmp eq ptr %10, null br i1 %tobool.not.i.i, label %_ZNSt14_Function_baseD2Ev.exit, label %if.then.i3.i if.then.i3.i: ; preds = %_ZNSt8functionIFdddEEC2EOS1_.exit.i - %call.i.i = invoke noundef zeroext i1 %9(ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i, i32 noundef 3) + %call.i.i = invoke noundef zeroext i1 %10(ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i, i32 noundef 3) to label %_ZNSt14_Function_baseD2Ev.exit unwind label %terminate.lpad.i.i terminate.lpad.i.i: ; preds = %if.then.i3.i - %11 = landingpad { ptr, i32 } + %12 = landingpad { ptr, i32 } catch ptr null - %12 = extractvalue { ptr, i32 } %11, 0 - call void @__clang_call_terminate(ptr %12) #29 + %13 = extractvalue { ptr, i32 } %12, 0 + call void @__clang_call_terminate(ptr %13) #29 unreachable _ZNSt14_Function_baseD2Ev.exit: ; preds = %_ZNSt8functionIFdddEEC2EOS1_.exit.i, %if.then.i3.i @@ -4641,94 +4647,96 @@ _ZNSt14_Function_baseD2Ev.exit: ; preds = %_ZNSt8functionIFddd if.then.i.i.i: ; preds = %_ZNSt14_Function_baseD2Ev.exit %use_count_.i.i.i.i = getelementptr inbounds nuw i8, ptr %.pre, i64 8 - %13 = atomicrmw sub ptr %use_count_.i.i.i.i, i32 1 acq_rel, align 4 - %cmp.i.i.i.i = icmp eq i32 %13, 1 + %14 = atomicrmw sub ptr %use_count_.i.i.i.i, i32 1 acq_rel, align 4 + %cmp.i.i.i.i = icmp eq i32 %14, 1 br i1 %cmp.i.i.i.i, label %if.then.i.i.i.i, label %_ZN5boost10shared_ptrIN8QuantLib14NormalCLVModel15MappingFunction17InterpolationDataEED2Ev.exit.i if.then.i.i.i.i: ; preds = %if.then.i.i.i %vtable.i.i.i.i = load ptr, ptr %.pre, align 8, !tbaa !33 %vfn.i.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i.i, i64 16 - %14 = load ptr, ptr %vfn.i.i.i.i, align 8 - invoke void %14(ptr noundef nonnull align 8 dereferenceable(16) %.pre) + %15 = load ptr, ptr %vfn.i.i.i.i, align 8 + invoke void %15(ptr noundef nonnull align 8 dereferenceable(16) %.pre) to label %.noexc.i.i.i unwind label %terminate.lpad.i.i.i .noexc.i.i.i: ; preds = %if.then.i.i.i.i %weak_count_.i.i.i.i.i = getelementptr inbounds nuw i8, ptr %.pre, i64 12 - %15 = atomicrmw sub ptr %weak_count_.i.i.i.i.i, i32 1 acq_rel, align 4 - %cmp.i.i.i.i.i = icmp eq i32 %15, 1 + %16 = atomicrmw sub ptr %weak_count_.i.i.i.i.i, i32 1 acq_rel, align 4 + %cmp.i.i.i.i.i = icmp eq i32 %16, 1 br i1 %cmp.i.i.i.i.i, label %if.then.i.i.i.i.i, label %_ZN5boost10shared_ptrIN8QuantLib14NormalCLVModel15MappingFunction17InterpolationDataEED2Ev.exit.i if.then.i.i.i.i.i: ; preds = %.noexc.i.i.i %vtable.i.i.i.i.i = load ptr, ptr %.pre, align 8, !tbaa !33 %vfn.i.i.i.i.i = getelementptr inbounds i8, ptr %vtable.i.i.i.i.i, i64 24 - %16 = load ptr, ptr %vfn.i.i.i.i.i, align 8 - invoke void %16(ptr noundef nonnull align 8 dereferenceable(16) %.pre) + %17 = load ptr, ptr %vfn.i.i.i.i.i, align 8 + invoke void %17(ptr noundef nonnull align 8 dereferenceable(16) %.pre) to label %_ZN5boost10shared_ptrIN8QuantLib14NormalCLVModel15MappingFunction17InterpolationDataEED2Ev.exit.i unwind label %terminate.lpad.i.i.i terminate.lpad.i.i.i: ; preds = %if.then.i.i.i.i.i, %if.then.i.i.i.i - %17 = landingpad { ptr, i32 } + %18 = landingpad { ptr, i32 } catch ptr null - %18 = extractvalue { ptr, i32 } %17, 0 - call void @__clang_call_terminate(ptr %18) #29 + %19 = extractvalue { ptr, i32 } %18, 0 + call void @__clang_call_terminate(ptr %19) #29 unreachable _ZN5boost10shared_ptrIN8QuantLib14NormalCLVModel15MappingFunction17InterpolationDataEED2Ev.exit.i: ; preds = %if.then.i.i.i.i.i, %.noexc.i.i.i, %if.then.i.i.i, %_ZNSt14_Function_baseD2Ev.exit - %19 = load ptr, ptr %pn3.i.i.i.i.i, align 8, !tbaa !42 - %cmp.not.i.i2.i = icmp eq ptr %19, null + %20 = load ptr, ptr %pn3.i.i.i.i.i, align 8, !tbaa !42 + %cmp.not.i.i2.i = icmp eq ptr %20, null br i1 %cmp.not.i.i2.i, label %_ZN5boost10shared_ptrIN8QuantLib24OrnsteinUhlenbeckProcessEED2Ev.exit.i, label %if.then.i.i3.i if.then.i.i3.i: ; preds = %_ZN5boost10shared_ptrIN8QuantLib14NormalCLVModel15MappingFunction17InterpolationDataEED2Ev.exit.i - %use_count_.i.i.i4.i = getelementptr inbounds nuw i8, ptr %19, i64 8 - %20 = atomicrmw sub ptr %use_count_.i.i.i4.i, i32 1 acq_rel, align 4 - %cmp.i.i.i5.i = icmp eq i32 %20, 1 + %use_count_.i.i.i4.i = getelementptr inbounds nuw i8, ptr %20, i64 8 + %21 = atomicrmw sub ptr %use_count_.i.i.i4.i, i32 1 acq_rel, align 4 + %cmp.i.i.i5.i = icmp eq i32 %21, 1 br i1 %cmp.i.i.i5.i, label %if.then.i.i.i6.i, label %_ZN5boost10shared_ptrIN8QuantLib24OrnsteinUhlenbeckProcessEED2Ev.exit.i if.then.i.i.i6.i: ; preds = %if.then.i.i3.i - %vtable.i.i.i7.i = load ptr, ptr %19, align 8, !tbaa !33 + %vtable.i.i.i7.i = load ptr, ptr %20, align 8, !tbaa !33 %vfn.i.i.i8.i = getelementptr inbounds i8, ptr %vtable.i.i.i7.i, i64 16 - %21 = load ptr, ptr %vfn.i.i.i8.i, align 8 - invoke void %21(ptr noundef nonnull align 8 dereferenceable(16) %19) + %22 = load ptr, ptr %vfn.i.i.i8.i, align 8 + invoke void %22(ptr noundef nonnull align 8 dereferenceable(16) %20) to label %.noexc.i.i10.i unwind label %terminate.lpad.i.i9.i .noexc.i.i10.i: ; preds = %if.then.i.i.i6.i - %weak_count_.i.i.i.i11.i = getelementptr inbounds nuw i8, ptr %19, i64 12 - %22 = atomicrmw sub ptr %weak_count_.i.i.i.i11.i, i32 1 acq_rel, align 4 - %cmp.i.i.i.i12.i = icmp eq i32 %22, 1 + %weak_count_.i.i.i.i11.i = getelementptr inbounds nuw i8, ptr %20, i64 12 + %23 = atomicrmw sub ptr %weak_count_.i.i.i.i11.i, i32 1 acq_rel, align 4 + %cmp.i.i.i.i12.i = icmp eq i32 %23, 1 br i1 %cmp.i.i.i.i12.i, label %if.then.i.i.i.i13.i, label %_ZN5boost10shared_ptrIN8QuantLib24OrnsteinUhlenbeckProcessEED2Ev.exit.i if.then.i.i.i.i13.i: ; preds = %.noexc.i.i10.i - %vtable.i.i.i.i14.i = load ptr, ptr %19, align 8, !tbaa !33 + %vtable.i.i.i.i14.i = load ptr, ptr %20, align 8, !tbaa !33 %vfn.i.i.i.i15.i = getelementptr inbounds i8, ptr %vtable.i.i.i.i14.i, i64 24 - %23 = load ptr, ptr %vfn.i.i.i.i15.i, align 8 - invoke void %23(ptr noundef nonnull align 8 dereferenceable(16) %19) + %24 = load ptr, ptr %vfn.i.i.i.i15.i, align 8 + invoke void %24(ptr noundef nonnull align 8 dereferenceable(16) %20) to label %_ZN5boost10shared_ptrIN8QuantLib24OrnsteinUhlenbeckProcessEED2Ev.exit.i unwind label %terminate.lpad.i.i9.i terminate.lpad.i.i9.i: ; preds = %if.then.i.i.i.i13.i, %if.then.i.i.i6.i - %24 = landingpad { ptr, i32 } + %25 = landingpad { ptr, i32 } catch ptr null - %25 = extractvalue { ptr, i32 } %24, 0 - call void @__clang_call_terminate(ptr %25) #29 + %26 = extractvalue { ptr, i32 } %25, 0 + call void @__clang_call_terminate(ptr %26) #29 unreachable _ZN5boost10shared_ptrIN8QuantLib24OrnsteinUhlenbeckProcessEED2Ev.exit.i: ; preds = %if.then.i.i.i.i13.i, %.noexc.i.i10.i, %if.then.i.i3.i, %_ZN5boost10shared_ptrIN8QuantLib14NormalCLVModel15MappingFunction17InterpolationDataEED2Ev.exit.i - %26 = load ptr, ptr %ref.tmp2, align 8, !tbaa !3 - %cmp.not.i.i16.i = icmp eq ptr %26, null + %27 = load ptr, ptr %ref.tmp2, align 8, !tbaa !3 + %cmp.not.i.i16.i = icmp eq ptr %27, null br i1 %cmp.not.i.i16.i, label %_ZN8QuantLib14NormalCLVModel15MappingFunctionD2Ev.exit, label %_ZNKSt14default_deleteIA_dEclIdEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i.i.i _ZNKSt14default_deleteIA_dEclIdEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i.i.i: ; preds = %_ZN5boost10shared_ptrIN8QuantLib24OrnsteinUhlenbeckProcessEED2Ev.exit.i - call void @_ZdaPv(ptr noundef nonnull %26) #32 + call void @_ZdaPv(ptr noundef nonnull %27) #32 br label %_ZN8QuantLib14NormalCLVModel15MappingFunctionD2Ev.exit _ZN8QuantLib14NormalCLVModel15MappingFunctionD2Ev.exit: ; preds = %_ZN5boost10shared_ptrIN8QuantLib24OrnsteinUhlenbeckProcessEED2Ev.exit.i, %_ZNKSt14default_deleteIA_dEclIdEENSt9enable_ifIXsr14is_convertibleIPA_T_PS0_EE5valueEvE4typeEPS4_.exit.i.i.i call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %ref.tmp2) #28 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %ref.tmp.sroa.5) ret void lpad: ; preds = %entry - %27 = landingpad { ptr, i32 } + %28 = landingpad { ptr, i32 } cleanup call void @_ZN8QuantLib14NormalCLVModel15MappingFunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %ref.tmp2) #28 call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %ref.tmp2) #28 - resume { ptr, i32 } %27 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %ref.tmp.sroa.5) + resume { ptr, i32 } %28 } ; Function Attrs: inlinehint mustprogress nounwind uwtable diff --git a/bench/recastnavigation/optimized/TestCase.cpp.ll b/bench/recastnavigation/optimized/TestCase.cpp.ll index 2c0e3c6b9c8..6241fc5da17 100644 --- a/bench/recastnavigation/optimized/TestCase.cpp.ll +++ b/bench/recastnavigation/optimized/TestCase.cpp.ll @@ -92,7 +92,7 @@ define dso_local noundef zeroext i1 @_ZN8TestCase4loadERKNSt7__cxx1112basic_stri %4 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %1) #14 %5 = tail call noalias ptr @fopen(ptr noundef %4, ptr noundef nonnull @.str) %.not = icmp eq ptr %5, null - br i1 %.not, label %106, label %6 + br i1 %.not, label %107, label %6 6: ; preds = %2 %7 = tail call i32 @fseek(ptr noundef nonnull %5, i64 noundef 0, i32 noundef 2) @@ -101,7 +101,7 @@ define dso_local noundef zeroext i1 @_ZN8TestCase4loadERKNSt7__cxx1112basic_stri 8: ; preds = %6 %9 = tail call i32 @fclose(ptr noundef nonnull %5) - br label %106 + br label %107 10: ; preds = %6 %11 = tail call i64 @ftell(ptr noundef nonnull %5) @@ -110,7 +110,7 @@ define dso_local noundef zeroext i1 @_ZN8TestCase4loadERKNSt7__cxx1112basic_stri 13: ; preds = %10 %14 = tail call i32 @fclose(ptr noundef nonnull %5) - br label %106 + br label %107 15: ; preds = %10 %16 = tail call i32 @fseek(ptr noundef nonnull %5, i64 noundef 0, i32 noundef 0) @@ -119,7 +119,7 @@ define dso_local noundef zeroext i1 @_ZN8TestCase4loadERKNSt7__cxx1112basic_stri 17: ; preds = %15 %18 = tail call i32 @fclose(ptr noundef nonnull %5) - br label %106 + br label %107 19: ; preds = %15 %20 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %11) #16 @@ -130,7 +130,7 @@ define dso_local noundef zeroext i1 @_ZN8TestCase4loadERKNSt7__cxx1112basic_stri 23: ; preds = %19 tail call void @_ZdaPv(ptr noundef nonnull %20) #15 - br label %106 + br label %107 24: ; preds = %19 %25 = getelementptr inbounds i8, ptr %20, i64 %11 @@ -144,8 +144,8 @@ define dso_local noundef zeroext i1 @_ZN8TestCase4loadERKNSt7__cxx1112basic_stri %29 = getelementptr inbounds i8, ptr %3, i64 2 br label %30 -30: ; preds = %.lr.ph, %104 - %.05876 = phi ptr [ %20, %.lr.ph ], [ %32, %104 ] +30: ; preds = %.lr.ph, %105 + %.05876 = phi ptr [ %20, %.lr.ph ], [ %32, %105 ] store i8 0, ptr %3, align 16 br label %.lr.ph.i @@ -219,7 +219,7 @@ _ZL8parseRowPcS_S_i.exit: ; preds = %42 _ZL8copyNameRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc.exit: ; preds = %.lr.ph.i66, %52, %47 %.0.lcssa.i68 = phi ptr [ %27, %47 ], [ %.08.i, %.lr.ph.i66 ], [ %53, %52 ] %55 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull %.0.lcssa.i68) - br label %104 + br label %105 56: ; preds = %_ZL8parseRowPcS_S_i.exit %57 = load i8, ptr %27, align 1 @@ -243,7 +243,7 @@ _ZL8copyNameRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc.exit: ; pre _ZL8copyNameRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc.exit75: ; preds = %.lr.ph.i70, %61, %56 %.0.lcssa.i74 = phi ptr [ %27, %56 ], [ %.08.i71, %.lr.ph.i70 ], [ %62, %61 ] %64 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSEPKc(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef nonnull %.0.lcssa.i74) - br label %104 + br label %105 65: ; preds = %_ZL8parseRowPcS_S_i.exit %66 = icmp eq i8 %46, 112 @@ -274,13 +274,13 @@ _ZL8copyNameRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc.exit75: ; p %82 = getelementptr inbounds i8, ptr %70, i64 56 %83 = getelementptr inbounds i8, ptr %70, i64 58 %84 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %29, ptr noundef nonnull @.str.1, ptr noundef nonnull %76, ptr noundef nonnull %77, ptr noundef nonnull %78, ptr noundef nonnull %79, ptr noundef nonnull %80, ptr noundef nonnull %81, ptr noundef nonnull %82, ptr noundef nonnull %83) #14 - br label %104 + br label %105 85: ; preds = %65 %86 = icmp eq i8 %46, 114 %87 = icmp eq i8 %67, 99 %or.cond7 = select i1 %86, i1 %87, i1 false - br i1 %or.cond7, label %88, label %104 + br i1 %or.cond7, label %88, label %105 88: ; preds = %85 %89 = call noalias noundef nonnull dereferenceable(112) ptr @_Znwm(i64 noundef 112) #16 @@ -289,33 +289,35 @@ _ZL8copyNameRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc.exit75: ; p %91 = getelementptr inbounds i8, ptr %89, i64 72 store i32 0, ptr %91, align 8 %92 = getelementptr inbounds i8, ptr %89, i64 80 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(61) %89, i8 0, i64 61, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(61) %89, i8 0, i64 60, i1 false) call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %92, i8 0, i64 24, i1 false) store i32 1, ptr %89, align 8 - %93 = load ptr, ptr %28, align 8 - %94 = getelementptr inbounds i8, ptr %89, i64 104 - store ptr %93, ptr %94, align 8 + %93 = getelementptr inbounds i8, ptr %89, i64 60 + store i8 0, ptr %93, align 4 + %94 = load ptr, ptr %28, align 8 + %95 = getelementptr inbounds i8, ptr %89, i64 104 + store ptr %94, ptr %95, align 8 store ptr %89, ptr %28, align 8 - %95 = getelementptr inbounds i8, ptr %89, i64 4 - %96 = getelementptr inbounds i8, ptr %89, i64 8 - %97 = getelementptr inbounds i8, ptr %89, i64 12 - %98 = getelementptr inbounds i8, ptr %89, i64 16 - %99 = getelementptr inbounds i8, ptr %89, i64 20 - %100 = getelementptr inbounds i8, ptr %89, i64 24 - %101 = getelementptr inbounds i8, ptr %89, i64 56 - %102 = getelementptr inbounds i8, ptr %89, i64 58 - %103 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %29, ptr noundef nonnull @.str.1, ptr noundef nonnull %95, ptr noundef nonnull %96, ptr noundef nonnull %97, ptr noundef nonnull %98, ptr noundef nonnull %99, ptr noundef nonnull %100, ptr noundef nonnull %101, ptr noundef nonnull %102) #14 - br label %104 - -104: ; preds = %_ZL8copyNameRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc.exit75, %85, %88, %69, %_ZL8copyNameRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc.exit - %105 = icmp ult ptr %32, %25 - br i1 %105, label %30, label %._crit_edge, !llvm.loop !9 - -._crit_edge: ; preds = %104, %24 + %96 = getelementptr inbounds i8, ptr %89, i64 4 + %97 = getelementptr inbounds i8, ptr %89, i64 8 + %98 = getelementptr inbounds i8, ptr %89, i64 12 + %99 = getelementptr inbounds i8, ptr %89, i64 16 + %100 = getelementptr inbounds i8, ptr %89, i64 20 + %101 = getelementptr inbounds i8, ptr %89, i64 24 + %102 = getelementptr inbounds i8, ptr %89, i64 56 + %103 = getelementptr inbounds i8, ptr %89, i64 58 + %104 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %29, ptr noundef nonnull @.str.1, ptr noundef nonnull %96, ptr noundef nonnull %97, ptr noundef nonnull %98, ptr noundef nonnull %99, ptr noundef nonnull %100, ptr noundef nonnull %101, ptr noundef nonnull %102, ptr noundef nonnull %103) #14 + br label %105 + +105: ; preds = %_ZL8copyNameRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc.exit75, %85, %88, %69, %_ZL8copyNameRNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc.exit + %106 = icmp ult ptr %32, %25 + br i1 %106, label %30, label %._crit_edge, !llvm.loop !9 + +._crit_edge: ; preds = %105, %24 call void @_ZdaPv(ptr noundef nonnull %20) #15 - br label %106 + br label %107 -106: ; preds = %2, %._crit_edge, %23, %17, %13, %8 +107: ; preds = %2, %._crit_edge, %23, %17, %13, %8 %.0 = phi i1 [ false, %8 ], [ false, %13 ], [ false, %17 ], [ false, %23 ], [ true, %._crit_edge ], [ false, %2 ] ret i1 %.0 } diff --git a/bench/regex-rs/optimized/1x04d8372kemp7hd.ll b/bench/regex-rs/optimized/1x04d8372kemp7hd.ll index e57e6816f98..e986a582013 100644 --- a/bench/regex-rs/optimized/1x04d8372kemp7hd.ll +++ b/bench/regex-rs/optimized/1x04d8372kemp7hd.ll @@ -13174,46 +13174,45 @@ _ZN14regex_automata4util8alphabet12ByteClassSet9set_range17h80899899759d6f5dE.ex define hidden void @_ZN14regex_automata4util8alphabet12ByteClassSet12byte_classes17h0005094c8df69daeE(ptr noalias nocapture noundef writeonly sret({ [256 x i8] }) align 1 dereferenceable(256) %0, ptr noalias nocapture noundef readonly align 8 dereferenceable(32) %1) unnamed_addr #0 { %3 = alloca { [256 x i8] }, align 1 call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %3) - %4 = getelementptr inbounds i8, ptr %3, i64 1 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(256) %4, i8 0, i64 255, i1 false) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(256) %3, i8 0, i64 256, i1 false) store i8 0, ptr %3, align 1 - br label %6 + br label %5 -5: ; preds = %19 +4: ; preds = %18 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(256) %0, ptr noundef nonnull align 1 dereferenceable(256) %3, i64 256, i1 false) call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %3) ret void -6: ; preds = %2, %19 - %indvars.iv = phi i64 [ 0, %2 ], [ %indvars.iv.next, %19 ] - %.012 = phi i8 [ 0, %2 ], [ %.1, %19 ] - %7 = trunc nuw i64 %indvars.iv to i8 +5: ; preds = %2, %18 + %indvars.iv = phi i64 [ 0, %2 ], [ %indvars.iv.next, %18 ] + %.012 = phi i8 [ 0, %2 ], [ %.1, %18 ] + %6 = trunc nuw i64 %indvars.iv to i8 %.lobit.i = lshr i64 %indvars.iv, 7 - %8 = and i64 %.lobit.i, 1 - %9 = getelementptr inbounds [2 x i128], ptr %1, i64 0, i64 %8 - %10 = load i128, ptr %9, align 8, !alias.scope !3395, !noundef !9 - %11 = and i8 %7, 127 - %12 = zext nneg i8 %11 to i128 - %13 = shl nuw i128 1, %12 - %14 = and i128 %10, %13 - %.not = icmp eq i128 %14, 0 - br i1 %.not, label %19, label %15 + %7 = and i64 %.lobit.i, 1 + %8 = getelementptr inbounds [2 x i128], ptr %1, i64 0, i64 %7 + %9 = load i128, ptr %8, align 8, !alias.scope !3395, !noundef !9 + %10 = and i8 %6, 127 + %11 = zext nneg i8 %10 to i128 + %12 = shl nuw i128 1, %11 + %13 = and i128 %9, %12 + %.not = icmp eq i128 %13, 0 + br i1 %.not, label %18, label %14 -15: ; preds = %6 - %16 = tail call { i8, i1 } @llvm.uadd.with.overflow.i8(i8 %.012, i8 1) - %17 = extractvalue { i8, i1 } %16, 1 - %18 = extractvalue { i8, i1 } %16, 0 - br i1 %17, label %22, label %19 +14: ; preds = %5 + %15 = tail call { i8, i1 } @llvm.uadd.with.overflow.i8(i8 %.012, i8 1) + %16 = extractvalue { i8, i1 } %15, 1 + %17 = extractvalue { i8, i1 } %15, 0 + br i1 %16, label %21, label %18 -19: ; preds = %15, %6 - %.1 = phi i8 [ %.012, %6 ], [ %18, %15 ] +18: ; preds = %14, %5 + %.1 = phi i8 [ %.012, %5 ], [ %17, %14 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %20 = getelementptr inbounds [256 x i8], ptr %3, i64 0, i64 %indvars.iv.next - store i8 %.1, ptr %20, align 1 - %21 = icmp eq i64 %indvars.iv.next, 255 - br i1 %21, label %5, label %6 + %19 = getelementptr inbounds [256 x i8], ptr %3, i64 0, i64 %indvars.iv.next + store i8 %.1, ptr %19, align 1 + %20 = icmp eq i64 %indvars.iv.next, 255 + br i1 %20, label %4, label %5 -22: ; preds = %15 +21: ; preds = %14 tail call void @_ZN4core9panicking5panic17hb837a5ebbbe5b188E(ptr noalias noundef nonnull readonly align 1 @anon.09ebd1a1fbc06cbf73656c4d6a94c431.64.llvm.8347807780687254574, i64 noundef 43, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.09ebd1a1fbc06cbf73656c4d6a94c431.83.llvm.8347807780687254574) #44 unreachable } diff --git a/bench/sentencepiece/optimized/builder.cc.ll b/bench/sentencepiece/optimized/builder.cc.ll index 135e4c79e7c..9f49fb8f474 100644 --- a/bench/sentencepiece/optimized/builder.cc.ll +++ b/bench/sentencepiece/optimized/builder.cc.ll @@ -2258,6 +2258,7 @@ _ZNSt8_Rb_treeISt6vectorIjSaIjEESt4pairIKS2_iESt10_Select1stIS5_ESt4lessIS2_ESaI define void @_ZN13sentencepiece10normalizer7Builder17DecompileCharsMapESt17basic_string_viewIcSt11char_traitsIcEEPSt3mapISt6vectorIjSaIjEES9_St4lessIS9_ESaISt4pairIKS9_S9_EEE(ptr dead_on_unwind noalias writable sret(%"class.sentencepiece::util::Status") align 8 %0, i64 %1, ptr %2, ptr noundef %3) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 { %5 = alloca i64, align 8 %6 = alloca i64, align 8 + %.sroa.4 = alloca [24 x i8], align 8 %7 = alloca %"class.std::__cxx11::basic_string", align 8 %8 = alloca ptr, align 8 %9 = alloca %"class.sentencepiece::util::StatusBuilder", align 8 @@ -2321,7 +2322,7 @@ _ZN13sentencepiece4util13StatusBuilderlsIA3_cEERS1_RKT_.exit: ; preds = %_ZN13se call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #22 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %17) #22 - br label %79 + br label %80 31: ; preds = %_ZN13sentencepiece4util13StatusBuilderlsIA3_cEERS1_RKT_.exit, %_ZN13sentencepiece4util13StatusBuilderlsIA10_cEERS1_RKT_.exit, %_ZN13sentencepiece4util13StatusBuilderlsIA4_cEERS1_RKT_.exit, %_ZN13sentencepiece4util13StatusBuilderlsIiEERS1_RKT_.exit, %_ZN13sentencepiece4util13StatusBuilderlsIA2_cEERS1_RKT_.exit, %_ZN13sentencepiece4util13StatusBuilderlsIA15_cEERS1_RKT_.exit, %16 %32 = landingpad { ptr, i32 } @@ -2331,7 +2332,7 @@ _ZN13sentencepiece4util13StatusBuilderlsIA3_cEERS1_RKT_.exit: ; preds = %_ZN13se .body: ; preds = %28, %31 %eh.lpad-body = phi { ptr, i32 } [ %32, %31 ], [ %29, %28 ] call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %17) #22 - br label %80 + br label %81 33: ; preds = %4 %34 = getelementptr inbounds i8, ptr %3, i64 16 @@ -2387,8 +2388,10 @@ _ZN5Darts15DoubleArrayImplIvvivE9set_arrayEPKvm.exit: ; preds = %43 store i64 %53, ptr %47, align 8 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #22 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %15, i8 0, i64 32, i1 false) + call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %.sroa.4) + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %.sroa.4, i8 0, i64 24, i1 false) %55 = invoke noalias noundef nonnull dereferenceable(40) ptr @_Znwm(i64 noundef 40) #26 - to label %56 unwind label %68 + to label %56 unwind label %69 56: ; preds = %_ZN5Darts15DoubleArrayImplIvvivE9set_arrayEPKvm.exit store ptr %15, ptr %55, align 16 @@ -2402,98 +2405,100 @@ _ZN5Darts15DoubleArrayImplIvvivE9set_arrayEPKvm.exit: ; preds = %43 store ptr %8, ptr %.sroa.5.0..sroa_idx, align 16 store ptr %55, ptr %15, align 8 %.sroa.4.0..sroa_idx24 = getelementptr inbounds i8, ptr %15, i64 8 - store i64 0, ptr %.sroa.4.0..sroa_idx24, align 8 - %57 = getelementptr inbounds i8, ptr %15, i64 16 - store ptr @"_ZNSt17_Function_handlerIFvmmEZN13sentencepiece10normalizer7Builder17DecompileCharsMapESt17basic_string_viewIcSt11char_traitsIcEEPSt3mapISt6vectorIjSaIjEESB_St4lessISB_ESaISt4pairIKSB_SB_EEEE3$_0E10_M_managerERSt9_Any_dataRKSM_St18_Manager_operation", ptr %57, align 8 - %58 = getelementptr inbounds i8, ptr %15, i64 24 - store ptr @"_ZNSt17_Function_handlerIFvmmEZN13sentencepiece10normalizer7Builder17DecompileCharsMapESt17basic_string_viewIcSt11char_traitsIcEEPSt3mapISt6vectorIjSaIjEESB_St4lessISB_ESaISt4pairIKSB_SB_EEEE3$_0E9_M_invokeERKSt9_Any_dataOmSP_", ptr %58, align 8 + %57 = load i64, ptr %.sroa.4, align 8 + store i64 %57, ptr %.sroa.4.0..sroa_idx24, align 8 + %58 = getelementptr inbounds i8, ptr %15, i64 16 + store ptr @"_ZNSt17_Function_handlerIFvmmEZN13sentencepiece10normalizer7Builder17DecompileCharsMapESt17basic_string_viewIcSt11char_traitsIcEEPSt3mapISt6vectorIjSaIjEESB_St4lessISB_ESaISt4pairIKSB_SB_EEEE3$_0E10_M_managerERSt9_Any_dataRKSM_St18_Manager_operation", ptr %58, align 8 + %59 = getelementptr inbounds i8, ptr %15, i64 24 + store ptr @"_ZNSt17_Function_handlerIFvmmEZN13sentencepiece10normalizer7Builder17DecompileCharsMapESt17basic_string_viewIcSt11char_traitsIcEEPSt3mapISt6vectorIjSaIjEESB_St4lessISB_ESaISt4pairIKSB_SB_EEEE3$_0E9_M_invokeERKSt9_Any_dataOmSP_", ptr %59, align 8 + call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %.sroa.4) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) store i64 0, ptr %5, align 8 store i64 0, ptr %6, align 8 invoke void @"_ZNSt17_Function_handlerIFvmmEZN13sentencepiece10normalizer7Builder17DecompileCharsMapESt17basic_string_viewIcSt11char_traitsIcEEPSt3mapISt6vectorIjSaIjEESB_St4lessISB_ESaISt4pairIKSB_SB_EEEE3$_0E9_M_invokeERKSt9_Any_dataOmSP_"(ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %6) - to label %59 unwind label %68 + to label %60 unwind label %69 -59: ; preds = %56 +60: ; preds = %56 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) invoke void @_ZN13sentencepiece4util6StatusC1Ev(ptr noundef nonnull align 8 dereferenceable(8) %0) - to label %_ZN13sentencepiece4util8OkStatusEv.exit unwind label %68 + to label %_ZN13sentencepiece4util8OkStatusEv.exit unwind label %69 -_ZN13sentencepiece4util8OkStatusEv.exit: ; preds = %59 - %60 = load ptr, ptr %57, align 8 - %.not.i.i18 = icmp eq ptr %60, null - br i1 %.not.i.i18, label %_ZNSt8functionIFvmmEED2Ev.exit, label %61 +_ZN13sentencepiece4util8OkStatusEv.exit: ; preds = %60 + %61 = load ptr, ptr %58, align 8 + %.not.i.i18 = icmp eq ptr %61, null + br i1 %.not.i.i18, label %_ZNSt8functionIFvmmEED2Ev.exit, label %62 -61: ; preds = %_ZN13sentencepiece4util8OkStatusEv.exit - %62 = invoke noundef zeroext i1 %60(ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef nonnull align 8 dereferenceable(16) %15, i32 noundef 3) - to label %_ZNSt8functionIFvmmEED2Ev.exit unwind label %63 +62: ; preds = %_ZN13sentencepiece4util8OkStatusEv.exit + %63 = invoke noundef zeroext i1 %61(ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef nonnull align 8 dereferenceable(16) %15, i32 noundef 3) + to label %_ZNSt8functionIFvmmEED2Ev.exit unwind label %64 -63: ; preds = %61 - %64 = landingpad { ptr, i32 } +64: ; preds = %62 + %65 = landingpad { ptr, i32 } catch ptr null - %65 = extractvalue { ptr, i32 } %64, 0 - call void @__clang_call_terminate(ptr %65) #23 + %66 = extractvalue { ptr, i32 } %65, 0 + call void @__clang_call_terminate(ptr %66) #23 unreachable -_ZNSt8functionIFvmmEED2Ev.exit: ; preds = %_ZN13sentencepiece4util8OkStatusEv.exit, %61 +_ZNSt8functionIFvmmEED2Ev.exit: ; preds = %_ZN13sentencepiece4util8OkStatusEv.exit, %62 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #22 store ptr getelementptr inbounds (i8, ptr @_ZTVN5Darts15DoubleArrayImplIvvivEE, i64 16), ptr %13, align 8 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %47, i8 0, i64 16, i1 false) - %66 = load ptr, ptr %52, align 8 - %.not.i.i19 = icmp eq ptr %66, null - br i1 %.not.i.i19, label %.critedge, label %67 + %67 = load ptr, ptr %52, align 8 + %.not.i.i19 = icmp eq ptr %67, null + br i1 %.not.i.i19, label %.critedge, label %68 -67: ; preds = %_ZNSt8functionIFvmmEED2Ev.exit - call void @_ZdaPv(ptr noundef nonnull %66) #27 +68: ; preds = %_ZNSt8functionIFvmmEED2Ev.exit + call void @_ZdaPv(ptr noundef nonnull %67) #27 store ptr null, ptr %52, align 8 br label %.critedge -68: ; preds = %59, %56, %_ZN5Darts15DoubleArrayImplIvvivE9set_arrayEPKvm.exit - %69 = landingpad { ptr, i32 } +69: ; preds = %60, %56, %_ZN5Darts15DoubleArrayImplIvvivE9set_arrayEPKvm.exit + %70 = landingpad { ptr, i32 } cleanup - %70 = getelementptr inbounds i8, ptr %15, i64 16 - %71 = load ptr, ptr %70, align 8 - %.not.i.i20 = icmp eq ptr %71, null - br i1 %.not.i.i20, label %_ZNSt8functionIFvmmEED2Ev.exit21, label %72 + %71 = getelementptr inbounds i8, ptr %15, i64 16 + %72 = load ptr, ptr %71, align 8 + %.not.i.i20 = icmp eq ptr %72, null + br i1 %.not.i.i20, label %_ZNSt8functionIFvmmEED2Ev.exit21, label %73 -72: ; preds = %68 - %73 = invoke noundef zeroext i1 %71(ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef nonnull align 8 dereferenceable(16) %15, i32 noundef 3) - to label %_ZNSt8functionIFvmmEED2Ev.exit21 unwind label %74 +73: ; preds = %69 + %74 = invoke noundef zeroext i1 %72(ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef nonnull align 8 dereferenceable(16) %15, i32 noundef 3) + to label %_ZNSt8functionIFvmmEED2Ev.exit21 unwind label %75 -74: ; preds = %72 - %75 = landingpad { ptr, i32 } +75: ; preds = %73 + %76 = landingpad { ptr, i32 } catch ptr null - %76 = extractvalue { ptr, i32 } %75, 0 - call void @__clang_call_terminate(ptr %76) #23 + %77 = extractvalue { ptr, i32 } %76, 0 + call void @__clang_call_terminate(ptr %77) #23 unreachable -_ZNSt8functionIFvmmEED2Ev.exit21: ; preds = %68, %72 +_ZNSt8functionIFvmmEED2Ev.exit21: ; preds = %69, %73 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #22 store ptr getelementptr inbounds (i8, ptr @_ZTVN5Darts15DoubleArrayImplIvvivEE, i64 16), ptr %13, align 8 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %47, i8 0, i64 16, i1 false) - %77 = load ptr, ptr %52, align 8 - %.not.i.i22 = icmp eq ptr %77, null - br i1 %.not.i.i22, label %_ZN5Darts15DoubleArrayImplIvvivED2Ev.exit23, label %78 + %78 = load ptr, ptr %52, align 8 + %.not.i.i22 = icmp eq ptr %78, null + br i1 %.not.i.i22, label %_ZN5Darts15DoubleArrayImplIvvivED2Ev.exit23, label %79 -78: ; preds = %_ZNSt8functionIFvmmEED2Ev.exit21 - call void @_ZdaPv(ptr noundef nonnull %77) #27 +79: ; preds = %_ZNSt8functionIFvmmEED2Ev.exit21 + call void @_ZdaPv(ptr noundef nonnull %78) #27 store ptr null, ptr %52, align 8 br label %_ZN5Darts15DoubleArrayImplIvvivED2Ev.exit23 -.critedge: ; preds = %67, %_ZNSt8functionIFvmmEED2Ev.exit, %43 +.critedge: ; preds = %68, %_ZNSt8functionIFvmmEED2Ev.exit, %43 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #22 - br label %79 + br label %80 -_ZN5Darts15DoubleArrayImplIvvivED2Ev.exit23: ; preds = %78, %_ZNSt8functionIFvmmEED2Ev.exit21, %45 - %.pn = phi { ptr, i32 } [ %46, %45 ], [ %69, %_ZNSt8functionIFvmmEED2Ev.exit21 ], [ %69, %78 ] +_ZN5Darts15DoubleArrayImplIvvivED2Ev.exit23: ; preds = %79, %_ZNSt8functionIFvmmEED2Ev.exit21, %45 + %.pn = phi { ptr, i32 } [ %46, %45 ], [ %70, %_ZNSt8functionIFvmmEED2Ev.exit21 ], [ %70, %79 ] call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #22 - br label %80 + br label %81 -79: ; preds = %.critedge, %30 +80: ; preds = %.critedge, %30 ret void -80: ; preds = %_ZN5Darts15DoubleArrayImplIvvivED2Ev.exit23, %.body +81: ; preds = %_ZN5Darts15DoubleArrayImplIvvivED2Ev.exit23, %.body %.pn.pn = phi { ptr, i32 } [ %.pn, %_ZN5Darts15DoubleArrayImplIvvivED2Ev.exit23 ], [ %eh.lpad-body, %.body ] resume { ptr, i32 } %.pn.pn } diff --git a/bench/slurm/optimized/slurm_pmi.ll b/bench/slurm/optimized/slurm_pmi.ll index c4bad7d6dd1..c2e85e8599f 100644 --- a/bench/slurm/optimized/slurm_pmi.ll +++ b/bench/slurm/optimized/slurm_pmi.ll @@ -45,24 +45,24 @@ define i32 @slurm_pmi_send_kvs_comm_set(ptr noundef %0, i32 noundef %1, i32 noun br i1 %7, label %_get_addr.exit, label %8 8: ; preds = %3 - tail call void @slurm_init(ptr noundef null) #11 + tail call void @slurm_init(ptr noundef null) #12 %9 = load i16, ptr @srun_port, align 2 %.not.i = icmp eq i16 %9, 0 br i1 %.not.i, label %10, label %18 10: ; preds = %8 - %11 = tail call ptr @getenv(ptr noundef nonnull @.str.13) #11 - %12 = tail call ptr @getenv(ptr noundef nonnull @.str.14) #11 + %11 = tail call ptr @getenv(ptr noundef nonnull @.str.13) #12 + %12 = tail call ptr @getenv(ptr noundef nonnull @.str.14) #12 %13 = icmp ne ptr %11, null %14 = icmp ne ptr %12, null %or.cond.i = and i1 %13, %14 br i1 %or.cond.i, label %15, label %_get_addr.exit 15: ; preds = %10 - %16 = tail call i64 @atol(ptr nocapture noundef nonnull %12) #12 + %16 = tail call i64 @atol(ptr nocapture noundef nonnull %12) #13 %17 = trunc i64 %16 to i16 store i16 %17, ptr @srun_port, align 2 - tail call void @slurm_set_addr(ptr noundef nonnull @srun_addr, i16 noundef zeroext %17, ptr noundef nonnull %11) #11 + tail call void @slurm_set_addr(ptr noundef nonnull @srun_addr, i16 noundef zeroext %17, ptr noundef nonnull %11) #12 br label %18 18: ; preds = %15, %8 @@ -73,12 +73,12 @@ define i32 @slurm_pmi_send_kvs_comm_set(ptr noundef %0, i32 noundef %1, i32 noun br i1 %.not.i18, label %20, label %_set_pmi_time.exit 20: ; preds = %18 - %21 = tail call ptr @getenv(ptr noundef nonnull @.str.15) #11 + %21 = tail call ptr @getenv(ptr noundef nonnull @.str.15) #12 %22 = icmp eq ptr %21, null br i1 %22, label %.sink.split.i, label %23 23: ; preds = %20 - %24 = call i64 @strtol(ptr noundef nonnull %21, ptr noundef nonnull %4, i32 noundef 10) #11 + %24 = call i64 @strtol(ptr noundef nonnull %21, ptr noundef nonnull %4, i32 noundef 10) #12 %25 = trunc i64 %24 to i32 store i32 %25, ptr @pmi_time, align 4 %26 = icmp slt i32 %25, 1 @@ -91,7 +91,7 @@ define i32 @slurm_pmi_send_kvs_comm_set(ptr noundef %0, i32 noundef %1, i32 noun br i1 %.not3.i, label %_set_pmi_time.exit, label %30 30: ; preds = %27, %23 - %31 = tail call i32 (ptr, ...) @error(ptr noundef nonnull @.str.16, ptr noundef nonnull %21) #11 + %31 = tail call i32 (ptr, ...) @error(ptr noundef nonnull @.str.16, ptr noundef nonnull %21) #12 br label %.sink.split.i .sink.split.i: ; preds = %30, %20 @@ -100,8 +100,8 @@ define i32 @slurm_pmi_send_kvs_comm_set(ptr noundef %0, i32 noundef %1, i32 noun _set_pmi_time.exit: ; preds = %18, %27, %.sink.split.i call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) - call void @slurm_msg_t_init(ptr noundef nonnull %5) #11 - call void @slurm_msg_set_r_uid(ptr noundef nonnull %5, i32 noundef -1) #11 + call void @slurm_msg_t_init(ptr noundef nonnull %5) #12 + call void @slurm_msg_set_r_uid(ptr noundef nonnull %5, i32 noundef -1) #12 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(128) %5, ptr noundef nonnull align 8 dereferenceable(128) @srun_addr, i64 128, i1 false) %32 = getelementptr inbounds i8, ptr %5, i64 204 store i16 7201, ptr %32, align 4 @@ -149,7 +149,7 @@ _set_pmi_time.exit: ; preds = %18, %27, %.sink.spl 57: ; preds = %41, %51, %53, %47, %35 %.0 = phi i32 [ %38, %35 ], [ %44, %41 ], [ %50, %47 ], [ %56, %53 ], [ 0, %51 ] - %58 = call i32 @slurm_send_recv_rc_msg_only_one(ptr noundef nonnull %5, ptr noundef nonnull %6, i32 noundef %.0) #11 + %58 = call i32 @slurm_send_recv_rc_msg_only_one(ptr noundef nonnull %5, ptr noundef nonnull %6, i32 noundef %.0) #12 %59 = icmp slt i32 %58, 0 br i1 %59, label %.lr.ph, label %._crit_edge @@ -160,21 +160,21 @@ _set_pmi_time.exit: ; preds = %18, %27, %.sink.spl br i1 %exitcond, label %61, label %63 61: ; preds = %.lr.ph - %62 = call i32 (ptr, ...) @error(ptr noundef nonnull @.str) #11 + %62 = call i32 (ptr, ...) @error(ptr noundef nonnull @.str) #12 br label %_get_addr.exit 63: ; preds = %.lr.ph - %64 = call i32 @get_log_level() #11 + %64 = call i32 @get_log_level() #12 %65 = icmp sgt i32 %64, 4 br i1 %65, label %66, label %67 66: ; preds = %63 - call void (i32, ptr, ...) @log_var(i32 noundef 5, ptr noundef nonnull @.str.1, i32 noundef %60) #11 + call void (i32, ptr, ...) @log_var(i32 noundef 5, ptr noundef nonnull @.str.1, i32 noundef %60) #12 br label %67 67: ; preds = %63, %66 call fastcc void @_delay_rpc(i32 noundef %1, i32 noundef %2) - %68 = call i32 @slurm_send_recv_rc_msg_only_one(ptr noundef nonnull %5, ptr noundef nonnull %6, i32 noundef %.0) #11 + %68 = call i32 @slurm_send_recv_rc_msg_only_one(ptr noundef nonnull %5, ptr noundef nonnull %6, i32 noundef %.0) #12 %69 = icmp slt i32 %68, 0 br i1 %69, label %.lr.ph, label %._crit_edge, !llvm.loop !6 @@ -211,12 +211,12 @@ define internal fastcc void @_delay_rpc(i32 noundef %0, i32 noundef %1) unnamed_ br i1 %.not.i, label %9, label %_set_pmi_time.exit 9: ; preds = %7 - %10 = tail call ptr @getenv(ptr noundef nonnull @.str.15) #11 + %10 = tail call ptr @getenv(ptr noundef nonnull @.str.15) #12 %11 = icmp eq ptr %10, null br i1 %11, label %.sink.split.i, label %12 12: ; preds = %9 - %13 = call i64 @strtol(ptr noundef nonnull %10, ptr noundef nonnull %3, i32 noundef 10) #11 + %13 = call i64 @strtol(ptr noundef nonnull %10, ptr noundef nonnull %3, i32 noundef 10) #12 %14 = trunc i64 %13 to i32 store i32 %14, ptr @pmi_time, align 4 %15 = icmp slt i32 %14, 1 @@ -229,7 +229,7 @@ define internal fastcc void @_delay_rpc(i32 noundef %0, i32 noundef %1) unnamed_ br i1 %.not3.i, label %_set_pmi_time.exit, label %19 19: ; preds = %16, %12 - %20 = tail call i32 (ptr, ...) @error(ptr noundef nonnull @.str.16, ptr noundef nonnull %10) #11 + %20 = tail call i32 (ptr, ...) @error(ptr noundef nonnull @.str.16, ptr noundef nonnull %10) #12 br label %.sink.split.i .sink.split.i: ; preds = %19, %9 @@ -244,14 +244,14 @@ _set_pmi_time.exit: ; preds = %7, %16, %.sink.spli .outer: ; preds = %51, %_set_pmi_time.exit %.0.ph = phi i32 [ %64, %51 ], [ 0, %_set_pmi_time.exit ] - %23 = call i32 @gettimeofday(ptr noundef nonnull %4, ptr noundef null) #11 + %23 = call i32 @gettimeofday(ptr noundef nonnull %4, ptr noundef null) #12 %.not38 = icmp eq i32 %23, 0 br i1 %.not38, label %.lr.ph, label %.outer._crit_edge .outer._crit_edge: ; preds = %.outer, %47 %24 = load i32, ptr @pmi_time, align 4 %25 = mul nsw i32 %24, %0 - %26 = tail call i32 @usleep(i32 noundef %25) #11 + %26 = tail call i32 @usleep(i32 noundef %25) #12 br label %.loopexit .lr.ph: ; preds = %.outer, %47 @@ -269,27 +269,27 @@ _set_pmi_time.exit: ; preds = %7, %16, %.sink.spli %38 = sub i32 %36, %35 %39 = select i1 %37, i32 %34, i32 0 %.025 = add i32 %39, %38 - %40 = tail call i32 @usleep(i32 noundef %.025) #11 + %40 = tail call i32 @usleep(i32 noundef %.025) #12 %.not33 = icmp eq i32 %40, 0 br i1 %.not33, label %49, label %41 41: ; preds = %.lr.ph - %42 = tail call ptr @__errno_location() #13 + %42 = tail call ptr @__errno_location() #14 %43 = load i32, ptr %42, align 4 %44 = icmp eq i32 %43, 22 br i1 %44, label %45, label %47 45: ; preds = %41 - %46 = tail call i32 @usleep(i32 noundef 900000) #11 + %46 = tail call i32 @usleep(i32 noundef 900000) #12 br label %47 47: ; preds = %45, %41 - %48 = call i32 @gettimeofday(ptr noundef nonnull %4, ptr noundef null) #11 + %48 = call i32 @gettimeofday(ptr noundef nonnull %4, ptr noundef null) #12 %.not = icmp eq i32 %48, 0 br i1 %.not, label %.lr.ph, label %.outer._crit_edge 49: ; preds = %.lr.ph - %50 = call i32 @gettimeofday(ptr noundef nonnull %5, ptr noundef null) #11 + %50 = call i32 @gettimeofday(ptr noundef nonnull %5, ptr noundef null) #12 %.not34 = icmp eq i32 %50, 0 br i1 %.not34, label %51, label %.loopexit @@ -339,29 +339,29 @@ define i32 @slurm_pmi_get_kvs_comm_set(ptr noundef writeonly %0, i32 noundef %1, br i1 %12, label %145, label %13 13: ; preds = %3 - tail call void @slurm_init(ptr noundef null) #11 + tail call void @slurm_init(ptr noundef null) #12 store ptr null, ptr %0, align 8 %14 = load i16, ptr @srun_port, align 2 %.not.i = icmp eq i16 %14, 0 br i1 %.not.i, label %15, label %25 15: ; preds = %13 - %16 = tail call ptr @getenv(ptr noundef nonnull @.str.13) #11 - %17 = tail call ptr @getenv(ptr noundef nonnull @.str.14) #11 + %16 = tail call ptr @getenv(ptr noundef nonnull @.str.13) #12 + %17 = tail call ptr @getenv(ptr noundef nonnull @.str.14) #12 %18 = icmp ne ptr %16, null %19 = icmp ne ptr %17, null %or.cond.i = and i1 %18, %19 br i1 %or.cond.i, label %20, label %23 20: ; preds = %15 - %21 = tail call i64 @atol(ptr nocapture noundef nonnull %17) #12 + %21 = tail call i64 @atol(ptr nocapture noundef nonnull %17) #13 %22 = trunc i64 %21 to i16 store i16 %22, ptr @srun_port, align 2 - tail call void @slurm_set_addr(ptr noundef nonnull @srun_addr, i16 noundef zeroext %22, ptr noundef nonnull %16) #11 + tail call void @slurm_set_addr(ptr noundef nonnull @srun_addr, i16 noundef zeroext %22, ptr noundef nonnull %16) #12 br label %25 23: ; preds = %15 - %24 = tail call i32 (ptr, ...) @error(ptr noundef nonnull @.str.2) #11 + %24 = tail call i32 (ptr, ...) @error(ptr noundef nonnull @.str.2) #12 br label %145 25: ; preds = %20, %13 @@ -372,12 +372,12 @@ define i32 @slurm_pmi_get_kvs_comm_set(ptr noundef writeonly %0, i32 noundef %1, br i1 %.not.i37, label %27, label %_set_pmi_time.exit 27: ; preds = %25 - %28 = tail call ptr @getenv(ptr noundef nonnull @.str.15) #11 + %28 = tail call ptr @getenv(ptr noundef nonnull @.str.15) #12 %29 = icmp eq ptr %28, null br i1 %29, label %.sink.split.i, label %30 30: ; preds = %27 - %31 = call i64 @strtol(ptr noundef nonnull %28, ptr noundef nonnull %4, i32 noundef 10) #11 + %31 = call i64 @strtol(ptr noundef nonnull %28, ptr noundef nonnull %4, i32 noundef 10) #12 %32 = trunc i64 %31 to i32 store i32 %32, ptr @pmi_time, align 4 %33 = icmp slt i32 %32, 1 @@ -390,7 +390,7 @@ define i32 @slurm_pmi_get_kvs_comm_set(ptr noundef writeonly %0, i32 noundef %1, br i1 %.not3.i, label %_set_pmi_time.exit, label %37 37: ; preds = %34, %30 - %38 = tail call i32 (ptr, ...) @error(ptr noundef nonnull @.str.16, ptr noundef nonnull %28) #11 + %38 = tail call i32 (ptr, ...) @error(ptr noundef nonnull @.str.16, ptr noundef nonnull %28) #12 br label %.sink.split.i .sink.split.i: ; preds = %37, %27 @@ -404,57 +404,57 @@ _set_pmi_time.exit: ; preds = %25, %34, %.sink.spl br i1 %40, label %41, label %47 41: ; preds = %_set_pmi_time.exit - %42 = tail call i32 @slurm_init_msg_engine_port(i16 noundef zeroext 0) #11 + %42 = tail call i32 @slurm_init_msg_engine_port(i16 noundef zeroext 0) #12 store i32 %42, ptr @pmi_fd, align 4 %43 = icmp slt i32 %42, 0 br i1 %43, label %44, label %46 44: ; preds = %41 - %45 = tail call i32 (ptr, ...) @error(ptr noundef nonnull @.str.3) #11 + %45 = tail call i32 (ptr, ...) @error(ptr noundef nonnull @.str.3) #12 br label %145 46: ; preds = %41 - tail call void @fd_set_blocking(i32 noundef %42) #11 + tail call void @fd_set_blocking(i32 noundef %42) #12 %.pre = load i32, ptr @pmi_fd, align 4 br label %47 47: ; preds = %46, %_set_pmi_time.exit %48 = phi i32 [ %.pre, %46 ], [ %39, %_set_pmi_time.exit ] - %49 = call i32 @slurm_get_stream_addr(i32 noundef %48, ptr noundef nonnull %8) #11 + %49 = call i32 @slurm_get_stream_addr(i32 noundef %48, ptr noundef nonnull %8) #12 %50 = icmp slt i32 %49, 0 br i1 %50, label %51, label %53 51: ; preds = %47 - %52 = call i32 (ptr, ...) @error(ptr noundef nonnull @.str.4) #11 + %52 = call i32 (ptr, ...) @error(ptr noundef nonnull @.str.4) #12 br label %145 53: ; preds = %47 - %54 = call ptr @getenv(ptr noundef nonnull @.str.5) #11 + %54 = call ptr @getenv(ptr noundef nonnull @.str.5) #12 %.not32 = icmp eq ptr %54, null br i1 %.not32, label %57, label %55 55: ; preds = %53 - %56 = call i64 @strlcpy(ptr noundef nonnull dereferenceable(1) %10, ptr noundef nonnull dereferenceable(1) %54, i64 noundef 64) #11 + %56 = call i64 @strlcpy(ptr noundef nonnull dereferenceable(1) %10, ptr noundef nonnull dereferenceable(1) %54, i64 noundef 64) #12 br label %59 57: ; preds = %53 - %58 = call i32 @gethostname_short(ptr noundef nonnull %10, i64 noundef 64) #11 + %58 = call i32 @gethostname_short(ptr noundef nonnull %10, i64 noundef 64) #12 br label %59 59: ; preds = %57, %55 %60 = getelementptr inbounds i8, ptr %11, i64 8 - store i64 0, ptr %60, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %60, i8 0, i64 16, i1 false) store i32 %1, ptr %11, align 8 %61 = getelementptr inbounds i8, ptr %11, i64 4 store i32 %2, ptr %61, align 4 - %62 = call zeroext i16 @slurm_get_port(ptr noundef nonnull %8) #11 + %62 = call zeroext i16 @slurm_get_port(ptr noundef nonnull %8) #12 %63 = getelementptr inbounds i8, ptr %11, i64 8 store i16 %62, ptr %63, align 8 %64 = getelementptr inbounds i8, ptr %11, i64 16 store ptr %10, ptr %64, align 8 - call void @slurm_msg_t_init(ptr noundef nonnull %6) #11 - call void @slurm_msg_set_r_uid(ptr noundef nonnull %6, i32 noundef -1) #11 - call void @slurm_msg_t_init(ptr noundef nonnull %7) #11 + call void @slurm_msg_t_init(ptr noundef nonnull %6) #12 + call void @slurm_msg_set_r_uid(ptr noundef nonnull %6, i32 noundef -1) #12 + call void @slurm_msg_t_init(ptr noundef nonnull %7) #12 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(128) %6, ptr noundef nonnull align 8 dereferenceable(128) @srun_addr, i64 128, i1 false) %65 = getelementptr inbounds i8, ptr %6, i64 204 store i16 7203, ptr %65, align 4 @@ -502,7 +502,7 @@ _set_pmi_time.exit: ; preds = %25, %34, %.sink.spl 90: ; preds = %74, %84, %86, %80, %68 %.024 = phi i32 [ %71, %68 ], [ %77, %74 ], [ %83, %80 ], [ %89, %86 ], [ 0, %84 ] - %91 = call i32 @slurm_send_recv_rc_msg_only_one(ptr noundef nonnull %6, ptr noundef nonnull %5, i32 noundef %.024) #11 + %91 = call i32 @slurm_send_recv_rc_msg_only_one(ptr noundef nonnull %6, ptr noundef nonnull %5, i32 noundef %.024) #12 %92 = icmp slt i32 %91, 0 br i1 %92, label %.lr.ph, label %._crit_edge @@ -513,21 +513,21 @@ _set_pmi_time.exit: ; preds = %25, %34, %.sink.spl br i1 %exitcond, label %94, label %96 94: ; preds = %.lr.ph - %95 = call i32 (ptr, ...) @error(ptr noundef nonnull @.str.6) #11 + %95 = call i32 (ptr, ...) @error(ptr noundef nonnull @.str.6) #12 br label %145 96: ; preds = %.lr.ph - %97 = call i32 @get_log_level() #11 + %97 = call i32 @get_log_level() #12 %98 = icmp sgt i32 %97, 4 br i1 %98, label %99, label %100 99: ; preds = %96 - call void (i32, ptr, ...) @log_var(i32 noundef 5, ptr noundef nonnull @.str.7, i32 noundef %93) #11 + call void (i32, ptr, ...) @log_var(i32 noundef 5, ptr noundef nonnull @.str.7, i32 noundef %93) #12 br label %100 100: ; preds = %96, %99 call fastcc void @_delay_rpc(i32 noundef %1, i32 noundef %2) - %101 = call i32 @slurm_send_recv_rc_msg_only_one(ptr noundef nonnull %6, ptr noundef nonnull %5, i32 noundef %.024) #11 + %101 = call i32 @slurm_send_recv_rc_msg_only_one(ptr noundef nonnull %6, ptr noundef nonnull %5, i32 noundef %.024) #12 %102 = icmp slt i32 %101, 0 br i1 %102, label %.lr.ph, label %._crit_edge, !llvm.loop !8 @@ -537,37 +537,37 @@ _set_pmi_time.exit: ; preds = %25, %34, %.sink.spl br i1 %.not33, label %107, label %104 104: ; preds = %._crit_edge - %105 = call i32 (ptr, ...) @error(ptr noundef nonnull @.str.8, i32 noundef %103) #11 + %105 = call i32 (ptr, ...) @error(ptr noundef nonnull @.str.8, i32 noundef %103) #12 %106 = load i32, ptr %5, align 4 br label %145 107: ; preds = %._crit_edge %108 = load i32, ptr @pmi_fd, align 4 - %109 = call i32 @slurm_accept_msg_conn(i32 noundef %108, ptr noundef nonnull %9) #11 + %109 = call i32 @slurm_accept_msg_conn(i32 noundef %108, ptr noundef nonnull %9) #12 %110 = icmp slt i32 %109, 0 br i1 %110, label %111, label %.preheader 111: ; preds = %107 - %112 = call i32 (ptr, ...) @error(ptr noundef nonnull @.str.9) #11 - %113 = tail call ptr @__errno_location() #13 + %112 = call i32 (ptr, ...) @error(ptr noundef nonnull @.str.9) #12 + %113 = tail call ptr @__errno_location() #14 %114 = load i32, ptr %113, align 4 br label %145 .preheader: ; preds = %107, %116 - %115 = call i32 @slurm_receive_msg(i32 noundef %109, ptr noundef nonnull %7, i32 noundef %.024) #11 + %115 = call i32 @slurm_receive_msg(i32 noundef %109, ptr noundef nonnull %7, i32 noundef %.024) #12 store i32 %115, ptr %5, align 4 %.not34 = icmp eq i32 %115, 0 br i1 %.not34, label %124, label %116 116: ; preds = %.preheader - %117 = tail call ptr @__errno_location() #13 + %117 = tail call ptr @__errno_location() #14 %118 = load i32, ptr %117, align 4 %119 = icmp eq i32 %118, 4 br i1 %119, label %.preheader, label %120, !llvm.loop !9 120: ; preds = %116 - %121 = call i32 (ptr, ...) @error(ptr noundef nonnull @.str.10) #11 - %122 = call i32 @close(i32 noundef %109) #11 + %121 = call i32 (ptr, ...) @error(ptr noundef nonnull @.str.10) #12 + %122 = call i32 @close(i32 noundef %109) #12 %123 = load i32, ptr %117, align 4 br label %145 @@ -578,7 +578,7 @@ _set_pmi_time.exit: ; preds = %25, %34, %.sink.spl br i1 %.not35, label %128, label %127 127: ; preds = %124 - call void @auth_g_destroy(ptr noundef nonnull %126) #11 + call void @auth_g_destroy(ptr noundef nonnull %126) #12 br label %128 128: ; preds = %127, %124 @@ -588,22 +588,22 @@ _set_pmi_time.exit: ; preds = %25, %34, %.sink.spl br i1 %.not36, label %135, label %131 131: ; preds = %128 - %132 = call ptr @rpc_num2string(i16 noundef zeroext %130) #11 - %133 = call i32 (ptr, ...) @error(ptr noundef nonnull @.str.11, ptr noundef %132) #11 - %134 = call i32 @close(i32 noundef %109) #11 + %132 = call ptr @rpc_num2string(i16 noundef zeroext %130) #12 + %133 = call i32 (ptr, ...) @error(ptr noundef nonnull @.str.11, ptr noundef %132) #12 + %134 = call i32 @close(i32 noundef %109) #12 br label %145 135: ; preds = %128 - %136 = call i32 @slurm_send_rc_msg(ptr noundef nonnull %7, i32 noundef 0) #11 + %136 = call i32 @slurm_send_rc_msg(ptr noundef nonnull %7, i32 noundef 0) #12 %137 = icmp slt i32 %136, 0 br i1 %137, label %138, label %140 138: ; preds = %135 - %139 = call i32 (ptr, ...) @error(ptr noundef nonnull @.str.12) #11 + %139 = call i32 (ptr, ...) @error(ptr noundef nonnull @.str.12) #12 br label %140 140: ; preds = %138, %135 - %141 = call i32 @close(i32 noundef %109) #11 + %141 = call i32 @close(i32 noundef %109) #12 %142 = getelementptr inbounds i8, ptr %7, i64 192 %143 = load ptr, ptr %142, align 8 store ptr %143, ptr %0, align 8 @@ -629,12 +629,15 @@ declare i64 @strlcpy(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr # declare i32 @gethostname_short(ptr noundef, i64 noundef) local_unnamed_addr #1 +; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write) +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5 + declare zeroext i16 @slurm_get_port(ptr noundef) local_unnamed_addr #1 declare i32 @slurm_accept_msg_conn(i32 noundef, ptr noundef) local_unnamed_addr #1 ; Function Attrs: mustprogress nofree nosync nounwind willreturn memory(none) -declare ptr @__errno_location() local_unnamed_addr #5 +declare ptr @__errno_location() local_unnamed_addr #6 declare i32 @slurm_receive_msg(i32 noundef, ptr noundef, i32 noundef) local_unnamed_addr #1 @@ -672,8 +675,8 @@ define internal fastcc i32 @_forward_comm_set(ptr noundef %0) unnamed_addr #0 { br i1 %12, label %32, label %13 13: ; preds = %8 - call void @slurm_msg_t_init(ptr noundef nonnull %2) #11 - call void @slurm_msg_set_r_uid(ptr noundef nonnull %2, i32 noundef -1) #11 + call void @slurm_msg_t_init(ptr noundef nonnull %2) #12 + call void @slurm_msg_set_r_uid(ptr noundef nonnull %2, i32 noundef -1) #12 store i16 7204, ptr %6, align 4 store ptr %0, ptr %7, align 8 %14 = load ptr, ptr %5, align 8 @@ -682,8 +685,8 @@ define internal fastcc i32 @_forward_comm_set(ptr noundef %0) unnamed_addr #0 { %17 = load i16, ptr %16, align 4 %18 = getelementptr inbounds i8, ptr %15, i64 8 %19 = load ptr, ptr %18, align 8 - call void @slurm_set_addr(ptr noundef nonnull %2, i16 noundef zeroext %17, ptr noundef %19) #11 - %20 = call i32 @slurm_send_recv_rc_msg_only_one(ptr noundef nonnull %2, ptr noundef nonnull %3, i32 noundef 0) #11 + call void @slurm_set_addr(ptr noundef nonnull %2, i16 noundef zeroext %17, ptr noundef %19) #12 + %20 = call i32 @slurm_send_recv_rc_msg_only_one(ptr noundef nonnull %2, ptr noundef nonnull %3, i32 noundef 0) #12 %21 = icmp slt i32 %20, 0 br i1 %21, label %22, label %._crit_edge23 @@ -695,7 +698,7 @@ define internal fastcc i32 @_forward_comm_set(ptr noundef %0) unnamed_addr #0 { %23 = load ptr, ptr %5, align 8 %24 = getelementptr inbounds %struct.kvs_hosts, ptr %23, i64 %indvars.iv, i32 2 %25 = load ptr, ptr %24, align 8 - %26 = call i32 (ptr, ...) @error(ptr noundef nonnull @.str.17, ptr noundef %25) #11 + %26 = call i32 (ptr, ...) @error(ptr noundef nonnull @.str.17, ptr noundef %25) #12 store i32 1, ptr %3, align 4 br label %27 @@ -704,7 +707,7 @@ define internal fastcc i32 @_forward_comm_set(ptr noundef %0) unnamed_addr #0 { %29 = call i32 @llvm.smax.i32(i32 %.01920, i32 %28) %30 = load ptr, ptr %5, align 8 %31 = getelementptr inbounds %struct.kvs_hosts, ptr %30, i64 %indvars.iv, i32 2 - call void @slurm_xfree(ptr noundef nonnull %31) #11 + call void @slurm_xfree(ptr noundef nonnull %31) #12 br label %32 32: ; preds = %8, %27 @@ -716,13 +719,13 @@ define internal fastcc i32 @_forward_comm_set(ptr noundef %0) unnamed_addr #0 { ._crit_edge: ; preds = %32, %1 %.019.lcssa = phi i32 [ 0, %1 ], [ %.1, %32 ] %33 = getelementptr inbounds i8, ptr %0, i64 8 - call void @slurm_xfree(ptr noundef nonnull %33) #11 + call void @slurm_xfree(ptr noundef nonnull %33) #12 ret i32 %.019.lcssa } ; Function Attrs: nounwind uwtable define void @slurm_pmi_free_kvs_comm_set(ptr noundef %0) local_unnamed_addr #0 { - tail call void @slurm_free_kvs_comm_set(ptr noundef %0) #11 + tail call void @slurm_free_kvs_comm_set(ptr noundef %0) #12 ret void } @@ -735,7 +738,7 @@ define void @slurm_pmi_finalize() local_unnamed_addr #0 { br i1 %2, label %3, label %5 3: ; preds = %0 - %4 = tail call i32 @close(i32 noundef %1) #11 + %4 = tail call i32 @close(i32 noundef %1) #12 store i32 -1, ptr @pmi_fd, align 4 br label %5 @@ -746,50 +749,51 @@ define void @slurm_pmi_finalize() local_unnamed_addr #0 { ; Function Attrs: nounwind uwtable define i32 @slurm_pmi_kill_job_step(i32 noundef %0, i32 noundef %1, i16 noundef zeroext %2) local_unnamed_addr #0 { - %4 = tail call i32 @slurm_kill_job_step(i32 noundef %0, i32 noundef %1, i16 noundef zeroext %2, i16 noundef zeroext 0) #11 + %4 = tail call i32 @slurm_kill_job_step(i32 noundef %0, i32 noundef %1, i16 noundef zeroext %2, i16 noundef zeroext 0) #12 ret i32 %4 } declare i32 @slurm_kill_job_step(i32 noundef, i32 noundef, i16 noundef zeroext, i16 noundef zeroext) local_unnamed_addr #1 ; Function Attrs: mustprogress nofree nounwind willreturn memory(read) -declare i64 @atol(ptr nocapture noundef) local_unnamed_addr #6 +declare i64 @atol(ptr nocapture noundef) local_unnamed_addr #7 declare void @slurm_set_addr(ptr noundef, i16 noundef zeroext, ptr noundef) local_unnamed_addr #1 ; Function Attrs: mustprogress nofree nounwind willreturn -declare i64 @strtol(ptr noundef readonly, ptr nocapture noundef, i32 noundef) local_unnamed_addr #7 +declare i64 @strtol(ptr noundef readonly, ptr nocapture noundef, i32 noundef) local_unnamed_addr #8 ; Function Attrs: nofree nounwind -declare noundef i32 @gettimeofday(ptr nocapture noundef, ptr nocapture noundef) local_unnamed_addr #8 +declare noundef i32 @gettimeofday(ptr nocapture noundef, ptr nocapture noundef) local_unnamed_addr #9 declare i32 @usleep(i32 noundef) local_unnamed_addr #1 declare void @slurm_xfree(ptr noundef) local_unnamed_addr #1 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) -declare i32 @llvm.smax.i32(i32, i32) #9 +declare i32 @llvm.smax.i32(i32, i32) #10 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #10 +declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #11 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #10 +declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #11 attributes #0 = { nounwind uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) } attributes #3 = { nofree nounwind memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #4 = { nofree "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #5 = { mustprogress nofree nosync nounwind willreturn memory(none) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { mustprogress nofree nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #7 = { mustprogress nofree nounwind willreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #8 = { nofree nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #9 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #10 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } -attributes #11 = { nounwind } -attributes #12 = { nounwind willreturn memory(read) } -attributes #13 = { nounwind willreturn memory(none) } +attributes #5 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #6 = { mustprogress nofree nosync nounwind willreturn memory(none) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #7 = { mustprogress nofree nounwind willreturn memory(read) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #8 = { mustprogress nofree nounwind willreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #9 = { nofree nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } +attributes #10 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } +attributes #11 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } +attributes #12 = { nounwind } +attributes #13 = { nounwind willreturn memory(read) } +attributes #14 = { nounwind willreturn memory(none) } !llvm.module.flags = !{!0, !1, !2, !3, !4, !5} diff --git a/bench/verilator/optimized/V3AstNodes.cpp.ll b/bench/verilator/optimized/V3AstNodes.cpp.ll index 6dfd6a143d5..33f204698cc 100644 --- a/bench/verilator/optimized/V3AstNodes.cpp.ll +++ b/bench/verilator/optimized/V3AstNodes.cpp.ll @@ -93398,71 +93398,69 @@ define linkonce_odr dso_local void @_ZN6AstVarC2EP8FileLine8VVarTypeRKNSt7__cxx1 tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(32) %3) %7 = getelementptr inbounds i8, ptr %0, i64 184 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 8 dereferenceable(32) %3) - to label %8 unwind label %26 + to label %8 unwind label %25 8: ; preds = %5 %9 = getelementptr inbounds i8, ptr %0, i64 216 tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #33 %10 = getelementptr inbounds i8, ptr %0, i64 248 - %11 = getelementptr inbounds i8, ptr %0, i64 252 - %12 = getelementptr inbounds i8, ptr %0, i64 256 - store i32 0, ptr %12, align 8 - %13 = getelementptr inbounds i8, ptr %0, i64 272 - store ptr null, ptr %13, align 8 - %14 = getelementptr inbounds i8, ptr %0, i64 260 - %15 = getelementptr inbounds i8, ptr %0, i64 249 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %15, i8 0, i64 3, i1 false) - %16 = load i64, ptr %14, align 4 - %17 = and i64 %16, -8796093022208 - store i64 %17, ptr %14, align 4 - store i8 0, ptr %11, align 4 + %11 = getelementptr inbounds i8, ptr %0, i64 256 + store i32 0, ptr %11, align 8 + %12 = getelementptr inbounds i8, ptr %0, i64 272 + store ptr null, ptr %12, align 8 + %13 = getelementptr inbounds i8, ptr %0, i64 260 + %14 = getelementptr inbounds i8, ptr %0, i64 249 + store i32 0, ptr %14, align 1 + %15 = load i64, ptr %13, align 4 + %16 = and i64 %15, -8796093022208 + store i64 %16, ptr %13, align 4 store i8 %2, ptr %10, align 8 %switch.tableidx = add i8 %2, -9 - %18 = icmp ult i8 %switch.tableidx, 3 - br i1 %18, label %switch.lookup, label %_ZN6AstVar11combineTypeE8VVarType.exit + %17 = icmp ult i8 %switch.tableidx, 3 + br i1 %17, label %switch.lookup, label %_ZN6AstVar11combineTypeE8VVarType.exit switch.lookup: ; preds = %8 %switch.idx.cast = zext nneg i8 %switch.tableidx to i64 %switch.idx.mult = shl nuw nsw i64 %switch.idx.cast, 28 - %switch.offset = or disjoint i64 %switch.idx.mult, %17 - %19 = or disjoint i64 %switch.offset, 4 - store i64 %19, ptr %14, align 4 + %switch.offset = or disjoint i64 %switch.idx.mult, %16 + %18 = or disjoint i64 %switch.offset, 4 + store i64 %18, ptr %13, align 4 br label %_ZN6AstVar11combineTypeE8VVarType.exit _ZN6AstVar11combineTypeE8VVarType.exit: ; preds = %8, %switch.lookup - %20 = invoke noundef ptr @_ZNK7AstNode12findBitDTypeEii8VSigning(ptr noundef nonnull align 8 dereferenceable(152) %0, i32 noundef %4, i32 noundef %4, i8 0) - to label %.noexc unwind label %28 + %19 = invoke noundef ptr @_ZNK7AstNode12findBitDTypeEii8VSigning(ptr noundef nonnull align 8 dereferenceable(152) %0, i32 noundef %4, i32 noundef %4, i8 0) + to label %.noexc unwind label %27 .noexc: ; preds = %_ZN6AstVar11combineTypeE8VVarType.exit - %21 = getelementptr inbounds i8, ptr %0, i64 72 - %22 = load ptr, ptr %21, align 8 - %.not.i.i = icmp eq ptr %22, %20 - br i1 %.not.i.i, label %_ZN7AstNode16dtypeSetBitSizedEi8VSigning.exit, label %23 + %20 = getelementptr inbounds i8, ptr %0, i64 72 + %21 = load ptr, ptr %20, align 8 + %.not.i.i = icmp eq ptr %21, %19 + br i1 %.not.i.i, label %_ZN7AstNode16dtypeSetBitSizedEi8VSigning.exit, label %22 -23: ; preds = %.noexc - store ptr %20, ptr %21, align 8 - %24 = load i64, ptr @_ZN7AstNode12s_editCntGblE, align 8 - %25 = add i64 %24, 1 - store i64 %25, ptr @_ZN7AstNode12s_editCntGblE, align 8 +22: ; preds = %.noexc + store ptr %19, ptr %20, align 8 + %23 = load i64, ptr @_ZN7AstNode12s_editCntGblE, align 8 + %24 = add i64 %23, 1 + store i64 %24, ptr @_ZN7AstNode12s_editCntGblE, align 8 br label %_ZN7AstNode16dtypeSetBitSizedEi8VSigning.exit -_ZN7AstNode16dtypeSetBitSizedEi8VSigning.exit: ; preds = %23, %.noexc +_ZN7AstNode16dtypeSetBitSizedEi8VSigning.exit: ; preds = %22, %.noexc ret void -26: ; preds = %5 - %27 = landingpad { ptr, i32 } +25: ; preds = %5 + %26 = landingpad { ptr, i32 } cleanup - br label %30 + br label %29 -28: ; preds = %_ZN6AstVar11combineTypeE8VVarType.exit - %29 = landingpad { ptr, i32 } +27: ; preds = %_ZN6AstVar11combineTypeE8VVarType.exit + %28 = landingpad { ptr, i32 } cleanup tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #33 tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #33 - br label %30 + br label %29 -30: ; preds = %28, %26 - %.pn = phi { ptr, i32 } [ %29, %28 ], [ %27, %26 ] +29: ; preds = %27, %25 + %.pn = phi { ptr, i32 } [ %28, %27 ], [ %26, %25 ] tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #33 resume { ptr, i32 } %.pn } @@ -93536,90 +93534,88 @@ define linkonce_odr dso_local void @_ZN6AstVarC2EP8FileLine8VVarTypeRKNSt7__cxx1 tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(32) %3) %7 = getelementptr inbounds i8, ptr %0, i64 184 invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 8 dereferenceable(32) %3) - to label %8 unwind label %28 + to label %8 unwind label %27 8: ; preds = %5 %9 = getelementptr inbounds i8, ptr %0, i64 216 tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #33 %10 = getelementptr inbounds i8, ptr %0, i64 248 - %11 = getelementptr inbounds i8, ptr %0, i64 252 - %12 = getelementptr inbounds i8, ptr %0, i64 256 - store i32 0, ptr %12, align 8 - %13 = getelementptr inbounds i8, ptr %0, i64 272 - store ptr null, ptr %13, align 8 - %14 = getelementptr inbounds i8, ptr %0, i64 260 - %15 = getelementptr inbounds i8, ptr %0, i64 249 - tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(3) %15, i8 0, i64 3, i1 false) - %16 = load i64, ptr %14, align 4 - %17 = and i64 %16, -8796093022208 - store i64 %17, ptr %14, align 4 - store i8 0, ptr %11, align 4 + %11 = getelementptr inbounds i8, ptr %0, i64 256 + store i32 0, ptr %11, align 8 + %12 = getelementptr inbounds i8, ptr %0, i64 272 + store ptr null, ptr %12, align 8 + %13 = getelementptr inbounds i8, ptr %0, i64 260 + %14 = getelementptr inbounds i8, ptr %0, i64 249 + store i32 0, ptr %14, align 1 + %15 = load i64, ptr %13, align 4 + %16 = and i64 %15, -8796093022208 + store i64 %16, ptr %13, align 4 store i8 %2, ptr %10, align 8 %switch.tableidx = add i8 %2, -9 - %18 = icmp ult i8 %switch.tableidx, 3 - br i1 %18, label %switch.lookup, label %_ZN6AstVar11combineTypeE8VVarType.exit + %17 = icmp ult i8 %switch.tableidx, 3 + br i1 %17, label %switch.lookup, label %_ZN6AstVar11combineTypeE8VVarType.exit switch.lookup: ; preds = %8 %switch.idx.cast = zext nneg i8 %switch.tableidx to i64 %switch.idx.mult = shl nuw nsw i64 %switch.idx.cast, 28 - %switch.offset = or disjoint i64 %switch.idx.mult, %17 - %19 = or disjoint i64 %switch.offset, 4 - store i64 %19, ptr %14, align 4 + %switch.offset = or disjoint i64 %switch.idx.mult, %16 + %18 = or disjoint i64 %switch.offset, 4 + store i64 %18, ptr %13, align 4 br label %_ZN6AstVar11combineTypeE8VVarType.exit _ZN6AstVar11combineTypeE8VVarType.exit: ; preds = %8, %switch.lookup %.not = icmp eq ptr %4, null - br i1 %.not, label %20, label %32 + br i1 %.not, label %19, label %31 -20: ; preds = %_ZN6AstVar11combineTypeE8VVarType.exit - %21 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZN7V3Error19v3errorPrepFileLineB5cxx11E11V3ErrorCodePKcib(i8 4, ptr noundef nonnull @.str.738, i32 noundef 1856, i1 noundef zeroext false) - to label %22 unwind label %30 +19: ; preds = %_ZN6AstVar11combineTypeE8VVarType.exit + %20 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZN7V3Error19v3errorPrepFileLineB5cxx11E11V3ErrorCodePKcib(i8 4, ptr noundef nonnull @.str.738, i32 noundef 1856, i1 noundef zeroext false) + to label %21 unwind label %29 -22: ; preds = %20 - %23 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZN7V3Error10v3errorStrB5cxx11Ev() - to label %24 unwind label %30 +21: ; preds = %19 + %22 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZN7V3Error10v3errorStrB5cxx11Ev() + to label %23 unwind label %29 -24: ; preds = %22 - %25 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull @.str.802) - to label %26 unwind label %30 +23: ; preds = %21 + %24 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull @.str.802) + to label %25 unwind label %29 -26: ; preds = %24 - invoke void @_ZNK7AstNode15v3errorEndFatalERNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(152) %0, ptr noundef nonnull align 8 dereferenceable(112) %25) #34 - to label %27 unwind label %30 +25: ; preds = %23 + invoke void @_ZNK7AstNode15v3errorEndFatalERNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(152) %0, ptr noundef nonnull align 8 dereferenceable(112) %24) #34 + to label %26 unwind label %29 -27: ; preds = %26 +26: ; preds = %25 unreachable -28: ; preds = %5 - %29 = landingpad { ptr, i32 } +27: ; preds = %5 + %28 = landingpad { ptr, i32 } cleanup - br label %38 + br label %37 -30: ; preds = %26, %24, %22, %20 - %31 = landingpad { ptr, i32 } +29: ; preds = %25, %23, %21, %19 + %30 = landingpad { ptr, i32 } cleanup tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #33 tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #33 - br label %38 + br label %37 -32: ; preds = %_ZN6AstVar11combineTypeE8VVarType.exit - %33 = getelementptr inbounds i8, ptr %0, i64 72 - %34 = load ptr, ptr %33, align 8 - %.not.i = icmp eq ptr %34, %4 - br i1 %.not.i, label %_ZN7AstNode6dtypepEP12AstNodeDType.exit, label %35 +31: ; preds = %_ZN6AstVar11combineTypeE8VVarType.exit + %32 = getelementptr inbounds i8, ptr %0, i64 72 + %33 = load ptr, ptr %32, align 8 + %.not.i = icmp eq ptr %33, %4 + br i1 %.not.i, label %_ZN7AstNode6dtypepEP12AstNodeDType.exit, label %34 -35: ; preds = %32 - store ptr %4, ptr %33, align 8 - %36 = load i64, ptr @_ZN7AstNode12s_editCntGblE, align 8 - %37 = add i64 %36, 1 - store i64 %37, ptr @_ZN7AstNode12s_editCntGblE, align 8 +34: ; preds = %31 + store ptr %4, ptr %32, align 8 + %35 = load i64, ptr @_ZN7AstNode12s_editCntGblE, align 8 + %36 = add i64 %35, 1 + store i64 %36, ptr @_ZN7AstNode12s_editCntGblE, align 8 br label %_ZN7AstNode6dtypepEP12AstNodeDType.exit -_ZN7AstNode6dtypepEP12AstNodeDType.exit: ; preds = %35, %32 +_ZN7AstNode6dtypepEP12AstNodeDType.exit: ; preds = %34, %31 ret void -38: ; preds = %30, %28 - %.pn = phi { ptr, i32 } [ %31, %30 ], [ %29, %28 ] +37: ; preds = %29, %27 + %.pn = phi { ptr, i32 } [ %30, %29 ], [ %28, %27 ] tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #33 resume { ptr, i32 } %.pn } diff --git a/bench/verilator/optimized/V3Scoreboard.cpp.ll b/bench/verilator/optimized/V3Scoreboard.cpp.ll index 9e64e6b3d40..d10bd63a64a 100644 --- a/bench/verilator/optimized/V3Scoreboard.cpp.ll +++ b/bench/verilator/optimized/V3Scoreboard.cpp.ll @@ -104,7 +104,7 @@ define dso_local void @_ZN16V3ScoreboardBase8selfTestEv() #3 { %29 = getelementptr inbounds i8, ptr %.013.i, i64 16 %30 = getelementptr inbounds i8, ptr %.013.i, i64 40 %31 = getelementptr inbounds i8, ptr %.013.i, i64 8 - store i64 0, ptr %31, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %31, i8 0, i64 16, i1 false) %32 = load i32, ptr %30, align 8 %33 = getelementptr inbounds i8, ptr %.013.i, i64 32 store i32 %32, ptr %33, align 8 @@ -132,7 +132,7 @@ _ZN12V3ScoreboardI18ScoreboardTestElem3KeyE7rescoreEv.exit: ; preds = %_ZN11Pair %37 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZN7V3Error19v3errorPrepFileLineB5cxx11E11V3ErrorCodePKcib(i8 4, ptr noundef nonnull @.str, i32 noundef 75, i1 noundef zeroext true) %38 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZN7V3Error10v3errorStrB5cxx11Ev() %39 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef nonnull @.str.5) - call void @_Z15v3errorEndFatalRNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(112) %39) #6 + call void @_Z15v3errorEndFatalRNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(112) %39) #7 unreachable _ZN12V3ScoreboardI18ScoreboardTestElem3KeyE7rescoreEv.exit.thread: ; preds = %_ZN12V3ScoreboardI18ScoreboardTestElem3KeyE7rescoreEv.exit @@ -144,7 +144,7 @@ _ZN12V3ScoreboardI18ScoreboardTestElem3KeyE7rescoreEv.exit.thread: ; preds = %_Z %42 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZN7V3Error19v3errorPrepFileLineB5cxx11E11V3ErrorCodePKcib(i8 4, ptr noundef nonnull @.str, i32 noundef 77, i1 noundef zeroext true) %43 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZN7V3Error10v3errorStrB5cxx11Ev() %44 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull @.str.6) - call void @_Z15v3errorEndFatalRNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(112) %44) #6 + call void @_Z15v3errorEndFatalRNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(112) %44) #7 unreachable 45: ; preds = %_ZN12V3ScoreboardI18ScoreboardTestElem3KeyE7rescoreEv.exit.thread @@ -169,7 +169,7 @@ _ZNK12V3ScoreboardI18ScoreboardTestElem3KeyE4bestEv.exit14.thread: ; preds = %_Z %50 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZN7V3Error19v3errorPrepFileLineB5cxx11E11V3ErrorCodePKcib(i8 4, ptr noundef nonnull @.str, i32 noundef 78, i1 noundef zeroext true) %51 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZN7V3Error10v3errorStrB5cxx11Ev() %52 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %51, ptr noundef nonnull @.str.7) - call void @_Z15v3errorEndFatalRNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(112) %52) #6 + call void @_Z15v3errorEndFatalRNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(112) %52) #7 unreachable 53: ; preds = %_ZNK12V3ScoreboardI18ScoreboardTestElem3KeyE4bestEv.exit14 @@ -242,7 +242,7 @@ _ZN12V3ScoreboardI18ScoreboardTestElem3KeyE10addUnknownEPS0_.exit.i: ; preds = % %74 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZN7V3Error19v3errorPrepFileLineB5cxx11E11V3ErrorCodePKcib(i8 4, ptr noundef nonnull @.str, i32 noundef 86, i1 noundef zeroext true) %75 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZN7V3Error10v3errorStrB5cxx11Ev() %76 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %75, ptr noundef nonnull @.str.9) - call void @_Z15v3errorEndFatalRNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(112) %76) #6 + call void @_Z15v3errorEndFatalRNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(112) %76) #7 unreachable 77: ; preds = %71 @@ -305,7 +305,7 @@ _ZN12V3ScoreboardI18ScoreboardTestElem3KeyE6removeEPS0_.exit: ; preds = %_ZN12V3 %95 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZN7V3Error19v3errorPrepFileLineB5cxx11E11V3ErrorCodePKcib(i8 4, ptr noundef nonnull @.str, i32 noundef 89, i1 noundef zeroext true) %96 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZN7V3Error10v3errorStrB5cxx11Ev() %97 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %96, ptr noundef nonnull @.str.11) - call void @_Z15v3errorEndFatalRNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(112) %97) #6 + call void @_Z15v3errorEndFatalRNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(112) %97) #7 unreachable 98: ; preds = %_ZN12V3ScoreboardI18ScoreboardTestElem3KeyE6removeEPS0_.exit @@ -335,7 +335,7 @@ _ZNK12V3ScoreboardI18ScoreboardTestElem3KeyE4bestEv.exit25.thread: ; preds = %98 %105 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZN7V3Error19v3errorPrepFileLineB5cxx11E11V3ErrorCodePKcib(i8 4, ptr noundef nonnull @.str, i32 noundef 93, i1 noundef zeroext true) %106 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZN7V3Error10v3errorStrB5cxx11Ev() %107 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %106, ptr noundef nonnull @.str.12) - call void @_Z15v3errorEndFatalRNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(112) %107) #6 + call void @_Z15v3errorEndFatalRNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(112) %107) #7 unreachable 108: ; preds = %_ZNK12V3ScoreboardI18ScoreboardTestElem3KeyE4bestEv.exit25 @@ -351,7 +351,7 @@ _ZN11PairingHeapI3KeyE6insertEPNS1_4NodeE.exit.i30: ; preds = %108, %_ZN11Pairin %112 = getelementptr inbounds i8, ptr %.013.i28, i64 16 %113 = getelementptr inbounds i8, ptr %.013.i28, i64 40 %114 = getelementptr inbounds i8, ptr %.013.i28, i64 8 - store i64 0, ptr %114, align 8 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %114, i8 0, i64 16, i1 false) %115 = load i32, ptr %113, align 8 %116 = getelementptr inbounds i8, ptr %.013.i28, i64 32 store i32 %115, ptr %116, align 8 @@ -386,7 +386,7 @@ _ZNK12V3ScoreboardI18ScoreboardTestElem3KeyE4bestEv.exit37.thread: ; preds = %_Z %123 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZN7V3Error19v3errorPrepFileLineB5cxx11E11V3ErrorCodePKcib(i8 4, ptr noundef nonnull @.str, i32 noundef 95, i1 noundef zeroext true) %124 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZN7V3Error10v3errorStrB5cxx11Ev() %125 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %124, ptr noundef nonnull @.str.13) - call void @_Z15v3errorEndFatalRNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(112) %125) #6 + call void @_Z15v3errorEndFatalRNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(112) %125) #7 unreachable 126: ; preds = %_ZNK12V3ScoreboardI18ScoreboardTestElem3KeyE4bestEv.exit37 @@ -584,18 +584,22 @@ _ZNK3KeyltERKS_.exit135.thread137: ; preds = %43, %_ZNK3KeyltERKS ; Function Attrs: uwtable define internal void @_GLOBAL__sub_I_V3Scoreboard.cpp() #5 section ".text.startup" { tail call void @_ZNSt8ios_base4InitC1Ev(ptr noundef nonnull align 1 dereferenceable(1) @_ZStL8__ioinit) - %1 = tail call i32 @__cxa_atexit(ptr nonnull @_ZNSt8ios_base4InitD1Ev, ptr nonnull @_ZStL8__ioinit, ptr nonnull @__dso_handle) #7 + %1 = tail call i32 @__cxa_atexit(ptr nonnull @_ZNSt8ios_base4InitD1Ev, ptr nonnull @_ZStL8__ioinit, ptr nonnull @__dso_handle) #8 ret void } +; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write) +declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #6 + attributes #0 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #1 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #2 = { nofree nounwind } attributes #3 = { mustprogress uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #4 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } attributes #5 = { uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" } -attributes #6 = { noreturn } -attributes #7 = { nounwind } +attributes #6 = { nocallback nofree nounwind willreturn memory(argmem: write) } +attributes #7 = { noreturn } +attributes #8 = { nounwind } !llvm.module.flags = !{!0, !1, !2, !3, !4} diff --git a/bench/wasmedge/optimized/compiler.cpp.ll b/bench/wasmedge/optimized/compiler.cpp.ll index 64494871af5..1a02ba7f8e6 100644 --- a/bench/wasmedge/optimized/compiler.cpp.ll +++ b/bench/wasmedge/optimized/compiler.cpp.ll @@ -24089,21 +24089,21 @@ _ZSt9transformIPKhN9__gnu_cxx17__normal_iteratorIPP15LLVMOpaqueValueSt6vectorIS5 br label %_ZSt9transformIPKhN9__gnu_cxx17__normal_iteratorIPP15LLVMOpaqueValueSt6vectorIS5_SaIS5_EEEEZN8WasmEdge4LLVM5Value15getConstVector8ERNSC_7ContextEN5cxx204spanIS0_Lm18446744073709551615EEEEUlhE_ET0_T_SL_SK_T1_.exit _ZSt9transformIPKhN9__gnu_cxx17__normal_iteratorIPP15LLVMOpaqueValueSt6vectorIS5_SaIS5_EEEEZN8WasmEdge4LLVM5Value15getConstVector8ERNSC_7ContextEN5cxx204spanIS0_Lm18446744073709551615EEEEUlhE_ET0_T_SL_SK_T1_.exit: ; preds = %_ZSt9transformIPKhN9__gnu_cxx17__normal_iteratorIPP15LLVMOpaqueValueSt6vectorIS5_SaIS5_EEEEZN8WasmEdge4LLVM5Value15getConstVector8ERNSC_7ContextEN5cxx204spanIS0_Lm18446744073709551615EEEEUlhE_ET0_T_SL_SK_T1_.exit.loopexit, %_ZNSt6vectorIP15LLVMOpaqueValueSaIS1_EE17_S_check_init_lenEmRKS2_.exit.i - %.0.i.i.i.i.i17 = phi i64 [ 0, %_ZNSt6vectorIP15LLVMOpaqueValueSaIS1_EE17_S_check_init_lenEmRKS2_.exit.i ], [ %22, %_ZSt9transformIPKhN9__gnu_cxx17__normal_iteratorIPP15LLVMOpaqueValueSt6vectorIS5_SaIS5_EEEEZN8WasmEdge4LLVM5Value15getConstVector8ERNSC_7ContextEN5cxx204spanIS0_Lm18446744073709551615EEEEUlhE_ET0_T_SL_SK_T1_.exit.loopexit ] - %.sroa.9.015 = phi i64 [ 0, %_ZNSt6vectorIP15LLVMOpaqueValueSaIS1_EE17_S_check_init_lenEmRKS2_.exit.i ], [ %23, %_ZSt9transformIPKhN9__gnu_cxx17__normal_iteratorIPP15LLVMOpaqueValueSt6vectorIS5_SaIS5_EEEEZN8WasmEdge4LLVM5Value15getConstVector8ERNSC_7ContextEN5cxx204spanIS0_Lm18446744073709551615EEEEUlhE_ET0_T_SL_SK_T1_.exit.loopexit ] - %.sroa.0.013 = phi ptr [ null, %_ZNSt6vectorIP15LLVMOpaqueValueSaIS1_EE17_S_check_init_lenEmRKS2_.exit.i ], [ %9, %_ZSt9transformIPKhN9__gnu_cxx17__normal_iteratorIPP15LLVMOpaqueValueSt6vectorIS5_SaIS5_EEEEZN8WasmEdge4LLVM5Value15getConstVector8ERNSC_7ContextEN5cxx204spanIS0_Lm18446744073709551615EEEEUlhE_ET0_T_SL_SK_T1_.exit.loopexit ] - %24 = ptrtoint ptr %.sroa.0.013 to i64 - %25 = sub i64 %.0.i.i.i.i.i17, %24 + %.0.i.i.i.i.i18 = phi i64 [ 0, %_ZNSt6vectorIP15LLVMOpaqueValueSaIS1_EE17_S_check_init_lenEmRKS2_.exit.i ], [ %22, %_ZSt9transformIPKhN9__gnu_cxx17__normal_iteratorIPP15LLVMOpaqueValueSt6vectorIS5_SaIS5_EEEEZN8WasmEdge4LLVM5Value15getConstVector8ERNSC_7ContextEN5cxx204spanIS0_Lm18446744073709551615EEEEUlhE_ET0_T_SL_SK_T1_.exit.loopexit ] + %.sroa.9.016 = phi i64 [ 0, %_ZNSt6vectorIP15LLVMOpaqueValueSaIS1_EE17_S_check_init_lenEmRKS2_.exit.i ], [ %23, %_ZSt9transformIPKhN9__gnu_cxx17__normal_iteratorIPP15LLVMOpaqueValueSt6vectorIS5_SaIS5_EEEEZN8WasmEdge4LLVM5Value15getConstVector8ERNSC_7ContextEN5cxx204spanIS0_Lm18446744073709551615EEEEUlhE_ET0_T_SL_SK_T1_.exit.loopexit ] + %.sroa.0.014 = phi ptr [ null, %_ZNSt6vectorIP15LLVMOpaqueValueSaIS1_EE17_S_check_init_lenEmRKS2_.exit.i ], [ %9, %_ZSt9transformIPKhN9__gnu_cxx17__normal_iteratorIPP15LLVMOpaqueValueSt6vectorIS5_SaIS5_EEEEZN8WasmEdge4LLVM5Value15getConstVector8ERNSC_7ContextEN5cxx204spanIS0_Lm18446744073709551615EEEEUlhE_ET0_T_SL_SK_T1_.exit.loopexit ] + %24 = ptrtoint ptr %.sroa.0.014 to i64 + %25 = sub i64 %.0.i.i.i.i.i18, %24 %26 = lshr exact i64 %25, 3 %27 = trunc i64 %26 to i32 - %28 = tail call ptr @LLVMConstVector(ptr noundef %.sroa.0.013, i32 noundef %27) #16 + %28 = tail call ptr @LLVMConstVector(ptr noundef %.sroa.0.014, i32 noundef %27) #16 store ptr %28, ptr %0, align 8 - %.not.i.i.i = icmp eq ptr %.sroa.0.013, null + %.not.i.i.i = icmp eq ptr %.sroa.0.014, null br i1 %.not.i.i.i, label %_ZNSt6vectorIP15LLVMOpaqueValueSaIS1_EED2Ev.exit, label %29 29: ; preds = %_ZSt9transformIPKhN9__gnu_cxx17__normal_iteratorIPP15LLVMOpaqueValueSt6vectorIS5_SaIS5_EEEEZN8WasmEdge4LLVM5Value15getConstVector8ERNSC_7ContextEN5cxx204spanIS0_Lm18446744073709551615EEEEUlhE_ET0_T_SL_SK_T1_.exit - %30 = sub i64 %.sroa.9.015, %24 - tail call void @_ZdlPvm(ptr noundef nonnull %.sroa.0.013, i64 noundef %30) #18 + %30 = sub i64 %.sroa.9.016, %24 + tail call void @_ZdlPvm(ptr noundef nonnull %.sroa.0.014, i64 noundef %30) #18 br label %_ZNSt6vectorIP15LLVMOpaqueValueSaIS1_EED2Ev.exit _ZNSt6vectorIP15LLVMOpaqueValueSaIS1_EED2Ev.exit: ; preds = %_ZSt9transformIPKhN9__gnu_cxx17__normal_iteratorIPP15LLVMOpaqueValueSt6vectorIS5_SaIS5_EEEEZN8WasmEdge4LLVM5Value15getConstVector8ERNSC_7ContextEN5cxx204spanIS0_Lm18446744073709551615EEEEUlhE_ET0_T_SL_SK_T1_.exit, %29 @@ -26694,21 +26694,21 @@ _ZSt9transformIPKmN9__gnu_cxx17__normal_iteratorIPP15LLVMOpaqueValueSt6vectorIS5 br label %_ZSt9transformIPKmN9__gnu_cxx17__normal_iteratorIPP15LLVMOpaqueValueSt6vectorIS5_SaIS5_EEEEZN8WasmEdge4LLVM5Value16getConstVector64ERNSC_7ContextEN5cxx204spanIS0_Lm18446744073709551615EEEEUlmE_ET0_T_SL_SK_T1_.exit _ZSt9transformIPKmN9__gnu_cxx17__normal_iteratorIPP15LLVMOpaqueValueSt6vectorIS5_SaIS5_EEEEZN8WasmEdge4LLVM5Value16getConstVector64ERNSC_7ContextEN5cxx204spanIS0_Lm18446744073709551615EEEEUlmE_ET0_T_SL_SK_T1_.exit: ; preds = %_ZSt9transformIPKmN9__gnu_cxx17__normal_iteratorIPP15LLVMOpaqueValueSt6vectorIS5_SaIS5_EEEEZN8WasmEdge4LLVM5Value16getConstVector64ERNSC_7ContextEN5cxx204spanIS0_Lm18446744073709551615EEEEUlmE_ET0_T_SL_SK_T1_.exit.loopexit, %_ZNSt6vectorIP15LLVMOpaqueValueSaIS1_EE17_S_check_init_lenEmRKS2_.exit.i - %.0.i.i.i.i.i17 = phi i64 [ 0, %_ZNSt6vectorIP15LLVMOpaqueValueSaIS1_EE17_S_check_init_lenEmRKS2_.exit.i ], [ %21, %_ZSt9transformIPKmN9__gnu_cxx17__normal_iteratorIPP15LLVMOpaqueValueSt6vectorIS5_SaIS5_EEEEZN8WasmEdge4LLVM5Value16getConstVector64ERNSC_7ContextEN5cxx204spanIS0_Lm18446744073709551615EEEEUlmE_ET0_T_SL_SK_T1_.exit.loopexit ] - %.sroa.9.015 = phi i64 [ 0, %_ZNSt6vectorIP15LLVMOpaqueValueSaIS1_EE17_S_check_init_lenEmRKS2_.exit.i ], [ %22, %_ZSt9transformIPKmN9__gnu_cxx17__normal_iteratorIPP15LLVMOpaqueValueSt6vectorIS5_SaIS5_EEEEZN8WasmEdge4LLVM5Value16getConstVector64ERNSC_7ContextEN5cxx204spanIS0_Lm18446744073709551615EEEEUlmE_ET0_T_SL_SK_T1_.exit.loopexit ] - %.sroa.0.013 = phi ptr [ null, %_ZNSt6vectorIP15LLVMOpaqueValueSaIS1_EE17_S_check_init_lenEmRKS2_.exit.i ], [ %9, %_ZSt9transformIPKmN9__gnu_cxx17__normal_iteratorIPP15LLVMOpaqueValueSt6vectorIS5_SaIS5_EEEEZN8WasmEdge4LLVM5Value16getConstVector64ERNSC_7ContextEN5cxx204spanIS0_Lm18446744073709551615EEEEUlmE_ET0_T_SL_SK_T1_.exit.loopexit ] - %23 = ptrtoint ptr %.sroa.0.013 to i64 - %24 = sub i64 %.0.i.i.i.i.i17, %23 + %.0.i.i.i.i.i18 = phi i64 [ 0, %_ZNSt6vectorIP15LLVMOpaqueValueSaIS1_EE17_S_check_init_lenEmRKS2_.exit.i ], [ %21, %_ZSt9transformIPKmN9__gnu_cxx17__normal_iteratorIPP15LLVMOpaqueValueSt6vectorIS5_SaIS5_EEEEZN8WasmEdge4LLVM5Value16getConstVector64ERNSC_7ContextEN5cxx204spanIS0_Lm18446744073709551615EEEEUlmE_ET0_T_SL_SK_T1_.exit.loopexit ] + %.sroa.9.016 = phi i64 [ 0, %_ZNSt6vectorIP15LLVMOpaqueValueSaIS1_EE17_S_check_init_lenEmRKS2_.exit.i ], [ %22, %_ZSt9transformIPKmN9__gnu_cxx17__normal_iteratorIPP15LLVMOpaqueValueSt6vectorIS5_SaIS5_EEEEZN8WasmEdge4LLVM5Value16getConstVector64ERNSC_7ContextEN5cxx204spanIS0_Lm18446744073709551615EEEEUlmE_ET0_T_SL_SK_T1_.exit.loopexit ] + %.sroa.0.014 = phi ptr [ null, %_ZNSt6vectorIP15LLVMOpaqueValueSaIS1_EE17_S_check_init_lenEmRKS2_.exit.i ], [ %9, %_ZSt9transformIPKmN9__gnu_cxx17__normal_iteratorIPP15LLVMOpaqueValueSt6vectorIS5_SaIS5_EEEEZN8WasmEdge4LLVM5Value16getConstVector64ERNSC_7ContextEN5cxx204spanIS0_Lm18446744073709551615EEEEUlmE_ET0_T_SL_SK_T1_.exit.loopexit ] + %23 = ptrtoint ptr %.sroa.0.014 to i64 + %24 = sub i64 %.0.i.i.i.i.i18, %23 %25 = lshr exact i64 %24, 3 %26 = trunc i64 %25 to i32 - %27 = tail call ptr @LLVMConstVector(ptr noundef %.sroa.0.013, i32 noundef %26) #16 + %27 = tail call ptr @LLVMConstVector(ptr noundef %.sroa.0.014, i32 noundef %26) #16 store ptr %27, ptr %0, align 8 - %.not.i.i.i = icmp eq ptr %.sroa.0.013, null + %.not.i.i.i = icmp eq ptr %.sroa.0.014, null br i1 %.not.i.i.i, label %_ZNSt6vectorIP15LLVMOpaqueValueSaIS1_EED2Ev.exit, label %28 28: ; preds = %_ZSt9transformIPKmN9__gnu_cxx17__normal_iteratorIPP15LLVMOpaqueValueSt6vectorIS5_SaIS5_EEEEZN8WasmEdge4LLVM5Value16getConstVector64ERNSC_7ContextEN5cxx204spanIS0_Lm18446744073709551615EEEEUlmE_ET0_T_SL_SK_T1_.exit - %29 = sub i64 %.sroa.9.015, %23 - tail call void @_ZdlPvm(ptr noundef nonnull %.sroa.0.013, i64 noundef %29) #18 + %29 = sub i64 %.sroa.9.016, %23 + tail call void @_ZdlPvm(ptr noundef nonnull %.sroa.0.014, i64 noundef %29) #18 br label %_ZNSt6vectorIP15LLVMOpaqueValueSaIS1_EED2Ev.exit _ZNSt6vectorIP15LLVMOpaqueValueSaIS1_EED2Ev.exit: ; preds = %_ZSt9transformIPKmN9__gnu_cxx17__normal_iteratorIPP15LLVMOpaqueValueSt6vectorIS5_SaIS5_EEEEZN8WasmEdge4LLVM5Value16getConstVector64ERNSC_7ContextEN5cxx204spanIS0_Lm18446744073709551615EEEEUlmE_ET0_T_SL_SK_T1_.exit, %28 @@ -27780,12 +27780,12 @@ _ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.l br label %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit _ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit: ; preds = %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.loopexit, %_ZN12_GLOBAL__N_116FunctionCompiler8stackPopEv.exit12 - %.0.i.i.i.i.i83 = phi i64 [ 0, %_ZN12_GLOBAL__N_116FunctionCompiler8stackPopEv.exit12 ], [ %138, %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.loopexit ] - %.sroa.017.082 = phi ptr [ null, %_ZN12_GLOBAL__N_116FunctionCompiler8stackPopEv.exit12 ], [ %132, %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.loopexit ] - %139 = ptrtoint ptr %.sroa.017.082 to i64 - %140 = sub i64 %.0.i.i.i.i.i83, %139 + %.0.i.i.i.i.i84 = phi i64 [ 0, %_ZN12_GLOBAL__N_116FunctionCompiler8stackPopEv.exit12 ], [ %138, %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.loopexit ] + %.sroa.017.083 = phi ptr [ null, %_ZN12_GLOBAL__N_116FunctionCompiler8stackPopEv.exit12 ], [ %132, %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.loopexit ] + %139 = ptrtoint ptr %.sroa.017.083 to i64 + %140 = sub i64 %.0.i.i.i.i.i84, %139 %141 = ashr exact i64 %140, 2 - call void @_ZN8WasmEdge4LLVM5Value16getConstVector32ERNS0_7ContextEN5cxx204spanIKjLm18446744073709551615EEE(ptr dead_on_unwind nonnull writable sret(%"class.WasmEdge::LLVM::Value") align 8 %9, ptr noundef nonnull align 8 dereferenceable(8) %13, ptr %.sroa.017.082, i64 %141) #16 + call void @_ZN8WasmEdge4LLVM5Value16getConstVector32ERNS0_7ContextEN5cxx204spanIKjLm18446744073709551615EEE(ptr dead_on_unwind nonnull writable sret(%"class.WasmEdge::LLVM::Value") align 8 %9, ptr noundef nonnull align 8 dereferenceable(8) %13, ptr %.sroa.017.083, i64 %141) #16 %142 = load ptr, ptr %33, align 8, !noalias !4680 %143 = load ptr, ptr %9, align 8, !noalias !4680 %144 = call ptr @LLVMBuildShuffleVector(ptr noundef %142, ptr noundef %128, ptr noundef %89, ptr noundef %143, ptr noundef nonnull @.str.11) #16, !noalias !4680 @@ -27816,11 +27816,11 @@ _ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit: br label %_ZN12_GLOBAL__N_116FunctionCompiler9stackPushEN8WasmEdge4LLVM5ValueE.exit _ZN12_GLOBAL__N_116FunctionCompiler9stackPushEN8WasmEdge4LLVM5ValueE.exit: ; preds = %154, %158 - %.not.i.i.i = icmp eq ptr %.sroa.017.082, null + %.not.i.i.i = icmp eq ptr %.sroa.017.083, null br i1 %.not.i.i.i, label %_ZNSt6vectorIjSaIjEED2Ev.exit, label %159 159: ; preds = %_ZN12_GLOBAL__N_116FunctionCompiler9stackPushEN8WasmEdge4LLVM5ValueE.exit - call void @_ZdlPvm(ptr noundef nonnull %.sroa.017.082, i64 noundef %140) #18 + call void @_ZdlPvm(ptr noundef nonnull %.sroa.017.083, i64 noundef %140) #18 br label %_ZNSt6vectorIjSaIjEED2Ev.exit _ZNSt6vectorIjSaIjEED2Ev.exit: ; preds = %_ZN12_GLOBAL__N_116FunctionCompiler9stackPushEN8WasmEdge4LLVM5ValueE.exit, %159 @@ -29476,7 +29476,7 @@ _ZNSt6vectorIjSaIjEEC2EmRKS0_.exit: ; preds = %18 br label %.lr.ph.i.preheader .lr.ph.i.preheader: ; preds = %_ZNSt6vectorIjSaIjEEC2EmRKS0_.exit, %18 - %.0.i.i.i.i.i42 = phi ptr [ %22, %_ZNSt6vectorIjSaIjEEC2EmRKS0_.exit ], [ %23, %18 ] + %.0.i.i.i.i.i43 = phi ptr [ %22, %_ZNSt6vectorIjSaIjEEC2EmRKS0_.exit ], [ %23, %18 ] %26 = select i1 %3, i32 0, i32 %17 br label %.lr.ph.i @@ -29486,18 +29486,18 @@ _ZNSt6vectorIjSaIjEEC2EmRKS0_.exit: ; preds = %18 store i32 %.07.i, ptr %.sroa.02.06.i, align 4 %27 = add i32 %.07.i, 1 %28 = getelementptr inbounds i8, ptr %.sroa.02.06.i, i64 4 - %.not.i = icmp eq ptr %28, %.0.i.i.i.i.i42 + %.not.i = icmp eq ptr %28, %.0.i.i.i.i.i43 br i1 %.not.i, label %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEjEvT_S7_T0_.exit.loopexit, label %.lr.ph.i, !llvm.loop !5084 _ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEjEvT_S7_T0_.exit.loopexit: ; preds = %.lr.ph.i - %29 = ptrtoint ptr %.0.i.i.i.i.i42 to i64 + %29 = ptrtoint ptr %.0.i.i.i.i.i43 to i64 %30 = ptrtoint ptr %22 to i64 br label %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEjEvT_S7_T0_.exit _ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEjEvT_S7_T0_.exit: ; preds = %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEjEvT_S7_T0_.exit.loopexit, %4 - %.0.i.i.i.i.i39 = phi i64 [ 0, %4 ], [ %29, %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEjEvT_S7_T0_.exit.loopexit ] - %.sroa.026.038 = phi ptr [ null, %4 ], [ %21, %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEjEvT_S7_T0_.exit.loopexit ] - %.sroa.9.037 = phi i64 [ 0, %4 ], [ %30, %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEjEvT_S7_T0_.exit.loopexit ] + %.0.i.i.i.i.i40 = phi i64 [ 0, %4 ], [ %29, %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEjEvT_S7_T0_.exit.loopexit ] + %.sroa.026.039 = phi ptr [ null, %4 ], [ %21, %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEjEvT_S7_T0_.exit.loopexit ] + %.sroa.9.038 = phi i64 [ 0, %4 ], [ %30, %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEjEvT_S7_T0_.exit.loopexit ] %31 = getelementptr inbounds i8, ptr %0, i64 192 %32 = getelementptr inbounds i8, ptr %0, i64 48 %33 = load ptr, ptr %32, align 8 @@ -29523,10 +29523,10 @@ _ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEjEvT_S7_T0_.exit: %.sroa.020.0 = phi ptr [ %43, %42 ], [ %45, %44 ] %47 = tail call ptr @LLVMGetUndef(ptr noundef %14) #16, !noalias !5094 %48 = getelementptr inbounds i8, ptr %0, i64 8 - %49 = ptrtoint ptr %.sroa.026.038 to i64 - %50 = sub i64 %.0.i.i.i.i.i39, %49 + %49 = ptrtoint ptr %.sroa.026.039 to i64 + %50 = sub i64 %.0.i.i.i.i.i40, %49 %51 = ashr exact i64 %50, 2 - call void @_ZN8WasmEdge4LLVM5Value16getConstVector32ERNS0_7ContextEN5cxx204spanIKjLm18446744073709551615EEE(ptr dead_on_unwind nonnull writable sret(%"class.WasmEdge::LLVM::Value") align 8 %5, ptr noundef nonnull align 8 dereferenceable(8) %48, ptr %.sroa.026.038, i64 %51) #16 + call void @_ZN8WasmEdge4LLVM5Value16getConstVector32ERNS0_7ContextEN5cxx204spanIKjLm18446744073709551615EEE(ptr dead_on_unwind nonnull writable sret(%"class.WasmEdge::LLVM::Value") align 8 %5, ptr noundef nonnull align 8 dereferenceable(8) %48, ptr %.sroa.026.039, i64 %51) #16 %52 = load ptr, ptr %31, align 8, !noalias !5097 %53 = load ptr, ptr %5, align 8, !noalias !5097 %54 = call ptr @LLVMBuildShuffleVector(ptr noundef %52, ptr noundef %.sroa.020.0, ptr noundef %47, ptr noundef %53, ptr noundef nonnull @.str.11) #16, !noalias !5097 @@ -29539,12 +29539,12 @@ _ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEjEvT_S7_T0_.exit: %61 = load ptr, ptr %32, align 8 %62 = getelementptr inbounds i8, ptr %61, i64 -8 store ptr %60, ptr %62, align 8 - %.not.i.i.i = icmp eq ptr %.sroa.026.038, null + %.not.i.i.i = icmp eq ptr %.sroa.026.039, null br i1 %.not.i.i.i, label %_ZNSt6vectorIjSaIjEED2Ev.exit, label %63 63: ; preds = %46 - %64 = sub i64 %.sroa.9.037, %49 - call void @_ZdlPvm(ptr noundef nonnull %.sroa.026.038, i64 noundef %64) #18 + %64 = sub i64 %.sroa.9.038, %49 + call void @_ZdlPvm(ptr noundef nonnull %.sroa.026.039, i64 noundef %64) #18 br label %_ZNSt6vectorIjSaIjEED2Ev.exit _ZNSt6vectorIjSaIjEED2Ev.exit: ; preds = %46, %63 @@ -29685,6 +29685,7 @@ define internal fastcc void @_ZN12_GLOBAL__N_116FunctionCompiler19compileVectorE %23 = tail call noundef i32 @LLVMGetVectorSize(ptr noundef %22) #16 %24 = lshr i32 %23, 1 %25 = getelementptr inbounds i8, ptr %5, i64 8 + store i64 0, ptr %25, align 8 %.not.i.i.i.i = icmp ult i32 %23, 2 br i1 %.not.i.i.i.i, label %_ZNSt6vectorIjSaIjEEC2EmRKS0_.exit.thread, label %26 @@ -30473,21 +30474,21 @@ _ZSt9transformIPKjN9__gnu_cxx17__normal_iteratorIPP15LLVMOpaqueValueSt6vectorIS5 br label %_ZSt9transformIPKjN9__gnu_cxx17__normal_iteratorIPP15LLVMOpaqueValueSt6vectorIS5_SaIS5_EEEEZN8WasmEdge4LLVM5Value16getConstVector32ERNSC_7ContextEN5cxx204spanIS0_Lm18446744073709551615EEEEUljE_ET0_T_SL_SK_T1_.exit _ZSt9transformIPKjN9__gnu_cxx17__normal_iteratorIPP15LLVMOpaqueValueSt6vectorIS5_SaIS5_EEEEZN8WasmEdge4LLVM5Value16getConstVector32ERNSC_7ContextEN5cxx204spanIS0_Lm18446744073709551615EEEEUljE_ET0_T_SL_SK_T1_.exit: ; preds = %_ZSt9transformIPKjN9__gnu_cxx17__normal_iteratorIPP15LLVMOpaqueValueSt6vectorIS5_SaIS5_EEEEZN8WasmEdge4LLVM5Value16getConstVector32ERNSC_7ContextEN5cxx204spanIS0_Lm18446744073709551615EEEEUljE_ET0_T_SL_SK_T1_.exit.loopexit, %_ZNSt6vectorIP15LLVMOpaqueValueSaIS1_EE17_S_check_init_lenEmRKS2_.exit.i - %.0.i.i.i.i.i17 = phi i64 [ 0, %_ZNSt6vectorIP15LLVMOpaqueValueSaIS1_EE17_S_check_init_lenEmRKS2_.exit.i ], [ %22, %_ZSt9transformIPKjN9__gnu_cxx17__normal_iteratorIPP15LLVMOpaqueValueSt6vectorIS5_SaIS5_EEEEZN8WasmEdge4LLVM5Value16getConstVector32ERNSC_7ContextEN5cxx204spanIS0_Lm18446744073709551615EEEEUljE_ET0_T_SL_SK_T1_.exit.loopexit ] - %.sroa.9.015 = phi i64 [ 0, %_ZNSt6vectorIP15LLVMOpaqueValueSaIS1_EE17_S_check_init_lenEmRKS2_.exit.i ], [ %23, %_ZSt9transformIPKjN9__gnu_cxx17__normal_iteratorIPP15LLVMOpaqueValueSt6vectorIS5_SaIS5_EEEEZN8WasmEdge4LLVM5Value16getConstVector32ERNSC_7ContextEN5cxx204spanIS0_Lm18446744073709551615EEEEUljE_ET0_T_SL_SK_T1_.exit.loopexit ] - %.sroa.0.013 = phi ptr [ null, %_ZNSt6vectorIP15LLVMOpaqueValueSaIS1_EE17_S_check_init_lenEmRKS2_.exit.i ], [ %9, %_ZSt9transformIPKjN9__gnu_cxx17__normal_iteratorIPP15LLVMOpaqueValueSt6vectorIS5_SaIS5_EEEEZN8WasmEdge4LLVM5Value16getConstVector32ERNSC_7ContextEN5cxx204spanIS0_Lm18446744073709551615EEEEUljE_ET0_T_SL_SK_T1_.exit.loopexit ] - %24 = ptrtoint ptr %.sroa.0.013 to i64 - %25 = sub i64 %.0.i.i.i.i.i17, %24 + %.0.i.i.i.i.i18 = phi i64 [ 0, %_ZNSt6vectorIP15LLVMOpaqueValueSaIS1_EE17_S_check_init_lenEmRKS2_.exit.i ], [ %22, %_ZSt9transformIPKjN9__gnu_cxx17__normal_iteratorIPP15LLVMOpaqueValueSt6vectorIS5_SaIS5_EEEEZN8WasmEdge4LLVM5Value16getConstVector32ERNSC_7ContextEN5cxx204spanIS0_Lm18446744073709551615EEEEUljE_ET0_T_SL_SK_T1_.exit.loopexit ] + %.sroa.9.016 = phi i64 [ 0, %_ZNSt6vectorIP15LLVMOpaqueValueSaIS1_EE17_S_check_init_lenEmRKS2_.exit.i ], [ %23, %_ZSt9transformIPKjN9__gnu_cxx17__normal_iteratorIPP15LLVMOpaqueValueSt6vectorIS5_SaIS5_EEEEZN8WasmEdge4LLVM5Value16getConstVector32ERNSC_7ContextEN5cxx204spanIS0_Lm18446744073709551615EEEEUljE_ET0_T_SL_SK_T1_.exit.loopexit ] + %.sroa.0.014 = phi ptr [ null, %_ZNSt6vectorIP15LLVMOpaqueValueSaIS1_EE17_S_check_init_lenEmRKS2_.exit.i ], [ %9, %_ZSt9transformIPKjN9__gnu_cxx17__normal_iteratorIPP15LLVMOpaqueValueSt6vectorIS5_SaIS5_EEEEZN8WasmEdge4LLVM5Value16getConstVector32ERNSC_7ContextEN5cxx204spanIS0_Lm18446744073709551615EEEEUljE_ET0_T_SL_SK_T1_.exit.loopexit ] + %24 = ptrtoint ptr %.sroa.0.014 to i64 + %25 = sub i64 %.0.i.i.i.i.i18, %24 %26 = lshr exact i64 %25, 3 %27 = trunc i64 %26 to i32 - %28 = tail call ptr @LLVMConstVector(ptr noundef %.sroa.0.013, i32 noundef %27) #16 + %28 = tail call ptr @LLVMConstVector(ptr noundef %.sroa.0.014, i32 noundef %27) #16 store ptr %28, ptr %0, align 8 - %.not.i.i.i = icmp eq ptr %.sroa.0.013, null + %.not.i.i.i = icmp eq ptr %.sroa.0.014, null br i1 %.not.i.i.i, label %_ZNSt6vectorIP15LLVMOpaqueValueSaIS1_EED2Ev.exit, label %29 29: ; preds = %_ZSt9transformIPKjN9__gnu_cxx17__normal_iteratorIPP15LLVMOpaqueValueSt6vectorIS5_SaIS5_EEEEZN8WasmEdge4LLVM5Value16getConstVector32ERNSC_7ContextEN5cxx204spanIS0_Lm18446744073709551615EEEEUljE_ET0_T_SL_SK_T1_.exit - %30 = sub i64 %.sroa.9.015, %24 - tail call void @_ZdlPvm(ptr noundef nonnull %.sroa.0.013, i64 noundef %30) #18 + %30 = sub i64 %.sroa.9.016, %24 + tail call void @_ZdlPvm(ptr noundef nonnull %.sroa.0.014, i64 noundef %30) #18 br label %_ZNSt6vectorIP15LLVMOpaqueValueSaIS1_EED2Ev.exit _ZNSt6vectorIP15LLVMOpaqueValueSaIS1_EED2Ev.exit: ; preds = %_ZSt9transformIPKjN9__gnu_cxx17__normal_iteratorIPP15LLVMOpaqueValueSt6vectorIS5_SaIS5_EEEEZN8WasmEdge4LLVM5Value16getConstVector32ERNSC_7ContextEN5cxx204spanIS0_Lm18446744073709551615EEEEUljE_ET0_T_SL_SK_T1_.exit, %29 @@ -31856,20 +31857,20 @@ _ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.l br label %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.i.i _ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.i.i: ; preds = %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.loopexit.i.i, %66 - %.0.i.i.i.i.i60.i.i = phi i64 [ 0, %66 ], [ %76, %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.loopexit.i.i ] - %.sroa.010.059.i.i = phi ptr [ null, %66 ], [ %70, %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.loopexit.i.i ] - %77 = ptrtoint ptr %.sroa.010.059.i.i to i64 - %78 = sub i64 %.0.i.i.i.i.i60.i.i, %77 + %.0.i.i.i.i.i61.i.i = phi i64 [ 0, %66 ], [ %76, %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.loopexit.i.i ] + %.sroa.010.060.i.i = phi ptr [ null, %66 ], [ %70, %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.loopexit.i.i ] + %77 = ptrtoint ptr %.sroa.010.060.i.i to i64 + %78 = sub i64 %.0.i.i.i.i.i61.i.i, %77 %79 = ashr exact i64 %78, 2 - call void @_ZN8WasmEdge4LLVM5Value16getConstVector32ERNS0_7ContextEN5cxx204spanIKjLm18446744073709551615EEE(ptr dead_on_unwind nonnull writable sret(%"class.WasmEdge::LLVM::Value") align 8 %11, ptr noundef nonnull align 8 dereferenceable(8) %23, ptr %.sroa.010.059.i.i, i64 %79) #16, !noalias !5722 + call void @_ZN8WasmEdge4LLVM5Value16getConstVector32ERNS0_7ContextEN5cxx204spanIKjLm18446744073709551615EEE(ptr dead_on_unwind nonnull writable sret(%"class.WasmEdge::LLVM::Value") align 8 %11, ptr noundef nonnull align 8 dereferenceable(8) %23, ptr %.sroa.010.060.i.i, i64 %79) #16, !noalias !5722 %80 = load ptr, ptr %13, align 8, !noalias !5783 %81 = load ptr, ptr %11, align 8, !noalias !5783 %82 = call ptr @LLVMBuildShuffleVector(ptr noundef %80, ptr noundef %65, ptr noundef %34, ptr noundef %81, ptr noundef nonnull @.str.11) #16, !noalias !5783 - %.not.i.i.i.i.i = icmp eq ptr %.sroa.010.059.i.i, null + %.not.i.i.i.i.i = icmp eq ptr %.sroa.010.060.i.i, null br i1 %.not.i.i.i.i.i, label %_ZN12_GLOBAL__N_116FunctionCompiler15compileVectorOpIZNS0_24compileVectorTruncSatS32EN8WasmEdge4LLVM4TypeEbEUlT_E_EEvS4_OS5_.exit, label %83 83: ; preds = %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.i.i - call void @_ZdlPvm(ptr noundef nonnull %.sroa.010.059.i.i, i64 noundef %78) #18, !noalias !5722 + call void @_ZdlPvm(ptr noundef nonnull %.sroa.010.060.i.i, i64 noundef %78) #18, !noalias !5722 br label %_ZN12_GLOBAL__N_116FunctionCompiler15compileVectorOpIZNS0_24compileVectorTruncSatS32EN8WasmEdge4LLVM4TypeEbEUlT_E_EEvS4_OS5_.exit _ZN12_GLOBAL__N_116FunctionCompiler15compileVectorOpIZNS0_24compileVectorTruncSatS32EN8WasmEdge4LLVM4TypeEbEUlT_E_EEvS4_OS5_.exit: ; preds = %2, %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.i.i, %83 @@ -32005,20 +32006,20 @@ _ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.l br label %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.i.i _ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.i.i: ; preds = %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.loopexit.i.i, %59 - %.0.i.i.i.i.i52.i.i = phi i64 [ 0, %59 ], [ %72, %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.loopexit.i.i ] - %.sroa.010.051.i.i = phi ptr [ null, %59 ], [ %66, %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.loopexit.i.i ] - %73 = ptrtoint ptr %.sroa.010.051.i.i to i64 - %74 = sub i64 %.0.i.i.i.i.i52.i.i, %73 + %.0.i.i.i.i.i53.i.i = phi i64 [ 0, %59 ], [ %72, %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.loopexit.i.i ] + %.sroa.010.052.i.i = phi ptr [ null, %59 ], [ %66, %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.loopexit.i.i ] + %73 = ptrtoint ptr %.sroa.010.052.i.i to i64 + %74 = sub i64 %.0.i.i.i.i.i53.i.i, %73 %75 = ashr exact i64 %74, 2 - call void @_ZN8WasmEdge4LLVM5Value16getConstVector32ERNS0_7ContextEN5cxx204spanIKjLm18446744073709551615EEE(ptr dead_on_unwind nonnull writable sret(%"class.WasmEdge::LLVM::Value") align 8 %11, ptr noundef nonnull align 8 dereferenceable(8) %23, ptr %.sroa.010.051.i.i, i64 %75) #16, !noalias !5792 + call void @_ZN8WasmEdge4LLVM5Value16getConstVector32ERNS0_7ContextEN5cxx204spanIKjLm18446744073709551615EEE(ptr dead_on_unwind nonnull writable sret(%"class.WasmEdge::LLVM::Value") align 8 %11, ptr noundef nonnull align 8 dereferenceable(8) %23, ptr %.sroa.010.052.i.i, i64 %75) #16, !noalias !5792 %76 = load ptr, ptr %13, align 8, !noalias !5847 %77 = load ptr, ptr %11, align 8, !noalias !5847 %78 = call ptr @LLVMBuildShuffleVector(ptr noundef %76, ptr noundef %58, ptr noundef %62, ptr noundef %77, ptr noundef nonnull @.str.11) #16, !noalias !5847 - %.not.i.i.i.i.i = icmp eq ptr %.sroa.010.051.i.i, null + %.not.i.i.i.i.i = icmp eq ptr %.sroa.010.052.i.i, null br i1 %.not.i.i.i.i.i, label %_ZN12_GLOBAL__N_116FunctionCompiler15compileVectorOpIZNS0_24compileVectorTruncSatU32EN8WasmEdge4LLVM4TypeEbEUlT_E_EEvS4_OS5_.exit, label %79 79: ; preds = %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.i.i - call void @_ZdlPvm(ptr noundef nonnull %.sroa.010.051.i.i, i64 noundef %74) #18, !noalias !5792 + call void @_ZdlPvm(ptr noundef nonnull %.sroa.010.052.i.i, i64 noundef %74) #18, !noalias !5792 br label %_ZN12_GLOBAL__N_116FunctionCompiler15compileVectorOpIZNS0_24compileVectorTruncSatU32EN8WasmEdge4LLVM4TypeEbEUlT_E_EEvS4_OS5_.exit _ZN12_GLOBAL__N_116FunctionCompiler15compileVectorOpIZNS0_24compileVectorTruncSatU32EN8WasmEdge4LLVM4TypeEbEUlT_E_EEvS4_OS5_.exit: ; preds = %2, %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.i.i, %79 @@ -32081,7 +32082,7 @@ _ZNSt6vectorIjSaIjEEC2EmRKS0_.exit.i.i: ; preds = %15 br label %.lr.ph.i.preheader.i.i .lr.ph.i.preheader.i.i: ; preds = %_ZNSt6vectorIjSaIjEEC2EmRKS0_.exit.i.i, %15 - %.0.i.i.i.i.i21.i.i = phi ptr [ %20, %_ZNSt6vectorIjSaIjEEC2EmRKS0_.exit.i.i ], [ %21, %15 ] + %.0.i.i.i.i.i22.i.i = phi ptr [ %20, %_ZNSt6vectorIjSaIjEEC2EmRKS0_.exit.i.i ], [ %21, %15 ] br label %.lr.ph.i.i.i .lr.ph.i.i.i: ; preds = %.lr.ph.i.i.i, %.lr.ph.i.preheader.i.i @@ -32090,33 +32091,33 @@ _ZNSt6vectorIjSaIjEEC2EmRKS0_.exit.i.i: ; preds = %15 store i32 %.07.i.i.i, ptr %.sroa.02.06.i.i.i, align 4, !noalias !5856 %24 = add nuw nsw i32 %.07.i.i.i, 1 %25 = getelementptr inbounds i8, ptr %.sroa.02.06.i.i.i, i64 4 - %.not.i.i.i = icmp eq ptr %25, %.0.i.i.i.i.i21.i.i + %.not.i.i.i = icmp eq ptr %25, %.0.i.i.i.i.i22.i.i br i1 %.not.i.i.i, label %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.i.loopexit.i, label %.lr.ph.i.i.i, !llvm.loop !4679 _ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.i.loopexit.i: ; preds = %.lr.ph.i.i.i - %26 = ptrtoint ptr %.0.i.i.i.i.i21.i.i to i64 + %26 = ptrtoint ptr %.0.i.i.i.i.i22.i.i to i64 %27 = ptrtoint ptr %20 to i64 br label %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.i.i _ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.i.i: ; preds = %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.i.loopexit.i, %13 - %.0.i.i.i.i.i18.i.i = phi i64 [ 0, %13 ], [ %26, %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.i.loopexit.i ] - %.sroa.08.017.i.i = phi ptr [ null, %13 ], [ %19, %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.i.loopexit.i ] - %.sroa.9.016.i.i = phi i64 [ 0, %13 ], [ %27, %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.i.loopexit.i ] + %.0.i.i.i.i.i19.i.i = phi i64 [ 0, %13 ], [ %26, %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.i.loopexit.i ] + %.sroa.08.018.i.i = phi ptr [ null, %13 ], [ %19, %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.i.loopexit.i ] + %.sroa.9.017.i.i = phi i64 [ 0, %13 ], [ %27, %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.i.loopexit.i ] %28 = tail call ptr @LLVMGetUndef(ptr noundef %4) #16, !noalias !5859 %29 = getelementptr inbounds i8, ptr %0, i64 8 - %30 = ptrtoint ptr %.sroa.08.017.i.i to i64 - %31 = sub i64 %.0.i.i.i.i.i18.i.i, %30 + %30 = ptrtoint ptr %.sroa.08.018.i.i to i64 + %31 = sub i64 %.0.i.i.i.i.i19.i.i, %30 %32 = ashr exact i64 %31, 2 - call void @_ZN8WasmEdge4LLVM5Value16getConstVector32ERNS0_7ContextEN5cxx204spanIKjLm18446744073709551615EEE(ptr dead_on_unwind nonnull writable sret(%"class.WasmEdge::LLVM::Value") align 8 %3, ptr noundef nonnull align 8 dereferenceable(8) %29, ptr %.sroa.08.017.i.i, i64 %32) #16, !noalias !5856 + call void @_ZN8WasmEdge4LLVM5Value16getConstVector32ERNS0_7ContextEN5cxx204spanIKjLm18446744073709551615EEE(ptr dead_on_unwind nonnull writable sret(%"class.WasmEdge::LLVM::Value") align 8 %3, ptr noundef nonnull align 8 dereferenceable(8) %29, ptr %.sroa.08.018.i.i, i64 %32) #16, !noalias !5856 %33 = load ptr, ptr %5, align 8, !noalias !5862 %34 = load ptr, ptr %3, align 8, !noalias !5862 %35 = call ptr @LLVMBuildShuffleVector(ptr noundef %33, ptr noundef %12, ptr noundef %28, ptr noundef %34, ptr noundef nonnull @.str.11) #16, !noalias !5862 - %.not.i.i.i.i.i = icmp eq ptr %.sroa.08.017.i.i, null + %.not.i.i.i.i.i = icmp eq ptr %.sroa.08.018.i.i, null br i1 %.not.i.i.i.i.i, label %_ZN12_GLOBAL__N_116FunctionCompiler15compileVectorOpIZNS0_21compileVectorConvertSEN8WasmEdge4LLVM4TypeES4_bEUlT_E_EEvS4_OS5_.exit, label %36 36: ; preds = %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.i.i - %37 = sub i64 %.sroa.9.016.i.i, %30 - call void @_ZdlPvm(ptr noundef nonnull %.sroa.08.017.i.i, i64 noundef %37) #18, !noalias !5856 + %37 = sub i64 %.sroa.9.017.i.i, %30 + call void @_ZdlPvm(ptr noundef nonnull %.sroa.08.018.i.i, i64 noundef %37) #18, !noalias !5856 br label %_ZN12_GLOBAL__N_116FunctionCompiler15compileVectorOpIZNS0_21compileVectorConvertSEN8WasmEdge4LLVM4TypeES4_bEUlT_E_EEvS4_OS5_.exit _ZN12_GLOBAL__N_116FunctionCompiler15compileVectorOpIZNS0_21compileVectorConvertSEN8WasmEdge4LLVM4TypeES4_bEUlT_E_EEvS4_OS5_.exit: ; preds = %2, %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.i.i, %36 @@ -32174,7 +32175,7 @@ _ZNSt6vectorIjSaIjEEC2EmRKS0_.exit.i.i: ; preds = %15 br label %.lr.ph.i.preheader.i.i .lr.ph.i.preheader.i.i: ; preds = %_ZNSt6vectorIjSaIjEEC2EmRKS0_.exit.i.i, %15 - %.0.i.i.i.i.i21.i.i = phi ptr [ %20, %_ZNSt6vectorIjSaIjEEC2EmRKS0_.exit.i.i ], [ %21, %15 ] + %.0.i.i.i.i.i22.i.i = phi ptr [ %20, %_ZNSt6vectorIjSaIjEEC2EmRKS0_.exit.i.i ], [ %21, %15 ] br label %.lr.ph.i.i.i .lr.ph.i.i.i: ; preds = %.lr.ph.i.i.i, %.lr.ph.i.preheader.i.i @@ -32183,33 +32184,33 @@ _ZNSt6vectorIjSaIjEEC2EmRKS0_.exit.i.i: ; preds = %15 store i32 %.07.i.i.i, ptr %.sroa.02.06.i.i.i, align 4, !noalias !5874 %24 = add nuw nsw i32 %.07.i.i.i, 1 %25 = getelementptr inbounds i8, ptr %.sroa.02.06.i.i.i, i64 4 - %.not.i.i.i = icmp eq ptr %25, %.0.i.i.i.i.i21.i.i + %.not.i.i.i = icmp eq ptr %25, %.0.i.i.i.i.i22.i.i br i1 %.not.i.i.i, label %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.i.loopexit.i, label %.lr.ph.i.i.i, !llvm.loop !4679 _ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.i.loopexit.i: ; preds = %.lr.ph.i.i.i - %26 = ptrtoint ptr %.0.i.i.i.i.i21.i.i to i64 + %26 = ptrtoint ptr %.0.i.i.i.i.i22.i.i to i64 %27 = ptrtoint ptr %20 to i64 br label %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.i.i _ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.i.i: ; preds = %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.i.loopexit.i, %13 - %.0.i.i.i.i.i18.i.i = phi i64 [ 0, %13 ], [ %26, %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.i.loopexit.i ] - %.sroa.08.017.i.i = phi ptr [ null, %13 ], [ %19, %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.i.loopexit.i ] - %.sroa.9.016.i.i = phi i64 [ 0, %13 ], [ %27, %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.i.loopexit.i ] + %.0.i.i.i.i.i19.i.i = phi i64 [ 0, %13 ], [ %26, %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.i.loopexit.i ] + %.sroa.08.018.i.i = phi ptr [ null, %13 ], [ %19, %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.i.loopexit.i ] + %.sroa.9.017.i.i = phi i64 [ 0, %13 ], [ %27, %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.i.loopexit.i ] %28 = tail call ptr @LLVMGetUndef(ptr noundef %4) #16, !noalias !5877 %29 = getelementptr inbounds i8, ptr %0, i64 8 - %30 = ptrtoint ptr %.sroa.08.017.i.i to i64 - %31 = sub i64 %.0.i.i.i.i.i18.i.i, %30 + %30 = ptrtoint ptr %.sroa.08.018.i.i to i64 + %31 = sub i64 %.0.i.i.i.i.i19.i.i, %30 %32 = ashr exact i64 %31, 2 - call void @_ZN8WasmEdge4LLVM5Value16getConstVector32ERNS0_7ContextEN5cxx204spanIKjLm18446744073709551615EEE(ptr dead_on_unwind nonnull writable sret(%"class.WasmEdge::LLVM::Value") align 8 %3, ptr noundef nonnull align 8 dereferenceable(8) %29, ptr %.sroa.08.017.i.i, i64 %32) #16, !noalias !5874 + call void @_ZN8WasmEdge4LLVM5Value16getConstVector32ERNS0_7ContextEN5cxx204spanIKjLm18446744073709551615EEE(ptr dead_on_unwind nonnull writable sret(%"class.WasmEdge::LLVM::Value") align 8 %3, ptr noundef nonnull align 8 dereferenceable(8) %29, ptr %.sroa.08.018.i.i, i64 %32) #16, !noalias !5874 %33 = load ptr, ptr %5, align 8, !noalias !5880 %34 = load ptr, ptr %3, align 8, !noalias !5880 %35 = call ptr @LLVMBuildShuffleVector(ptr noundef %33, ptr noundef %12, ptr noundef %28, ptr noundef %34, ptr noundef nonnull @.str.11) #16, !noalias !5880 - %.not.i.i.i.i.i = icmp eq ptr %.sroa.08.017.i.i, null + %.not.i.i.i.i.i = icmp eq ptr %.sroa.08.018.i.i, null br i1 %.not.i.i.i.i.i, label %_ZN12_GLOBAL__N_116FunctionCompiler15compileVectorOpIZNS0_21compileVectorConvertUEN8WasmEdge4LLVM4TypeES4_bEUlT_E_EEvS4_OS5_.exit, label %36 36: ; preds = %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.i.i - %37 = sub i64 %.sroa.9.016.i.i, %30 - call void @_ZdlPvm(ptr noundef nonnull %.sroa.08.017.i.i, i64 noundef %37) #18, !noalias !5874 + %37 = sub i64 %.sroa.9.017.i.i, %30 + call void @_ZdlPvm(ptr noundef nonnull %.sroa.08.018.i.i, i64 noundef %37) #18, !noalias !5874 br label %_ZN12_GLOBAL__N_116FunctionCompiler15compileVectorOpIZNS0_21compileVectorConvertUEN8WasmEdge4LLVM4TypeES4_bEUlT_E_EEvS4_OS5_.exit _ZN12_GLOBAL__N_116FunctionC{"code":"internal","msg":"git-diff-tree: context deadline exceeded","meta":{"cause":"*fmt.wrapError"}}