diff --git a/bench/abseil-cpp/optimized/cordz_info_test.cc.ll b/bench/abseil-cpp/optimized/cordz_info_test.cc.ll index 83c70c3a200..b9115271873 100644 --- a/bench/abseil-cpp/optimized/cordz_info_test.cc.ll +++ b/bench/abseil-cpp/optimized/cordz_info_test.cc.ll @@ -6578,7 +6578,8 @@ entry: %0 = load ptr, ptr %container, align 8 %len_.i.i = getelementptr inbounds i8, ptr %container, i64 8 %1 = load i64, ptr %len_.i.i, align 8 - %add.ptr.i = getelementptr inbounds ptr, ptr %0, i64 %1 + %add.ptr.i.idx = shl i64 %1, 3 + %add.ptr.i.ptr = getelementptr inbounds i8, ptr %0, i64 %add.ptr.i.idx %cmp.not15 = icmp eq i64 %1, 0 br i1 %cmp.not15, label %if.end13, label %for.body @@ -6614,7 +6615,7 @@ if.else.i.i.i.i.i: ; preds = %if.end8 _ZN7testing8internal14UniversalPrintIPvEEvRKT_PSo.exit: ; preds = %if.then.i.i.i.i.i, %if.else.i.i.i.i.i %inc = add nuw nsw i64 %count.017, 1 %incdec.ptr = getelementptr inbounds i8, ptr %__begin0.016, i64 8 - %cmp.not = icmp eq ptr %incdec.ptr, %add.ptr.i + %cmp.not = icmp eq ptr %incdec.ptr, %add.ptr.i.ptr br i1 %cmp.not, label %for.end, label %for.body for.end: ; preds = %_ZN7testing8internal14UniversalPrintIPvEEvRKT_PSo.exit @@ -17889,11 +17890,11 @@ if.else.i18: ; preds = %invoke.cont8 if.then5.i20: ; preds = %if.else.i18 %add.ptr.i21.idx = shl nuw nsw i64 %conv, 3 - %add.ptr.i21.ptr = getelementptr inbounds i8, ptr %call5.i.i.i.i61, i64 %add.ptr.i21.idx + %add.ptr.i21 = getelementptr inbounds i8, ptr %call5.i.i.i.i61, i64 %add.ptr.i21.idx br label %invoke.cont10 invoke.cont10: ; preds = %if.then5.i20, %if.else.i18, %if.then.i.i.i30.i103, %if.then.i24 - %local_stack.sroa.11.3 = phi ptr [ %add.ptr37.i, %if.else.i18 ], [ %add.ptr37.i, %if.then.i24 ], [ %add.ptr37.i101, %if.then.i.i.i30.i103 ], [ %add.ptr.i21.ptr, %if.then5.i20 ] + %local_stack.sroa.11.3 = phi ptr [ %add.ptr37.i, %if.else.i18 ], [ %add.ptr37.i, %if.then.i24 ], [ %add.ptr37.i101, %if.then.i.i.i30.i103 ], [ %add.ptr.i21, %if.then5.i20 ] %local_stack.sroa.0.3 = phi ptr [ %call5.i.i.i.i61, %if.else.i18 ], [ %call5.i.i.i.i61, %if.then.i24 ], [ %call5.i.i.i.i107, %if.then.i.i.i30.i103 ], [ %call5.i.i.i.i61, %if.then5.i20 ] %call12 = invoke { ptr, i64 } @_ZNK4absl13cord_internal9CordzInfo8GetStackEv(ptr noundef nonnull align 8 dereferenceable(1332) %1) to label %invoke.cont11 unwind label %ehcleanup41.thread127 diff --git a/bench/abseil-cpp/optimized/escaping.cc.ll b/bench/abseil-cpp/optimized/escaping.cc.ll index a618bec693e..8aa54de6b6d 100644 --- a/bench/abseil-cpp/optimized/escaping.cc.ll +++ b/bench/abseil-cpp/optimized/escaping.cc.ll @@ -46,13 +46,13 @@ entry: if.end: ; preds = %entry %add.ptr = getelementptr inbounds i8, ptr %dest, i64 %szdest - %add.ptr2 = getelementptr inbounds i8, ptr %src, i64 %szsrc + %add.ptr2.ptr = getelementptr i8, ptr %src, i64 %szsrc %cmp3 = icmp ugt i64 %szsrc, 2 br i1 %cmp3, label %while.cond.preheader, label %if.end24 while.cond.preheader: ; preds = %if.end - %add.ptr5 = getelementptr inbounds i8, ptr %add.ptr2, i64 -3 - %cmp683 = icmp ugt ptr %add.ptr5, %src + %add.ptr5.ptr = getelementptr i8, ptr %add.ptr2.ptr, i64 -3 + %cmp683 = icmp sgt i64 %szsrc, 3 br i1 %cmp683, label %while.body, label %if.end24 while.body: ; preds = %while.cond.preheader, %while.body @@ -88,7 +88,7 @@ while.body: ; preds = %while.cond.preheade store i8 %4, ptr %arrayidx21, align 1 %add.ptr22 = getelementptr inbounds i8, ptr %cur_dest.085, i64 4 %add.ptr23 = getelementptr inbounds i8, ptr %cur_src.084, i64 3 - %cmp6 = icmp ult ptr %add.ptr23, %add.ptr5 + %cmp6 = icmp ult ptr %add.ptr23, %add.ptr5.ptr br i1 %cmp6, label %while.body, label %if.end24, !llvm.loop !5 if.end24: ; preds = %while.body, %while.cond.preheader, %if.end @@ -97,7 +97,7 @@ if.end24: ; preds = %while.body, %while. %sub.ptr.lhs.cast = ptrtoint ptr %add.ptr to i64 %sub.ptr.rhs.cast = ptrtoint ptr %cur_dest.1 to i64 %sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast - %sub.ptr.lhs.cast25 = ptrtoint ptr %add.ptr2 to i64 + %sub.ptr.lhs.cast25 = ptrtoint ptr %add.ptr2.ptr to i64 %sub.ptr.rhs.cast26 = ptrtoint ptr %cur_src.1 to i64 %sub.ptr.sub27 = sub i64 %sub.ptr.lhs.cast25, %sub.ptr.rhs.cast26 switch i64 %sub.ptr.sub27, label %do.body [ diff --git a/bench/abseil-cpp/optimized/int128_test.cc.ll b/bench/abseil-cpp/optimized/int128_test.cc.ll index 3c486bb2e60..574147f1bbe 100644 --- a/bench/abseil-cpp/optimized/int128_test.cc.ll +++ b/bench/abseil-cpp/optimized/int128_test.cc.ll @@ -24434,7 +24434,8 @@ entry: %0 = load ptr, ptr %values, align 8 %_M_len.i.i = getelementptr inbounds i8, ptr %values, i64 8 %1 = load i64, ptr %_M_len.i.i, align 8 - %add.ptr.i = getelementptr inbounds %"class.absl::uint128", ptr %0, i64 %1 + %add.ptr.i.idx = shl nsw i64 %1, 4 + %add.ptr.i.ptr = getelementptr inbounds i8, ptr %0, i64 %add.ptr.i.idx %cmp.not12 = icmp eq i64 %1, 0 br i1 %cmp.not12, label %nrvo.skipdtor, label %for.body.lr.ph @@ -24527,7 +24528,7 @@ for.inc: ; preds = %_ZNSt6vectorISt7var %5 = phi ptr [ %incdec.ptr.i.i.i, %_ZNSt6vectorISt7variantIJPKN4absl7uint128EEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i ], [ %incdec.ptr.i.i, %if.then.i.i ] %cond.i10.i.i.i10 = phi ptr [ %cond.i10.i.i.i, %_ZNSt6vectorISt7variantIJPKN4absl7uint128EEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i ], [ %cond.i10.i.i.i1113, %if.then.i.i ] %incdec.ptr = getelementptr inbounds i8, ptr %__begin0.014, i64 16 - %cmp.not = icmp eq ptr %incdec.ptr, %add.ptr.i + %cmp.not = icmp eq ptr %incdec.ptr, %add.ptr.i.ptr br i1 %cmp.not, label %nrvo.skipdtor, label %for.body lpad.loopexit: ; preds = %cond.true.i.i.i.i diff --git a/bench/abseil-cpp/optimized/reflection_test.cc.ll b/bench/abseil-cpp/optimized/reflection_test.cc.ll index 70ddb50efea..5ca90d2787d 100644 --- a/bench/abseil-cpp/optimized/reflection_test.cc.ll +++ b/bench/abseil-cpp/optimized/reflection_test.cc.ll @@ -8749,28 +8749,29 @@ if.then4: ; preds = %if.then br i1 %cmp10, label %for.body.i.i.i.i.i.preheader, label %_ZSt7advanceIPZNK4absl16strings_internal8SplitterINS0_6ByCharENS0_14SkipWhitespaceESt17basic_string_viewIcSt11char_traitsIcEEE18ConvertToContainerISt6vectorIS8_SaIS8_EES8_Lb0EEclERKS9_E8raw_viewmEvRT_T0_.exit for.body.i.i.i.i.i.preheader: ; preds = %if.then4 - %idx.neg = sub nsw i64 0, %sub.ptr.div.i.i - %add.ptr = getelementptr %"class.std::basic_string_view", ptr %1, i64 %idx.neg + %add.ptr.idx = sub i64 0, %sub.ptr.sub.i.i + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr.idx br label %for.body.i.i.i.i.i for.body.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i.preheader, %for.body.i.i.i.i.i %__cur.09.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %for.body.i.i.i.i.i ], [ %1, %for.body.i.i.i.i.i.preheader ] - %__first.sroa.0.08.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i, %for.body.i.i.i.i.i ], [ %add.ptr, %for.body.i.i.i.i.i.preheader ] - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %__cur.09.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %__first.sroa.0.08.i.i.i.i.i, i64 16, i1 false) - %incdec.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.08.i.i.i.i.i, i64 16 + %__first.sroa.0.08.i.i.i.i.i.idx = phi i64 [ %__first.sroa.0.08.i.i.i.i.i.add, %for.body.i.i.i.i.i ], [ %add.ptr.idx, %for.body.i.i.i.i.i.preheader ] + %__first.sroa.0.08.i.i.i.i.i.ptr = getelementptr inbounds i8, ptr %1, i64 %__first.sroa.0.08.i.i.i.i.i.idx + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %__cur.09.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %__first.sroa.0.08.i.i.i.i.i.ptr, i64 16, i1 false) + %__first.sroa.0.08.i.i.i.i.i.add = add nsw i64 %__first.sroa.0.08.i.i.i.i.i.idx, 16 %incdec.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.09.i.i.i.i.i, i64 16 - %cmp.i.i.not.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i, %1 + %cmp.i.i.not.i.i.i.i.i = icmp eq i64 %__first.sroa.0.08.i.i.i.i.i.add, 0 br i1 %cmp.i.i.not.i.i.i.i.i, label %_ZSt22__uninitialized_move_aIPSt17basic_string_viewIcSt11char_traitsIcEES4_SaIS3_EET0_T_S7_S6_RT1_.exit, label %for.body.i.i.i.i.i, !llvm.loop !207 _ZSt22__uninitialized_move_aIPSt17basic_string_viewIcSt11char_traitsIcEES4_SaIS3_EET0_T_S7_S6_RT1_.exit: ; preds = %for.body.i.i.i.i.i %.pre118 = load ptr, ptr %_M_finish, align 8 %add.ptr22 = getelementptr inbounds i8, ptr %.pre118, i64 %sub.ptr.sub.i.i store ptr %add.ptr22, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce + %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %_ZSt13move_backwardIPSt17basic_string_viewIcSt11char_traitsIcEES4_ET0_T_S6_S5_.exit, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPSt17basic_string_viewIcSt11char_traitsIcEES4_SaIS3_EET0_T_S7_S6_RT1_.exit - %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 4 %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i diff --git a/bench/abseil-cpp/optimized/salted_seed_seq_test.cc.ll b/bench/abseil-cpp/optimized/salted_seed_seq_test.cc.ll index 838d2bed002..bc116afdb42 100644 --- a/bench/abseil-cpp/optimized/salted_seed_seq_test.cc.ll +++ b/bench/abseil-cpp/optimized/salted_seed_seq_test.cc.ll @@ -6182,7 +6182,8 @@ entry: %0 = load ptr, ptr %container, align 8 %size_.i = getelementptr inbounds i8, ptr %container, i64 8 %1 = load i64, ptr %size_.i, align 8 - %add.ptr.i = getelementptr inbounds i32, ptr %0, i64 %1 + %add.ptr.i.idx = shl i64 %1, 2 + %add.ptr.i.ptr = getelementptr inbounds i8, ptr %0, i64 %add.ptr.i.idx %cmp.not15 = icmp eq i64 %1, 0 br i1 %cmp.not15, label %if.end13, label %for.body @@ -6207,7 +6208,7 @@ if.end8: ; preds = %if.then, %for.body %call.i.i.i.i.i = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %os, i32 noundef %2) %inc = add nuw nsw i64 %count.017, 1 %incdec.ptr = getelementptr inbounds i8, ptr %__begin0.016, i64 4 - %cmp.not = icmp eq ptr %incdec.ptr, %add.ptr.i + %cmp.not = icmp eq ptr %incdec.ptr, %add.ptr.i.ptr br i1 %cmp.not, label %for.end, label %for.body for.end: ; preds = %if.end8 diff --git a/bench/abseil-cpp/optimized/seed_material_test.cc.ll b/bench/abseil-cpp/optimized/seed_material_test.cc.ll index 31f44af5f40..67d12b6cece 100644 --- a/bench/abseil-cpp/optimized/seed_material_test.cc.ll +++ b/bench/abseil-cpp/optimized/seed_material_test.cc.ll @@ -3603,7 +3603,8 @@ entry: %0 = load ptr, ptr %container, align 8 %size_.i = getelementptr inbounds i8, ptr %container, i64 8 %1 = load i64, ptr %size_.i, align 8 - %add.ptr.i = getelementptr inbounds i32, ptr %0, i64 %1 + %add.ptr.i.idx = shl i64 %1, 2 + %add.ptr.i.ptr = getelementptr inbounds i8, ptr %0, i64 %add.ptr.i.idx %cmp.not15 = icmp eq i64 %1, 0 br i1 %cmp.not15, label %if.end13, label %for.body @@ -3628,7 +3629,7 @@ if.end8: ; preds = %if.then, %for.body %call.i.i.i.i.i = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %os, i32 noundef %2) %inc = add nuw nsw i64 %count.017, 1 %incdec.ptr = getelementptr inbounds i8, ptr %__begin0.016, i64 4 - %cmp.not = icmp eq ptr %incdec.ptr, %add.ptr.i + %cmp.not = icmp eq ptr %incdec.ptr, %add.ptr.i.ptr br i1 %cmp.not, label %for.end, label %for.body for.end: ; preds = %if.end8 diff --git a/bench/abseil-cpp/optimized/status_internal.cc.ll b/bench/abseil-cpp/optimized/status_internal.cc.ll index 0f34f139aa9..d37b870dc32 100644 --- a/bench/abseil-cpp/optimized/status_internal.cc.ll +++ b/bench/abseil-cpp/optimized/status_internal.cc.ll @@ -925,7 +925,8 @@ if.end23: ; preds = %if.end5 %spec.select.sroa.sel = select i1 %cmp16, ptr %cond13.sroa.sel.v.sroa.sel, ptr %cond.sroa.sel %8 = load ptr, ptr %spec.select.sroa.sel, align 8 %cond.i.i = select i1 %tobool.i.not.i.i, ptr %spec.select.sroa.sel, ptr %8 - %add.ptr.i = getelementptr inbounds %"struct.absl::status_internal::Payload", ptr %cond.i.i, i64 %shr.i.i14 + %add.ptr.i.idx = mul nsw i64 %shr.i.i14, 48 + %add.ptr.i.ptr = getelementptr inbounds i8, ptr %cond.i.i, i64 %add.ptr.i.idx %cmp26.not52 = icmp ult i64 %6, 2 br i1 %cmp26.not52, label %cleanup, label %for.body.lr.ph @@ -943,7 +944,8 @@ for.body: ; preds = %for.body.lr.ph, %fo %10 = load ptr, ptr %spec.select47.sroa.sel, align 8 %cond.i.i23 = select i1 %tobool.i.not.i.i21, ptr %spec.select47.sroa.sel, ptr %10 %shr.i.i.i28 = lshr i64 %9, 1 - %add.ptr.i29 = getelementptr inbounds %"struct.absl::status_internal::Payload", ptr %cond.i.i23, i64 %shr.i.i.i28 + %add.ptr.i29.idx = mul nsw i64 %shr.i.i.i28, 48 + %add.ptr.i29.ptr = getelementptr inbounds i8, ptr %cond.i.i23, i64 %add.ptr.i29.idx %cmp30.not.not50 = icmp ult i64 %9, 2 br i1 %cmp30.not.not50, label %cleanup, label %for.body31 @@ -1028,12 +1030,12 @@ lpad: ; preds = %if.end5.i.i for.inc: ; preds = %for.body31, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit %incdec.ptr = getelementptr inbounds i8, ptr %__begin3.051, i64 48 - %cmp30.not.not = icmp eq ptr %incdec.ptr, %add.ptr.i29 + %cmp30.not.not = icmp eq ptr %incdec.ptr, %add.ptr.i29.ptr br i1 %cmp30.not.not, label %cleanup, label %for.body31 for.inc44: ; preds = %if.then34, %invoke.cont %incdec.ptr45 = getelementptr inbounds i8, ptr %__begin2.053, i64 48 - %cmp26.not = icmp eq ptr %incdec.ptr45, %add.ptr.i + %cmp26.not = icmp eq ptr %incdec.ptr45, %add.ptr.i.ptr br i1 %cmp26.not, label %cleanup, label %for.body cleanup: ; preds = %for.inc44, %invoke.cont, %_ZNK4absl4Cord4sizeEv.exit13.i.i, %for.body, %for.inc, %if.end23, %if.end5 diff --git a/bench/abseil-cpp/optimized/str_replace.cc.ll b/bench/abseil-cpp/optimized/str_replace.cc.ll index 93b4c9b5c2f..a26bf26285a 100644 --- a/bench/abseil-cpp/optimized/str_replace.cc.ll +++ b/bench/abseil-cpp/optimized/str_replace.cc.ll @@ -14,7 +14,6 @@ target triple = "x86_64-unknown-linux-gnu" %"struct.std::_Vector_base" = type { %"struct.std::_Vector_base>::_Vector_impl" } %"struct.std::_Vector_base>::_Vector_impl" = type { %"struct.std::_Vector_base>::_Vector_impl_data" } %"struct.std::_Vector_base>::_Vector_impl_data" = type { ptr, ptr, ptr } -%"struct.std::pair" = type { %"class.std::basic_string_view", %"class.std::basic_string_view" } $_ZN4absl13StrReplaceAllISt16initializer_listISt4pairISt17basic_string_viewIcSt11char_traitsIcEES6_EEEENSt7__cxx1112basic_stringIcS5_SaIcEEES6_RKT_ = comdat any @@ -390,7 +389,8 @@ _ZNSt12_Vector_baseIN4absl16strings_internal18ViableSubstitutionESaIS2_EE11_M_al %add.ptr21.i = getelementptr inbounds %"struct.absl::strings_internal::ViableSubstitution", ptr %call5.i.i.i.i10, i64 %0 store ptr %add.ptr21.i, ptr %_M_end_of_storage.i.i, align 8 %1 = load ptr, ptr %replacements, align 8 - %add.ptr.i11 = getelementptr inbounds %"struct.std::pair", ptr %1, i64 %0 + %add.ptr.i11.idx = shl nuw nsw i64 %0, 5 + %add.ptr.i11.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr.i11.idx %agg.tmp.sroa.2.0.old.sroa_idx = getelementptr inbounds i8, ptr %old, i64 8 %add.ptr9.i.i = getelementptr inbounds i8, ptr %s.coerce1, i64 %s.coerce0 %sub.ptr.lhs.cast21.i.i = ptrtoint ptr %add.ptr9.i.i to i64 @@ -544,7 +544,7 @@ while.body: ; preds = %land.rhs for.inc: ; preds = %while.body, %land.rhs, %invoke.cont10, %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findES2_m.exit, %if.end.thread, %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findES2_m.exit.thread %13 = phi ptr [ %6, %invoke.cont10 ], [ %2, %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findES2_m.exit ], [ %2, %if.end.thread ], [ %2, %_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findES2_m.exit.thread ], [ %6, %land.rhs ], [ %6, %while.body ] %incdec.ptr = getelementptr inbounds i8, ptr %__begin0.041, i64 32 - %cmp.not = icmp eq ptr %incdec.ptr, %add.ptr.i11 + %cmp.not = icmp eq ptr %incdec.ptr, %add.ptr.i11.ptr br i1 %cmp.not, label %nrvo.skipdtor, label %for.body nrvo.skipdtor: ; preds = %for.inc, %if.end.i diff --git a/bench/abseil-cpp/optimized/time_zone_info.cc.ll b/bench/abseil-cpp/optimized/time_zone_info.cc.ll index 5bb7e0fef73..a31aa149b18 100644 --- a/bench/abseil-cpp/optimized/time_zone_info.cc.ll +++ b/bench/abseil-cpp/optimized/time_zone_info.cc.ll @@ -6470,13 +6470,13 @@ land.end.i.i.i.i: ; preds = %cleanup.cont11.i.i. %.fr.i.i.i.i = freeze i8 %13 %cmp10.i.i.i.i = icmp eq i8 %.fr.i.i.i.i, 47 %spec.select.i27.i.i.i = select i1 %cmp10.i.i.i.i, ptr %ref.tmp1.i.i.i.i, ptr %ref.tmp.i.i.i.i - %spec.select45.i.i.i.i = select i1 %cmp10.i.i.i.i, i64 1, i64 4 + %spec.select45.i.i.i.i = select i1 %cmp10.i.i.i.i, i64 8, i64 32 br label %for.body.preheader.i.i.i.i for.body.preheader.i.i.i.i: ; preds = %land.end.i.i.i.i, %cleanup.cont11.i.i.i %14 = phi ptr [ %ref.tmp.i.i.i.i, %cleanup.cont11.i.i.i ], [ %spec.select.i27.i.i.i, %land.end.i.i.i.i ] - %15 = phi i64 [ 4, %cleanup.cont11.i.i.i ], [ %spec.select45.i.i.i.i, %land.end.i.i.i.i ] - %add.ptr.i.i.i.i.i = getelementptr inbounds ptr, ptr %14, i64 %15 + %15 = phi i64 [ 32, %cleanup.cont11.i.i.i ], [ %spec.select45.i.i.i.i, %land.end.i.i.i.i ] + %add.ptr.i.ptr.i.i.i.i = getelementptr inbounds i8, ptr %14, i64 %15 br label %for.body.i28.i.i.i for.body.i28.i.i.i: ; preds = %for.inc.critedge.i.i.i.i, %for.body.preheader.i.i.i.i @@ -6645,7 +6645,7 @@ for.inc.critedge.i.i.i.i: ; preds = %invoke.cont24.i.i.i call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %path.i22.i.i.i) #22, !noalias !143 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %prefix.i.i.i.i) #22, !noalias !143 %incdec.ptr.i.i.i.i = getelementptr inbounds i8, ptr %__begin3.052.i.i.i.i, i64 8 - %cmp13.not.i42.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i, %add.ptr.i.i.i.i.i + %cmp13.not.i42.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i, %add.ptr.i.ptr.i.i.i.i br i1 %cmp13.not.i42.i.i.i, label %cleanup.cont21.i.i.i, label %for.body.i28.i.i.i _ZN4absl13time_internal4cctz12_GLOBAL__N_121FuchsiaZoneInfoSource4OpenERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit.i.i.i: ; preds = %if.end42.i.i.i.i diff --git a/bench/arrow/optimized/array_base.cc.ll b/bench/arrow/optimized/array_base.cc.ll index 42849bc6e71..aa1c1dcc709 100644 --- a/bench/arrow/optimized/array_base.cc.ll +++ b/bench/arrow/optimized/array_base.cc.ll @@ -5138,6 +5138,7 @@ _ZSt10_ConstructISt10shared_ptrIN5arrow6BufferEEJRKS3_EEvPT_DpOT0_.exit.i.i.i.i. %add.ptr.i1.i = getelementptr inbounds i8, ptr %call5.i.i.i.i2.i, i64 16 %_M_end_of_storage.i.i = getelementptr inbounds i8, ptr %agg.tmp2, i64 16 store ptr %add.ptr.i1.i, ptr %_M_end_of_storage.i.i, align 8 + %_M_refcount3.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %ref.tmp4, i64 8 %_M_finish.i.i = getelementptr inbounds i8, ptr %agg.tmp2, i64 8 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %call5.i.i.i.i2.i, i8 0, i64 16, i1 false) store ptr %add.ptr.i1.i, ptr %_M_finish.i.i, align 8 @@ -5440,8 +5441,7 @@ if.then.i.i.i19: ; preds = %invoke.cont.i br label %_ZNSt6vectorISt10shared_ptrIN5arrow6BufferEESaIS3_EED2Ev.exit _ZNSt6vectorISt10shared_ptrIN5arrow6BufferEESaIS3_EED2Ev.exit: ; preds = %invoke.cont.i, %if.then.i.i.i19 - %_M_refcount.i.i24 = getelementptr inbounds i8, ptr %ref.tmp4, i64 8 - %49 = load ptr, ptr %_M_refcount.i.i24, align 8 + %49 = load ptr, ptr %_M_refcount3.i.i.i.i.i.i.i.i.i, align 8 %cmp.not.i.i.i25 = icmp eq ptr %49, null br i1 %cmp.not.i.i.i25, label %_ZNSt10shared_ptrIN5arrow6BufferEED2Ev.exit, label %if.then.i.i.i26 diff --git a/bench/arrow/optimized/chunked_array.cc.ll b/bench/arrow/optimized/chunked_array.cc.ll index ad7b747c65c..939ba75403a 100644 --- a/bench/arrow/optimized/chunked_array.cc.ll +++ b/bench/arrow/optimized/chunked_array.cc.ll @@ -3602,9 +3602,6 @@ if.then.i.i.i.i.i.i.i.i.i.i: ; preds = %_ZSt11make_sharedIN store ptr %call5.i.i.i3.i.i.i.i, ptr %_M_refcount.i.i.i.i.i.i.i.i.i, align 8 %3 = load i8, ptr @__libc_single_threaded, align 1 %tobool.i.not.i.i.i.i.i.i.i.i.i.i.i = icmp eq i8 %3, 0 - %storage_.i.i = getelementptr inbounds i8, ptr %agg.result, i64 8 - %_M_finish.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.result, i64 16 - %_M_end_of_storage.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.result, i64 24 br i1 %tobool.i.not.i.i.i.i.i.i.i.i.i.i.i, label %_ZSt10_ConstructISt10shared_ptrIN5arrow12ChunkedArrayEEJRKS3_EEvPT_DpOT0_.exit.i.i.i.i.i.i, label %_ZSt10_ConstructISt10shared_ptrIN5arrow12ChunkedArrayEEJRKS3_EEvPT_DpOT0_.exit.i.i.i.i.i.i.thread _ZSt10_ConstructISt10shared_ptrIN5arrow12ChunkedArrayEEJRKS3_EEvPT_DpOT0_.exit.i.i.i.i.i.i.thread: ; preds = %if.then.i.i.i.i.i.i.i.i.i.i @@ -3612,18 +3609,23 @@ _ZSt10_ConstructISt10shared_ptrIN5arrow12ChunkedArrayEEJRKS3_EEvPT_DpOT0_.exit.i %add.i.i.i.i.i.i.i.i.i.i.i.i = add nsw i32 %4, 1 store i32 %add.i.i.i.i.i.i.i.i.i.i.i.i, ptr %_M_use_count.i.i.i.i.i.i, align 4 store ptr null, ptr %agg.result, align 8 - store ptr %call5.i.i.i.i2.i, ptr %storage_.i.i, align 8 - store ptr %incdec.ptr1.i.i.i.i.i.i, ptr %_M_finish.i.i.i.i.i.i.i, align 8 - store ptr %incdec.ptr1.i.i.i.i.i.i, ptr %_M_end_of_storage.i.i.i.i.i.i.i, align 8 + %storage_.i.i300 = getelementptr inbounds i8, ptr %agg.result, i64 8 + store ptr %call5.i.i.i.i2.i, ptr %storage_.i.i300, align 8 + %_M_finish.i.i.i.i.i.i.i301 = getelementptr inbounds i8, ptr %agg.result, i64 16 + store ptr %incdec.ptr1.i.i.i.i.i.i, ptr %_M_finish.i.i.i.i.i.i.i301, align 8 + %_M_end_of_storage.i.i.i.i.i.i.i302 = getelementptr inbounds i8, ptr %agg.result, i64 24 + store ptr %incdec.ptr1.i.i.i.i.i.i, ptr %_M_end_of_storage.i.i.i.i.i.i.i302, align 8 br label %if.then.i.i.i21 _ZSt10_ConstructISt10shared_ptrIN5arrow12ChunkedArrayEEJRKS3_EEvPT_DpOT0_.exit.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i.i.i.i.i %5 = atomicrmw volatile add ptr %_M_use_count.i.i.i.i.i.i, i32 1 acq_rel, align 4 - %_M_refcount.i.i.phi.trans.insert = getelementptr inbounds i8, ptr %ref.tmp4, i64 8 - %.pre = load ptr, ptr %_M_refcount.i.i.phi.trans.insert, align 8 + %.pre = load ptr, ptr %_M_refcount.i.i.i, align 8 store ptr null, ptr %agg.result, align 8 + %storage_.i.i = getelementptr inbounds i8, ptr %agg.result, i64 8 store ptr %call5.i.i.i.i2.i, ptr %storage_.i.i, align 8 + %_M_finish.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.result, i64 16 store ptr %incdec.ptr1.i.i.i.i.i.i, ptr %_M_finish.i.i.i.i.i.i.i, align 8 + %_M_end_of_storage.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.result, i64 24 store ptr %incdec.ptr1.i.i.i.i.i.i, ptr %_M_end_of_storage.i.i.i.i.i.i.i, align 8 %cmp.not.i.i.i = icmp eq ptr %.pre, null br i1 %cmp.not.i.i.i, label %return, label %if.then.i.i.i21 diff --git a/bench/arrow/optimized/data.cc.ll b/bench/arrow/optimized/data.cc.ll index 0e7f91d82bf..12051c871df 100644 --- a/bench/arrow/optimized/data.cc.ll +++ b/bench/arrow/optimized/data.cc.ll @@ -3761,8 +3761,8 @@ invoke.cont37: ; preds = %if.end8.sink.split. %57 = load ptr, ptr %arrayidx.i63, align 8 %size.i64 = getelementptr inbounds i8, ptr %this, i64 88 %58 = load i64, ptr %size.i64, align 8 - %div1.i = lshr i64 %58, 4 - %add.ptr.i65 = getelementptr inbounds %"class.std::shared_ptr.8", ptr %57, i64 %div1.i + %add.ptr.i65.idx = and i64 %58, -16 + %add.ptr.i65.ptr = getelementptr inbounds i8, ptr %57, i64 %add.ptr.i65.idx %cmp44.not174 = icmp ult i64 %58, 16 br i1 %cmp44.not174, label %if.else, label %for.body45.preheader @@ -3822,7 +3822,7 @@ if.else.i78: ; preds = %for.body45 for.inc49: ; preds = %_ZNSt16allocator_traitsISaISt10shared_ptrIN5arrow6BufferEEEE9constructIS3_JRKS3_EEEvRS4_PT_DpOT0_.exit.i, %if.else.i78 %69 = phi ptr [ %67, %_ZNSt16allocator_traitsISaISt10shared_ptrIN5arrow6BufferEEEE9constructIS3_JRKS3_EEEvRS4_PT_DpOT0_.exit.i ], [ %59, %if.else.i78 ] %incdec.ptr = getelementptr inbounds i8, ptr %__begin2.0175, i64 16 - %cmp44.not = icmp eq ptr %incdec.ptr, %add.ptr.i65 + %cmp44.not = icmp eq ptr %incdec.ptr, %add.ptr.i65.ptr br i1 %cmp44.not, label %if.end51, label %for.body45 if.end51: ; preds = %for.inc49, %invoke.cont22.thread, %invoke.cont22 diff --git a/bench/arrow/optimized/feather.cc.ll b/bench/arrow/optimized/feather.cc.ll index d5e883b8ca4..534e44cc862 100644 --- a/bench/arrow/optimized/feather.cc.ll +++ b/bench/arrow/optimized/feather.cc.ll @@ -13472,7 +13472,7 @@ _ZN5arrow6StatusD2Ev.exit.i: ; preds = %do.body if.else.i: ; preds = %do.body %conv.i = trunc i64 %rem.i to i32 %conv8.i = and i32 %conv.i, 255 - %add.ptr12.i = getelementptr inbounds i8, ptr %add.ptr.i, i64 %length + %add.ptr12.ptr.i = getelementptr inbounds i8, ptr %add.ptr.i, i64 %length %cmp13.not283.i = icmp eq i64 %length, 0 br i1 %cmp13.not283.i, label %if.end81.i, label %for.body.lr.ph.i @@ -13509,7 +13509,7 @@ _ZN5arrow6StatusD2Ev.exit98.i: ; preds = %for.body.i br i1 %cmp.i99.i, label %if.end51.i.thread, label %nrvo.skipdtor if.end51.i: ; preds = %for.body.i - %cmp13.not.i = icmp eq ptr %incdec.ptr.i, %add.ptr12.i + %cmp13.not.i = icmp eq ptr %incdec.ptr.i, %add.ptr12.ptr.i br i1 %cmp13.not.i, label %for.end.i, label %for.body.i.backedge for.body.i.backedge: ; preds = %if.end51.i, %if.end51.i.thread @@ -13517,7 +13517,7 @@ for.body.i.backedge: ; preds = %if.end51.i, %if.end br label %for.body.i, !llvm.loop !473 if.end51.i.thread: ; preds = %_ZN5arrow6StatusD2Ev.exit98.i - %cmp13.not.i127 = icmp eq ptr %incdec.ptr.i, %add.ptr12.i + %cmp13.not.i127 = icmp eq ptr %incdec.ptr.i, %add.ptr12.ptr.i br i1 %cmp13.not.i127, label %if.end81.i, label %for.body.i.backedge for.end.i: ; preds = %if.end51.i @@ -23821,8 +23821,7 @@ if.then.i.i.i5: ; preds = %invoke.cont.i br label %_ZNSt6vectorISt10shared_ptrIN5arrow5ArrayEESaIS3_EED2Ev.exit _ZNSt6vectorISt10shared_ptrIN5arrow5ArrayEESaIS3_EED2Ev.exit: ; preds = %invoke.cont.i, %if.then.i.i.i5 - %_M_refcount.i.i10 = getelementptr inbounds i8, ptr %ref.tmp, i64 8 - %31 = load ptr, ptr %_M_refcount.i.i10, align 8 + %31 = load ptr, ptr %_M_refcount.i.i, align 8 %cmp.not.i.i.i11 = icmp eq ptr %31, null br i1 %cmp.not.i.i.i11, label %_ZNSt10shared_ptrIN5arrow5ArrayEED2Ev.exit, label %if.then.i.i.i12 diff --git a/bench/arrow/optimized/function_internal.cc.ll b/bench/arrow/optimized/function_internal.cc.ll index 7786f053b99..1f95d73d2fe 100644 --- a/bench/arrow/optimized/function_internal.cc.ll +++ b/bench/arrow/optimized/function_internal.cc.ll @@ -1203,7 +1203,7 @@ ehcleanup46: ; preds = %ehcleanup38, %clean declare i32 @__gxx_personality_v0(...) -; Function Attrs: nofree nounwind memory(read) +; Function Attrs: mustprogress nofree nounwind willreturn memory(read) declare ptr @__dynamic_cast(ptr, ptr, ptr, i64) local_unnamed_addr #1 ; Function Attrs: mustprogress nounwind uwtable @@ -2641,6 +2641,7 @@ call5.i.i.i.i.noexc.i: ; preds = %invoke.cont41 %add.ptr.i1.i = getelementptr inbounds i8, ptr %call5.i.i.i.i2.i, i64 16 %_M_end_of_storage.i.i = getelementptr inbounds i8, ptr %agg.tmp27, i64 16 store ptr %add.ptr.i1.i, ptr %_M_end_of_storage.i.i, align 8 + %_M_refcount3.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %ref.tmp29, i64 8 %14 = load <2 x ptr>, ptr %ref.tmp29, align 16 store <2 x ptr> %14, ptr %call5.i.i.i.i2.i, align 8 %15 = extractelement <2 x ptr> %14, i64 1 @@ -2676,6 +2677,7 @@ lpad.i32: ; preds = %invoke.cont41 br label %ehcleanup72 invoke.cont47: ; preds = %_ZSt10_ConstructISt10shared_ptrIN5arrow5FieldEEJRKS3_EEvPT_DpOT0_.exit.i.i.i.i.i.i + %_M_refcount.i.i34 = getelementptr inbounds i8, ptr %ref.tmp50, i64 8 %20 = load <2 x ptr>, ptr %array, align 16 store <2 x ptr> %20, ptr %ref.tmp50, align 16 %21 = extractelement <2 x ptr> %20, i64 1 @@ -2841,8 +2843,7 @@ if.then.i.i.i70: ; preds = %invoke.cont.i br label %_ZNSt6vectorISt10shared_ptrIN5arrow5ArrayEESaIS3_EED2Ev.exit _ZNSt6vectorISt10shared_ptrIN5arrow5ArrayEESaIS3_EED2Ev.exit: ; preds = %invoke.cont.i, %if.then.i.i.i70 - %_M_refcount.i.i75 = getelementptr inbounds i8, ptr %ref.tmp50, i64 8 - %45 = load ptr, ptr %_M_refcount.i.i75, align 8 + %45 = load ptr, ptr %_M_refcount.i.i34, align 8 %cmp.not.i.i.i76 = icmp eq ptr %45, null br i1 %cmp.not.i.i.i76, label %_ZNSt10shared_ptrIN5arrow5ArrayEED2Ev.exit, label %if.then.i.i.i77 @@ -3162,8 +3163,7 @@ if.then.i.i.i166: ; preds = %invoke.cont.i164 br label %_ZNSt6vectorISt10shared_ptrIN5arrow5FieldEESaIS3_EED2Ev.exit _ZNSt6vectorISt10shared_ptrIN5arrow5FieldEESaIS3_EED2Ev.exit: ; preds = %invoke.cont.i164, %if.then.i.i.i166 - %_M_refcount.i.i187 = getelementptr inbounds i8, ptr %ref.tmp29, i64 8 - %92 = load ptr, ptr %_M_refcount.i.i187, align 8 + %92 = load ptr, ptr %_M_refcount3.i.i.i.i.i.i.i.i.i, align 8 %cmp.not.i.i.i188 = icmp eq ptr %92, null br i1 %cmp.not.i.i.i188, label %_ZNSt10shared_ptrIN5arrow5FieldEED2Ev.exit, label %if.then.i.i.i189 @@ -10458,7 +10458,7 @@ declare i64 @llvm.umax.i64(i64, i64) #14 declare i64 @llvm.umin.i64(i64, i64) #14 attributes #0 = { 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,+crc32,+cx8,+fxsr,+mmx,+popcnt,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87" "tune-cpu"="generic" } -attributes #1 = { nofree nounwind memory(read) } +attributes #1 = { mustprogress nofree nounwind willreturn memory(read) } attributes #2 = { mustprogress 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,+crc32,+cx8,+fxsr,+mmx,+popcnt,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87" "tune-cpu"="generic" } attributes #3 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+crc32,+cx8,+fxsr,+mmx,+popcnt,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87" "tune-cpu"="generic" } attributes #4 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+crc32,+cx8,+fxsr,+mmx,+popcnt,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87" "tune-cpu"="generic" } diff --git a/bench/arrow/optimized/scalar_cast_dictionary.cc.ll b/bench/arrow/optimized/scalar_cast_dictionary.cc.ll index 7fc6a4a37ac..030d0829556 100644 --- a/bench/arrow/optimized/scalar_cast_dictionary.cc.ll +++ b/bench/arrow/optimized/scalar_cast_dictionary.cc.ll @@ -3584,20 +3584,20 @@ if.then.i.i.i.i.i.i.i.i.i.i76: ; preds = %call5.i.i.i.i.noexc %_M_use_count.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %61, i64 8 %62 = load i8, ptr @__libc_single_threaded, align 1 %tobool.i.i.not.i.i.i.i.i.i.i.i.i.i.i = icmp eq i8 %62, 0 - %_M_finish.i.i81 = getelementptr inbounds i8, ptr %agg.result, i64 8 br i1 %tobool.i.i.not.i.i.i.i.i.i.i.i.i.i.i, label %_ZSt10_ConstructISt10shared_ptrIN5arrow7compute8internal12CastFunctionEEJRKS5_EEvPT_DpOT0_.exit.i.i.i.i.i.i, label %_ZSt10_ConstructISt10shared_ptrIN5arrow7compute8internal12CastFunctionEEJRKS5_EEvPT_DpOT0_.exit.i.i.i.i.i.i.thread134 _ZSt10_ConstructISt10shared_ptrIN5arrow7compute8internal12CastFunctionEEJRKS5_EEvPT_DpOT0_.exit.i.i.i.i.i.i.thread134: ; preds = %if.then.i.i.i.i.i.i.i.i.i.i76 %63 = load i32, ptr %_M_use_count.i.i.i.i.i.i.i.i.i.i.i, align 4 %add.i.i.i.i.i.i.i.i.i.i.i.i = add nsw i32 %63, 1 store i32 %add.i.i.i.i.i.i.i.i.i.i.i.i, ptr %_M_use_count.i.i.i.i.i.i.i.i.i.i.i, align 4 - store ptr %add.ptr.i1.i74, ptr %_M_finish.i.i81, align 8 + %_M_finish.i.i81135 = getelementptr inbounds i8, ptr %agg.result, i64 8 + store ptr %add.ptr.i1.i74, ptr %_M_finish.i.i81135, align 8 br label %if.then.i.i.i91 _ZSt10_ConstructISt10shared_ptrIN5arrow7compute8internal12CastFunctionEEJRKS5_EEvPT_DpOT0_.exit.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i.i.i.i.i76 %64 = atomicrmw volatile add ptr %_M_use_count.i.i.i.i.i.i.i.i.i.i.i, i32 1 acq_rel, align 4 - %_M_refcount.i.i89.phi.trans.insert = getelementptr inbounds i8, ptr %ref.tmp38, i64 8 - %.pre131 = load ptr, ptr %_M_refcount.i.i89.phi.trans.insert, align 8 + %.pre131 = load ptr, ptr %_M_refcount.i.i, align 8 + %_M_finish.i.i81 = getelementptr inbounds i8, ptr %agg.result, i64 8 store ptr %add.ptr.i1.i74, ptr %_M_finish.i.i81, align 8 %cmp.not.i.i.i90 = icmp eq ptr %.pre131, null br i1 %cmp.not.i.i.i90, label %_ZNSt10shared_ptrIN5arrow7compute8internal12CastFunctionEED2Ev.exit, label %if.then.i.i.i91 diff --git a/bench/arrow/optimized/table.cc.ll b/bench/arrow/optimized/table.cc.ll index aba2d242cac..91abd890a97 100644 --- a/bench/arrow/optimized/table.cc.ll +++ b/bench/arrow/optimized/table.cc.ll @@ -26517,8 +26517,7 @@ if.then.i.i.i5: ; preds = %invoke.cont.i br label %_ZNSt6vectorISt10shared_ptrIN5arrow5ArrayEESaIS3_EED2Ev.exit _ZNSt6vectorISt10shared_ptrIN5arrow5ArrayEESaIS3_EED2Ev.exit: ; preds = %invoke.cont.i, %if.then.i.i.i5 - %_M_refcount.i.i10 = getelementptr inbounds i8, ptr %ref.tmp, i64 8 - %31 = load ptr, ptr %_M_refcount.i.i10, align 8 + %31 = load ptr, ptr %_M_refcount.i.i, align 8 %cmp.not.i.i.i11 = icmp eq ptr %31, null br i1 %cmp.not.i.i.i11, label %_ZNSt10shared_ptrIN5arrow5ArrayEED2Ev.exit, label %if.then.i.i.i12 diff --git a/bench/arrow/optimized/trie.cc.ll b/bench/arrow/optimized/trie.cc.ll index b6ccd3dfcdd..fc5ed0e124b 100644 --- a/bench/arrow/optimized/trie.cc.ll +++ b/bench/arrow/optimized/trie.cc.ll @@ -1687,18 +1687,18 @@ if.then4: ; preds = %if.then br i1 %cmp10, label %if.then11, label %if.else if.then11: ; preds = %if.then4 - %idx.neg = sub i64 0, %__n - %add.ptr = getelementptr inbounds i16, ptr %1, i64 %idx.neg + %.neg = mul i64 %__n, -2 + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %.neg %add.ptr.idx.neg = shl i64 %__n, 1 - tail call void @llvm.memmove.p0.p0.i64(ptr align 2 %1, ptr nonnull align 2 %add.ptr, i64 %add.ptr.idx.neg, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 2 %1, ptr align 2 %add.ptr.ptr, i64 %add.ptr.idx.neg, i1 false) %3 = load ptr, ptr %_M_finish, align 8 %add.ptr16 = getelementptr inbounds i16, ptr %3, i64 %__n store ptr %add.ptr16, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce + %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %invoke.cont20, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %if.then11 - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 1 %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i diff --git a/bench/assimp/optimized/DeboneProcess.cpp.ll b/bench/assimp/optimized/DeboneProcess.cpp.ll index 248b2bc4f6a..da2ea316714 100644 --- a/bench/assimp/optimized/DeboneProcess.cpp.ll +++ b/bench/assimp/optimized/DeboneProcess.cpp.ll @@ -2394,14 +2394,15 @@ delete.notnull107: ; preds = %if.end105 br i1 %arraydestroy.isempty, label %arraydestroy.done109, label %arraydestroy.body.preheader arraydestroy.body.preheader: ; preds = %delete.notnull107 - %delete.end108 = getelementptr inbounds %struct.aiFace, ptr %33, i64 %35 + %delete.end108.idx = shl nsw i64 %35, 4 + %invariant.gep = getelementptr i8, ptr %33, i64 8 br label %arraydestroy.body arraydestroy.body: ; preds = %arraydestroy.body.preheader, %_ZN6aiFaceD2Ev.exit - %arraydestroy.elementPast = phi ptr [ %arraydestroy.element, %_ZN6aiFaceD2Ev.exit ], [ %delete.end108, %arraydestroy.body.preheader ] - %arraydestroy.element = getelementptr inbounds i8, ptr %arraydestroy.elementPast, i64 -16 - %mIndices.i = getelementptr inbounds i8, ptr %arraydestroy.elementPast, i64 -8 - %36 = load ptr, ptr %mIndices.i, align 8 + %arraydestroy.elementPast.idx = phi i64 [ %arraydestroy.elementPast.add, %_ZN6aiFaceD2Ev.exit ], [ %delete.end108.idx, %arraydestroy.body.preheader ] + %arraydestroy.elementPast.add = add nsw i64 %arraydestroy.elementPast.idx, -16 + %gep = getelementptr i8, ptr %invariant.gep, i64 %arraydestroy.elementPast.add + %36 = load ptr, ptr %gep, align 8 %isnull.i26 = icmp eq ptr %36, null br i1 %isnull.i26, label %_ZN6aiFaceD2Ev.exit, label %delete.notnull.i27 @@ -2410,7 +2411,7 @@ delete.notnull.i27: ; preds = %arraydestroy.body br label %_ZN6aiFaceD2Ev.exit _ZN6aiFaceD2Ev.exit: ; preds = %arraydestroy.body, %delete.notnull.i27 - %arraydestroy.done = icmp eq ptr %arraydestroy.element, %33 + %arraydestroy.done = icmp eq i64 %arraydestroy.elementPast.add, 0 br i1 %arraydestroy.done, label %arraydestroy.done109, label %arraydestroy.body arraydestroy.done109: ; preds = %_ZN6aiFaceD2Ev.exit, %delete.notnull107 diff --git a/bench/assimp/optimized/FindInstancesProcess.cpp.ll b/bench/assimp/optimized/FindInstancesProcess.cpp.ll index 81bdc6f317b..2b6872ec023 100644 --- a/bench/assimp/optimized/FindInstancesProcess.cpp.ll +++ b/bench/assimp/optimized/FindInstancesProcess.cpp.ll @@ -1329,14 +1329,15 @@ delete.notnull107: ; preds = %if.end105 br i1 %arraydestroy.isempty, label %arraydestroy.done109, label %arraydestroy.body.preheader arraydestroy.body.preheader: ; preds = %delete.notnull107 - %delete.end108 = getelementptr inbounds %struct.aiFace, ptr %33, i64 %35 + %delete.end108.idx = shl nsw i64 %35, 4 + %invariant.gep = getelementptr i8, ptr %33, i64 8 br label %arraydestroy.body arraydestroy.body: ; preds = %arraydestroy.body.preheader, %_ZN6aiFaceD2Ev.exit - %arraydestroy.elementPast = phi ptr [ %arraydestroy.element, %_ZN6aiFaceD2Ev.exit ], [ %delete.end108, %arraydestroy.body.preheader ] - %arraydestroy.element = getelementptr inbounds i8, ptr %arraydestroy.elementPast, i64 -16 - %mIndices.i = getelementptr inbounds i8, ptr %arraydestroy.elementPast, i64 -8 - %36 = load ptr, ptr %mIndices.i, align 8 + %arraydestroy.elementPast.idx = phi i64 [ %arraydestroy.elementPast.add, %_ZN6aiFaceD2Ev.exit ], [ %delete.end108.idx, %arraydestroy.body.preheader ] + %arraydestroy.elementPast.add = add nsw i64 %arraydestroy.elementPast.idx, -16 + %gep = getelementptr i8, ptr %invariant.gep, i64 %arraydestroy.elementPast.add + %36 = load ptr, ptr %gep, align 8 %isnull.i26 = icmp eq ptr %36, null br i1 %isnull.i26, label %_ZN6aiFaceD2Ev.exit, label %delete.notnull.i27 @@ -1345,7 +1346,7 @@ delete.notnull.i27: ; preds = %arraydestroy.body br label %_ZN6aiFaceD2Ev.exit _ZN6aiFaceD2Ev.exit: ; preds = %arraydestroy.body, %delete.notnull.i27 - %arraydestroy.done = icmp eq ptr %arraydestroy.element, %33 + %arraydestroy.done = icmp eq i64 %arraydestroy.elementPast.add, 0 br i1 %arraydestroy.done, label %arraydestroy.done109, label %arraydestroy.body arraydestroy.done109: ; preds = %_ZN6aiFaceD2Ev.exit, %delete.notnull107 diff --git a/bench/assimp/optimized/FindInvalidDataProcess.cpp.ll b/bench/assimp/optimized/FindInvalidDataProcess.cpp.ll index b546c5b1f35..1b0349f71eb 100644 --- a/bench/assimp/optimized/FindInvalidDataProcess.cpp.ll +++ b/bench/assimp/optimized/FindInvalidDataProcess.cpp.ll @@ -1468,14 +1468,15 @@ delete.notnull107: ; preds = %if.end105 br i1 %arraydestroy.isempty, label %arraydestroy.done109, label %arraydestroy.body.preheader arraydestroy.body.preheader: ; preds = %delete.notnull107 - %delete.end108 = getelementptr inbounds %struct.aiFace, ptr %33, i64 %35 + %delete.end108.idx = shl nsw i64 %35, 4 + %invariant.gep = getelementptr i8, ptr %33, i64 8 br label %arraydestroy.body arraydestroy.body: ; preds = %arraydestroy.body.preheader, %_ZN6aiFaceD2Ev.exit - %arraydestroy.elementPast = phi ptr [ %arraydestroy.element, %_ZN6aiFaceD2Ev.exit ], [ %delete.end108, %arraydestroy.body.preheader ] - %arraydestroy.element = getelementptr inbounds i8, ptr %arraydestroy.elementPast, i64 -16 - %mIndices.i = getelementptr inbounds i8, ptr %arraydestroy.elementPast, i64 -8 - %36 = load ptr, ptr %mIndices.i, align 8 + %arraydestroy.elementPast.idx = phi i64 [ %arraydestroy.elementPast.add, %_ZN6aiFaceD2Ev.exit ], [ %delete.end108.idx, %arraydestroy.body.preheader ] + %arraydestroy.elementPast.add = add nsw i64 %arraydestroy.elementPast.idx, -16 + %gep = getelementptr i8, ptr %invariant.gep, i64 %arraydestroy.elementPast.add + %36 = load ptr, ptr %gep, align 8 %isnull.i26 = icmp eq ptr %36, null br i1 %isnull.i26, label %_ZN6aiFaceD2Ev.exit, label %delete.notnull.i27 @@ -1484,7 +1485,7 @@ delete.notnull.i27: ; preds = %arraydestroy.body br label %_ZN6aiFaceD2Ev.exit _ZN6aiFaceD2Ev.exit: ; preds = %arraydestroy.body, %delete.notnull.i27 - %arraydestroy.done = icmp eq ptr %arraydestroy.element, %33 + %arraydestroy.done = icmp eq i64 %arraydestroy.elementPast.add, 0 br i1 %arraydestroy.done, label %arraydestroy.done109, label %arraydestroy.body arraydestroy.done109: ; preds = %_ZN6aiFaceD2Ev.exit, %delete.notnull107 diff --git a/bench/assimp/optimized/IFCLoader.cpp.ll b/bench/assimp/optimized/IFCLoader.cpp.ll index 1e93878f1f3..97ee7ba7630 100644 --- a/bench/assimp/optimized/IFCLoader.cpp.ll +++ b/bench/assimp/optimized/IFCLoader.cpp.ll @@ -71,7 +71,6 @@ target triple = "x86_64-unknown-linux-gnu" %"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr } %"struct.std::__detail::_Hash_node_base" = type { ptr } %"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 } -%struct.aiFace = type { i32, ptr } %"class.std::map.221" = type { %"class.std::_Rb_tree.222" } %"class.std::_Rb_tree.222" = type { %"struct.std::_Rb_tree, std::pair, std::__cxx11::basic_string>, std::_Select1st, std::__cxx11::basic_string>>, std::less>>::_Rb_tree_impl" } %"struct.std::_Rb_tree, std::pair, std::__cxx11::basic_string>, std::_Select1st, std::__cxx11::basic_string>>, std::less>>::_Rb_tree_impl" = type { %"struct.std::_Rb_tree_key_compare.16", %"struct.std::_Rb_tree_header" } @@ -4841,14 +4840,15 @@ delete.notnull107: ; preds = %if.end105 br i1 %arraydestroy.isempty, label %arraydestroy.done109, label %arraydestroy.body.preheader arraydestroy.body.preheader: ; preds = %delete.notnull107 - %delete.end108 = getelementptr inbounds %struct.aiFace, ptr %33, i64 %35 + %delete.end108.idx = shl nsw i64 %35, 4 + %invariant.gep = getelementptr i8, ptr %33, i64 8 br label %arraydestroy.body arraydestroy.body: ; preds = %arraydestroy.body.preheader, %_ZN6aiFaceD2Ev.exit - %arraydestroy.elementPast = phi ptr [ %arraydestroy.element, %_ZN6aiFaceD2Ev.exit ], [ %delete.end108, %arraydestroy.body.preheader ] - %arraydestroy.element = getelementptr inbounds i8, ptr %arraydestroy.elementPast, i64 -16 - %mIndices.i = getelementptr inbounds i8, ptr %arraydestroy.elementPast, i64 -8 - %36 = load ptr, ptr %mIndices.i, align 8 + %arraydestroy.elementPast.idx = phi i64 [ %arraydestroy.elementPast.add, %_ZN6aiFaceD2Ev.exit ], [ %delete.end108.idx, %arraydestroy.body.preheader ] + %arraydestroy.elementPast.add = add nsw i64 %arraydestroy.elementPast.idx, -16 + %gep = getelementptr i8, ptr %invariant.gep, i64 %arraydestroy.elementPast.add + %36 = load ptr, ptr %gep, align 8 %isnull.i26 = icmp eq ptr %36, null br i1 %isnull.i26, label %_ZN6aiFaceD2Ev.exit, label %delete.notnull.i27 @@ -4857,7 +4857,7 @@ delete.notnull.i27: ; preds = %arraydestroy.body br label %_ZN6aiFaceD2Ev.exit _ZN6aiFaceD2Ev.exit: ; preds = %arraydestroy.body, %delete.notnull.i27 - %arraydestroy.done = icmp eq ptr %arraydestroy.element, %33 + %arraydestroy.done = icmp eq i64 %arraydestroy.elementPast.add, 0 br i1 %arraydestroy.done, label %arraydestroy.done109, label %arraydestroy.body arraydestroy.done109: ; preds = %_ZN6aiFaceD2Ev.exit, %delete.notnull107 diff --git a/bench/assimp/optimized/LimitBoneWeightsProcess.cpp.ll b/bench/assimp/optimized/LimitBoneWeightsProcess.cpp.ll index 79ab98136a0..c9d97a8075a 100644 --- a/bench/assimp/optimized/LimitBoneWeightsProcess.cpp.ll +++ b/bench/assimp/optimized/LimitBoneWeightsProcess.cpp.ll @@ -368,15 +368,16 @@ for.body41: ; preds = %if.end33, %for.inc1 if.end49: ; preds = %for.body41 %41 = load ptr, ptr %vit.sroa.0.0116, align 8 - %arrayidx.i46 = getelementptr inbounds %"struct.Assimp::LimitBoneWeightsProcess::Weight", ptr %41, i64 %39 + %arrayidx.i46.idx = shl nsw i64 %39, 3 + %arrayidx.i46.ptr = getelementptr inbounds i8, ptr %41, i64 %arrayidx.i46.idx %42 = tail call i64 @llvm.ctlz.i64(i64 %39, i1 true), !range !9 %sub.i.i.i = shl nuw nsw i64 %42, 1 %mul.i.i = xor i64 %sub.i.i.i, 126 - invoke void @_ZSt16__introsort_loopIPN6Assimp23LimitBoneWeightsProcess6WeightElN9__gnu_cxx5__ops15_Iter_less_iterEEvT_S7_T0_T1_(ptr noundef %41, ptr noundef nonnull %arrayidx.i46, i64 noundef %mul.i.i) + invoke void @_ZSt16__introsort_loopIPN6Assimp23LimitBoneWeightsProcess6WeightElN9__gnu_cxx5__ops15_Iter_less_iterEEvT_S7_T0_T1_(ptr noundef %41, ptr noundef nonnull %arrayidx.i46.ptr, i64 noundef %mul.i.i) to label %.noexc unwind label %lpad16.loopexit .noexc: ; preds = %if.end49 - invoke void @_ZSt22__final_insertion_sortIPN6Assimp23LimitBoneWeightsProcess6WeightEN9__gnu_cxx5__ops15_Iter_less_iterEEvT_S7_T0_(ptr noundef %41, ptr noundef nonnull %arrayidx.i46) + invoke void @_ZSt22__final_insertion_sortIPN6Assimp23LimitBoneWeightsProcess6WeightEN9__gnu_cxx5__ops15_Iter_less_iterEEvT_S7_T0_(ptr noundef %41, ptr noundef nonnull %arrayidx.i46.ptr) to label %invoke.cont56 unwind label %lpad16.loopexit invoke.cont56: ; preds = %.noexc @@ -387,10 +388,10 @@ invoke.cont56: ; preds = %.noexc %45 = load i64, ptr %mCapacity.i49, align 8 %cmp.i50 = icmp ult i64 %45, %conv63 %.pre139 = load ptr, ptr %vit.sroa.0.0116, align 8 + %46 = shl nuw nsw i64 %conv63, 3 br i1 %cmp.i50, label %arrayctor.cont.i.i, label %invoke.cont64 arrayctor.cont.i.i: ; preds = %invoke.cont56 - %46 = shl nuw nsw i64 %conv63, 3 %call.i.i55 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %46) #13 to label %call.i.i.noexc unwind label %lpad16.loopexit @@ -412,14 +413,14 @@ delete.notnull.i.i: ; preds = %call.i.i.noexc %.pre138 = load ptr, ptr %vit.sroa.0.0116, align 8 br label %invoke.cont64 -invoke.cont64: ; preds = %delete.notnull.i.i, %call.i.i.noexc, %invoke.cont56 +invoke.cont64: ; preds = %invoke.cont56, %delete.notnull.i.i, %call.i.i.noexc %48 = phi ptr [ %.pre138, %delete.notnull.i.i ], [ %call.i.i55, %call.i.i.noexc ], [ %.pre139, %invoke.cont56 ] store i64 %conv63, ptr %mSize.i44, align 8 %49 = trunc i64 %43 to i32 %conv69 = sub i32 %49, %44 %add = add i32 %conv69, %38 store i32 %add, ptr %removed, align 4 - %arrayidx.i58 = getelementptr inbounds %"struct.Assimp::LimitBoneWeightsProcess::Weight", ptr %48, i64 %conv63 + %arrayidx.i58.ptr = getelementptr inbounds i8, ptr %48, i64 %46 %cmp77.not108 = icmp eq i32 %44, 0 br i1 %cmp77.not108, label %for.inc100, label %for.body78 @@ -430,7 +431,7 @@ for.body78: ; preds = %invoke.cont64, %for %50 = load float, ptr %mWeight79, align 4 %add80 = fadd float %sum.0109, %50 %incdec.ptr = getelementptr inbounds i8, ptr %it.0110, i64 8 - %cmp77.not = icmp eq ptr %incdec.ptr, %arrayidx.i58 + %cmp77.not = icmp eq ptr %incdec.ptr, %arrayidx.i58.ptr br i1 %cmp77.not, label %for.end82, label %for.body78, !llvm.loop !10 for.end82: ; preds = %for.body78 diff --git a/bench/assimp/optimized/NDOLoader.cpp.ll b/bench/assimp/optimized/NDOLoader.cpp.ll index 5e2512e0c01..bb7b034fc6c 100644 --- a/bench/assimp/optimized/NDOLoader.cpp.ll +++ b/bench/assimp/optimized/NDOLoader.cpp.ll @@ -3375,14 +3375,15 @@ delete.notnull107: ; preds = %if.end105 br i1 %arraydestroy.isempty, label %arraydestroy.done109, label %arraydestroy.body.preheader arraydestroy.body.preheader: ; preds = %delete.notnull107 - %delete.end108 = getelementptr inbounds %struct.aiFace, ptr %33, i64 %35 + %delete.end108.idx = shl nsw i64 %35, 4 + %invariant.gep = getelementptr i8, ptr %33, i64 8 br label %arraydestroy.body arraydestroy.body: ; preds = %arraydestroy.body.preheader, %_ZN6aiFaceD2Ev.exit - %arraydestroy.elementPast = phi ptr [ %arraydestroy.element, %_ZN6aiFaceD2Ev.exit ], [ %delete.end108, %arraydestroy.body.preheader ] - %arraydestroy.element = getelementptr inbounds i8, ptr %arraydestroy.elementPast, i64 -16 - %mIndices.i = getelementptr inbounds i8, ptr %arraydestroy.elementPast, i64 -8 - %36 = load ptr, ptr %mIndices.i, align 8 + %arraydestroy.elementPast.idx = phi i64 [ %arraydestroy.elementPast.add, %_ZN6aiFaceD2Ev.exit ], [ %delete.end108.idx, %arraydestroy.body.preheader ] + %arraydestroy.elementPast.add = add nsw i64 %arraydestroy.elementPast.idx, -16 + %gep = getelementptr i8, ptr %invariant.gep, i64 %arraydestroy.elementPast.add + %36 = load ptr, ptr %gep, align 8 %isnull.i26 = icmp eq ptr %36, null br i1 %isnull.i26, label %_ZN6aiFaceD2Ev.exit, label %delete.notnull.i27 @@ -3391,7 +3392,7 @@ delete.notnull.i27: ; preds = %arraydestroy.body br label %_ZN6aiFaceD2Ev.exit _ZN6aiFaceD2Ev.exit: ; preds = %arraydestroy.body, %delete.notnull.i27 - %arraydestroy.done = icmp eq ptr %arraydestroy.element, %33 + %arraydestroy.done = icmp eq i64 %arraydestroy.elementPast.add, 0 br i1 %arraydestroy.done, label %arraydestroy.done109, label %arraydestroy.body arraydestroy.done109: ; preds = %_ZN6aiFaceD2Ev.exit, %delete.notnull107 diff --git a/bench/assimp/optimized/ObjFileImporter.cpp.ll b/bench/assimp/optimized/ObjFileImporter.cpp.ll index dac12775b0b..a002b517653 100644 --- a/bench/assimp/optimized/ObjFileImporter.cpp.ll +++ b/bench/assimp/optimized/ObjFileImporter.cpp.ll @@ -2986,14 +2986,15 @@ delete.notnull107: ; preds = %if.end105 br i1 %arraydestroy.isempty, label %arraydestroy.done109, label %arraydestroy.body.preheader arraydestroy.body.preheader: ; preds = %delete.notnull107 - %delete.end108 = getelementptr inbounds %struct.aiFace, ptr %33, i64 %35 + %delete.end108.idx = shl nsw i64 %35, 4 + %invariant.gep = getelementptr i8, ptr %33, i64 8 br label %arraydestroy.body arraydestroy.body: ; preds = %arraydestroy.body.preheader, %_ZN6aiFaceD2Ev.exit - %arraydestroy.elementPast = phi ptr [ %arraydestroy.element, %_ZN6aiFaceD2Ev.exit ], [ %delete.end108, %arraydestroy.body.preheader ] - %arraydestroy.element = getelementptr inbounds i8, ptr %arraydestroy.elementPast, i64 -16 - %mIndices.i = getelementptr inbounds i8, ptr %arraydestroy.elementPast, i64 -8 - %36 = load ptr, ptr %mIndices.i, align 8 + %arraydestroy.elementPast.idx = phi i64 [ %arraydestroy.elementPast.add, %_ZN6aiFaceD2Ev.exit ], [ %delete.end108.idx, %arraydestroy.body.preheader ] + %arraydestroy.elementPast.add = add nsw i64 %arraydestroy.elementPast.idx, -16 + %gep = getelementptr i8, ptr %invariant.gep, i64 %arraydestroy.elementPast.add + %36 = load ptr, ptr %gep, align 8 %isnull.i26 = icmp eq ptr %36, null br i1 %isnull.i26, label %_ZN6aiFaceD2Ev.exit, label %delete.notnull.i27 @@ -3002,7 +3003,7 @@ delete.notnull.i27: ; preds = %arraydestroy.body br label %_ZN6aiFaceD2Ev.exit _ZN6aiFaceD2Ev.exit: ; preds = %arraydestroy.body, %delete.notnull.i27 - %arraydestroy.done = icmp eq ptr %arraydestroy.element, %33 + %arraydestroy.done = icmp eq i64 %arraydestroy.elementPast.add, 0 br i1 %arraydestroy.done, label %arraydestroy.done109, label %arraydestroy.body arraydestroy.done109: ; preds = %_ZN6aiFaceD2Ev.exit, %delete.notnull107 diff --git a/bench/assimp/optimized/OptimizeGraph.cpp.ll b/bench/assimp/optimized/OptimizeGraph.cpp.ll index 2bbf20b8509..16a89e59936 100644 --- a/bench/assimp/optimized/OptimizeGraph.cpp.ll +++ b/bench/assimp/optimized/OptimizeGraph.cpp.ll @@ -3262,18 +3262,18 @@ if.then4: ; preds = %if.then br i1 %cmp10, label %if.then11, label %if.else if.then11: ; preds = %if.then4 - %idx.neg = sub i64 0, %__n - %add.ptr = getelementptr inbounds i32, ptr %1, i64 %idx.neg + %.neg = mul i64 %__n, -4 + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %.neg %add.ptr.idx.neg = shl i64 %__n, 2 - tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %1, ptr nonnull align 4 %add.ptr, i64 %add.ptr.idx.neg, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %1, ptr align 4 %add.ptr.ptr, i64 %add.ptr.idx.neg, i1 false) %3 = load ptr, ptr %_M_finish, align 8 %add.ptr16 = getelementptr inbounds i32, ptr %3, i64 %__n store ptr %add.ptr16, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce + %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %invoke.cont20, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %if.then11 - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 2 %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i diff --git a/bench/assimp/optimized/PlyLoader.cpp.ll b/bench/assimp/optimized/PlyLoader.cpp.ll index 816aa6c0798..c5ef2adcd2e 100644 --- a/bench/assimp/optimized/PlyLoader.cpp.ll +++ b/bench/assimp/optimized/PlyLoader.cpp.ll @@ -40,7 +40,6 @@ target triple = "x86_64-unknown-linux-gnu" %"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr } %"struct.std::__detail::_Hash_node_base" = type { ptr } %"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 } -%struct.aiFace = type { i32, ptr } %class.aiColor4t = type { float, float, float, float } %struct.aiString = type { i32, [1024 x i8] } %struct.aiColor3D = type { float, float, float } @@ -55,6 +54,7 @@ target triple = "x86_64-unknown-linux-gnu" %"struct.std::_Vector_base>::_Vector_impl" = type { %"struct.std::_Vector_base>::_Vector_impl_data" } %"struct.std::_Vector_base>::_Vector_impl_data" = type { ptr, ptr, ptr } %class.aiVector3t = type { float, float, float } +%struct.aiFace = type { i32, ptr } %struct._Guard = type { ptr } $_ZN17DeadlyImportErrorC2IJRA21_KcRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERA2_S1_EEEDpOT_ = comdat any @@ -1700,14 +1700,15 @@ delete.notnull107: ; preds = %if.end105 br i1 %arraydestroy.isempty, label %arraydestroy.done109, label %arraydestroy.body.preheader arraydestroy.body.preheader: ; preds = %delete.notnull107 - %delete.end108 = getelementptr inbounds %struct.aiFace, ptr %33, i64 %35 + %delete.end108.idx = shl nsw i64 %35, 4 + %invariant.gep = getelementptr i8, ptr %33, i64 8 br label %arraydestroy.body arraydestroy.body: ; preds = %arraydestroy.body.preheader, %_ZN6aiFaceD2Ev.exit - %arraydestroy.elementPast = phi ptr [ %arraydestroy.element, %_ZN6aiFaceD2Ev.exit ], [ %delete.end108, %arraydestroy.body.preheader ] - %arraydestroy.element = getelementptr inbounds i8, ptr %arraydestroy.elementPast, i64 -16 - %mIndices.i = getelementptr inbounds i8, ptr %arraydestroy.elementPast, i64 -8 - %36 = load ptr, ptr %mIndices.i, align 8 + %arraydestroy.elementPast.idx = phi i64 [ %arraydestroy.elementPast.add, %_ZN6aiFaceD2Ev.exit ], [ %delete.end108.idx, %arraydestroy.body.preheader ] + %arraydestroy.elementPast.add = add nsw i64 %arraydestroy.elementPast.idx, -16 + %gep = getelementptr i8, ptr %invariant.gep, i64 %arraydestroy.elementPast.add + %36 = load ptr, ptr %gep, align 8 %isnull.i26 = icmp eq ptr %36, null br i1 %isnull.i26, label %_ZN6aiFaceD2Ev.exit, label %delete.notnull.i27 @@ -1716,7 +1717,7 @@ delete.notnull.i27: ; preds = %arraydestroy.body br label %_ZN6aiFaceD2Ev.exit _ZN6aiFaceD2Ev.exit: ; preds = %arraydestroy.body, %delete.notnull.i27 - %arraydestroy.done = icmp eq ptr %arraydestroy.element, %33 + %arraydestroy.done = icmp eq i64 %arraydestroy.elementPast.add, 0 br i1 %arraydestroy.done, label %arraydestroy.done109, label %arraydestroy.body arraydestroy.done109: ; preds = %_ZN6aiFaceD2Ev.exit, %delete.notnull107 diff --git a/bench/assimp/optimized/STEPFileEncoding.cpp.ll b/bench/assimp/optimized/STEPFileEncoding.cpp.ll index d2df94f2cc1..f12cef04929 100644 --- a/bench/assimp/optimized/STEPFileEncoding.cpp.ll +++ b/bench/assimp/optimized/STEPFileEncoding.cpp.ll @@ -703,7 +703,7 @@ for.end225: ; preds = %invoke.cont216 to label %while.body.i283.preheader unwind label %lpad198 while.body.i283.preheader: ; preds = %for.end225 - %add.ptr235 = getelementptr inbounds i32, ptr %call190, i64 %div188118 + %add.ptr235.ptr = getelementptr inbounds i8, ptr %call190, i64 %47 br label %while.body.i283 while.body.i283: ; preds = %while.body.i283.preheader, %call.i287.noexc @@ -715,7 +715,7 @@ while.body.i283: ; preds = %while.body.i283.pre call.i287.noexc: ; preds = %while.body.i283 %incdec.ptr.i286 = getelementptr inbounds i8, ptr %start.addr.04.i285, i64 4 - %cmp.not.i288 = icmp eq ptr %incdec.ptr.i286, %add.ptr235 + %cmp.not.i288 = icmp eq ptr %incdec.ptr.i286, %add.ptr235.ptr br i1 %cmp.not.i288, label %invoke.cont237, label %while.body.i283, !llvm.loop !9 invoke.cont237: ; preds = %call.i287.noexc @@ -925,7 +925,7 @@ if.then10.i.i: ; preds = %if.else8.i.i if.else24.i.i: ; preds = %if.else8.i.i %shr25.i.i = lshr i32 %cp, 18 %11 = trunc i32 %shr25.i.i to i8 - %conv27.i.i = or i8 %11, -16 + %conv27.i.i = or disjoint i8 %11, -16 store i8 %conv27.i.i, ptr %result, align 1 %shr29.i.i = lshr i32 %cp, 12 %12 = trunc i32 %shr29.i.i to i8 diff --git a/bench/assimp/optimized/SceneCombiner.cpp.ll b/bench/assimp/optimized/SceneCombiner.cpp.ll index f97ec53f41e..a0f9ad03d80 100644 --- a/bench/assimp/optimized/SceneCombiner.cpp.ll +++ b/bench/assimp/optimized/SceneCombiner.cpp.ll @@ -7462,14 +7462,15 @@ delete.notnull107: ; preds = %if.end105 br i1 %arraydestroy.isempty, label %arraydestroy.done109, label %arraydestroy.body.preheader arraydestroy.body.preheader: ; preds = %delete.notnull107 - %delete.end108 = getelementptr inbounds %struct.aiFace, ptr %33, i64 %35 + %delete.end108.idx = shl nsw i64 %35, 4 + %invariant.gep = getelementptr i8, ptr %33, i64 8 br label %arraydestroy.body arraydestroy.body: ; preds = %arraydestroy.body.preheader, %_ZN6aiFaceD2Ev.exit - %arraydestroy.elementPast = phi ptr [ %arraydestroy.element, %_ZN6aiFaceD2Ev.exit ], [ %delete.end108, %arraydestroy.body.preheader ] - %arraydestroy.element = getelementptr inbounds i8, ptr %arraydestroy.elementPast, i64 -16 - %mIndices.i = getelementptr inbounds i8, ptr %arraydestroy.elementPast, i64 -8 - %36 = load ptr, ptr %mIndices.i, align 8 + %arraydestroy.elementPast.idx = phi i64 [ %arraydestroy.elementPast.add, %_ZN6aiFaceD2Ev.exit ], [ %delete.end108.idx, %arraydestroy.body.preheader ] + %arraydestroy.elementPast.add = add nsw i64 %arraydestroy.elementPast.idx, -16 + %gep = getelementptr i8, ptr %invariant.gep, i64 %arraydestroy.elementPast.add + %36 = load ptr, ptr %gep, align 8 %isnull.i26 = icmp eq ptr %36, null br i1 %isnull.i26, label %_ZN6aiFaceD2Ev.exit, label %delete.notnull.i27 @@ -7478,7 +7479,7 @@ delete.notnull.i27: ; preds = %arraydestroy.body br label %_ZN6aiFaceD2Ev.exit _ZN6aiFaceD2Ev.exit: ; preds = %arraydestroy.body, %delete.notnull.i27 - %arraydestroy.done = icmp eq ptr %arraydestroy.element, %33 + %arraydestroy.done = icmp eq i64 %arraydestroy.elementPast.add, 0 br i1 %arraydestroy.done, label %arraydestroy.done109, label %arraydestroy.body arraydestroy.done109: ; preds = %_ZN6aiFaceD2Ev.exit, %delete.notnull107 diff --git a/bench/assimp/optimized/SpatialSort.cpp.ll b/bench/assimp/optimized/SpatialSort.cpp.ll index bf85ff7965b..d2e99d2e9de 100644 --- a/bench/assimp/optimized/SpatialSort.cpp.ll +++ b/bench/assimp/optimized/SpatialSort.cpp.ll @@ -1751,18 +1751,18 @@ if.then4: ; preds = %if.then br i1 %cmp10, label %if.then11, label %if.else if.then11: ; preds = %if.then4 - %idx.neg = sub i64 0, %__n - %add.ptr = getelementptr inbounds i32, ptr %1, i64 %idx.neg + %.neg = mul i64 %__n, -4 + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %.neg %add.ptr.idx.neg = shl i64 %__n, 2 - tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %1, ptr nonnull align 4 %add.ptr, i64 %add.ptr.idx.neg, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %1, ptr align 4 %add.ptr.ptr, i64 %add.ptr.idx.neg, i1 false) %3 = load ptr, ptr %_M_finish, align 8 %add.ptr16 = getelementptr inbounds i32, ptr %3, i64 %__n store ptr %add.ptr16, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce + %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %invoke.cont20, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %if.then11 - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 2 %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i diff --git a/bench/assimp/optimized/SplitByBoneCountProcess.cpp.ll b/bench/assimp/optimized/SplitByBoneCountProcess.cpp.ll index b99b8631e07..8c580882f30 100644 --- a/bench/assimp/optimized/SplitByBoneCountProcess.cpp.ll +++ b/bench/assimp/optimized/SplitByBoneCountProcess.cpp.ll @@ -2912,14 +2912,15 @@ delete.notnull107: ; preds = %if.end105 br i1 %arraydestroy.isempty, label %arraydestroy.done109, label %arraydestroy.body.preheader arraydestroy.body.preheader: ; preds = %delete.notnull107 - %delete.end108 = getelementptr inbounds %struct.aiFace, ptr %33, i64 %35 + %delete.end108.idx = shl nsw i64 %35, 4 + %invariant.gep = getelementptr i8, ptr %33, i64 8 br label %arraydestroy.body arraydestroy.body: ; preds = %arraydestroy.body.preheader, %_ZN6aiFaceD2Ev.exit - %arraydestroy.elementPast = phi ptr [ %arraydestroy.element, %_ZN6aiFaceD2Ev.exit ], [ %delete.end108, %arraydestroy.body.preheader ] - %arraydestroy.element = getelementptr inbounds i8, ptr %arraydestroy.elementPast, i64 -16 - %mIndices.i = getelementptr inbounds i8, ptr %arraydestroy.elementPast, i64 -8 - %36 = load ptr, ptr %mIndices.i, align 8 + %arraydestroy.elementPast.idx = phi i64 [ %arraydestroy.elementPast.add, %_ZN6aiFaceD2Ev.exit ], [ %delete.end108.idx, %arraydestroy.body.preheader ] + %arraydestroy.elementPast.add = add nsw i64 %arraydestroy.elementPast.idx, -16 + %gep = getelementptr i8, ptr %invariant.gep, i64 %arraydestroy.elementPast.add + %36 = load ptr, ptr %gep, align 8 %isnull.i26 = icmp eq ptr %36, null br i1 %isnull.i26, label %_ZN6aiFaceD2Ev.exit, label %delete.notnull.i27 @@ -2928,7 +2929,7 @@ delete.notnull.i27: ; preds = %arraydestroy.body br label %_ZN6aiFaceD2Ev.exit _ZN6aiFaceD2Ev.exit: ; preds = %arraydestroy.body, %delete.notnull.i27 - %arraydestroy.done = icmp eq ptr %arraydestroy.element, %33 + %arraydestroy.done = icmp eq i64 %arraydestroy.elementPast.add, 0 br i1 %arraydestroy.done, label %arraydestroy.done109, label %arraydestroy.body arraydestroy.done109: ; preds = %_ZN6aiFaceD2Ev.exit, %delete.notnull107 diff --git a/bench/assimp/optimized/Subdivision.cpp.ll b/bench/assimp/optimized/Subdivision.cpp.ll index 387849c7767..d7e8e309b5d 100644 --- a/bench/assimp/optimized/Subdivision.cpp.ll +++ b/bench/assimp/optimized/Subdivision.cpp.ll @@ -4784,14 +4784,15 @@ delete.notnull107: ; preds = %if.end105 br i1 %arraydestroy.isempty, label %arraydestroy.done109, label %arraydestroy.body.preheader arraydestroy.body.preheader: ; preds = %delete.notnull107 - %delete.end108 = getelementptr inbounds %struct.aiFace, ptr %33, i64 %35 + %delete.end108.idx = shl nsw i64 %35, 4 + %invariant.gep = getelementptr i8, ptr %33, i64 8 br label %arraydestroy.body arraydestroy.body: ; preds = %arraydestroy.body.preheader, %_ZN6aiFaceD2Ev.exit - %arraydestroy.elementPast = phi ptr [ %arraydestroy.element, %_ZN6aiFaceD2Ev.exit ], [ %delete.end108, %arraydestroy.body.preheader ] - %arraydestroy.element = getelementptr inbounds i8, ptr %arraydestroy.elementPast, i64 -16 - %mIndices.i = getelementptr inbounds i8, ptr %arraydestroy.elementPast, i64 -8 - %36 = load ptr, ptr %mIndices.i, align 8 + %arraydestroy.elementPast.idx = phi i64 [ %arraydestroy.elementPast.add, %_ZN6aiFaceD2Ev.exit ], [ %delete.end108.idx, %arraydestroy.body.preheader ] + %arraydestroy.elementPast.add = add nsw i64 %arraydestroy.elementPast.idx, -16 + %gep = getelementptr i8, ptr %invariant.gep, i64 %arraydestroy.elementPast.add + %36 = load ptr, ptr %gep, align 8 %isnull.i26 = icmp eq ptr %36, null br i1 %isnull.i26, label %_ZN6aiFaceD2Ev.exit, label %delete.notnull.i27 @@ -4800,7 +4801,7 @@ delete.notnull.i27: ; preds = %arraydestroy.body br label %_ZN6aiFaceD2Ev.exit _ZN6aiFaceD2Ev.exit: ; preds = %arraydestroy.body, %delete.notnull.i27 - %arraydestroy.done = icmp eq ptr %arraydestroy.element, %33 + %arraydestroy.done = icmp eq i64 %arraydestroy.elementPast.add, 0 br i1 %arraydestroy.done, label %arraydestroy.done109, label %arraydestroy.body arraydestroy.done109: ; preds = %_ZN6aiFaceD2Ev.exit, %delete.notnull107 diff --git a/bench/assimp/optimized/TextureTransform.cpp.ll b/bench/assimp/optimized/TextureTransform.cpp.ll index 9fe95bbbf35..c82523cc0d6 100644 --- a/bench/assimp/optimized/TextureTransform.cpp.ll +++ b/bench/assimp/optimized/TextureTransform.cpp.ll @@ -26,7 +26,6 @@ target triple = "x86_64-unknown-linux-gnu" %"class.std::__cxx11::list.3" = type { %"class.std::__cxx11::_List_base.4" } %"class.std::__cxx11::_List_base.4" = type { %"struct.std::__cxx11::_List_base>::_List_impl" } %"struct.std::__cxx11::_List_base>::_List_impl" = type { %"struct.std::__detail::_List_node_header" } -%class.aiVector3t = type { float, float, float } $_ZN6Assimp6Logger4infoIJRA29_KcRfRA23_S2_S5_EEEvDpOT_ = comdat any @@ -1604,7 +1603,8 @@ if.then529: ; preds = %if.end520 if.end533: ; preds = %if.then529, %if.end520 %159 = load i32, ptr %mNumVertices, align 4 %idx.ext = zext i32 %159 to i64 - %add.ptr = getelementptr inbounds %class.aiVector3t, ptr %155, i64 %idx.ext + %add.ptr.idx = mul nuw nsw i64 %idx.ext, 12 + %add.ptr.ptr = getelementptr inbounds i8, ptr %155, i64 %add.ptr.idx %y8.i303 = getelementptr inbounds i8, ptr %it236.sroa.0.3689, i64 20 %160 = load <4 x float>, ptr %_M_storage.i.i294, align 8 %.fr777 = freeze <4 x float> %160 @@ -1737,7 +1737,7 @@ for.body574: ; preds = %invoke.cont571, %fo store <2 x float> %247, ptr %src.0684, align 4 store float 0.000000e+00, ptr %z, align 4 %incdec.ptr = getelementptr inbounds i8, ptr %src.0684, i64 12 - %cmp573.not = icmp eq ptr %incdec.ptr, %add.ptr + %cmp573.not = icmp eq ptr %incdec.ptr, %add.ptr.ptr br i1 %cmp573.not, label %if.end586, label %for.body574, !llvm.loop !24 if.end586: ; preds = %for.body574, %if.end533, %invoke.cont571 diff --git a/bench/assimp/optimized/glTFImporter.cpp.ll b/bench/assimp/optimized/glTFImporter.cpp.ll index 622a89026ce..d6fa6f29b82 100644 --- a/bench/assimp/optimized/glTFImporter.cpp.ll +++ b/bench/assimp/optimized/glTFImporter.cpp.ll @@ -54950,18 +54950,18 @@ if.then4: ; preds = %if.then br i1 %cmp10, label %if.then11, label %if.else if.then11: ; preds = %if.then4 - %idx.neg = sub i64 0, %__n - %add.ptr = getelementptr inbounds i32, ptr %1, i64 %idx.neg + %.neg = mul i64 %__n, -4 + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %.neg %add.ptr.idx.neg = shl i64 %__n, 2 - tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %1, ptr nonnull align 4 %add.ptr, i64 %add.ptr.idx.neg, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %1, ptr align 4 %add.ptr.ptr, i64 %add.ptr.idx.neg, i1 false) %3 = load ptr, ptr %_M_finish, align 8 %add.ptr16 = getelementptr inbounds i32, ptr %3, i64 %__n store ptr %add.ptr16, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce + %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %invoke.cont20, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %if.then11 - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 2 %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i diff --git a/bench/cvc5/optimized/ackermann.cpp.ll b/bench/cvc5/optimized/ackermann.cpp.ll index 7256abb602c..0bedc19f3d0 100644 --- a/bench/cvc5/optimized/ackermann.cpp.ll +++ b/bench/cvc5/optimized/ackermann.cpp.ll @@ -5816,25 +5816,26 @@ if.then9: ; preds = %if.then br i1 %cmp15, label %for.inc.i.i.i.i.i.preheader, label %_ZSt7advanceIN4cvc58internal4expr9NodeValue8iteratorINS1_12NodeTemplateILb0EEEEEmEvRT_T0_.exit for.inc.i.i.i.i.i.preheader: ; preds = %if.then9 - %idx.neg = sub nsw i64 0, %sub.ptr.div.i.i.i - %add.ptr = getelementptr %"class.cvc5::internal::NodeTemplate.77", ptr %1, i64 %idx.neg + %add.ptr.idx = sub i64 0, %sub.ptr.sub.i.i.i + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr.idx br label %for.inc.i.i.i.i.i for.inc.i.i.i.i.i: ; preds = %for.inc.i.i.i.i.i.preheader, %for.inc.i.i.i.i.i %__cur.09.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %1, %for.inc.i.i.i.i.i.preheader ] - %__first.sroa.0.08.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %add.ptr, %for.inc.i.i.i.i.i.preheader ] - %2 = load ptr, ptr %__first.sroa.0.08.i.i.i.i.i, align 8 + %__first.sroa.0.08.i.i.i.i.i.idx = phi i64 [ %__first.sroa.0.08.i.i.i.i.i.add, %for.inc.i.i.i.i.i ], [ %add.ptr.idx, %for.inc.i.i.i.i.i.preheader ] + %__first.sroa.0.08.i.i.i.i.i.ptr = getelementptr inbounds i8, ptr %1, i64 %__first.sroa.0.08.i.i.i.i.i.idx + %2 = load ptr, ptr %__first.sroa.0.08.i.i.i.i.i.ptr, align 8 store ptr %2, ptr %__cur.09.i.i.i.i.i, align 8 - %incdec.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.08.i.i.i.i.i, i64 8 + %__first.sroa.0.08.i.i.i.i.i.add = add nsw i64 %__first.sroa.0.08.i.i.i.i.i.idx, 8 %incdec.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.09.i.i.i.i.i, i64 8 - %cmp.i.i.not.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i, %1 + %cmp.i.i.not.i.i.i.i.i = icmp eq i64 %__first.sroa.0.08.i.i.i.i.i.add, 0 br i1 %cmp.i.i.not.i.i.i.i.i, label %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit, label %for.inc.i.i.i.i.i, !llvm.loop !75 _ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit: ; preds = %for.inc.i.i.i.i.i %.pre109 = load ptr, ptr %_M_finish, align 8 %add.ptr27 = getelementptr inbounds i8, ptr %.pre109, i64 %sub.ptr.sub.i.i.i store ptr %add.ptr27, ptr %_M_finish, align 8 - %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %cmp4.i.i.i.i.i = icmp sgt i64 %sub.ptr.div.i.i.i.i.i, 0 @@ -5843,7 +5844,7 @@ _ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_ for.body.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i %__n.07.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %sub.ptr.div.i.i.i.i.i, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] %__result.addr.06.i.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i.i, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %1, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] - %__last.addr.05.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i26, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %add.ptr, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] + %__last.addr.05.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i26, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %add.ptr.ptr, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] %incdec.ptr.i.i.i.i.i26 = getelementptr inbounds i8, ptr %__last.addr.05.i.i.i.i.i, i64 -8 %incdec.ptr1.i.i.i.i.i = getelementptr inbounds i8, ptr %__result.addr.06.i.i.i.i.i, i64 -8 %3 = load ptr, ptr %incdec.ptr1.i.i.i.i.i, align 8 diff --git a/bench/cvc5/optimized/addition.cpp.ll b/bench/cvc5/optimized/addition.cpp.ll index 3463b2d2ae2..a978621630c 100644 --- a/bench/cvc5/optimized/addition.cpp.ll +++ b/bench/cvc5/optimized/addition.cpp.ll @@ -4734,25 +4734,26 @@ if.then9: ; preds = %if.then br i1 %cmp15, label %for.inc.i.i.i.i.i.preheader, label %_ZSt7advanceIN4cvc58internal4expr9NodeValue8iteratorINS1_12NodeTemplateILb0EEEEEmEvRT_T0_.exit for.inc.i.i.i.i.i.preheader: ; preds = %if.then9 - %idx.neg = sub nsw i64 0, %sub.ptr.div.i.i.i - %add.ptr = getelementptr %"class.cvc5::internal::NodeTemplate.0", ptr %1, i64 %idx.neg + %add.ptr.idx = sub i64 0, %sub.ptr.sub.i.i.i + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr.idx br label %for.inc.i.i.i.i.i for.inc.i.i.i.i.i: ; preds = %for.inc.i.i.i.i.i.preheader, %for.inc.i.i.i.i.i %__cur.09.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %1, %for.inc.i.i.i.i.i.preheader ] - %__first.sroa.0.08.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %add.ptr, %for.inc.i.i.i.i.i.preheader ] - %2 = load ptr, ptr %__first.sroa.0.08.i.i.i.i.i, align 8 + %__first.sroa.0.08.i.i.i.i.i.idx = phi i64 [ %__first.sroa.0.08.i.i.i.i.i.add, %for.inc.i.i.i.i.i ], [ %add.ptr.idx, %for.inc.i.i.i.i.i.preheader ] + %__first.sroa.0.08.i.i.i.i.i.ptr = getelementptr inbounds i8, ptr %1, i64 %__first.sroa.0.08.i.i.i.i.i.idx + %2 = load ptr, ptr %__first.sroa.0.08.i.i.i.i.i.ptr, align 8 store ptr %2, ptr %__cur.09.i.i.i.i.i, align 8 - %incdec.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.08.i.i.i.i.i, i64 8 + %__first.sroa.0.08.i.i.i.i.i.add = add nsw i64 %__first.sroa.0.08.i.i.i.i.i.idx, 8 %incdec.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.09.i.i.i.i.i, i64 8 - %cmp.i.i.not.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i, %1 + %cmp.i.i.not.i.i.i.i.i = icmp eq i64 %__first.sroa.0.08.i.i.i.i.i.add, 0 br i1 %cmp.i.i.not.i.i.i.i.i, label %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit, label %for.inc.i.i.i.i.i, !llvm.loop !49 _ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit: ; preds = %for.inc.i.i.i.i.i %.pre109 = load ptr, ptr %_M_finish, align 8 %add.ptr27 = getelementptr inbounds i8, ptr %.pre109, i64 %sub.ptr.sub.i.i.i store ptr %add.ptr27, ptr %_M_finish, align 8 - %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %cmp4.i.i.i.i.i = icmp sgt i64 %sub.ptr.div.i.i.i.i.i, 0 @@ -4761,7 +4762,7 @@ _ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_ for.body.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i %__n.07.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %sub.ptr.div.i.i.i.i.i, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] %__result.addr.06.i.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i.i, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %1, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] - %__last.addr.05.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i26, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %add.ptr, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] + %__last.addr.05.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i26, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %add.ptr.ptr, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] %incdec.ptr.i.i.i.i.i26 = getelementptr inbounds i8, ptr %__last.addr.05.i.i.i.i.i, i64 -8 %incdec.ptr1.i.i.i.i.i = getelementptr inbounds i8, ptr %__result.addr.06.i.i.i.i.i, i64 -8 %3 = load ptr, ptr %incdec.ptr1.i.i.i.i.i, align 8 diff --git a/bench/cvc5/optimized/bags_rewriter.cpp.ll b/bench/cvc5/optimized/bags_rewriter.cpp.ll index 072e2b8ef61..b2e4486509e 100644 --- a/bench/cvc5/optimized/bags_rewriter.cpp.ll +++ b/bench/cvc5/optimized/bags_rewriter.cpp.ll @@ -19363,18 +19363,18 @@ if.then4: ; preds = %if.then br i1 %cmp10, label %if.then11, label %if.else if.then11: ; preds = %if.then4 - %idx.neg = sub i64 0, %__n - %add.ptr = getelementptr inbounds i64, ptr %1, i64 %idx.neg + %.neg = mul i64 %__n, -8 + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %.neg %add.ptr.idx.neg = shl i64 %__n, 3 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr nonnull align 8 %add.ptr, i64 %add.ptr.idx.neg, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %add.ptr.ptr, i64 %add.ptr.idx.neg, i1 false) %3 = load ptr, ptr %_M_finish, align 8 %add.ptr16 = getelementptr inbounds i64, ptr %3, i64 %__n store ptr %add.ptr16, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce + %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %invoke.cont20, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %if.then11 - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i diff --git a/bench/cvc5/optimized/bv_gauss.cpp.ll b/bench/cvc5/optimized/bv_gauss.cpp.ll index 40fd65e2809..737695e8962 100644 --- a/bench/cvc5/optimized/bv_gauss.cpp.ll +++ b/bench/cvc5/optimized/bv_gauss.cpp.ll @@ -17501,20 +17501,21 @@ if.then4: ; preds = %if.then br i1 %cmp10, label %if.then11, label %if.else if.then11: ; preds = %if.then4 - %idx.neg = sub i64 0, %__n - %add.ptr = getelementptr inbounds %"class.cvc5::internal::Integer", ptr %2, i64 %idx.neg + %.neg = mul i64 %__n, -16 + %add.ptr.ptr = getelementptr inbounds i8, ptr %2, i64 %.neg br label %for.body.i.i.i.i.i for.body.i.i.i.i.i: ; preds = %if.then11, %for.inc.i.i.i.i.i %__cur.010.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %2, %if.then11 ] - %__first.sroa.0.09.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %add.ptr, %if.then11 ] - invoke void @__gmpz_init_set(ptr noundef nonnull %__cur.010.i.i.i.i.i, ptr noundef nonnull %__first.sroa.0.09.i.i.i.i.i) + %__first.sroa.0.09.i.i.i.i.i.idx = phi i64 [ %__first.sroa.0.09.i.i.i.i.i.add, %for.inc.i.i.i.i.i ], [ %.neg, %if.then11 ] + %__first.sroa.0.09.i.i.i.i.i.ptr = getelementptr inbounds i8, ptr %2, i64 %__first.sroa.0.09.i.i.i.i.i.idx + invoke void @__gmpz_init_set(ptr noundef nonnull %__cur.010.i.i.i.i.i, ptr noundef nonnull %__first.sroa.0.09.i.i.i.i.i.ptr) to label %for.inc.i.i.i.i.i unwind label %lpad.i.i.i.i.i for.inc.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i - %incdec.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.09.i.i.i.i.i, i64 16 + %__first.sroa.0.09.i.i.i.i.i.add = add nsw i64 %__first.sroa.0.09.i.i.i.i.i.idx, 16 %incdec.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.010.i.i.i.i.i, i64 16 - %cmp.i.i.not.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i, %2 + %cmp.i.i.not.i.i.i.i.i = icmp eq i64 %__first.sroa.0.09.i.i.i.i.i.add, 0 br i1 %cmp.i.i.not.i.i.i.i.i, label %invoke.cont, label %for.body.i.i.i.i.i, !llvm.loop !185 lpad.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i @@ -17549,7 +17550,7 @@ invoke.cont: ; preds = %for.inc.i.i.i.i.i %9 = load ptr, ptr %_M_finish, align 8 %add.ptr16 = getelementptr inbounds %"class.cvc5::internal::Integer", ptr %9, i64 %__n store ptr %add.ptr16, ptr %_M_finish, align 8 - %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 4 %cmp4.i.i.i.i.i = icmp sgt i64 %sub.ptr.div.i.i.i.i.i, 0 @@ -17558,7 +17559,7 @@ invoke.cont: ; preds = %for.inc.i.i.i.i.i for.body.i.i.i.i.i49: ; preds = %invoke.cont, %call.i.i.i.i.i.noexc %__n.07.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i, %call.i.i.i.i.i.noexc ], [ %sub.ptr.div.i.i.i.i.i, %invoke.cont ] %__result.addr.06.i.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i.i, %call.i.i.i.i.i.noexc ], [ %2, %invoke.cont ] - %__last.addr.05.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i50, %call.i.i.i.i.i.noexc ], [ %add.ptr, %invoke.cont ] + %__last.addr.05.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i50, %call.i.i.i.i.i.noexc ], [ %add.ptr.ptr, %invoke.cont ] %incdec.ptr.i.i.i.i.i50 = getelementptr inbounds i8, ptr %__last.addr.05.i.i.i.i.i, i64 -16 %incdec.ptr1.i.i.i.i.i = getelementptr inbounds i8, ptr %__result.addr.06.i.i.i.i.i, i64 -16 %call.i.i.i.i.i51 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN4cvc58internal7IntegeraSERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %incdec.ptr1.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %incdec.ptr.i.i.i.i.i50) diff --git a/bench/cvc5/optimized/bv_solver_bitblast_internal.cpp.ll b/bench/cvc5/optimized/bv_solver_bitblast_internal.cpp.ll index 1e7087af119..9d16c8f40c8 100644 --- a/bench/cvc5/optimized/bv_solver_bitblast_internal.cpp.ll +++ b/bench/cvc5/optimized/bv_solver_bitblast_internal.cpp.ll @@ -3829,25 +3829,26 @@ if.then9: ; preds = %if.then br i1 %cmp15, label %for.inc.i.i.i.i.i.preheader, label %_ZSt7advanceIN4cvc58internal4expr9NodeValue8iteratorINS1_12NodeTemplateILb0EEEEEmEvRT_T0_.exit for.inc.i.i.i.i.i.preheader: ; preds = %if.then9 - %idx.neg = sub nsw i64 0, %sub.ptr.div.i.i.i - %add.ptr = getelementptr %"class.cvc5::internal::NodeTemplate", ptr %1, i64 %idx.neg + %add.ptr.idx = sub i64 0, %sub.ptr.sub.i.i.i + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr.idx br label %for.inc.i.i.i.i.i for.inc.i.i.i.i.i: ; preds = %for.inc.i.i.i.i.i.preheader, %for.inc.i.i.i.i.i %__cur.09.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %1, %for.inc.i.i.i.i.i.preheader ] - %__first.sroa.0.08.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %add.ptr, %for.inc.i.i.i.i.i.preheader ] - %2 = load ptr, ptr %__first.sroa.0.08.i.i.i.i.i, align 8 + %__first.sroa.0.08.i.i.i.i.i.idx = phi i64 [ %__first.sroa.0.08.i.i.i.i.i.add, %for.inc.i.i.i.i.i ], [ %add.ptr.idx, %for.inc.i.i.i.i.i.preheader ] + %__first.sroa.0.08.i.i.i.i.i.ptr = getelementptr inbounds i8, ptr %1, i64 %__first.sroa.0.08.i.i.i.i.i.idx + %2 = load ptr, ptr %__first.sroa.0.08.i.i.i.i.i.ptr, align 8 store ptr %2, ptr %__cur.09.i.i.i.i.i, align 8 - %incdec.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.08.i.i.i.i.i, i64 8 + %__first.sroa.0.08.i.i.i.i.i.add = add nsw i64 %__first.sroa.0.08.i.i.i.i.i.idx, 8 %incdec.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.09.i.i.i.i.i, i64 8 - %cmp.i.i.not.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i, %1 + %cmp.i.i.not.i.i.i.i.i = icmp eq i64 %__first.sroa.0.08.i.i.i.i.i.add, 0 br i1 %cmp.i.i.not.i.i.i.i.i, label %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit, label %for.inc.i.i.i.i.i, !llvm.loop !34 _ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit: ; preds = %for.inc.i.i.i.i.i %.pre109 = load ptr, ptr %_M_finish, align 8 %add.ptr27 = getelementptr inbounds i8, ptr %.pre109, i64 %sub.ptr.sub.i.i.i store ptr %add.ptr27, ptr %_M_finish, align 8 - %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %cmp4.i.i.i.i.i = icmp sgt i64 %sub.ptr.div.i.i.i.i.i, 0 @@ -3856,7 +3857,7 @@ _ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_ for.body.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i %__n.07.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %sub.ptr.div.i.i.i.i.i, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] %__result.addr.06.i.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i.i, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %1, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] - %__last.addr.05.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i26, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %add.ptr, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] + %__last.addr.05.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i26, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %add.ptr.ptr, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] %incdec.ptr.i.i.i.i.i26 = getelementptr inbounds i8, ptr %__last.addr.05.i.i.i.i.i, i64 -8 %incdec.ptr1.i.i.i.i.i = getelementptr inbounds i8, ptr %__result.addr.06.i.i.i.i.i, i64 -8 %3 = load ptr, ptr %incdec.ptr1.i.i.i.i.i, align 8 diff --git a/bench/cvc5/optimized/conv_seq_proof_generator.cpp.ll b/bench/cvc5/optimized/conv_seq_proof_generator.cpp.ll index cf1f3a3dda2..1d4d2fc3651 100644 --- a/bench/cvc5/optimized/conv_seq_proof_generator.cpp.ll +++ b/bench/cvc5/optimized/conv_seq_proof_generator.cpp.ll @@ -2985,17 +2985,17 @@ if.then9: ; preds = %if.then br i1 %cmp15, label %_ZSt22__uninitialized_move_aIPPN4cvc58internal14ProofGeneratorES4_SaIS3_EET0_T_S7_S6_RT1_.exit, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPKPN4cvc58internal14ProofGeneratorESt6vectorIS5_SaIS5_EEEEmEvRT_T0_.exit _ZSt22__uninitialized_move_aIPPN4cvc58internal14ProofGeneratorES4_SaIS3_EET0_T_S7_S6_RT1_.exit: ; preds = %if.then9 - %idx.neg = sub nsw i64 0, %sub.ptr.div.i.i.i - %add.ptr = getelementptr inbounds ptr, ptr %1, i64 %idx.neg - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %add.ptr, i64 %sub.ptr.sub.i.i.i, i1 false) + %add.ptr.idx = sub i64 0, %sub.ptr.sub.i.i.i + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr.idx + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %add.ptr.ptr, i64 %sub.ptr.sub.i.i.i, i1 false) %.pre78 = load ptr, ptr %_M_finish, align 8 %add.ptr27 = getelementptr inbounds i8, ptr %.pre78, i64 %sub.ptr.sub.i.i.i store ptr %add.ptr27, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce + %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %if.then.i.i.i.i.i30, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPPN4cvc58internal14ProofGeneratorES4_SaIS3_EET0_T_S7_S6_RT1_.exit - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i @@ -3008,14 +3008,14 @@ if.then.i.i.i.i.i30: ; preds = %if.then.i.i.i.i.i, br label %if.end109 _ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPKPN4cvc58internal14ProofGeneratorESt6vectorIS5_SaIS5_EEEEmEvRT_T0_.exit: ; preds = %if.then9 - %incdec.ptr.i.i.i = getelementptr inbounds i8, ptr %__first.coerce, i64 %sub.ptr.sub.i - %tobool.not.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i, %__last.coerce + %incdec.ptr.i8.sink.i.i.ptr = getelementptr inbounds i8, ptr %__first.coerce, i64 %sub.ptr.sub.i + %tobool.not.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i8.sink.i.i.ptr, %__last.coerce br i1 %tobool.not.i.i.i.i.i.i.i.i, label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPN4cvc58internal14ProofGeneratorESt6vectorIS5_SaIS5_EEEEPS5_S5_ET0_T_SE_SD_RSaIT1_E.exit, label %if.then.i.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i.i: ; preds = %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPKPN4cvc58internal14ProofGeneratorESt6vectorIS5_SaIS5_EEEEmEvRT_T0_.exit - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i = ptrtoint ptr %incdec.ptr.i.i.i to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i = ptrtoint ptr %incdec.ptr.i8.sink.i.i.ptr to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i, %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %incdec.ptr.i.i.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %incdec.ptr.i8.sink.i.i.ptr, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i, i1 false) %.pre = load ptr, ptr %_M_finish, align 8 br label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPKPN4cvc58internal14ProofGeneratorESt6vectorIS5_SaIS5_EEEEPS5_S5_ET0_T_SE_SD_RSaIT1_E.exit diff --git a/bench/cvc5/optimized/cut_log.cpp.ll b/bench/cvc5/optimized/cut_log.cpp.ll index 162e4c48d16..ffe42cb55be 100644 --- a/bench/cvc5/optimized/cut_log.cpp.ll +++ b/bench/cvc5/optimized/cut_log.cpp.ll @@ -2259,7 +2259,7 @@ while.cond197: ; preds = %while.cond197, %inv %headRemovedOrd.0.in = getelementptr inbounds i32, ptr %call5.i.i.i.i.i.i22, i64 %indvars.iv %headRemovedOrd.0 = load i32, ptr %headRemovedOrd.0.in, align 4 %cmp198 = icmp slt i32 %headRemovedOrd.0, %36 - %indvars.iv.next = add i64 %indvars.iv, 1 + %indvars.iv.next = add nsw i64 %indvars.iv, 1 br i1 %cmp198, label %while.cond197, label %while.end203, !llvm.loop !17 while.end203: ; preds = %while.cond197 @@ -5984,18 +5984,18 @@ if.then4: ; preds = %if.then br i1 %cmp10, label %if.then11, label %if.else if.then11: ; preds = %if.then4 - %idx.neg = sub i64 0, %__n - %add.ptr = getelementptr inbounds i32, ptr %1, i64 %idx.neg + %.neg = mul i64 %__n, -4 + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %.neg %add.ptr.idx.neg = shl i64 %__n, 2 - tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %1, ptr nonnull align 4 %add.ptr, i64 %add.ptr.idx.neg, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %1, ptr align 4 %add.ptr.ptr, i64 %add.ptr.idx.neg, i1 false) %3 = load ptr, ptr %_M_finish, align 8 %add.ptr16 = getelementptr inbounds i32, ptr %3, i64 %__n store ptr %add.ptr16, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce + %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %invoke.cont20, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %if.then11 - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 2 %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i diff --git a/bench/cvc5/optimized/dual_simplex.cpp.ll b/bench/cvc5/optimized/dual_simplex.cpp.ll index 96dae807072..40ddeff9803 100644 --- a/bench/cvc5/optimized/dual_simplex.cpp.ll +++ b/bench/cvc5/optimized/dual_simplex.cpp.ll @@ -1529,18 +1529,18 @@ if.then4: ; preds = %if.then br i1 %cmp10, label %if.then11, label %if.else if.then11: ; preds = %if.then4 - %idx.neg = sub i64 0, %__n - %add.ptr = getelementptr inbounds i32, ptr %1, i64 %idx.neg + %.neg = mul i64 %__n, -4 + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %.neg %add.ptr.idx.neg = shl i64 %__n, 2 - tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %1, ptr nonnull align 4 %add.ptr, i64 %add.ptr.idx.neg, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %1, ptr align 4 %add.ptr.ptr, i64 %add.ptr.idx.neg, i1 false) %3 = load ptr, ptr %_M_finish, align 8 %add.ptr16 = getelementptr inbounds i32, ptr %3, i64 %__n store ptr %add.ptr16, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce + %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %invoke.cont20, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %if.then11 - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 2 %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i diff --git a/bench/cvc5/optimized/eager_proof_generator.cpp.ll b/bench/cvc5/optimized/eager_proof_generator.cpp.ll index fc7f26ab808..c04f6a3e3e2 100644 --- a/bench/cvc5/optimized/eager_proof_generator.cpp.ll +++ b/bench/cvc5/optimized/eager_proof_generator.cpp.ll @@ -3047,8 +3047,7 @@ if.then.i.i.i208: ; preds = %invoke.cont.i206 br label %_ZNSt6vectorISt10shared_ptrIN4cvc58internal9ProofNodeEESaIS4_EED2Ev.exit229 _ZNSt6vectorISt10shared_ptrIN4cvc58internal9ProofNodeEESaIS4_EED2Ev.exit229: ; preds = %invoke.cont.i206, %if.then.i.i.i208 - %_M_refcount.i.i230 = getelementptr inbounds i8, ptr %ref.tmp38, i64 8 - %105 = load ptr, ptr %_M_refcount.i.i230, align 8 + %105 = load ptr, ptr %_M_refcount.i.i139, align 8 %cmp.not.i.i.i231 = icmp eq ptr %105, null br i1 %cmp.not.i.i.i231, label %_ZNSt10shared_ptrIN4cvc58internal9ProofNodeEED2Ev.exit261, label %if.then.i.i.i232 diff --git a/bench/cvc5/optimized/embedding_converter.cpp.ll b/bench/cvc5/optimized/embedding_converter.cpp.ll index 13b0890de7a..59084bb9986 100644 --- a/bench/cvc5/optimized/embedding_converter.cpp.ll +++ b/bench/cvc5/optimized/embedding_converter.cpp.ll @@ -11814,25 +11814,26 @@ if.then9: ; preds = %if.then br i1 %cmp15, label %for.inc.i.i.i.i.i.preheader, label %_ZSt7advanceIN4cvc58internal4expr9NodeValue8iteratorINS1_12NodeTemplateILb0EEEEEmEvRT_T0_.exit for.inc.i.i.i.i.i.preheader: ; preds = %if.then9 - %idx.neg = sub nsw i64 0, %sub.ptr.div.i.i.i - %add.ptr = getelementptr %"class.cvc5::internal::NodeTemplate.304", ptr %1, i64 %idx.neg + %add.ptr.idx = sub i64 0, %sub.ptr.sub.i.i.i + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr.idx br label %for.inc.i.i.i.i.i for.inc.i.i.i.i.i: ; preds = %for.inc.i.i.i.i.i.preheader, %for.inc.i.i.i.i.i %__cur.09.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %1, %for.inc.i.i.i.i.i.preheader ] - %__first.sroa.0.08.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %add.ptr, %for.inc.i.i.i.i.i.preheader ] - %2 = load ptr, ptr %__first.sroa.0.08.i.i.i.i.i, align 8 + %__first.sroa.0.08.i.i.i.i.i.idx = phi i64 [ %__first.sroa.0.08.i.i.i.i.i.add, %for.inc.i.i.i.i.i ], [ %add.ptr.idx, %for.inc.i.i.i.i.i.preheader ] + %__first.sroa.0.08.i.i.i.i.i.ptr = getelementptr inbounds i8, ptr %1, i64 %__first.sroa.0.08.i.i.i.i.i.idx + %2 = load ptr, ptr %__first.sroa.0.08.i.i.i.i.i.ptr, align 8 store ptr %2, ptr %__cur.09.i.i.i.i.i, align 8 - %incdec.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.08.i.i.i.i.i, i64 8 + %__first.sroa.0.08.i.i.i.i.i.add = add nsw i64 %__first.sroa.0.08.i.i.i.i.i.idx, 8 %incdec.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.09.i.i.i.i.i, i64 8 - %cmp.i.i.not.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i, %1 + %cmp.i.i.not.i.i.i.i.i = icmp eq i64 %__first.sroa.0.08.i.i.i.i.i.add, 0 br i1 %cmp.i.i.not.i.i.i.i.i, label %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit, label %for.inc.i.i.i.i.i, !llvm.loop !133 _ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit: ; preds = %for.inc.i.i.i.i.i %.pre109 = load ptr, ptr %_M_finish, align 8 %add.ptr27 = getelementptr inbounds i8, ptr %.pre109, i64 %sub.ptr.sub.i.i.i store ptr %add.ptr27, ptr %_M_finish, align 8 - %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %cmp4.i.i.i.i.i = icmp sgt i64 %sub.ptr.div.i.i.i.i.i, 0 @@ -11841,7 +11842,7 @@ _ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_ for.body.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i %__n.07.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %sub.ptr.div.i.i.i.i.i, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] %__result.addr.06.i.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i.i, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %1, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] - %__last.addr.05.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i26, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %add.ptr, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] + %__last.addr.05.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i26, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %add.ptr.ptr, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] %incdec.ptr.i.i.i.i.i26 = getelementptr inbounds i8, ptr %__last.addr.05.i.i.i.i.i, i64 -8 %incdec.ptr1.i.i.i.i.i = getelementptr inbounds i8, ptr %__result.addr.06.i.i.i.i.i, i64 -8 %3 = load ptr, ptr %incdec.ptr1.i.i.i.i.i, align 8 diff --git a/bench/cvc5/optimized/enum_stream_substitution.cpp.ll b/bench/cvc5/optimized/enum_stream_substitution.cpp.ll index 9b80b930776..d08bc6de1d2 100644 --- a/bench/cvc5/optimized/enum_stream_substitution.cpp.ll +++ b/bench/cvc5/optimized/enum_stream_substitution.cpp.ll @@ -8173,9 +8173,10 @@ if.end.i.i.i.i.i25.i: ; preds = %call5.i.i.i.i.noexc _ZNSt12_Vector_baseIjSaIjEE13_M_deallocateEPjm.exit33.i: ; preds = %call5.i.i.i.i.noexc, %if.end.i.i.i.i.i25.i store ptr %call5.i.i.i.i589, ptr %d_last_comb.i, align 8 - %add.ptr37.i = getelementptr inbounds i32, ptr %call5.i.i.i.i589, i64 %conv.i219 - store ptr %add.ptr37.i, ptr %_M_finish.i.i.i, align 8 - store ptr %add.ptr37.i, ptr %_M_end_of_storage.i, align 8 + %add.ptr37.i.idx = shl nuw nsw i64 %conv.i219, 2 + %add.ptr37.i.ptr = getelementptr inbounds i8, ptr %call5.i.i.i.i589, i64 %add.ptr37.i.idx + store ptr %add.ptr37.i.ptr, ptr %_M_finish.i.i.i, align 8 + store ptr %add.ptr37.i.ptr, ptr %_M_end_of_storage.i, align 8 br label %for.body.i.i for.body.i.i: ; preds = %_ZNSt12_Vector_baseIjSaIjEE13_M_deallocateEPjm.exit33.i, %for.body.i.i @@ -8184,7 +8185,7 @@ for.body.i.i: ; preds = %_ZNSt12_Vector_base store i32 %__value.addr.06.i.i, ptr %__first.sroa.0.05.i.i, align 4 %inc.i.i = add nuw nsw i32 %__value.addr.06.i.i, 1 %incdec.ptr.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.05.i.i, i64 4 - %cmp.i.not.i.i = icmp eq ptr %incdec.ptr.i.i.i, %add.ptr37.i + %cmp.i.not.i.i = icmp eq ptr %incdec.ptr.i.i.i, %add.ptr37.i.ptr br i1 %cmp.i.not.i.i, label %_ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.i, label %for.body.i.i, !llvm.loop !30 _ZSt4iotaIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEiEvT_S7_T0_.exit.i: ; preds = %for.body.i.i diff --git a/bench/cvc5/optimized/fc_simplex.cpp.ll b/bench/cvc5/optimized/fc_simplex.cpp.ll index d6ed648c5f8..ed8ddf2c90d 100644 --- a/bench/cvc5/optimized/fc_simplex.cpp.ll +++ b/bench/cvc5/optimized/fc_simplex.cpp.ll @@ -4892,7 +4892,7 @@ _ZNSt6vectorIjSaIjEE17_S_check_init_lenEmRKS0_.exit.i.i: ; preds = %entry for.body.lr.ph: ; preds = %_ZNSt6vectorIjSaIjEE17_S_check_init_lenEmRKS0_.exit.i.i %call5.i.i.i.i1.i = tail call noalias noundef nonnull ptr @_Znwm(i64 noundef %sub.ptr.sub.i.i.i.i.i) #25 tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %call5.i.i.i.i1.i, ptr align 4 %0, i64 %sub.ptr.sub.i.i.i.i.i, i1 false) - %add.ptr.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %call5.i.i.i.i1.i, i64 %sub.ptr.sub.i.i.i.i.i + %add.ptr.i.i.i.i.i.i.i.i.i.i.ptr = getelementptr inbounds i8, ptr %call5.i.i.i.i1.i, i64 %sub.ptr.sub.i.i.i.i.i %d_posVector.i.i.i.i = getelementptr inbounds i8, ptr %this, i64 24 %_M_finish.i.i.i.i.i = getelementptr inbounds i8, ptr %this, i64 32 %d_image.i.i.i = getelementptr inbounds i8, ptr %this, i64 48 @@ -4977,7 +4977,7 @@ sw.default.i: ; preds = %_ZNK4cvc58internal1 for.inc: ; preds = %sw.bb2.i, %_ZNK4cvc58internal13DenseMultiset5countEj.exit.i, %_ZNK4cvc58internal8DenseMapIjE5isKeyEj.exit.i.i, %for.body, %sw.default.i call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %ref.tmp.i) %incdec.ptr.i = getelementptr inbounds i8, ptr %i.sroa.0.020, i64 4 - %cmp.i.not = icmp eq ptr %incdec.ptr.i, %add.ptr.i.i.i.i.i.i.i.i.i.i + %cmp.i.not = icmp eq ptr %incdec.ptr.i, %add.ptr.i.i.i.i.i.i.i.i.i.i.ptr br i1 %cmp.i.not, label %if.then.i.i.i11, label %for.body, !llvm.loop !43 if.then.i.i.i11: ; preds = %for.inc @@ -5212,18 +5212,18 @@ if.then4: ; preds = %if.then br i1 %cmp10, label %if.then11, label %if.else if.then11: ; preds = %if.then4 - %idx.neg = sub i64 0, %__n - %add.ptr = getelementptr inbounds i32, ptr %1, i64 %idx.neg + %.neg = mul i64 %__n, -4 + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %.neg %add.ptr.idx.neg = shl i64 %__n, 2 - tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %1, ptr nonnull align 4 %add.ptr, i64 %add.ptr.idx.neg, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %1, ptr align 4 %add.ptr.ptr, i64 %add.ptr.idx.neg, i1 false) %3 = load ptr, ptr %_M_finish, align 8 %add.ptr16 = getelementptr inbounds i32, ptr %3, i64 %__n store ptr %add.ptr16, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce + %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %invoke.cont20, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %if.then11 - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 2 %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i diff --git a/bench/cvc5/optimized/fp_word_blaster.cpp.ll b/bench/cvc5/optimized/fp_word_blaster.cpp.ll index ac89d317d39..eea538e3206 100644 --- a/bench/cvc5/optimized/fp_word_blaster.cpp.ll +++ b/bench/cvc5/optimized/fp_word_blaster.cpp.ll @@ -49534,25 +49534,26 @@ if.then9: ; preds = %if.then br i1 %cmp15, label %for.inc.i.i.i.i.i.preheader, label %_ZSt7advanceIN4cvc58internal4expr9NodeValue8iteratorINS1_12NodeTemplateILb0EEEEEmEvRT_T0_.exit for.inc.i.i.i.i.i.preheader: ; preds = %if.then9 - %idx.neg = sub nsw i64 0, %sub.ptr.div.i.i.i - %add.ptr = getelementptr %"class.cvc5::internal::NodeTemplate.0", ptr %1, i64 %idx.neg + %add.ptr.idx = sub i64 0, %sub.ptr.sub.i.i.i + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr.idx br label %for.inc.i.i.i.i.i for.inc.i.i.i.i.i: ; preds = %for.inc.i.i.i.i.i.preheader, %for.inc.i.i.i.i.i %__cur.09.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %1, %for.inc.i.i.i.i.i.preheader ] - %__first.sroa.0.08.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %add.ptr, %for.inc.i.i.i.i.i.preheader ] - %2 = load ptr, ptr %__first.sroa.0.08.i.i.i.i.i, align 8 + %__first.sroa.0.08.i.i.i.i.i.idx = phi i64 [ %__first.sroa.0.08.i.i.i.i.i.add, %for.inc.i.i.i.i.i ], [ %add.ptr.idx, %for.inc.i.i.i.i.i.preheader ] + %__first.sroa.0.08.i.i.i.i.i.ptr = getelementptr inbounds i8, ptr %1, i64 %__first.sroa.0.08.i.i.i.i.i.idx + %2 = load ptr, ptr %__first.sroa.0.08.i.i.i.i.i.ptr, align 8 store ptr %2, ptr %__cur.09.i.i.i.i.i, align 8 - %incdec.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.08.i.i.i.i.i, i64 8 + %__first.sroa.0.08.i.i.i.i.i.add = add nsw i64 %__first.sroa.0.08.i.i.i.i.i.idx, 8 %incdec.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.09.i.i.i.i.i, i64 8 - %cmp.i.i.not.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i, %1 + %cmp.i.i.not.i.i.i.i.i = icmp eq i64 %__first.sroa.0.08.i.i.i.i.i.add, 0 br i1 %cmp.i.i.not.i.i.i.i.i, label %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit, label %for.inc.i.i.i.i.i, !llvm.loop !655 _ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit: ; preds = %for.inc.i.i.i.i.i %.pre109 = load ptr, ptr %_M_finish, align 8 %add.ptr27 = getelementptr inbounds i8, ptr %.pre109, i64 %sub.ptr.sub.i.i.i store ptr %add.ptr27, ptr %_M_finish, align 8 - %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %cmp4.i.i.i.i.i = icmp sgt i64 %sub.ptr.div.i.i.i.i.i, 0 @@ -49561,7 +49562,7 @@ _ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_ for.body.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i %__n.07.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %sub.ptr.div.i.i.i.i.i, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] %__result.addr.06.i.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i.i, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %1, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] - %__last.addr.05.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i26, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %add.ptr, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] + %__last.addr.05.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i26, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %add.ptr.ptr, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] %incdec.ptr.i.i.i.i.i26 = getelementptr inbounds i8, ptr %__last.addr.05.i.i.i.i.i, i64 -8 %incdec.ptr1.i.i.i.i.i = getelementptr inbounds i8, ptr %__result.addr.06.i.i.i.i.i, i64 -8 %3 = load ptr, ptr %incdec.ptr1.i.i.i.i.i, align 8 diff --git a/bench/cvc5/optimized/inference_id_proof_annotator.cpp.ll b/bench/cvc5/optimized/inference_id_proof_annotator.cpp.ll index 2497571d2e5..542ff21bc97 100644 --- a/bench/cvc5/optimized/inference_id_proof_annotator.cpp.ll +++ b/bench/cvc5/optimized/inference_id_proof_annotator.cpp.ll @@ -851,8 +851,7 @@ if.then.i.i.i34: ; preds = %invoke.cont.i br label %_ZNSt6vectorISt10shared_ptrIN4cvc58internal9ProofNodeEESaIS4_EED2Ev.exit _ZNSt6vectorISt10shared_ptrIN4cvc58internal9ProofNodeEESaIS4_EED2Ev.exit: ; preds = %invoke.cont.i, %if.then.i.i.i34 - %_M_refcount.i.i39 = getelementptr inbounds i8, ptr %ref.tmp14, i64 8 - %59 = load ptr, ptr %_M_refcount.i.i39, align 8 + %59 = load ptr, ptr %_M_refcount.i.i, align 8 %cmp.not.i.i.i40 = icmp eq ptr %59, null br i1 %cmp.not.i.i.i40, label %_ZNSt10shared_ptrIN4cvc58internal9ProofNodeEED2Ev.exit, label %if.then.i.i.i41 @@ -1206,8 +1205,7 @@ if.then.i.i.i148: ; preds = %invoke.cont.i146 br label %_ZNSt6vectorISt10shared_ptrIN4cvc58internal9ProofNodeEESaIS4_EED2Ev.exit169 _ZNSt6vectorISt10shared_ptrIN4cvc58internal9ProofNodeEESaIS4_EED2Ev.exit169: ; preds = %invoke.cont.i146, %if.then.i.i.i148 - %_M_refcount.i.i170 = getelementptr inbounds i8, ptr %ref.tmp35, i64 8 - %109 = load ptr, ptr %_M_refcount.i.i170, align 8 + %109 = load ptr, ptr %_M_refcount.i.i47, align 8 %cmp.not.i.i.i171 = icmp eq ptr %109, null br i1 %cmp.not.i.i.i171, label %_ZNSt10shared_ptrIN4cvc58internal9ProofNodeEED2Ev.exit201, label %if.then.i.i.i172 diff --git a/bench/cvc5/optimized/inst_match_generator.cpp.ll b/bench/cvc5/optimized/inst_match_generator.cpp.ll index aebd05bd3d8..f788279b282 100644 --- a/bench/cvc5/optimized/inst_match_generator.cpp.ll +++ b/bench/cvc5/optimized/inst_match_generator.cpp.ll @@ -12908,17 +12908,17 @@ if.then9: ; preds = %if.then br i1 %cmp15, label %_ZSt22__uninitialized_move_aIPPN4cvc58internal6theory11quantifiers4inst18InstMatchGeneratorES7_SaIS6_EET0_T_SA_S9_RT1_.exit, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPPN4cvc58internal6theory11quantifiers4inst18InstMatchGeneratorESt6vectorIS8_SaIS8_EEEEmEvRT_T0_.exit _ZSt22__uninitialized_move_aIPPN4cvc58internal6theory11quantifiers4inst18InstMatchGeneratorES7_SaIS6_EET0_T_SA_S9_RT1_.exit: ; preds = %if.then9 - %idx.neg = sub nsw i64 0, %sub.ptr.div.i.i.i - %add.ptr = getelementptr inbounds ptr, ptr %1, i64 %idx.neg - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %add.ptr, i64 %sub.ptr.sub.i.i.i, i1 false) + %add.ptr.idx = sub i64 0, %sub.ptr.sub.i.i.i + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr.idx + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %add.ptr.ptr, i64 %sub.ptr.sub.i.i.i, i1 false) %.pre78 = load ptr, ptr %_M_finish, align 8 %add.ptr27 = getelementptr inbounds i8, ptr %.pre78, i64 %sub.ptr.sub.i.i.i store ptr %add.ptr27, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce + %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %if.then.i.i.i.i.i30, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPPN4cvc58internal6theory11quantifiers4inst18InstMatchGeneratorES7_SaIS6_EET0_T_SA_S9_RT1_.exit - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i @@ -12931,14 +12931,14 @@ if.then.i.i.i.i.i30: ; preds = %if.then.i.i.i.i.i, br label %if.end109 _ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPPN4cvc58internal6theory11quantifiers4inst18InstMatchGeneratorESt6vectorIS8_SaIS8_EEEEmEvRT_T0_.exit: ; preds = %if.then9 - %incdec.ptr.i.i.i = getelementptr inbounds i8, ptr %__first.coerce, i64 %sub.ptr.sub.i - %tobool.not.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i, %__last.coerce + %incdec.ptr.i8.sink.i.i.ptr = getelementptr inbounds i8, ptr %__first.coerce, i64 %sub.ptr.sub.i + %tobool.not.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i8.sink.i.i.ptr, %__last.coerce br i1 %tobool.not.i.i.i.i.i.i.i.i, label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPPN4cvc58internal6theory11quantifiers4inst18InstMatchGeneratorESt6vectorIS8_SaIS8_EEEES9_S8_ET0_T_SF_SE_RSaIT1_E.exit, label %if.then.i.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i.i: ; preds = %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPPN4cvc58internal6theory11quantifiers4inst18InstMatchGeneratorESt6vectorIS8_SaIS8_EEEEmEvRT_T0_.exit - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i = ptrtoint ptr %incdec.ptr.i.i.i to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i = ptrtoint ptr %incdec.ptr.i8.sink.i.i.ptr to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i, %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %incdec.ptr.i.i.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %incdec.ptr.i8.sink.i.i.ptr, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i, i1 false) %.pre = load ptr, ptr %_M_finish, align 8 br label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPPN4cvc58internal6theory11quantifiers4inst18InstMatchGeneratorESt6vectorIS8_SaIS8_EEEES9_S8_ET0_T_SF_SE_RSaIT1_E.exit diff --git a/bench/cvc5/optimized/inst_strategy_mbqi.cpp.ll b/bench/cvc5/optimized/inst_strategy_mbqi.cpp.ll index 5b39415562a..013ee706281 100644 --- a/bench/cvc5/optimized/inst_strategy_mbqi.cpp.ll +++ b/bench/cvc5/optimized/inst_strategy_mbqi.cpp.ll @@ -16711,25 +16711,26 @@ if.then9: ; preds = %if.then br i1 %cmp15, label %for.inc.i.i.i.i.i.preheader, label %_ZSt7advanceIN4cvc58internal4expr9NodeValue8iteratorINS1_12NodeTemplateILb0EEEEEmEvRT_T0_.exit for.inc.i.i.i.i.i.preheader: ; preds = %if.then9 - %idx.neg = sub nsw i64 0, %sub.ptr.div.i.i.i - %add.ptr = getelementptr %"class.cvc5::internal::NodeTemplate.611", ptr %1, i64 %idx.neg + %add.ptr.idx = sub i64 0, %sub.ptr.sub.i.i.i + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr.idx br label %for.inc.i.i.i.i.i for.inc.i.i.i.i.i: ; preds = %for.inc.i.i.i.i.i.preheader, %for.inc.i.i.i.i.i %__cur.09.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %1, %for.inc.i.i.i.i.i.preheader ] - %__first.sroa.0.08.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %add.ptr, %for.inc.i.i.i.i.i.preheader ] - %2 = load ptr, ptr %__first.sroa.0.08.i.i.i.i.i, align 8 + %__first.sroa.0.08.i.i.i.i.i.idx = phi i64 [ %__first.sroa.0.08.i.i.i.i.i.add, %for.inc.i.i.i.i.i ], [ %add.ptr.idx, %for.inc.i.i.i.i.i.preheader ] + %__first.sroa.0.08.i.i.i.i.i.ptr = getelementptr inbounds i8, ptr %1, i64 %__first.sroa.0.08.i.i.i.i.i.idx + %2 = load ptr, ptr %__first.sroa.0.08.i.i.i.i.i.ptr, align 8 store ptr %2, ptr %__cur.09.i.i.i.i.i, align 8 - %incdec.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.08.i.i.i.i.i, i64 8 + %__first.sroa.0.08.i.i.i.i.i.add = add nsw i64 %__first.sroa.0.08.i.i.i.i.i.idx, 8 %incdec.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.09.i.i.i.i.i, i64 8 - %cmp.i.i.not.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i, %1 + %cmp.i.i.not.i.i.i.i.i = icmp eq i64 %__first.sroa.0.08.i.i.i.i.i.add, 0 br i1 %cmp.i.i.not.i.i.i.i.i, label %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit, label %for.inc.i.i.i.i.i, !llvm.loop !95 _ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit: ; preds = %for.inc.i.i.i.i.i %.pre109 = load ptr, ptr %_M_finish, align 8 %add.ptr27 = getelementptr inbounds i8, ptr %.pre109, i64 %sub.ptr.sub.i.i.i store ptr %add.ptr27, ptr %_M_finish, align 8 - %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %cmp4.i.i.i.i.i = icmp sgt i64 %sub.ptr.div.i.i.i.i.i, 0 @@ -16738,7 +16739,7 @@ _ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_ for.body.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i %__n.07.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %sub.ptr.div.i.i.i.i.i, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] %__result.addr.06.i.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i.i, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %1, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] - %__last.addr.05.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i26, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %add.ptr, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] + %__last.addr.05.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i26, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %add.ptr.ptr, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] %incdec.ptr.i.i.i.i.i26 = getelementptr inbounds i8, ptr %__last.addr.05.i.i.i.i.i, i64 -8 %incdec.ptr1.i.i.i.i.i = getelementptr inbounds i8, ptr %__result.addr.06.i.i.i.i.i, i64 -8 %3 = load ptr, ptr %incdec.ptr1.i.i.i.i.i, align 8 diff --git a/bench/cvc5/optimized/ite_simp.cpp.ll b/bench/cvc5/optimized/ite_simp.cpp.ll index 6f25aae1557..b601639b817 100644 --- a/bench/cvc5/optimized/ite_simp.cpp.ll +++ b/bench/cvc5/optimized/ite_simp.cpp.ll @@ -248,13 +248,14 @@ while.body.lr.ph: ; preds = %if.end %_M_end_of_storage.i = getelementptr inbounds i8, ptr %subChildren, i64 16 %_M_finish.i54 = getelementptr inbounds i8, ptr %newChildren, i64 8 %_M_end_of_storage.i55 = getelementptr inbounds i8, ptr %newChildren, i64 16 + %add.ptr.i.idx = shl nuw nsw i64 %conv17, 3 %cmp.i31.not288 = icmp eq i32 %call7, 0 br label %while.body while.body: ; preds = %while.body.lr.ph, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit %numChildren.0294 = phi i32 [ %conv, %while.body.lr.ph ], [ %numChildren.1.lcssa, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit ] %it.sroa.0.0293 = phi ptr [ %5, %while.body.lr.ph ], [ %it.sroa.0.1.lcssa, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit ] - %add.ptr.i = getelementptr inbounds %"class.cvc5::internal::NodeTemplate", ptr %it.sroa.0.0293, i64 %conv17 + %add.ptr.i.ptr = getelementptr inbounds i8, ptr %it.sroa.0.0293, i64 %add.ptr.i.idx br i1 %cmp.i31.not288, label %for.end, label %for.body for.body: ; preds = %while.body, %for.inc @@ -306,7 +307,7 @@ if.else.i: ; preds = %for.body for.inc: ; preds = %_ZNSt16allocator_traitsISaIN4cvc58internal12NodeTemplateILb1EEEEE9constructIS3_JRKS3_EEEvRS4_PT_DpOT0_.exit.i, %if.else.i %incdec.ptr.i34 = getelementptr inbounds i8, ptr %it.sroa.0.1289, i64 8 %dec = add i32 %numChildren.1290, -1 - %cmp.i31.not = icmp eq ptr %incdec.ptr.i34, %add.ptr.i + %cmp.i31.not = icmp eq ptr %incdec.ptr.i34, %add.ptr.i.ptr br i1 %cmp.i31.not, label %for.end, label %for.body, !llvm.loop !9 lpad.loopexit: ; preds = %if.then13.i.i.i.i.i99, %if.else.i106 @@ -335,7 +336,7 @@ lpad.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp: ; br label %ehcleanup for.end: ; preds = %for.inc, %while.body - %it.sroa.0.1.lcssa = phi ptr [ %it.sroa.0.0293, %while.body ], [ %add.ptr.i, %for.inc ] + %it.sroa.0.1.lcssa = phi ptr [ %it.sroa.0.0293, %while.body ], [ %add.ptr.i.ptr, %for.inc ] %numChildren.1.lcssa = phi i32 [ %numChildren.0294, %while.body ], [ %dec, %for.inc ] call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %nb.i36) invoke void @_ZN4cvc58internal11NodeBuilderC1EPNS0_11NodeManagerENS0_4kind6Kind_tE(ptr noundef nonnull align 8 dereferenceable(116) %nb.i36, ptr noundef nonnull %call, i32 noundef 19) diff --git a/bench/cvc5/optimized/ite_utilities.cpp.ll b/bench/cvc5/optimized/ite_utilities.cpp.ll index b83195e76fa..b40e56b0a72 100644 --- a/bench/cvc5/optimized/ite_utilities.cpp.ll +++ b/bench/cvc5/optimized/ite_utilities.cpp.ll @@ -37636,18 +37636,18 @@ if.then4: ; preds = %if.then br i1 %cmp10, label %if.then11, label %if.else if.then11: ; preds = %if.then4 - %idx.neg = sub i64 0, %__n - %add.ptr = getelementptr inbounds i64, ptr %1, i64 %idx.neg + %.neg = mul i64 %__n, -8 + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %.neg %add.ptr.idx.neg = shl i64 %__n, 3 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr nonnull align 8 %add.ptr, i64 %add.ptr.idx.neg, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %add.ptr.ptr, i64 %add.ptr.idx.neg, i1 false) %3 = load ptr, ptr %_M_finish, align 8 %add.ptr16 = getelementptr inbounds i64, ptr %3, i64 %__n store ptr %add.ptr16, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce + %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %invoke.cont20, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %if.then11 - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i diff --git a/bench/cvc5/optimized/let_binding.cpp.ll b/bench/cvc5/optimized/let_binding.cpp.ll index 1fe2d28d4bb..137054f6329 100644 --- a/bench/cvc5/optimized/let_binding.cpp.ll +++ b/bench/cvc5/optimized/let_binding.cpp.ll @@ -6076,25 +6076,26 @@ if.then9: ; preds = %if.then br i1 %cmp15, label %for.inc.i.i.i.i.i.preheader, label %_ZSt7advanceIN4cvc58internal4expr9NodeValue8iteratorINS1_12NodeTemplateILb0EEEEEmEvRT_T0_.exit for.inc.i.i.i.i.i.preheader: ; preds = %if.then9 - %idx.neg = sub nsw i64 0, %sub.ptr.div.i.i.i - %add.ptr = getelementptr %"class.cvc5::internal::NodeTemplate.38", ptr %1, i64 %idx.neg + %add.ptr.idx = sub i64 0, %sub.ptr.sub.i.i.i + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr.idx br label %for.inc.i.i.i.i.i for.inc.i.i.i.i.i: ; preds = %for.inc.i.i.i.i.i.preheader, %for.inc.i.i.i.i.i %__cur.09.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %1, %for.inc.i.i.i.i.i.preheader ] - %__first.sroa.0.08.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %add.ptr, %for.inc.i.i.i.i.i.preheader ] - %2 = load ptr, ptr %__first.sroa.0.08.i.i.i.i.i, align 8 + %__first.sroa.0.08.i.i.i.i.i.idx = phi i64 [ %__first.sroa.0.08.i.i.i.i.i.add, %for.inc.i.i.i.i.i ], [ %add.ptr.idx, %for.inc.i.i.i.i.i.preheader ] + %__first.sroa.0.08.i.i.i.i.i.ptr = getelementptr inbounds i8, ptr %1, i64 %__first.sroa.0.08.i.i.i.i.i.idx + %2 = load ptr, ptr %__first.sroa.0.08.i.i.i.i.i.ptr, align 8 store ptr %2, ptr %__cur.09.i.i.i.i.i, align 8 - %incdec.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.08.i.i.i.i.i, i64 8 + %__first.sroa.0.08.i.i.i.i.i.add = add nsw i64 %__first.sroa.0.08.i.i.i.i.i.idx, 8 %incdec.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.09.i.i.i.i.i, i64 8 - %cmp.i.i.not.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i, %1 + %cmp.i.i.not.i.i.i.i.i = icmp eq i64 %__first.sroa.0.08.i.i.i.i.i.add, 0 br i1 %cmp.i.i.not.i.i.i.i.i, label %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit, label %for.inc.i.i.i.i.i, !llvm.loop !49 _ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit: ; preds = %for.inc.i.i.i.i.i %.pre109 = load ptr, ptr %_M_finish, align 8 %add.ptr27 = getelementptr inbounds i8, ptr %.pre109, i64 %sub.ptr.sub.i.i.i store ptr %add.ptr27, ptr %_M_finish, align 8 - %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %cmp4.i.i.i.i.i = icmp sgt i64 %sub.ptr.div.i.i.i.i.i, 0 @@ -6103,7 +6104,7 @@ _ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_ for.body.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i %__n.07.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %sub.ptr.div.i.i.i.i.i, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] %__result.addr.06.i.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i.i, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %1, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] - %__last.addr.05.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i26, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %add.ptr, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] + %__last.addr.05.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i26, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %add.ptr.ptr, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] %incdec.ptr.i.i.i.i.i26 = getelementptr inbounds i8, ptr %__last.addr.05.i.i.i.i.i, i64 -8 %incdec.ptr1.i.i.i.i.i = getelementptr inbounds i8, ptr %__result.addr.06.i.i.i.i.i, i64 -8 %3 = load ptr, ptr %incdec.ptr1.i.i.i.i.i, align 8 diff --git a/bench/cvc5/optimized/miplib_trick.cpp.ll b/bench/cvc5/optimized/miplib_trick.cpp.ll index 3bacf52a3bb..a8f733f4f6b 100644 --- a/bench/cvc5/optimized/miplib_trick.cpp.ll +++ b/bench/cvc5/optimized/miplib_trick.cpp.ll @@ -21264,25 +21264,26 @@ if.then9: ; preds = %if.then br i1 %cmp15, label %for.inc.i.i.i.i.i.preheader, label %_ZSt7advanceIN4cvc58internal4expr9NodeValue8iteratorINS1_12NodeTemplateILb0EEEEEmEvRT_T0_.exit for.inc.i.i.i.i.i.preheader: ; preds = %if.then9 - %idx.neg = sub nsw i64 0, %sub.ptr.div.i.i.i - %add.ptr = getelementptr %"class.cvc5::internal::NodeTemplate.101", ptr %1, i64 %idx.neg + %add.ptr.idx = sub i64 0, %sub.ptr.sub.i.i.i + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr.idx br label %for.inc.i.i.i.i.i for.inc.i.i.i.i.i: ; preds = %for.inc.i.i.i.i.i.preheader, %for.inc.i.i.i.i.i %__cur.09.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %1, %for.inc.i.i.i.i.i.preheader ] - %__first.sroa.0.08.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %add.ptr, %for.inc.i.i.i.i.i.preheader ] - %2 = load ptr, ptr %__first.sroa.0.08.i.i.i.i.i, align 8 + %__first.sroa.0.08.i.i.i.i.i.idx = phi i64 [ %__first.sroa.0.08.i.i.i.i.i.add, %for.inc.i.i.i.i.i ], [ %add.ptr.idx, %for.inc.i.i.i.i.i.preheader ] + %__first.sroa.0.08.i.i.i.i.i.ptr = getelementptr inbounds i8, ptr %1, i64 %__first.sroa.0.08.i.i.i.i.i.idx + %2 = load ptr, ptr %__first.sroa.0.08.i.i.i.i.i.ptr, align 8 store ptr %2, ptr %__cur.09.i.i.i.i.i, align 8 - %incdec.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.08.i.i.i.i.i, i64 8 + %__first.sroa.0.08.i.i.i.i.i.add = add nsw i64 %__first.sroa.0.08.i.i.i.i.i.idx, 8 %incdec.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.09.i.i.i.i.i, i64 8 - %cmp.i.i.not.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i, %1 + %cmp.i.i.not.i.i.i.i.i = icmp eq i64 %__first.sroa.0.08.i.i.i.i.i.add, 0 br i1 %cmp.i.i.not.i.i.i.i.i, label %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit, label %for.inc.i.i.i.i.i, !llvm.loop !335 _ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit: ; preds = %for.inc.i.i.i.i.i %.pre109 = load ptr, ptr %_M_finish, align 8 %add.ptr27 = getelementptr inbounds i8, ptr %.pre109, i64 %sub.ptr.sub.i.i.i store ptr %add.ptr27, ptr %_M_finish, align 8 - %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %cmp4.i.i.i.i.i = icmp sgt i64 %sub.ptr.div.i.i.i.i.i, 0 @@ -21291,7 +21292,7 @@ _ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_ for.body.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i %__n.07.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %sub.ptr.div.i.i.i.i.i, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] %__result.addr.06.i.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i.i, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %1, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] - %__last.addr.05.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i26, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %add.ptr, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] + %__last.addr.05.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i26, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %add.ptr.ptr, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] %incdec.ptr.i.i.i.i.i26 = getelementptr inbounds i8, ptr %__last.addr.05.i.i.i.i.i, i64 -8 %incdec.ptr1.i.i.i.i.i = getelementptr inbounds i8, ptr %__result.addr.06.i.i.i.i.i, i64 -8 %3 = load ptr, ptr %incdec.ptr1.i.i.i.i.i, align 8 diff --git a/bench/cvc5/optimized/model_core_builder.cpp.ll b/bench/cvc5/optimized/model_core_builder.cpp.ll index 6a61b17fefe..aaea3dd912b 100644 --- a/bench/cvc5/optimized/model_core_builder.cpp.ll +++ b/bench/cvc5/optimized/model_core_builder.cpp.ll @@ -2707,25 +2707,26 @@ if.then9: ; preds = %if.then br i1 %cmp15, label %for.inc.i.i.i.i.i.preheader, label %_ZSt7advanceIN4cvc58internal4expr9NodeValue8iteratorINS1_12NodeTemplateILb0EEEEEmEvRT_T0_.exit for.inc.i.i.i.i.i.preheader: ; preds = %if.then9 - %idx.neg = sub nsw i64 0, %sub.ptr.div.i.i.i - %add.ptr = getelementptr %"class.cvc5::internal::NodeTemplate.175", ptr %1, i64 %idx.neg + %add.ptr.idx = sub i64 0, %sub.ptr.sub.i.i.i + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr.idx br label %for.inc.i.i.i.i.i for.inc.i.i.i.i.i: ; preds = %for.inc.i.i.i.i.i.preheader, %for.inc.i.i.i.i.i %__cur.09.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %1, %for.inc.i.i.i.i.i.preheader ] - %__first.sroa.0.08.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %add.ptr, %for.inc.i.i.i.i.i.preheader ] - %2 = load ptr, ptr %__first.sroa.0.08.i.i.i.i.i, align 8 + %__first.sroa.0.08.i.i.i.i.i.idx = phi i64 [ %__first.sroa.0.08.i.i.i.i.i.add, %for.inc.i.i.i.i.i ], [ %add.ptr.idx, %for.inc.i.i.i.i.i.preheader ] + %__first.sroa.0.08.i.i.i.i.i.ptr = getelementptr inbounds i8, ptr %1, i64 %__first.sroa.0.08.i.i.i.i.i.idx + %2 = load ptr, ptr %__first.sroa.0.08.i.i.i.i.i.ptr, align 8 store ptr %2, ptr %__cur.09.i.i.i.i.i, align 8 - %incdec.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.08.i.i.i.i.i, i64 8 + %__first.sroa.0.08.i.i.i.i.i.add = add nsw i64 %__first.sroa.0.08.i.i.i.i.i.idx, 8 %incdec.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.09.i.i.i.i.i, i64 8 - %cmp.i.i.not.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i, %1 + %cmp.i.i.not.i.i.i.i.i = icmp eq i64 %__first.sroa.0.08.i.i.i.i.i.add, 0 br i1 %cmp.i.i.not.i.i.i.i.i, label %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit, label %for.inc.i.i.i.i.i, !llvm.loop !20 _ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit: ; preds = %for.inc.i.i.i.i.i %.pre109 = load ptr, ptr %_M_finish, align 8 %add.ptr27 = getelementptr inbounds i8, ptr %.pre109, i64 %sub.ptr.sub.i.i.i store ptr %add.ptr27, ptr %_M_finish, align 8 - %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %cmp4.i.i.i.i.i = icmp sgt i64 %sub.ptr.div.i.i.i.i.i, 0 @@ -2734,7 +2735,7 @@ _ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_ for.body.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i %__n.07.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %sub.ptr.div.i.i.i.i.i, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] %__result.addr.06.i.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i.i, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %1, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] - %__last.addr.05.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i26, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %add.ptr, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] + %__last.addr.05.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i26, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %add.ptr.ptr, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] %incdec.ptr.i.i.i.i.i26 = getelementptr inbounds i8, ptr %__last.addr.05.i.i.i.i.i, i64 -8 %incdec.ptr1.i.i.i.i.i = getelementptr inbounds i8, ptr %__result.addr.06.i.i.i.i.i, i64 -8 %3 = load ptr, ptr %incdec.ptr1.i.i.i.i.i, align 8 diff --git a/bench/cvc5/optimized/nary_term_util.cpp.ll b/bench/cvc5/optimized/nary_term_util.cpp.ll index 9639fc64901..ebe40f9ec0e 100644 --- a/bench/cvc5/optimized/nary_term_util.cpp.ll +++ b/bench/cvc5/optimized/nary_term_util.cpp.ll @@ -7178,25 +7178,26 @@ if.then9: ; preds = %if.then br i1 %cmp15, label %for.inc.i.i.i.i.i.preheader, label %_ZSt7advanceIN4cvc58internal4expr9NodeValue8iteratorINS1_12NodeTemplateILb0EEEEEmEvRT_T0_.exit for.inc.i.i.i.i.i.preheader: ; preds = %if.then9 - %idx.neg = sub nsw i64 0, %sub.ptr.div.i.i.i - %add.ptr = getelementptr %"class.cvc5::internal::NodeTemplate", ptr %1, i64 %idx.neg + %add.ptr.idx = sub i64 0, %sub.ptr.sub.i.i.i + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr.idx br label %for.inc.i.i.i.i.i for.inc.i.i.i.i.i: ; preds = %for.inc.i.i.i.i.i.preheader, %for.inc.i.i.i.i.i %__cur.09.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %1, %for.inc.i.i.i.i.i.preheader ] - %__first.sroa.0.08.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %add.ptr, %for.inc.i.i.i.i.i.preheader ] - %2 = load ptr, ptr %__first.sroa.0.08.i.i.i.i.i, align 8 + %__first.sroa.0.08.i.i.i.i.i.idx = phi i64 [ %__first.sroa.0.08.i.i.i.i.i.add, %for.inc.i.i.i.i.i ], [ %add.ptr.idx, %for.inc.i.i.i.i.i.preheader ] + %__first.sroa.0.08.i.i.i.i.i.ptr = getelementptr inbounds i8, ptr %1, i64 %__first.sroa.0.08.i.i.i.i.i.idx + %2 = load ptr, ptr %__first.sroa.0.08.i.i.i.i.i.ptr, align 8 store ptr %2, ptr %__cur.09.i.i.i.i.i, align 8 - %incdec.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.08.i.i.i.i.i, i64 8 + %__first.sroa.0.08.i.i.i.i.i.add = add nsw i64 %__first.sroa.0.08.i.i.i.i.i.idx, 8 %incdec.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.09.i.i.i.i.i, i64 8 - %cmp.i.i.not.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i, %1 + %cmp.i.i.not.i.i.i.i.i = icmp eq i64 %__first.sroa.0.08.i.i.i.i.i.add, 0 br i1 %cmp.i.i.not.i.i.i.i.i, label %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit, label %for.inc.i.i.i.i.i, !llvm.loop !45 _ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit: ; preds = %for.inc.i.i.i.i.i %.pre109 = load ptr, ptr %_M_finish, align 8 %add.ptr27 = getelementptr inbounds i8, ptr %.pre109, i64 %sub.ptr.sub.i.i.i store ptr %add.ptr27, ptr %_M_finish, align 8 - %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %cmp4.i.i.i.i.i = icmp sgt i64 %sub.ptr.div.i.i.i.i.i, 0 @@ -7205,7 +7206,7 @@ _ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_ for.body.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i %__n.07.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %sub.ptr.div.i.i.i.i.i, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] %__result.addr.06.i.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i.i, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %1, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] - %__last.addr.05.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i26, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %add.ptr, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] + %__last.addr.05.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i26, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %add.ptr.ptr, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] %incdec.ptr.i.i.i.i.i26 = getelementptr inbounds i8, ptr %__last.addr.05.i.i.i.i.i, i64 -8 %incdec.ptr1.i.i.i.i.i = getelementptr inbounds i8, ptr %__result.addr.06.i.i.i.i.i, i64 -8 %3 = load ptr, ptr %incdec.ptr1.i.i.i.i.i, align 8 diff --git a/bench/cvc5/optimized/node_algorithm.cpp.ll b/bench/cvc5/optimized/node_algorithm.cpp.ll index 72dc01a15e9..8b97ff78d88 100644 --- a/bench/cvc5/optimized/node_algorithm.cpp.ll +++ b/bench/cvc5/optimized/node_algorithm.cpp.ll @@ -10841,25 +10841,26 @@ if.then9: ; preds = %if.then br i1 %cmp15, label %for.inc.i.i.i.i.i.preheader, label %_ZSt7advanceIN4cvc58internal4expr9NodeValue8iteratorINS1_12NodeTemplateILb0EEEEEmEvRT_T0_.exit for.inc.i.i.i.i.i.preheader: ; preds = %if.then9 - %idx.neg = sub nsw i64 0, %sub.ptr.div.i.i.i - %add.ptr = getelementptr %"class.cvc5::internal::NodeTemplate", ptr %1, i64 %idx.neg + %add.ptr.idx = sub i64 0, %sub.ptr.sub.i.i.i + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr.idx br label %for.inc.i.i.i.i.i for.inc.i.i.i.i.i: ; preds = %for.inc.i.i.i.i.i.preheader, %for.inc.i.i.i.i.i %__cur.09.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %1, %for.inc.i.i.i.i.i.preheader ] - %__first.sroa.0.08.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %add.ptr, %for.inc.i.i.i.i.i.preheader ] - %2 = load ptr, ptr %__first.sroa.0.08.i.i.i.i.i, align 8 + %__first.sroa.0.08.i.i.i.i.i.idx = phi i64 [ %__first.sroa.0.08.i.i.i.i.i.add, %for.inc.i.i.i.i.i ], [ %add.ptr.idx, %for.inc.i.i.i.i.i.preheader ] + %__first.sroa.0.08.i.i.i.i.i.ptr = getelementptr inbounds i8, ptr %1, i64 %__first.sroa.0.08.i.i.i.i.i.idx + %2 = load ptr, ptr %__first.sroa.0.08.i.i.i.i.i.ptr, align 8 store ptr %2, ptr %__cur.09.i.i.i.i.i, align 8 - %incdec.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.08.i.i.i.i.i, i64 8 + %__first.sroa.0.08.i.i.i.i.i.add = add nsw i64 %__first.sroa.0.08.i.i.i.i.i.idx, 8 %incdec.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.09.i.i.i.i.i, i64 8 - %cmp.i.i.not.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i, %1 + %cmp.i.i.not.i.i.i.i.i = icmp eq i64 %__first.sroa.0.08.i.i.i.i.i.add, 0 br i1 %cmp.i.i.not.i.i.i.i.i, label %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit, label %for.inc.i.i.i.i.i, !llvm.loop !106 _ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit: ; preds = %for.inc.i.i.i.i.i %.pre109 = load ptr, ptr %_M_finish, align 8 %add.ptr27 = getelementptr inbounds i8, ptr %.pre109, i64 %sub.ptr.sub.i.i.i store ptr %add.ptr27, ptr %_M_finish, align 8 - %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %cmp4.i.i.i.i.i = icmp sgt i64 %sub.ptr.div.i.i.i.i.i, 0 @@ -10868,7 +10869,7 @@ _ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_ for.body.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i %__n.07.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %sub.ptr.div.i.i.i.i.i, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] %__result.addr.06.i.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i.i, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %1, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] - %__last.addr.05.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i26, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %add.ptr, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] + %__last.addr.05.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i26, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %add.ptr.ptr, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] %incdec.ptr.i.i.i.i.i26 = getelementptr inbounds i8, ptr %__last.addr.05.i.i.i.i.i, i64 -8 %incdec.ptr1.i.i.i.i.i = getelementptr inbounds i8, ptr %__result.addr.06.i.i.i.i.i, i64 -8 %3 = load ptr, ptr %incdec.ptr1.i.i.i.i.i, align 8 diff --git a/bench/cvc5/optimized/node_converter.cpp.ll b/bench/cvc5/optimized/node_converter.cpp.ll index e3b68dcfa92..cdb62a97f35 100644 --- a/bench/cvc5/optimized/node_converter.cpp.ll +++ b/bench/cvc5/optimized/node_converter.cpp.ll @@ -7994,25 +7994,26 @@ if.then9: ; preds = %if.then br i1 %cmp15, label %for.inc.i.i.i.i.i.preheader, label %_ZSt7advanceIN4cvc58internal4expr9NodeValue8iteratorINS1_12NodeTemplateILb0EEEEEmEvRT_T0_.exit for.inc.i.i.i.i.i.preheader: ; preds = %if.then9 - %idx.neg = sub nsw i64 0, %sub.ptr.div.i.i.i - %add.ptr = getelementptr %"class.cvc5::internal::NodeTemplate.29", ptr %1, i64 %idx.neg + %add.ptr.idx = sub i64 0, %sub.ptr.sub.i.i.i + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr.idx br label %for.inc.i.i.i.i.i for.inc.i.i.i.i.i: ; preds = %for.inc.i.i.i.i.i.preheader, %for.inc.i.i.i.i.i %__cur.09.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %1, %for.inc.i.i.i.i.i.preheader ] - %__first.sroa.0.08.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %add.ptr, %for.inc.i.i.i.i.i.preheader ] - %2 = load ptr, ptr %__first.sroa.0.08.i.i.i.i.i, align 8 + %__first.sroa.0.08.i.i.i.i.i.idx = phi i64 [ %__first.sroa.0.08.i.i.i.i.i.add, %for.inc.i.i.i.i.i ], [ %add.ptr.idx, %for.inc.i.i.i.i.i.preheader ] + %__first.sroa.0.08.i.i.i.i.i.ptr = getelementptr inbounds i8, ptr %1, i64 %__first.sroa.0.08.i.i.i.i.i.idx + %2 = load ptr, ptr %__first.sroa.0.08.i.i.i.i.i.ptr, align 8 store ptr %2, ptr %__cur.09.i.i.i.i.i, align 8 - %incdec.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.08.i.i.i.i.i, i64 8 + %__first.sroa.0.08.i.i.i.i.i.add = add nsw i64 %__first.sroa.0.08.i.i.i.i.i.idx, 8 %incdec.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.09.i.i.i.i.i, i64 8 - %cmp.i.i.not.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i, %1 + %cmp.i.i.not.i.i.i.i.i = icmp eq i64 %__first.sroa.0.08.i.i.i.i.i.add, 0 br i1 %cmp.i.i.not.i.i.i.i.i, label %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit, label %for.inc.i.i.i.i.i, !llvm.loop !42 _ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit: ; preds = %for.inc.i.i.i.i.i %.pre109 = load ptr, ptr %_M_finish, align 8 %add.ptr27 = getelementptr inbounds i8, ptr %.pre109, i64 %sub.ptr.sub.i.i.i store ptr %add.ptr27, ptr %_M_finish, align 8 - %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %cmp4.i.i.i.i.i = icmp sgt i64 %sub.ptr.div.i.i.i.i.i, 0 @@ -8021,7 +8022,7 @@ _ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_ for.body.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i %__n.07.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %sub.ptr.div.i.i.i.i.i, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] %__result.addr.06.i.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i.i, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %1, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] - %__last.addr.05.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i26, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %add.ptr, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] + %__last.addr.05.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i26, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %add.ptr.ptr, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] %incdec.ptr.i.i.i.i.i26 = getelementptr inbounds i8, ptr %__last.addr.05.i.i.i.i.i, i64 -8 %incdec.ptr1.i.i.i.i.i = getelementptr inbounds i8, ptr %__result.addr.06.i.i.i.i.i, i64 -8 %3 = load ptr, ptr %incdec.ptr1.i.i.i.i.i, align 8 diff --git a/bench/cvc5/optimized/oracle_engine.cpp.ll b/bench/cvc5/optimized/oracle_engine.cpp.ll index 165e14e0ca9..735cb447eef 100644 --- a/bench/cvc5/optimized/oracle_engine.cpp.ll +++ b/bench/cvc5/optimized/oracle_engine.cpp.ll @@ -7231,25 +7231,26 @@ if.then9: ; preds = %if.then br i1 %cmp15, label %for.inc.i.i.i.i.i.preheader, label %_ZSt7advanceIN4cvc58internal4expr9NodeValue8iteratorINS1_12NodeTemplateILb0EEEEEmEvRT_T0_.exit for.inc.i.i.i.i.i.preheader: ; preds = %if.then9 - %idx.neg = sub nsw i64 0, %sub.ptr.div.i.i.i - %add.ptr = getelementptr %"class.cvc5::internal::NodeTemplate.519", ptr %1, i64 %idx.neg + %add.ptr.idx = sub i64 0, %sub.ptr.sub.i.i.i + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr.idx br label %for.inc.i.i.i.i.i for.inc.i.i.i.i.i: ; preds = %for.inc.i.i.i.i.i.preheader, %for.inc.i.i.i.i.i %__cur.09.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %1, %for.inc.i.i.i.i.i.preheader ] - %__first.sroa.0.08.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %add.ptr, %for.inc.i.i.i.i.i.preheader ] - %2 = load ptr, ptr %__first.sroa.0.08.i.i.i.i.i, align 8 + %__first.sroa.0.08.i.i.i.i.i.idx = phi i64 [ %__first.sroa.0.08.i.i.i.i.i.add, %for.inc.i.i.i.i.i ], [ %add.ptr.idx, %for.inc.i.i.i.i.i.preheader ] + %__first.sroa.0.08.i.i.i.i.i.ptr = getelementptr inbounds i8, ptr %1, i64 %__first.sroa.0.08.i.i.i.i.i.idx + %2 = load ptr, ptr %__first.sroa.0.08.i.i.i.i.i.ptr, align 8 store ptr %2, ptr %__cur.09.i.i.i.i.i, align 8 - %incdec.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.08.i.i.i.i.i, i64 8 + %__first.sroa.0.08.i.i.i.i.i.add = add nsw i64 %__first.sroa.0.08.i.i.i.i.i.idx, 8 %incdec.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.09.i.i.i.i.i, i64 8 - %cmp.i.i.not.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i, %1 + %cmp.i.i.not.i.i.i.i.i = icmp eq i64 %__first.sroa.0.08.i.i.i.i.i.add, 0 br i1 %cmp.i.i.not.i.i.i.i.i, label %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit, label %for.inc.i.i.i.i.i, !llvm.loop !77 _ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit: ; preds = %for.inc.i.i.i.i.i %.pre109 = load ptr, ptr %_M_finish, align 8 %add.ptr27 = getelementptr inbounds i8, ptr %.pre109, i64 %sub.ptr.sub.i.i.i store ptr %add.ptr27, ptr %_M_finish, align 8 - %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %cmp4.i.i.i.i.i = icmp sgt i64 %sub.ptr.div.i.i.i.i.i, 0 @@ -7258,7 +7259,7 @@ _ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_ for.body.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i %__n.07.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %sub.ptr.div.i.i.i.i.i, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] %__result.addr.06.i.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i.i, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %1, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] - %__last.addr.05.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i26, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %add.ptr, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] + %__last.addr.05.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i26, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %add.ptr.ptr, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] %incdec.ptr.i.i.i.i.i26 = getelementptr inbounds i8, ptr %__last.addr.05.i.i.i.i.i, i64 -8 %incdec.ptr1.i.i.i.i.i = getelementptr inbounds i8, ptr %__result.addr.06.i.i.i.i.i, i64 -8 %3 = load ptr, ptr %incdec.ptr1.i.i.i.i.i, align 8 diff --git a/bench/cvc5/optimized/proof_final_callback.cpp.ll b/bench/cvc5/optimized/proof_final_callback.cpp.ll index 28712965f61..9f4f198e294 100644 --- a/bench/cvc5/optimized/proof_final_callback.cpp.ll +++ b/bench/cvc5/optimized/proof_final_callback.cpp.ll @@ -6875,18 +6875,18 @@ if.then4: ; preds = %if.then br i1 %cmp10, label %if.then11, label %if.else if.then11: ; preds = %if.then4 - %idx.neg = sub i64 0, %__n - %add.ptr = getelementptr inbounds i64, ptr %1, i64 %idx.neg + %.neg = mul i64 %__n, -8 + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %.neg %add.ptr.idx.neg = shl i64 %__n, 3 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr nonnull align 8 %add.ptr, i64 %add.ptr.idx.neg, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %add.ptr.ptr, i64 %add.ptr.idx.neg, i1 false) %3 = load ptr, ptr %_M_finish, align 8 %add.ptr16 = getelementptr inbounds i64, ptr %3, i64 %__n store ptr %add.ptr16, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce + %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %invoke.cont20, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %if.then11 - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i diff --git a/bench/cvc5/optimized/quant_info.cpp.ll b/bench/cvc5/optimized/quant_info.cpp.ll index c7f401c1747..3f19683e9ae 100644 --- a/bench/cvc5/optimized/quant_info.cpp.ll +++ b/bench/cvc5/optimized/quant_info.cpp.ll @@ -2350,25 +2350,26 @@ if.then9: ; preds = %if.then br i1 %cmp15, label %for.inc.i.i.i.i.i.preheader, label %_ZSt7advanceIN4cvc58internal4expr9NodeValue8iteratorINS1_12NodeTemplateILb0EEEEEmEvRT_T0_.exit for.inc.i.i.i.i.i.preheader: ; preds = %if.then9 - %idx.neg = sub nsw i64 0, %sub.ptr.div.i.i.i - %add.ptr = getelementptr %"class.cvc5::internal::NodeTemplate.5", ptr %1, i64 %idx.neg + %add.ptr.idx = sub i64 0, %sub.ptr.sub.i.i.i + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr.idx br label %for.inc.i.i.i.i.i for.inc.i.i.i.i.i: ; preds = %for.inc.i.i.i.i.i.preheader, %for.inc.i.i.i.i.i %__cur.09.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %1, %for.inc.i.i.i.i.i.preheader ] - %__first.sroa.0.08.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %add.ptr, %for.inc.i.i.i.i.i.preheader ] - %2 = load ptr, ptr %__first.sroa.0.08.i.i.i.i.i, align 8 + %__first.sroa.0.08.i.i.i.i.i.idx = phi i64 [ %__first.sroa.0.08.i.i.i.i.i.add, %for.inc.i.i.i.i.i ], [ %add.ptr.idx, %for.inc.i.i.i.i.i.preheader ] + %__first.sroa.0.08.i.i.i.i.i.ptr = getelementptr inbounds i8, ptr %1, i64 %__first.sroa.0.08.i.i.i.i.i.idx + %2 = load ptr, ptr %__first.sroa.0.08.i.i.i.i.i.ptr, align 8 store ptr %2, ptr %__cur.09.i.i.i.i.i, align 8 - %incdec.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.08.i.i.i.i.i, i64 8 + %__first.sroa.0.08.i.i.i.i.i.add = add nsw i64 %__first.sroa.0.08.i.i.i.i.i.idx, 8 %incdec.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.09.i.i.i.i.i, i64 8 - %cmp.i.i.not.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i, %1 + %cmp.i.i.not.i.i.i.i.i = icmp eq i64 %__first.sroa.0.08.i.i.i.i.i.add, 0 br i1 %cmp.i.i.not.i.i.i.i.i, label %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit, label %for.inc.i.i.i.i.i, !llvm.loop !22 _ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit: ; preds = %for.inc.i.i.i.i.i %.pre109 = load ptr, ptr %_M_finish, align 8 %add.ptr27 = getelementptr inbounds i8, ptr %.pre109, i64 %sub.ptr.sub.i.i.i store ptr %add.ptr27, ptr %_M_finish, align 8 - %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %cmp4.i.i.i.i.i = icmp sgt i64 %sub.ptr.div.i.i.i.i.i, 0 @@ -2377,7 +2378,7 @@ _ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_ for.body.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i %__n.07.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %sub.ptr.div.i.i.i.i.i, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] %__result.addr.06.i.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i.i, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %1, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] - %__last.addr.05.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i26, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %add.ptr, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] + %__last.addr.05.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i26, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %add.ptr.ptr, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] %incdec.ptr.i.i.i.i.i26 = getelementptr inbounds i8, ptr %__last.addr.05.i.i.i.i.i, i64 -8 %incdec.ptr1.i.i.i.i.i = getelementptr inbounds i8, ptr %__result.addr.06.i.i.i.i.i, i64 -8 %3 = load ptr, ptr %incdec.ptr1.i.i.i.i.i, align 8 diff --git a/bench/cvc5/optimized/regexp_solver.cpp.ll b/bench/cvc5/optimized/regexp_solver.cpp.ll index ed65e117a49..06afc91b1e9 100644 --- a/bench/cvc5/optimized/regexp_solver.cpp.ll +++ b/bench/cvc5/optimized/regexp_solver.cpp.ll @@ -1913,7 +1913,7 @@ if.end: ; preds = %invoke.cont33, %inv to label %cleanup unwind label %lpad cleanup: ; preds = %if.end, %invoke.cont33 - %cleanup.dest.slot.0 = phi i1 [ false, %invoke.cont33 ], [ %call36, %if.end ] + %switch = phi i1 [ false, %invoke.cont33 ], [ %call36, %if.end ] %11 = load ptr, ptr %mems2, align 8 %12 = load ptr, ptr %_M_finish.i.i.i, align 8 %cmp.not3.i.i.i.i = icmp eq ptr %11, %12 @@ -1966,7 +1966,7 @@ if.then.i.i.i122: ; preds = %invoke.cont.i120 br label %_ZNSt6vectorIN4cvc58internal12NodeTemplateILb1EEESaIS3_EED2Ev.exit _ZNSt6vectorIN4cvc58internal12NodeTemplateILb1EEESaIS3_EED2Ev.exit: ; preds = %invoke.cont.i120, %if.then.i.i.i122 - br i1 %cleanup.dest.slot.0, label %for.inc, label %cond.end49 + br i1 %switch, label %for.inc, label %cond.end49 for.inc: ; preds = %_ZNSt6vectorIN4cvc58internal12NodeTemplateILb1EEESaIS3_EED2Ev.exit %call.i123 = call noundef ptr @_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base(ptr noundef %__begin3.sroa.0.0172) #23 @@ -11732,7 +11732,7 @@ cleanup.sink.split: ; preds = %invoke.cont.i317, % br label %cleanup cleanup: ; preds = %cleanup.sink.split, %invoke.cont.i317, %if.then13.i.i155, %if.then.i.i148, %invoke.cont55, %invoke.cont.i125, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit - %cleanup.dest.slot.0 = phi i1 [ true, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit ], [ false, %invoke.cont.i125 ], [ true, %invoke.cont55 ], [ true, %if.then.i.i148 ], [ true, %if.then13.i.i155 ], [ false, %invoke.cont.i317 ], [ false, %cleanup.sink.split ] + %switch = phi i1 [ true, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit ], [ false, %invoke.cont.i125 ], [ true, %invoke.cont55 ], [ true, %if.then.i.i148 ], [ true, %if.then13.i.i155 ], [ false, %invoke.cont.i317 ], [ false, %cleanup.sink.split ] %116 = load ptr, ptr %exp, align 8 %bf.load.i.i323 = load i64, ptr %116, align 8 %117 = and i64 %bf.load.i.i323, 1152920405095219200 @@ -11760,7 +11760,7 @@ terminate.lpad.i333: ; preds = %if.then13.i.i332 unreachable _ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit334: ; preds = %cleanup, %if.then.i.i325, %if.then13.i.i332 - br i1 %cleanup.dest.slot.0, label %if.end121, label %return + br i1 %switch, label %if.end121, label %return ehcleanup100: ; preds = %ehcleanup99, %lpad54, %ehcleanup49, %lpad8, %lpad6 %.pn5.pn.pn = phi { ptr, i32 } [ %.pn5.pn, %ehcleanup99 ], [ %72, %lpad54 ], [ %14, %lpad6 ], [ %.pn8.pn, %ehcleanup49 ], [ %15, %lpad8 ] @@ -17270,18 +17270,18 @@ if.then4: ; preds = %if.then br i1 %cmp10, label %if.then11, label %if.else if.then11: ; preds = %if.then4 - %idx.neg = sub i64 0, %__n - %add.ptr = getelementptr inbounds i64, ptr %1, i64 %idx.neg + %.neg = mul i64 %__n, -8 + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %.neg %add.ptr.idx.neg = shl i64 %__n, 3 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr nonnull align 8 %add.ptr, i64 %add.ptr.idx.neg, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %add.ptr.ptr, i64 %add.ptr.idx.neg, i1 false) %3 = load ptr, ptr %_M_finish, align 8 %add.ptr16 = getelementptr inbounds i64, ptr %3, i64 %__n store ptr %add.ptr16, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce + %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %invoke.cont20, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %if.then11 - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i diff --git a/bench/cvc5/optimized/resource_manager.cpp.ll b/bench/cvc5/optimized/resource_manager.cpp.ll index 725f5431e6e..da35720847e 100644 --- a/bench/cvc5/optimized/resource_manager.cpp.ll +++ b/bench/cvc5/optimized/resource_manager.cpp.ll @@ -4377,18 +4377,18 @@ if.then4: ; preds = %if.then br i1 %cmp10, label %if.then11, label %if.else if.then11: ; preds = %if.then4 - %idx.neg = sub i64 0, %__n - %add.ptr = getelementptr inbounds i64, ptr %1, i64 %idx.neg + %.neg = mul i64 %__n, -8 + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %.neg %add.ptr.idx.neg = shl i64 %__n, 3 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr nonnull align 8 %add.ptr, i64 %add.ptr.idx.neg, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %add.ptr.ptr, i64 %add.ptr.idx.neg, i1 false) %3 = load ptr, ptr %_M_finish, align 8 %add.ptr16 = getelementptr inbounds i64, ptr %3, i64 %__n store ptr %add.ptr16, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce + %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %invoke.cont20, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %if.then11 - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i diff --git a/bench/cvc5/optimized/sort_inference.cpp.ll b/bench/cvc5/optimized/sort_inference.cpp.ll index cf7be2d7688..f0a41f8af9c 100644 --- a/bench/cvc5/optimized/sort_inference.cpp.ll +++ b/bench/cvc5/optimized/sort_inference.cpp.ll @@ -22291,25 +22291,26 @@ if.then9: ; preds = %if.then br i1 %cmp15, label %for.body.i.i.i.i.i.preheader, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPSt4pairIiiESt6vectorIS3_SaIS3_EEEEmEvRT_T0_.exit for.body.i.i.i.i.i.preheader: ; preds = %if.then9 - %idx.neg = sub nsw i64 0, %sub.ptr.div.i.i.i - %add.ptr = getelementptr %"struct.std::pair.8", ptr %1, i64 %idx.neg + %add.ptr.idx = sub i64 0, %sub.ptr.sub.i.i.i + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr.idx br label %for.body.i.i.i.i.i for.body.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i.preheader, %for.body.i.i.i.i.i %__cur.09.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %for.body.i.i.i.i.i ], [ %1, %for.body.i.i.i.i.i.preheader ] - %__first.sroa.0.08.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i, %for.body.i.i.i.i.i ], [ %add.ptr, %for.body.i.i.i.i.i.preheader ] - %2 = load i64, ptr %__first.sroa.0.08.i.i.i.i.i, align 4 + %__first.sroa.0.08.i.i.i.i.i.idx = phi i64 [ %__first.sroa.0.08.i.i.i.i.i.add, %for.body.i.i.i.i.i ], [ %add.ptr.idx, %for.body.i.i.i.i.i.preheader ] + %__first.sroa.0.08.i.i.i.i.i.ptr = getelementptr inbounds i8, ptr %1, i64 %__first.sroa.0.08.i.i.i.i.i.idx + %2 = load i64, ptr %__first.sroa.0.08.i.i.i.i.i.ptr, align 4 store i64 %2, ptr %__cur.09.i.i.i.i.i, align 4 - %incdec.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.08.i.i.i.i.i, i64 8 + %__first.sroa.0.08.i.i.i.i.i.add = add nsw i64 %__first.sroa.0.08.i.i.i.i.i.idx, 8 %incdec.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.09.i.i.i.i.i, i64 8 - %cmp.i.i.not.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i, %1 + %cmp.i.i.not.i.i.i.i.i = icmp eq i64 %__first.sroa.0.08.i.i.i.i.i.add, 0 br i1 %cmp.i.i.not.i.i.i.i.i, label %_ZSt22__uninitialized_move_aIPSt4pairIiiES2_SaIS1_EET0_T_S5_S4_RT1_.exit, label %for.body.i.i.i.i.i, !llvm.loop !298 _ZSt22__uninitialized_move_aIPSt4pairIiiES2_SaIS1_EET0_T_S5_S4_RT1_.exit: ; preds = %for.body.i.i.i.i.i %.pre114 = load ptr, ptr %_M_finish, align 8 %add.ptr27 = getelementptr inbounds i8, ptr %.pre114, i64 %sub.ptr.sub.i.i.i store ptr %add.ptr27, ptr %_M_finish, align 8 - %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %cmp4.i.i.i.i.i = icmp sgt i64 %sub.ptr.div.i.i.i.i.i, 0 @@ -22318,7 +22319,7 @@ _ZSt22__uninitialized_move_aIPSt4pairIiiES2_SaIS1_EET0_T_S5_S4_RT1_.exit: ; pred for.body.i.i.i.i.i26: ; preds = %_ZSt22__uninitialized_move_aIPSt4pairIiiES2_SaIS1_EET0_T_S5_S4_RT1_.exit, %for.body.i.i.i.i.i26 %__n.07.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i, %for.body.i.i.i.i.i26 ], [ %sub.ptr.div.i.i.i.i.i, %_ZSt22__uninitialized_move_aIPSt4pairIiiES2_SaIS1_EET0_T_S5_S4_RT1_.exit ] %__result.addr.06.i.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i.i, %for.body.i.i.i.i.i26 ], [ %1, %_ZSt22__uninitialized_move_aIPSt4pairIiiES2_SaIS1_EET0_T_S5_S4_RT1_.exit ] - %__last.addr.05.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i27, %for.body.i.i.i.i.i26 ], [ %add.ptr, %_ZSt22__uninitialized_move_aIPSt4pairIiiES2_SaIS1_EET0_T_S5_S4_RT1_.exit ] + %__last.addr.05.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i27, %for.body.i.i.i.i.i26 ], [ %add.ptr.ptr, %_ZSt22__uninitialized_move_aIPSt4pairIiiES2_SaIS1_EET0_T_S5_S4_RT1_.exit ] %incdec.ptr.i.i.i.i.i27 = getelementptr inbounds i8, ptr %__last.addr.05.i.i.i.i.i, i64 -8 %incdec.ptr1.i.i.i.i.i = getelementptr inbounds i8, ptr %__result.addr.06.i.i.i.i.i, i64 -8 %3 = load i32, ptr %incdec.ptr.i.i.i.i.i27, align 4 diff --git a/bench/cvc5/optimized/subs_minimize.cpp.ll b/bench/cvc5/optimized/subs_minimize.cpp.ll index d07c1476c20..99439840cc8 100644 --- a/bench/cvc5/optimized/subs_minimize.cpp.ll +++ b/bench/cvc5/optimized/subs_minimize.cpp.ll @@ -10971,25 +10971,26 @@ if.then9: ; preds = %if.then br i1 %cmp15, label %for.inc.i.i.i.i.i.preheader, label %_ZSt7advanceIN4cvc58internal4expr9NodeValue8iteratorINS1_12NodeTemplateILb0EEEEEmEvRT_T0_.exit for.inc.i.i.i.i.i.preheader: ; preds = %if.then9 - %idx.neg = sub nsw i64 0, %sub.ptr.div.i.i.i - %add.ptr = getelementptr %"class.cvc5::internal::NodeTemplate.96", ptr %1, i64 %idx.neg + %add.ptr.idx = sub i64 0, %sub.ptr.sub.i.i.i + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr.idx br label %for.inc.i.i.i.i.i for.inc.i.i.i.i.i: ; preds = %for.inc.i.i.i.i.i.preheader, %for.inc.i.i.i.i.i %__cur.09.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %1, %for.inc.i.i.i.i.i.preheader ] - %__first.sroa.0.08.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %add.ptr, %for.inc.i.i.i.i.i.preheader ] - %2 = load ptr, ptr %__first.sroa.0.08.i.i.i.i.i, align 8 + %__first.sroa.0.08.i.i.i.i.i.idx = phi i64 [ %__first.sroa.0.08.i.i.i.i.i.add, %for.inc.i.i.i.i.i ], [ %add.ptr.idx, %for.inc.i.i.i.i.i.preheader ] + %__first.sroa.0.08.i.i.i.i.i.ptr = getelementptr inbounds i8, ptr %1, i64 %__first.sroa.0.08.i.i.i.i.i.idx + %2 = load ptr, ptr %__first.sroa.0.08.i.i.i.i.i.ptr, align 8 store ptr %2, ptr %__cur.09.i.i.i.i.i, align 8 - %incdec.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.08.i.i.i.i.i, i64 8 + %__first.sroa.0.08.i.i.i.i.i.add = add nsw i64 %__first.sroa.0.08.i.i.i.i.i.idx, 8 %incdec.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.09.i.i.i.i.i, i64 8 - %cmp.i.i.not.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i, %1 + %cmp.i.i.not.i.i.i.i.i = icmp eq i64 %__first.sroa.0.08.i.i.i.i.i.add, 0 br i1 %cmp.i.i.not.i.i.i.i.i, label %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit, label %for.inc.i.i.i.i.i, !llvm.loop !99 _ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit: ; preds = %for.inc.i.i.i.i.i %.pre109 = load ptr, ptr %_M_finish, align 8 %add.ptr27 = getelementptr inbounds i8, ptr %.pre109, i64 %sub.ptr.sub.i.i.i store ptr %add.ptr27, ptr %_M_finish, align 8 - %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %cmp4.i.i.i.i.i = icmp sgt i64 %sub.ptr.div.i.i.i.i.i, 0 @@ -10998,7 +10999,7 @@ _ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_ for.body.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i %__n.07.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %sub.ptr.div.i.i.i.i.i, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] %__result.addr.06.i.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i.i, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %1, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] - %__last.addr.05.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i26, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %add.ptr, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] + %__last.addr.05.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i26, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %add.ptr.ptr, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] %incdec.ptr.i.i.i.i.i26 = getelementptr inbounds i8, ptr %__last.addr.05.i.i.i.i.i, i64 -8 %incdec.ptr1.i.i.i.i.i = getelementptr inbounds i8, ptr %__result.addr.06.i.i.i.i.i, i64 -8 %3 = load ptr, ptr %incdec.ptr1.i.i.i.i.i, align 8 diff --git a/bench/cvc5/optimized/sygus_unif_strat.cpp.ll b/bench/cvc5/optimized/sygus_unif_strat.cpp.ll index ca79796d757..1689491d8c4 100644 --- a/bench/cvc5/optimized/sygus_unif_strat.cpp.ll +++ b/bench/cvc5/optimized/sygus_unif_strat.cpp.ll @@ -28513,17 +28513,17 @@ if.then9: ; preds = %if.then br i1 %cmp15, label %_ZSt22__uninitialized_move_aIPjS0_SaIjEET0_T_S3_S2_RT1_.exit, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEmEvRT_T0_.exit _ZSt22__uninitialized_move_aIPjS0_SaIjEET0_T_S3_S2_RT1_.exit: ; preds = %if.then9 - %idx.neg = sub nsw i64 0, %sub.ptr.div.i.i.i - %add.ptr = getelementptr inbounds i32, ptr %1, i64 %idx.neg - tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %1, ptr align 4 %add.ptr, i64 %sub.ptr.sub.i.i.i, i1 false) + %add.ptr.idx = sub i64 0, %sub.ptr.sub.i.i.i + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr.idx + tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %1, ptr align 4 %add.ptr.ptr, i64 %sub.ptr.sub.i.i.i, i1 false) %.pre78 = load ptr, ptr %_M_finish, align 8 %add.ptr27 = getelementptr inbounds i8, ptr %.pre78, i64 %sub.ptr.sub.i.i.i store ptr %add.ptr27, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce + %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %if.then.i.i.i.i.i30, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPjS0_SaIjEET0_T_S3_S2_RT1_.exit - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 2 %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i @@ -28536,14 +28536,14 @@ if.then.i.i.i.i.i30: ; preds = %if.then.i.i.i.i.i, br label %if.end109 _ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEmEvRT_T0_.exit: ; preds = %if.then9 - %incdec.ptr.i.i.i = getelementptr inbounds i8, ptr %__first.coerce, i64 %sub.ptr.sub.i - %tobool.not.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i, %__last.coerce + %incdec.ptr.i8.sink.i.i.ptr = getelementptr inbounds i8, ptr %__first.coerce, i64 %sub.ptr.sub.i + %tobool.not.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i8.sink.i.i.ptr, %__last.coerce br i1 %tobool.not.i.i.i.i.i.i.i.i, label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEES2_jET0_T_S8_S7_RSaIT1_E.exit, label %if.then.i.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i.i: ; preds = %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEmEvRT_T0_.exit - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i = ptrtoint ptr %incdec.ptr.i.i.i to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i = ptrtoint ptr %incdec.ptr.i8.sink.i.i.ptr to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i, %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %1, ptr align 4 %incdec.ptr.i.i.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %1, ptr align 4 %incdec.ptr.i8.sink.i.i.ptr, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i, i1 false) %.pre = load ptr, ptr %_M_finish, align 8 br label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEES2_jET0_T_S8_S7_RSaIT1_E.exit diff --git a/bench/cvc5/optimized/tableau.cpp.ll b/bench/cvc5/optimized/tableau.cpp.ll index 6543a3d4077..86092a870d8 100644 --- a/bench/cvc5/optimized/tableau.cpp.ll +++ b/bench/cvc5/optimized/tableau.cpp.ll @@ -2364,18 +2364,18 @@ if.then4: ; preds = %if.then br i1 %cmp10, label %if.then11, label %if.else if.then11: ; preds = %if.then4 - %idx.neg = sub i64 0, %__n - %add.ptr = getelementptr inbounds i32, ptr %1, i64 %idx.neg + %.neg = mul i64 %__n, -4 + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %.neg %add.ptr.idx.neg = shl i64 %__n, 2 - tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %1, ptr nonnull align 4 %add.ptr, i64 %add.ptr.idx.neg, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %1, ptr align 4 %add.ptr.ptr, i64 %add.ptr.idx.neg, i1 false) %3 = load ptr, ptr %_M_finish, align 8 %add.ptr16 = getelementptr inbounds i32, ptr %3, i64 %__n store ptr %add.ptr16, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce + %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %invoke.cont20, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %if.then11 - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 2 %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i diff --git a/bench/cvc5/optimized/term_tuple_enumerator.cpp.ll b/bench/cvc5/optimized/term_tuple_enumerator.cpp.ll index ab93a9b41e4..dddfeb3b79b 100644 --- a/bench/cvc5/optimized/term_tuple_enumerator.cpp.ll +++ b/bench/cvc5/optimized/term_tuple_enumerator.cpp.ll @@ -6218,18 +6218,18 @@ if.then4: ; preds = %if.then br i1 %cmp10, label %if.then11, label %if.else if.then11: ; preds = %if.then4 - %idx.neg = sub i64 0, %__n - %add.ptr = getelementptr inbounds i64, ptr %1, i64 %idx.neg + %.neg = mul i64 %__n, -8 + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %.neg %add.ptr.idx.neg = shl i64 %__n, 3 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr nonnull align 8 %add.ptr, i64 %add.ptr.idx.neg, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %add.ptr.ptr, i64 %add.ptr.idx.neg, i1 false) %3 = load ptr, ptr %_M_finish, align 8 %add.ptr16 = getelementptr inbounds i64, ptr %3, i64 %__n store ptr %add.ptr16, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce + %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %invoke.cont20, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %if.then11 - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i diff --git a/bench/cvc5/optimized/theory_bv_utils.cpp.ll b/bench/cvc5/optimized/theory_bv_utils.cpp.ll index c8399918117..7c1e7b39a1e 100644 --- a/bench/cvc5/optimized/theory_bv_utils.cpp.ll +++ b/bench/cvc5/optimized/theory_bv_utils.cpp.ll @@ -4886,25 +4886,26 @@ if.then9: ; preds = %if.then br i1 %cmp15, label %for.inc.i.i.i.i.i.preheader, label %_ZSt7advanceIN4cvc58internal4expr9NodeValue8iteratorINS1_12NodeTemplateILb0EEEEEmEvRT_T0_.exit for.inc.i.i.i.i.i.preheader: ; preds = %if.then9 - %idx.neg = sub nsw i64 0, %sub.ptr.div.i.i.i - %add.ptr = getelementptr %"class.cvc5::internal::NodeTemplate", ptr %1, i64 %idx.neg + %add.ptr.idx = sub i64 0, %sub.ptr.sub.i.i.i + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr.idx br label %for.inc.i.i.i.i.i for.inc.i.i.i.i.i: ; preds = %for.inc.i.i.i.i.i.preheader, %for.inc.i.i.i.i.i %__cur.09.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %1, %for.inc.i.i.i.i.i.preheader ] - %__first.sroa.0.08.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %add.ptr, %for.inc.i.i.i.i.i.preheader ] - %2 = load ptr, ptr %__first.sroa.0.08.i.i.i.i.i, align 8 + %__first.sroa.0.08.i.i.i.i.i.idx = phi i64 [ %__first.sroa.0.08.i.i.i.i.i.add, %for.inc.i.i.i.i.i ], [ %add.ptr.idx, %for.inc.i.i.i.i.i.preheader ] + %__first.sroa.0.08.i.i.i.i.i.ptr = getelementptr inbounds i8, ptr %1, i64 %__first.sroa.0.08.i.i.i.i.i.idx + %2 = load ptr, ptr %__first.sroa.0.08.i.i.i.i.i.ptr, align 8 store ptr %2, ptr %__cur.09.i.i.i.i.i, align 8 - %incdec.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.08.i.i.i.i.i, i64 8 + %__first.sroa.0.08.i.i.i.i.i.add = add nsw i64 %__first.sroa.0.08.i.i.i.i.i.idx, 8 %incdec.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.09.i.i.i.i.i, i64 8 - %cmp.i.i.not.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i, %1 + %cmp.i.i.not.i.i.i.i.i = icmp eq i64 %__first.sroa.0.08.i.i.i.i.i.add, 0 br i1 %cmp.i.i.not.i.i.i.i.i, label %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit, label %for.inc.i.i.i.i.i, !llvm.loop !109 _ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit: ; preds = %for.inc.i.i.i.i.i %.pre109 = load ptr, ptr %_M_finish, align 8 %add.ptr27 = getelementptr inbounds i8, ptr %.pre109, i64 %sub.ptr.sub.i.i.i store ptr %add.ptr27, ptr %_M_finish, align 8 - %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %cmp4.i.i.i.i.i = icmp sgt i64 %sub.ptr.div.i.i.i.i.i, 0 @@ -4913,7 +4914,7 @@ _ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_ for.body.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i %__n.07.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %sub.ptr.div.i.i.i.i.i, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] %__result.addr.06.i.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i.i, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %1, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] - %__last.addr.05.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i26, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %add.ptr, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] + %__last.addr.05.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i26, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %add.ptr.ptr, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] %incdec.ptr.i.i.i.i.i26 = getelementptr inbounds i8, ptr %__last.addr.05.i.i.i.i.i, i64 -8 %incdec.ptr1.i.i.i.i.i = getelementptr inbounds i8, ptr %__result.addr.06.i.i.i.i.i, i64 -8 %3 = load ptr, ptr %incdec.ptr1.i.i.i.i.i, align 8 diff --git a/bench/cvc5/optimized/trigger.cpp.ll b/bench/cvc5/optimized/trigger.cpp.ll index 49133025ba8..86874f235c9 100644 --- a/bench/cvc5/optimized/trigger.cpp.ll +++ b/bench/cvc5/optimized/trigger.cpp.ll @@ -5250,25 +5250,26 @@ if.then9: ; preds = %if.then br i1 %cmp15, label %for.inc.i.i.i.i.i.preheader, label %_ZSt7advanceIN4cvc58internal4expr9NodeValue8iteratorINS1_12NodeTemplateILb0EEEEEmEvRT_T0_.exit for.inc.i.i.i.i.i.preheader: ; preds = %if.then9 - %idx.neg = sub nsw i64 0, %sub.ptr.div.i.i.i - %add.ptr = getelementptr %"class.cvc5::internal::NodeTemplate.345", ptr %1, i64 %idx.neg + %add.ptr.idx = sub i64 0, %sub.ptr.sub.i.i.i + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr.idx br label %for.inc.i.i.i.i.i for.inc.i.i.i.i.i: ; preds = %for.inc.i.i.i.i.i.preheader, %for.inc.i.i.i.i.i %__cur.09.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %1, %for.inc.i.i.i.i.i.preheader ] - %__first.sroa.0.08.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %add.ptr, %for.inc.i.i.i.i.i.preheader ] - %2 = load ptr, ptr %__first.sroa.0.08.i.i.i.i.i, align 8 + %__first.sroa.0.08.i.i.i.i.i.idx = phi i64 [ %__first.sroa.0.08.i.i.i.i.i.add, %for.inc.i.i.i.i.i ], [ %add.ptr.idx, %for.inc.i.i.i.i.i.preheader ] + %__first.sroa.0.08.i.i.i.i.i.ptr = getelementptr inbounds i8, ptr %1, i64 %__first.sroa.0.08.i.i.i.i.i.idx + %2 = load ptr, ptr %__first.sroa.0.08.i.i.i.i.i.ptr, align 8 store ptr %2, ptr %__cur.09.i.i.i.i.i, align 8 - %incdec.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.08.i.i.i.i.i, i64 8 + %__first.sroa.0.08.i.i.i.i.i.add = add nsw i64 %__first.sroa.0.08.i.i.i.i.i.idx, 8 %incdec.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.09.i.i.i.i.i, i64 8 - %cmp.i.i.not.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i, %1 + %cmp.i.i.not.i.i.i.i.i = icmp eq i64 %__first.sroa.0.08.i.i.i.i.i.add, 0 br i1 %cmp.i.i.not.i.i.i.i.i, label %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit, label %for.inc.i.i.i.i.i, !llvm.loop !33 _ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit: ; preds = %for.inc.i.i.i.i.i %.pre109 = load ptr, ptr %_M_finish, align 8 %add.ptr27 = getelementptr inbounds i8, ptr %.pre109, i64 %sub.ptr.sub.i.i.i store ptr %add.ptr27, ptr %_M_finish, align 8 - %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %cmp4.i.i.i.i.i = icmp sgt i64 %sub.ptr.div.i.i.i.i.i, 0 @@ -5277,7 +5278,7 @@ _ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_ for.body.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i %__n.07.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %sub.ptr.div.i.i.i.i.i, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] %__result.addr.06.i.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i.i, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %1, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] - %__last.addr.05.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i26, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %add.ptr, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] + %__last.addr.05.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i26, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %add.ptr.ptr, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] %incdec.ptr.i.i.i.i.i26 = getelementptr inbounds i8, ptr %__last.addr.05.i.i.i.i.i, i64 -8 %incdec.ptr1.i.i.i.i.i = getelementptr inbounds i8, ptr %__result.addr.06.i.i.i.i.i, i64 -8 %3 = load ptr, ptr %incdec.ptr1.i.i.i.i.i, align 8 diff --git a/bench/cvc5/optimized/witness_form.cpp.ll b/bench/cvc5/optimized/witness_form.cpp.ll index ec5586b90fd..960048aa200 100644 --- a/bench/cvc5/optimized/witness_form.cpp.ll +++ b/bench/cvc5/optimized/witness_form.cpp.ll @@ -3631,25 +3631,26 @@ if.then9: ; preds = %if.then br i1 %cmp15, label %for.inc.i.i.i.i.i.preheader, label %_ZSt7advanceIN4cvc58internal4expr9NodeValue8iteratorINS1_12NodeTemplateILb0EEEEEmEvRT_T0_.exit for.inc.i.i.i.i.i.preheader: ; preds = %if.then9 - %idx.neg = sub nsw i64 0, %sub.ptr.div.i.i.i - %add.ptr = getelementptr %"class.cvc5::internal::NodeTemplate.313", ptr %1, i64 %idx.neg + %add.ptr.idx = sub i64 0, %sub.ptr.sub.i.i.i + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr.idx br label %for.inc.i.i.i.i.i for.inc.i.i.i.i.i: ; preds = %for.inc.i.i.i.i.i.preheader, %for.inc.i.i.i.i.i %__cur.09.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %1, %for.inc.i.i.i.i.i.preheader ] - %__first.sroa.0.08.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i, %for.inc.i.i.i.i.i ], [ %add.ptr, %for.inc.i.i.i.i.i.preheader ] - %2 = load ptr, ptr %__first.sroa.0.08.i.i.i.i.i, align 8 + %__first.sroa.0.08.i.i.i.i.i.idx = phi i64 [ %__first.sroa.0.08.i.i.i.i.i.add, %for.inc.i.i.i.i.i ], [ %add.ptr.idx, %for.inc.i.i.i.i.i.preheader ] + %__first.sroa.0.08.i.i.i.i.i.ptr = getelementptr inbounds i8, ptr %1, i64 %__first.sroa.0.08.i.i.i.i.i.idx + %2 = load ptr, ptr %__first.sroa.0.08.i.i.i.i.i.ptr, align 8 store ptr %2, ptr %__cur.09.i.i.i.i.i, align 8 - %incdec.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.08.i.i.i.i.i, i64 8 + %__first.sroa.0.08.i.i.i.i.i.add = add nsw i64 %__first.sroa.0.08.i.i.i.i.i.idx, 8 %incdec.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.09.i.i.i.i.i, i64 8 - %cmp.i.i.not.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i, %1 + %cmp.i.i.not.i.i.i.i.i = icmp eq i64 %__first.sroa.0.08.i.i.i.i.i.add, 0 br i1 %cmp.i.i.not.i.i.i.i.i, label %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit, label %for.inc.i.i.i.i.i, !llvm.loop !29 _ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit: ; preds = %for.inc.i.i.i.i.i %.pre109 = load ptr, ptr %_M_finish, align 8 %add.ptr27 = getelementptr inbounds i8, ptr %.pre109, i64 %sub.ptr.sub.i.i.i store ptr %add.ptr27, ptr %_M_finish, align 8 - %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %cmp4.i.i.i.i.i = icmp sgt i64 %sub.ptr.div.i.i.i.i.i, 0 @@ -3658,7 +3659,7 @@ _ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_ for.body.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i %__n.07.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %sub.ptr.div.i.i.i.i.i, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] %__result.addr.06.i.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i.i, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %1, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] - %__last.addr.05.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i26, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %add.ptr, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] + %__last.addr.05.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i26, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit.i.i.i.i.i ], [ %add.ptr.ptr, %_ZSt22__uninitialized_move_aIPN4cvc58internal12NodeTemplateILb0EEES4_SaIS3_EET0_T_S7_S6_RT1_.exit ] %incdec.ptr.i.i.i.i.i26 = getelementptr inbounds i8, ptr %__last.addr.05.i.i.i.i.i, i64 -8 %incdec.ptr1.i.i.i.i.i = getelementptr inbounds i8, ptr %__result.addr.06.i.i.i.i.i, i64 -8 %3 = load ptr, ptr %incdec.ptr1.i.i.i.i.i, align 8 diff --git a/bench/eastl/optimized/EAMemory.cpp.ll b/bench/eastl/optimized/EAMemory.cpp.ll index 304f7577999..5d7622d76b1 100644 --- a/bench/eastl/optimized/EAMemory.cpp.ll +++ b/bench/eastl/optimized/EAMemory.cpp.ll @@ -1689,9 +1689,8 @@ return: ; preds = %for.inc, %entry, %i ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(read, inaccessiblemem: none) uwtable define dso_local noundef ptr @_ZN2EA4StdC6MemmemEPKvmS2_m(ptr noundef readonly %pMemory, i64 noundef %memorySize, ptr nocapture noundef readonly %pFind, i64 noundef %findSize) local_unnamed_addr #2 { entry: - %add.ptr = getelementptr inbounds i8, ptr %pMemory, i64 %memorySize - %idx.neg = sub i64 0, %findSize - %add.ptr1 = getelementptr inbounds i8, ptr %add.ptr, i64 %idx.neg + %add.ptr.add = sub i64 %memorySize, %findSize + %add.ptr1.ptr = getelementptr inbounds i8, ptr %pMemory, i64 %add.ptr.add %tobool.not = icmp eq i64 %memorySize, 0 %cmp.not = icmp ugt i64 %findSize, %memorySize %or.cond = or i1 %tobool.not, %cmp.not @@ -1702,7 +1701,7 @@ if.then: ; preds = %entry br i1 %tobool2.not, label %return, label %for.cond.preheader for.cond.preheader: ; preds = %if.then - %cmp4.not17 = icmp ult ptr %add.ptr1, %pMemory + %cmp4.not17 = icmp slt i64 %add.ptr.add, 0 br i1 %cmp4.not17, label %return, label %for.body.lr.ph for.body.lr.ph: ; preds = %for.cond.preheader @@ -1719,7 +1718,7 @@ for.body.us: ; preds = %for.body.lr.ph, %fo for.inc.us: ; preds = %for.body.us %incdec.ptr.us = getelementptr inbounds i8, ptr %pCurrent8.018.us, i64 1 - %cmp4.not.us = icmp ugt ptr %incdec.ptr.us, %add.ptr1 + %cmp4.not.us = icmp ugt ptr %incdec.ptr.us, %add.ptr1.ptr br i1 %cmp4.not.us, label %return, label %for.body.us, !llvm.loop !40 for.body: ; preds = %for.body.lr.ph, %for.inc @@ -1746,7 +1745,7 @@ for.inc.i: ; preds = %for.body.i for.inc: ; preds = %for.body.i, %for.body %incdec.ptr = getelementptr inbounds i8, ptr %pCurrent8.018, i64 1 - %cmp4.not = icmp ugt ptr %incdec.ptr, %add.ptr1 + %cmp4.not = icmp ugt ptr %incdec.ptr, %add.ptr1.ptr br i1 %cmp4.not, label %return, label %for.body, !llvm.loop !40 return: ; preds = %for.inc, %for.inc.i, %for.inc.us, %for.body.us, %for.cond.preheader, %entry, %if.then diff --git a/bench/flatbuffers/optimized/idl_gen_text.cpp.ll b/bench/flatbuffers/optimized/idl_gen_text.cpp.ll index 5d3bec9f69d..0429520063a 100644 --- a/bench/flatbuffers/optimized/idl_gen_text.cpp.ll +++ b/bench/flatbuffers/optimized/idl_gen_text.cpp.ll @@ -1806,20 +1806,22 @@ if.else16: ; preds = %if.else br i1 %or.cond.not.i, label %while.cond.i.i, label %_ZN11flatbuffers11JsonPrinter15GetFieldDefaultImEET_RKNS_8FieldDefE.exit while.cond.i.i: ; preds = %if.else16, %while.cond.i.i - %s.0.i.i = phi ptr [ %incdec.ptr.i.i, %while.cond.i.i ], [ %call.i, %if.else16 ] - %11 = load i8, ptr %s.0.i.i, align 1 + %s.0.idx.i.i = phi i64 [ %s.0.add.i.i, %while.cond.i.i ], [ 0, %if.else16 ] + %s.0.ptr.i.i = getelementptr inbounds i8, ptr %call.i, i64 %s.0.idx.i.i + %11 = load i8, ptr %s.0.ptr.i.i, align 1 %tobool2.not.i.i = icmp eq i8 %11, 0 %conv.i.i.i.i = sext i8 %11 to i32 %sub.i.i.i.i = add nsw i32 %conv.i.i.i.i, -48 %cmp.i.i.i.i = icmp ult i32 %sub.i.i.i.i, 10 %or.cond.i.i = select i1 %tobool2.not.i.i, i1 true, i1 %cmp.i.i.i.i - %incdec.ptr.i.i = getelementptr inbounds i8, ptr %s.0.i.i, i64 1 + %s.0.add.i.i = add nuw nsw i64 %s.0.idx.i.i, 1 br i1 %or.cond.i.i, label %while.end.i.i, label %while.cond.i.i, !llvm.loop !13 while.end.i.i: ; preds = %while.cond.i.i - %cmp.i.i12 = icmp ugt ptr %s.0.i.i, %call.i - %cond.idx.i.i = sext i1 %cmp.i.i12 to i64 - %cond.i.i = getelementptr inbounds i8, ptr %s.0.i.i, i64 %cond.idx.i.i + %s.0.ptr.i.i.le = getelementptr inbounds i8, ptr %call.i, i64 %s.0.idx.i.i + %cmp.not.i.i = icmp eq i64 %s.0.idx.i.i, 0 + %add.ptr.i.i12 = getelementptr inbounds i8, ptr %s.0.ptr.i.i.le, i64 -1 + %cond.i.i = select i1 %cmp.not.i.i, ptr %call.i, ptr %add.ptr.i.i12 %12 = load i8, ptr %cond.i.i, align 1 %cmp4.i.i = icmp eq i8 %12, 45 %spec.select.i = select i1 %cmp4.i.i, i64 -1, i64 %10 diff --git a/bench/folly/optimized/AsyncBase.cpp.ll b/bench/folly/optimized/AsyncBase.cpp.ll index 47aeff6938d..5dcdaac0820 100644 --- a/bench/folly/optimized/AsyncBase.cpp.ll +++ b/bench/folly/optimized/AsyncBase.cpp.ll @@ -3100,18 +3100,19 @@ _ZNSt11_Deque_baseISt8functionIFPN5folly11AsyncBaseOpEvEESaIS5_EE15_M_allocate_m %sub = sub nsw i64 %.sroa.speculated, %add %div1348 = lshr i64 %sub, 1 %add.ptr = getelementptr inbounds ptr, ptr %call5.i.i4.i, i64 %div1348 - %add.ptr14 = getelementptr inbounds ptr, ptr %add.ptr, i64 %add + %add.ptr14.idx = shl nuw nsw i64 %add, 3 br label %for.body.i for.body.i: ; preds = %invoke.cont.i, %_ZNSt11_Deque_baseISt8functionIFPN5folly11AsyncBaseOpEvEESaIS5_EE15_M_allocate_mapEm.exit - %__cur.013.i = phi ptr [ %incdec.ptr.i, %invoke.cont.i ], [ %add.ptr, %_ZNSt11_Deque_baseISt8functionIFPN5folly11AsyncBaseOpEvEESaIS5_EE15_M_allocate_mapEm.exit ] + %__cur.013.i.idx = phi i64 [ %__cur.013.i.add, %invoke.cont.i ], [ 0, %_ZNSt11_Deque_baseISt8functionIFPN5folly11AsyncBaseOpEvEESaIS5_EE15_M_allocate_mapEm.exit ] + %__cur.013.i.ptr = getelementptr inbounds i8, ptr %add.ptr, i64 %__cur.013.i.idx %call5.i.i.i10.i = invoke noalias noundef nonnull dereferenceable(512) ptr @_Znwm(i64 noundef 512) #32 to label %invoke.cont.i unwind label %lpad.i invoke.cont.i: ; preds = %for.body.i - store ptr %call5.i.i.i10.i, ptr %__cur.013.i, align 8, !tbaa !12 - %incdec.ptr.i = getelementptr inbounds i8, ptr %__cur.013.i, i64 8 - %cmp.i49 = icmp ult ptr %incdec.ptr.i, %add.ptr14 + store ptr %call5.i.i.i10.i, ptr %__cur.013.i.ptr, align 8, !tbaa !12 + %__cur.013.i.add = add nuw nsw i64 %__cur.013.i.idx, 8 + %cmp.i49 = icmp ult i64 %__cur.013.i.add, %add.ptr14.idx br i1 %cmp.i49, label %for.body.i, label %try.cont, !llvm.loop !97 lpad.i: ; preds = %for.body.i @@ -3119,15 +3120,15 @@ lpad.i: ; preds = %for.body.i catch ptr null %2 = extractvalue { ptr, i32 } %1, 0 %3 = tail call ptr @__cxa_begin_catch(ptr %2) #28 - %cmp4.i.i = icmp ugt ptr %__cur.013.i, %add.ptr - br i1 %cmp4.i.i, label %for.body.i.i, label %_ZNSt11_Deque_baseISt8functionIFPN5folly11AsyncBaseOpEvEESaIS5_EE16_M_destroy_nodesEPPS5_S9_.exit.i + %cmp4.i.i.not = icmp eq i64 %__cur.013.i.idx, 0 + br i1 %cmp4.i.i.not, label %_ZNSt11_Deque_baseISt8functionIFPN5folly11AsyncBaseOpEvEESaIS5_EE16_M_destroy_nodesEPPS5_S9_.exit.i, label %for.body.i.i for.body.i.i: ; preds = %lpad.i, %for.body.i.i %__n.05.i.i = phi ptr [ %incdec.ptr.i.i, %for.body.i.i ], [ %add.ptr, %lpad.i ] %4 = load ptr, ptr %__n.05.i.i, align 8, !tbaa !12 tail call void @_ZdlPv(ptr noundef %4) #31 %incdec.ptr.i.i = getelementptr inbounds i8, ptr %__n.05.i.i, i64 8 - %cmp.i.i = icmp ult ptr %incdec.ptr.i.i, %__cur.013.i + %cmp.i.i = icmp ult ptr %incdec.ptr.i.i, %__cur.013.i.ptr br i1 %cmp.i.i, label %for.body.i.i, label %_ZNSt11_Deque_baseISt8functionIFPN5folly11AsyncBaseOpEvEESaIS5_EE16_M_destroy_nodesEPPS5_S9_.exit.i, !llvm.loop !98 _ZNSt11_Deque_baseISt8functionIFPN5folly11AsyncBaseOpEvEESaIS5_EE16_M_destroy_nodesEPPS5_S9_.exit.i: ; preds = %for.body.i.i, %lpad.i diff --git a/bench/folly/optimized/AsyncFdSocket.cpp.ll b/bench/folly/optimized/AsyncFdSocket.cpp.ll index b5468a75fd3..67e3db4a917 100644 --- a/bench/folly/optimized/AsyncFdSocket.cpp.ll +++ b/bench/folly/optimized/AsyncFdSocket.cpp.ll @@ -4164,18 +4164,19 @@ entry: %sub = sub nsw i64 %.sroa.speculated, %add %div1348 = lshr i64 %sub, 1 %add.ptr = getelementptr inbounds ptr, ptr %call5.i.i4.i, i64 %div1348 - %add.ptr14 = getelementptr inbounds ptr, ptr %add.ptr, i64 %add + %add.ptr14.idx = shl nuw nsw i64 %add, 3 br label %for.body.i for.body.i: ; preds = %invoke.cont.i, %entry - %__cur.013.i = phi ptr [ %incdec.ptr.i, %invoke.cont.i ], [ %add.ptr, %entry ] + %__cur.013.i.idx = phi i64 [ %__cur.013.i.add, %invoke.cont.i ], [ 0, %entry ] + %__cur.013.i.ptr = getelementptr inbounds i8, ptr %add.ptr, i64 %__cur.013.i.idx %call5.i.i.i10.i = invoke noalias noundef nonnull dereferenceable(512) ptr @_Znwm(i64 noundef 512) #26 to label %invoke.cont.i unwind label %lpad.i invoke.cont.i: ; preds = %for.body.i - store ptr %call5.i.i.i10.i, ptr %__cur.013.i, align 8, !tbaa !26 - %incdec.ptr.i = getelementptr inbounds i8, ptr %__cur.013.i, i64 8 - %cmp.i49 = icmp ult ptr %incdec.ptr.i, %add.ptr14 + store ptr %call5.i.i.i10.i, ptr %__cur.013.i.ptr, align 8, !tbaa !26 + %__cur.013.i.add = add nuw nsw i64 %__cur.013.i.idx, 8 + %cmp.i49 = icmp ult i64 %__cur.013.i.add, %add.ptr14.idx br i1 %cmp.i49, label %for.body.i, label %try.cont, !llvm.loop !299 lpad.i: ; preds = %for.body.i @@ -4183,15 +4184,15 @@ lpad.i: ; preds = %for.body.i catch ptr null %2 = extractvalue { ptr, i32 } %1, 0 %3 = tail call ptr @__cxa_begin_catch(ptr %2) #25 - %cmp4.i.i = icmp ugt ptr %__cur.013.i, %add.ptr - br i1 %cmp4.i.i, label %for.body.i.i, label %_ZNSt11_Deque_baseIN5folly9SocketFdsESaIS1_EE16_M_destroy_nodesEPPS1_S5_.exit.i + %cmp4.i.i.not = icmp eq i64 %__cur.013.i.idx, 0 + br i1 %cmp4.i.i.not, label %_ZNSt11_Deque_baseIN5folly9SocketFdsESaIS1_EE16_M_destroy_nodesEPPS1_S5_.exit.i, label %for.body.i.i for.body.i.i: ; preds = %lpad.i, %for.body.i.i %__n.05.i.i = phi ptr [ %incdec.ptr.i.i, %for.body.i.i ], [ %add.ptr, %lpad.i ] %4 = load ptr, ptr %__n.05.i.i, align 8, !tbaa !26 tail call void @_ZdlPv(ptr noundef %4) #24 %incdec.ptr.i.i = getelementptr inbounds i8, ptr %__n.05.i.i, i64 8 - %cmp.i.i = icmp ult ptr %incdec.ptr.i.i, %__cur.013.i + %cmp.i.i = icmp ult ptr %incdec.ptr.i.i, %__cur.013.i.ptr br i1 %cmp.i.i, label %for.body.i.i, label %_ZNSt11_Deque_baseIN5folly9SocketFdsESaIS1_EE16_M_destroy_nodesEPPS1_S5_.exit.i, !llvm.loop !300 _ZNSt11_Deque_baseIN5folly9SocketFdsESaIS1_EE16_M_destroy_nodesEPPS1_S5_.exit.i: ; preds = %for.body.i.i, %lpad.i diff --git a/bench/folly/optimized/AsyncSocket.cpp.ll b/bench/folly/optimized/AsyncSocket.cpp.ll index c71b7ddc152..b857734e488 100644 --- a/bench/folly/optimized/AsyncSocket.cpp.ll +++ b/bench/folly/optimized/AsyncSocket.cpp.ll @@ -15880,18 +15880,19 @@ entry: %sub = sub nsw i64 %.sroa.speculated, %add %div1348 = lshr i64 %sub, 1 %add.ptr = getelementptr inbounds ptr, ptr %call5.i.i4.i, i64 %div1348 - %add.ptr14 = getelementptr inbounds ptr, ptr %add.ptr, i64 %add + %add.ptr14.idx = shl nuw nsw i64 %add, 3 br label %for.body.i for.body.i: ; preds = %invoke.cont.i, %entry - %__cur.013.i = phi ptr [ %incdec.ptr.i, %invoke.cont.i ], [ %add.ptr, %entry ] + %__cur.013.i.idx = phi i64 [ %__cur.013.i.add, %invoke.cont.i ], [ 0, %entry ] + %__cur.013.i.ptr = getelementptr inbounds i8, ptr %add.ptr, i64 %__cur.013.i.idx %call5.i.i.i10.i = invoke noalias noundef nonnull dereferenceable(512) ptr @_Znwm(i64 noundef 512) #42 to label %invoke.cont.i unwind label %lpad.i invoke.cont.i: ; preds = %for.body.i - store ptr %call5.i.i.i10.i, ptr %__cur.013.i, align 8, !tbaa !24 - %incdec.ptr.i = getelementptr inbounds i8, ptr %__cur.013.i, i64 8 - %cmp.i49 = icmp ult ptr %incdec.ptr.i, %add.ptr14 + store ptr %call5.i.i.i10.i, ptr %__cur.013.i.ptr, align 8, !tbaa !24 + %__cur.013.i.add = add nuw nsw i64 %__cur.013.i.idx, 8 + %cmp.i49 = icmp ult i64 %__cur.013.i.add, %add.ptr14.idx br i1 %cmp.i49, label %for.body.i, label %try.cont, !llvm.loop !472 lpad.i: ; preds = %for.body.i @@ -15899,15 +15900,15 @@ lpad.i: ; preds = %for.body.i catch ptr null %2 = extractvalue { ptr, i32 } %1, 0 %3 = tail call ptr @__cxa_begin_catch(ptr %2) #41 - %cmp4.i.i = icmp ugt ptr %__cur.013.i, %add.ptr - br i1 %cmp4.i.i, label %for.body.i.i, label %_ZNSt11_Deque_baseIPN5folly11AsyncReader12ReadCallback16ZeroCopyMemStore5EntryESaIS5_EE16_M_destroy_nodesEPPS5_S9_.exit.i + %cmp4.i.i.not = icmp eq i64 %__cur.013.i.idx, 0 + br i1 %cmp4.i.i.not, label %_ZNSt11_Deque_baseIPN5folly11AsyncReader12ReadCallback16ZeroCopyMemStore5EntryESaIS5_EE16_M_destroy_nodesEPPS5_S9_.exit.i, label %for.body.i.i for.body.i.i: ; preds = %lpad.i, %for.body.i.i %__n.05.i.i = phi ptr [ %incdec.ptr.i.i, %for.body.i.i ], [ %add.ptr, %lpad.i ] %4 = load ptr, ptr %__n.05.i.i, align 8, !tbaa !24 tail call void @_ZdlPv(ptr noundef %4) #40 %incdec.ptr.i.i = getelementptr inbounds i8, ptr %__n.05.i.i, i64 8 - %cmp.i.i = icmp ult ptr %incdec.ptr.i.i, %__cur.013.i + %cmp.i.i = icmp ult ptr %incdec.ptr.i.i, %__cur.013.i.ptr br i1 %cmp.i.i, label %for.body.i.i, label %_ZNSt11_Deque_baseIPN5folly11AsyncReader12ReadCallback16ZeroCopyMemStore5EntryESaIS5_EE16_M_destroy_nodesEPPS5_S9_.exit.i, !llvm.loop !473 _ZNSt11_Deque_baseIPN5folly11AsyncReader12ReadCallback16ZeroCopyMemStore5EntryESaIS5_EE16_M_destroy_nodesEPPS5_S9_.exit.i: ; preds = %for.body.i.i, %lpad.i diff --git a/bench/folly/optimized/QueuedImmediateExecutor.cpp.ll b/bench/folly/optimized/QueuedImmediateExecutor.cpp.ll index d4cedb24806..1d1d37653a1 100644 --- a/bench/folly/optimized/QueuedImmediateExecutor.cpp.ll +++ b/bench/folly/optimized/QueuedImmediateExecutor.cpp.ll @@ -581,18 +581,19 @@ _ZNSt11_Deque_baseIN5folly8FunctionIFvvEEESaIS3_EE15_M_allocate_mapEm.exit: ; pr %sub = sub nsw i64 %.sroa.speculated, %add %div1348 = lshr i64 %sub, 1 %add.ptr = getelementptr inbounds ptr, ptr %call5.i.i4.i, i64 %div1348 - %add.ptr14 = getelementptr inbounds ptr, ptr %add.ptr, i64 %add + %add.ptr14.idx = shl nuw nsw i64 %add, 3 br label %for.body.i for.body.i: ; preds = %invoke.cont.i, %_ZNSt11_Deque_baseIN5folly8FunctionIFvvEEESaIS3_EE15_M_allocate_mapEm.exit - %__cur.013.i = phi ptr [ %incdec.ptr.i, %invoke.cont.i ], [ %add.ptr, %_ZNSt11_Deque_baseIN5folly8FunctionIFvvEEESaIS3_EE15_M_allocate_mapEm.exit ] + %__cur.013.i.idx = phi i64 [ %__cur.013.i.add, %invoke.cont.i ], [ 0, %_ZNSt11_Deque_baseIN5folly8FunctionIFvvEEESaIS3_EE15_M_allocate_mapEm.exit ] + %__cur.013.i.ptr = getelementptr inbounds i8, ptr %add.ptr, i64 %__cur.013.i.idx %call5.i.i.i10.i = invoke noalias noundef nonnull dereferenceable(512) ptr @_Znwm(i64 noundef 512) #27 to label %invoke.cont.i unwind label %lpad.i invoke.cont.i: ; preds = %for.body.i - store ptr %call5.i.i.i10.i, ptr %__cur.013.i, align 8, !tbaa !20 - %incdec.ptr.i = getelementptr inbounds i8, ptr %__cur.013.i, i64 8 - %cmp.i49 = icmp ult ptr %incdec.ptr.i, %add.ptr14 + store ptr %call5.i.i.i10.i, ptr %__cur.013.i.ptr, align 8, !tbaa !20 + %__cur.013.i.add = add nuw nsw i64 %__cur.013.i.idx, 8 + %cmp.i49 = icmp ult i64 %__cur.013.i.add, %add.ptr14.idx br i1 %cmp.i49, label %for.body.i, label %try.cont, !llvm.loop !52 lpad.i: ; preds = %for.body.i @@ -600,15 +601,15 @@ lpad.i: ; preds = %for.body.i catch ptr null %2 = extractvalue { ptr, i32 } %1, 0 %3 = tail call ptr @__cxa_begin_catch(ptr %2) #26 - %cmp4.i.i = icmp ugt ptr %__cur.013.i, %add.ptr - br i1 %cmp4.i.i, label %for.body.i.i, label %_ZNSt11_Deque_baseIN5folly8FunctionIFvvEEESaIS3_EE16_M_destroy_nodesEPPS3_S7_.exit.i + %cmp4.i.i.not = icmp eq i64 %__cur.013.i.idx, 0 + br i1 %cmp4.i.i.not, label %_ZNSt11_Deque_baseIN5folly8FunctionIFvvEEESaIS3_EE16_M_destroy_nodesEPPS3_S7_.exit.i, label %for.body.i.i for.body.i.i: ; preds = %lpad.i, %for.body.i.i %__n.05.i.i = phi ptr [ %incdec.ptr.i.i, %for.body.i.i ], [ %add.ptr, %lpad.i ] %4 = load ptr, ptr %__n.05.i.i, align 8, !tbaa !20 tail call void @_ZdlPv(ptr noundef %4) #25 %incdec.ptr.i.i = getelementptr inbounds i8, ptr %__n.05.i.i, i64 8 - %cmp.i.i = icmp ult ptr %incdec.ptr.i.i, %__cur.013.i + %cmp.i.i = icmp ult ptr %incdec.ptr.i.i, %__cur.013.i.ptr br i1 %cmp.i.i, label %for.body.i.i, label %_ZNSt11_Deque_baseIN5folly8FunctionIFvvEEESaIS3_EE16_M_destroy_nodesEPPS3_S7_.exit.i, !llvm.loop !53 _ZNSt11_Deque_baseIN5folly8FunctionIFvvEEESaIS3_EE16_M_destroy_nodesEPPS3_S7_.exit.i: ; preds = %for.body.i.i, %lpad.i diff --git a/bench/folly/optimized/Request.cpp.ll b/bench/folly/optimized/Request.cpp.ll index 7882835e50e..01d37639a32 100644 --- a/bench/folly/optimized/Request.cpp.ll +++ b/bench/folly/optimized/Request.cpp.ll @@ -3394,23 +3394,25 @@ invoke.cont7: ; preds = %if.end7.i.i.i.i.i.i for.body.lr.ph: ; preds = %invoke.cont7 %shr.i.i.i.i.i.i = lshr i64 %7, 8 - %add.ptr.i.i.i = getelementptr inbounds %"struct.std::pair", ptr %8, i64 %shr.i.i.i.i.i.i + %add.ptr.i.i.i.idx = mul nuw nsw i64 %shr.i.i.i.i.i.i, 40 %9 = load i32, ptr %this, align 4, !tbaa !44 br label %for.body for.body: ; preds = %for.inc, %for.body.lr.ph - %add.ptr.i.i.i.pn = phi ptr [ %add.ptr.i.i.i, %for.body.lr.ph ], [ %__begin1.sroa.0.055, %for.inc ] - %__begin1.sroa.0.055 = getelementptr inbounds i8, ptr %add.ptr.i.i.i.pn, i64 -40 - %second = getelementptr i8, ptr %add.ptr.i.i.i.pn, i64 -8 + %add.ptr.i.i.i.pn.idx = phi i64 [ %add.ptr.i.i.i.idx, %for.body.lr.ph ], [ %add.ptr.i.i.i.pn.add, %for.inc ] + %add.ptr.i.i.i.pn.ptr = getelementptr inbounds i8, ptr %8, i64 %add.ptr.i.i.i.pn.idx + %add.ptr.i.i.i.pn.add = add nsw i64 %add.ptr.i.i.i.pn.idx, -40 + %second = getelementptr i8, ptr %add.ptr.i.i.i.pn.ptr, i64 -8 %10 = load i32, ptr %second, align 8, !tbaa !42 %cmp.not = icmp eq i32 %10, %9 br i1 %cmp.not, label %if.then, label %for.inc if.then: ; preds = %for.body + %__begin1.sroa.0.055.ptr = getelementptr inbounds i8, ptr %8, i64 %add.ptr.i.i.i.pn.add %11 = getelementptr inbounds i8, ptr %agg.result, i64 16 store ptr %11, ptr %agg.result, align 8, !tbaa !95 - %12 = load ptr, ptr %__begin1.sroa.0.055, align 8, !tbaa !29 - %_M_string_length.i.i = getelementptr i8, ptr %add.ptr.i.i.i.pn, i64 -32 + %12 = load ptr, ptr %__begin1.sroa.0.055.ptr, align 8, !tbaa !29 + %_M_string_length.i.i = getelementptr i8, ptr %add.ptr.i.i.i.pn.ptr, i64 -32 %13 = load i64, ptr %_M_string_length.i.i, align 8, !tbaa !32 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %__dnew.i.i) #25 store i64 %13, ptr %__dnew.i.i, align 8, !tbaa !96 @@ -3449,7 +3451,7 @@ lpad11: ; preds = %if.then.i.i br label %ehcleanup28 for.inc: ; preds = %for.body - %cmp.i56 = icmp eq ptr %8, %__begin1.sroa.0.055 + %cmp.i56 = icmp eq i64 %add.ptr.i.i.i.pn.add, 0 br i1 %cmp.i56, label %for.end, label %for.body, !prof !71 for.end: ; preds = %for.inc, %invoke.cont7 diff --git a/bench/folly/optimized/SimpleAsyncIO.cpp.ll b/bench/folly/optimized/SimpleAsyncIO.cpp.ll index 65631038ac9..c12b9a97373 100644 --- a/bench/folly/optimized/SimpleAsyncIO.cpp.ll +++ b/bench/folly/optimized/SimpleAsyncIO.cpp.ll @@ -338,18 +338,19 @@ entry: %sub = sub nsw i64 %.sroa.speculated, %add %div1348 = lshr i64 %sub, 1 %add.ptr = getelementptr inbounds ptr, ptr %call5.i.i4.i, i64 %div1348 - %add.ptr14 = getelementptr inbounds ptr, ptr %add.ptr, i64 %add + %add.ptr14.idx = shl nuw nsw i64 %add, 3 br label %for.body.i for.body.i: ; preds = %invoke.cont.i, %entry - %__cur.013.i = phi ptr [ %incdec.ptr.i, %invoke.cont.i ], [ %add.ptr, %entry ] + %__cur.013.i.idx = phi i64 [ %__cur.013.i.add, %invoke.cont.i ], [ 0, %entry ] + %__cur.013.i.ptr = getelementptr inbounds i8, ptr %add.ptr, i64 %__cur.013.i.idx %call5.i.i.i10.i = invoke noalias noundef nonnull dereferenceable(512) ptr @_Znwm(i64 noundef 512) #22 to label %invoke.cont.i unwind label %lpad.i invoke.cont.i: ; preds = %for.body.i - store ptr %call5.i.i.i10.i, ptr %__cur.013.i, align 8, !tbaa !7 - %incdec.ptr.i = getelementptr inbounds i8, ptr %__cur.013.i, i64 8 - %cmp.i49 = icmp ult ptr %incdec.ptr.i, %add.ptr14 + store ptr %call5.i.i.i10.i, ptr %__cur.013.i.ptr, align 8, !tbaa !7 + %__cur.013.i.add = add nuw nsw i64 %__cur.013.i.idx, 8 + %cmp.i49 = icmp ult i64 %__cur.013.i.add, %add.ptr14.idx br i1 %cmp.i49, label %for.body.i, label %try.cont, !llvm.loop !68 lpad.i: ; preds = %for.body.i @@ -357,15 +358,15 @@ lpad.i: ; preds = %for.body.i catch ptr null %2 = extractvalue { ptr, i32 } %1, 0 %3 = tail call ptr @__cxa_begin_catch(ptr %2) #19 - %cmp4.i.i = icmp ugt ptr %__cur.013.i, %add.ptr - br i1 %cmp4.i.i, label %for.body.i.i, label %_ZNSt11_Deque_baseISt10unique_ptrIN5folly11AsyncBaseOpESt14default_deleteIS2_EESaIS5_EE16_M_destroy_nodesEPPS5_S9_.exit.i + %cmp4.i.i.not = icmp eq i64 %__cur.013.i.idx, 0 + br i1 %cmp4.i.i.not, label %_ZNSt11_Deque_baseISt10unique_ptrIN5folly11AsyncBaseOpESt14default_deleteIS2_EESaIS5_EE16_M_destroy_nodesEPPS5_S9_.exit.i, label %for.body.i.i for.body.i.i: ; preds = %lpad.i, %for.body.i.i %__n.05.i.i = phi ptr [ %incdec.ptr.i.i, %for.body.i.i ], [ %add.ptr, %lpad.i ] %4 = load ptr, ptr %__n.05.i.i, align 8, !tbaa !7 tail call void @_ZdlPv(ptr noundef %4) #20 %incdec.ptr.i.i = getelementptr inbounds i8, ptr %__n.05.i.i, i64 8 - %cmp.i.i = icmp ult ptr %incdec.ptr.i.i, %__cur.013.i + %cmp.i.i = icmp ult ptr %incdec.ptr.i.i, %__cur.013.i.ptr br i1 %cmp.i.i, label %for.body.i.i, label %_ZNSt11_Deque_baseISt10unique_ptrIN5folly11AsyncBaseOpESt14default_deleteIS2_EESaIS5_EE16_M_destroy_nodesEPPS5_S9_.exit.i, !llvm.loop !69 _ZNSt11_Deque_baseISt10unique_ptrIN5folly11AsyncBaseOpESt14default_deleteIS2_EESaIS5_EE16_M_destroy_nodesEPPS5_S9_.exit.i: ; preds = %for.body.i.i, %lpad.i diff --git a/bench/folly/optimized/StrandExecutor.cpp.ll b/bench/folly/optimized/StrandExecutor.cpp.ll index b91b60cccba..6c72a2132b4 100644 --- a/bench/folly/optimized/StrandExecutor.cpp.ll +++ b/bench/folly/optimized/StrandExecutor.cpp.ll @@ -5170,18 +5170,19 @@ entry: %sub = sub nsw i64 %.sroa.speculated, %add %div1348 = lshr i64 %sub, 1 %add.ptr = getelementptr inbounds ptr, ptr %call5.i.i4.i, i64 %div1348 - %add.ptr14 = getelementptr inbounds ptr, ptr %add.ptr, i64 %add + %add.ptr14.idx = shl nuw nsw i64 %add, 3 br label %for.body.i for.body.i: ; preds = %invoke.cont.i, %entry - %__cur.013.i = phi ptr [ %incdec.ptr.i, %invoke.cont.i ], [ %add.ptr, %entry ] + %__cur.013.i.idx = phi i64 [ %__cur.013.i.add, %invoke.cont.i ], [ 0, %entry ] + %__cur.013.i.ptr = getelementptr inbounds i8, ptr %add.ptr, i64 %__cur.013.i.idx %call5.i.i.i10.i = invoke noalias noundef nonnull dereferenceable(512) ptr @_Znwm(i64 noundef 512) #36 to label %invoke.cont.i unwind label %lpad.i invoke.cont.i: ; preds = %for.body.i - store ptr %call5.i.i.i10.i, ptr %__cur.013.i, align 8, !tbaa !44 - %incdec.ptr.i = getelementptr inbounds i8, ptr %__cur.013.i, i64 8 - %cmp.i49 = icmp ult ptr %incdec.ptr.i, %add.ptr14 + store ptr %call5.i.i.i10.i, ptr %__cur.013.i.ptr, align 8, !tbaa !44 + %__cur.013.i.add = add nuw nsw i64 %__cur.013.i.idx, 8 + %cmp.i49 = icmp ult i64 %__cur.013.i.add, %add.ptr14.idx br i1 %cmp.i49, label %for.body.i, label %try.cont, !llvm.loop !217 lpad.i: ; preds = %for.body.i @@ -5189,15 +5190,15 @@ lpad.i: ; preds = %for.body.i catch ptr null %2 = extractvalue { ptr, i32 } %1, 0 %3 = tail call ptr @__cxa_begin_catch(ptr %2) #24 - %cmp4.i.i = icmp ugt ptr %__cur.013.i, %add.ptr - br i1 %cmp4.i.i, label %for.body.i.i, label %_ZNSt11_Deque_baseIPN5folly22hazptr_obj_base_linkedINS0_14UnboundedQueueINS0_13StrandContext9QueueItemELb0ELb1ELb0ELm6ELm7ESt6atomicE7SegmentES5_St14default_deleteIS7_EEESaISB_EE16_M_destroy_nodesEPPSB_SF_.exit.i + %cmp4.i.i.not = icmp eq i64 %__cur.013.i.idx, 0 + br i1 %cmp4.i.i.not, label %_ZNSt11_Deque_baseIPN5folly22hazptr_obj_base_linkedINS0_14UnboundedQueueINS0_13StrandContext9QueueItemELb0ELb1ELb0ELm6ELm7ESt6atomicE7SegmentES5_St14default_deleteIS7_EEESaISB_EE16_M_destroy_nodesEPPSB_SF_.exit.i, label %for.body.i.i for.body.i.i: ; preds = %lpad.i, %for.body.i.i %__n.05.i.i = phi ptr [ %incdec.ptr.i.i, %for.body.i.i ], [ %add.ptr, %lpad.i ] %4 = load ptr, ptr %__n.05.i.i, align 8, !tbaa !44 tail call void @_ZdlPv(ptr noundef %4) #35 %incdec.ptr.i.i = getelementptr inbounds i8, ptr %__n.05.i.i, i64 8 - %cmp.i.i = icmp ult ptr %incdec.ptr.i.i, %__cur.013.i + %cmp.i.i = icmp ult ptr %incdec.ptr.i.i, %__cur.013.i.ptr br i1 %cmp.i.i, label %for.body.i.i, label %_ZNSt11_Deque_baseIPN5folly22hazptr_obj_base_linkedINS0_14UnboundedQueueINS0_13StrandContext9QueueItemELb0ELb1ELb0ELm6ELm7ESt6atomicE7SegmentES5_St14default_deleteIS7_EEESaISB_EE16_M_destroy_nodesEPPSB_SF_.exit.i, !llvm.loop !218 _ZNSt11_Deque_baseIPN5folly22hazptr_obj_base_linkedINS0_14UnboundedQueueINS0_13StrandContext9QueueItemELb0ELb1ELb0ELm6ELm7ESt6atomicE7SegmentES5_St14default_deleteIS7_EEESaISB_EE16_M_destroy_nodesEPPSB_SF_.exit.i: ; preds = %for.body.i.i, %lpad.i diff --git a/bench/folly/optimized/ThreadPoolExecutor.cpp.ll b/bench/folly/optimized/ThreadPoolExecutor.cpp.ll index 5e4f9de6485..d2e7818e196 100644 --- a/bench/folly/optimized/ThreadPoolExecutor.cpp.ll +++ b/bench/folly/optimized/ThreadPoolExecutor.cpp.ll @@ -3147,18 +3147,19 @@ entry: %sub = sub nsw i64 %.sroa.speculated, %add %div1348 = lshr i64 %sub, 1 %add.ptr = getelementptr inbounds ptr, ptr %call5.i.i4.i, i64 %div1348 - %add.ptr14 = getelementptr inbounds ptr, ptr %add.ptr, i64 %add + %add.ptr14.idx = shl nuw nsw i64 %add, 3 br label %for.body.i for.body.i: ; preds = %invoke.cont.i, %entry - %__cur.013.i = phi ptr [ %incdec.ptr.i, %invoke.cont.i ], [ %add.ptr, %entry ] + %__cur.013.i.idx = phi i64 [ %__cur.013.i.add, %invoke.cont.i ], [ 0, %entry ] + %__cur.013.i.ptr = getelementptr inbounds i8, ptr %add.ptr, i64 %__cur.013.i.idx %call5.i.i.i10.i = invoke noalias noundef nonnull dereferenceable(512) ptr @_Znwm(i64 noundef 512) #34 to label %invoke.cont.i unwind label %lpad.i invoke.cont.i: ; preds = %for.body.i - store ptr %call5.i.i.i10.i, ptr %__cur.013.i, align 8, !tbaa !10 - %incdec.ptr.i = getelementptr inbounds i8, ptr %__cur.013.i, i64 8 - %cmp.i49 = icmp ult ptr %incdec.ptr.i, %add.ptr14 + store ptr %call5.i.i.i10.i, ptr %__cur.013.i.ptr, align 8, !tbaa !10 + %__cur.013.i.add = add nuw nsw i64 %__cur.013.i.idx, 8 + %cmp.i49 = icmp ult i64 %__cur.013.i.add, %add.ptr14.idx br i1 %cmp.i49, label %for.body.i, label %try.cont, !llvm.loop !182 lpad.i: ; preds = %for.body.i @@ -3166,15 +3167,15 @@ lpad.i: ; preds = %for.body.i catch ptr null %2 = extractvalue { ptr, i32 } %1, 0 %3 = tail call ptr @__cxa_begin_catch(ptr %2) #32 - %cmp4.i.i = icmp ugt ptr %__cur.013.i, %add.ptr - br i1 %cmp4.i.i, label %for.body.i.i, label %_ZNSt11_Deque_baseISt10shared_ptrIN5folly18ThreadPoolExecutor6ThreadEESaIS4_EE16_M_destroy_nodesEPPS4_S8_.exit.i + %cmp4.i.i.not = icmp eq i64 %__cur.013.i.idx, 0 + br i1 %cmp4.i.i.not, label %_ZNSt11_Deque_baseISt10shared_ptrIN5folly18ThreadPoolExecutor6ThreadEESaIS4_EE16_M_destroy_nodesEPPS4_S8_.exit.i, label %for.body.i.i for.body.i.i: ; preds = %lpad.i, %for.body.i.i %__n.05.i.i = phi ptr [ %incdec.ptr.i.i, %for.body.i.i ], [ %add.ptr, %lpad.i ] %4 = load ptr, ptr %__n.05.i.i, align 8, !tbaa !10 tail call void @_ZdlPv(ptr noundef %4) #30 %incdec.ptr.i.i = getelementptr inbounds i8, ptr %__n.05.i.i, i64 8 - %cmp.i.i = icmp ult ptr %incdec.ptr.i.i, %__cur.013.i + %cmp.i.i = icmp ult ptr %incdec.ptr.i.i, %__cur.013.i.ptr br i1 %cmp.i.i, label %for.body.i.i, label %_ZNSt11_Deque_baseISt10shared_ptrIN5folly18ThreadPoolExecutor6ThreadEESaIS4_EE16_M_destroy_nodesEPPS4_S8_.exit.i, !llvm.loop !183 _ZNSt11_Deque_baseISt10shared_ptrIN5folly18ThreadPoolExecutor6ThreadEESaIS4_EE16_M_destroy_nodesEPPS4_S8_.exit.i: ; preds = %for.body.i.i, %lpad.i diff --git a/bench/folly/optimized/ThreadedExecutor.cpp.ll b/bench/folly/optimized/ThreadedExecutor.cpp.ll index 4370bc70bc1..79d2381e91e 100644 --- a/bench/folly/optimized/ThreadedExecutor.cpp.ll +++ b/bench/folly/optimized/ThreadedExecutor.cpp.ll @@ -5663,18 +5663,19 @@ entry: %sub = sub nsw i64 %.sroa.speculated, %add %div1348 = lshr i64 %sub, 1 %add.ptr = getelementptr inbounds ptr, ptr %call5.i.i4.i, i64 %div1348 - %add.ptr14 = getelementptr inbounds ptr, ptr %add.ptr, i64 %add + %add.ptr14.idx = shl nuw nsw i64 %add, 3 br label %for.body.i for.body.i: ; preds = %invoke.cont.i, %entry - %__cur.013.i = phi ptr [ %incdec.ptr.i, %invoke.cont.i ], [ %add.ptr, %entry ] + %__cur.013.i.idx = phi i64 [ %__cur.013.i.add, %invoke.cont.i ], [ 0, %entry ] + %__cur.013.i.ptr = getelementptr inbounds i8, ptr %add.ptr, i64 %__cur.013.i.idx %call5.i.i.i10.i = invoke noalias noundef nonnull dereferenceable(512) ptr @_Znwm(i64 noundef 512) #32 to label %invoke.cont.i unwind label %lpad.i invoke.cont.i: ; preds = %for.body.i - store ptr %call5.i.i.i10.i, ptr %__cur.013.i, align 8, !tbaa !46 - %incdec.ptr.i = getelementptr inbounds i8, ptr %__cur.013.i, i64 8 - %cmp.i49 = icmp ult ptr %incdec.ptr.i, %add.ptr14 + store ptr %call5.i.i.i10.i, ptr %__cur.013.i.ptr, align 8, !tbaa !46 + %__cur.013.i.add = add nuw nsw i64 %__cur.013.i.idx, 8 + %cmp.i49 = icmp ult i64 %__cur.013.i.add, %add.ptr14.idx br i1 %cmp.i49, label %for.body.i, label %try.cont, !llvm.loop !253 lpad.i: ; preds = %for.body.i @@ -5682,15 +5683,15 @@ lpad.i: ; preds = %for.body.i catch ptr null %2 = extractvalue { ptr, i32 } %1, 0 %3 = tail call ptr @__cxa_begin_catch(ptr %2) #23 - %cmp4.i.i = icmp ugt ptr %__cur.013.i, %add.ptr - br i1 %cmp4.i.i, label %for.body.i.i, label %_ZNSt11_Deque_baseIPN5folly22hazptr_obj_base_linkedINS0_14UnboundedQueueINS0_16ThreadedExecutor7MessageELb0ELb1ELb1ELm8ELm7ESt6atomicE7SegmentES5_St14default_deleteIS7_EEESaISB_EE16_M_destroy_nodesEPPSB_SF_.exit.i + %cmp4.i.i.not = icmp eq i64 %__cur.013.i.idx, 0 + br i1 %cmp4.i.i.not, label %_ZNSt11_Deque_baseIPN5folly22hazptr_obj_base_linkedINS0_14UnboundedQueueINS0_16ThreadedExecutor7MessageELb0ELb1ELb1ELm8ELm7ESt6atomicE7SegmentES5_St14default_deleteIS7_EEESaISB_EE16_M_destroy_nodesEPPSB_SF_.exit.i, label %for.body.i.i for.body.i.i: ; preds = %lpad.i, %for.body.i.i %__n.05.i.i = phi ptr [ %incdec.ptr.i.i, %for.body.i.i ], [ %add.ptr, %lpad.i ] %4 = load ptr, ptr %__n.05.i.i, align 8, !tbaa !46 tail call void @_ZdlPv(ptr noundef %4) #30 %incdec.ptr.i.i = getelementptr inbounds i8, ptr %__n.05.i.i, i64 8 - %cmp.i.i = icmp ult ptr %incdec.ptr.i.i, %__cur.013.i + %cmp.i.i = icmp ult ptr %incdec.ptr.i.i, %__cur.013.i.ptr br i1 %cmp.i.i, label %for.body.i.i, label %_ZNSt11_Deque_baseIPN5folly22hazptr_obj_base_linkedINS0_14UnboundedQueueINS0_16ThreadedExecutor7MessageELb0ELb1ELb1ELm8ELm7ESt6atomicE7SegmentES5_St14default_deleteIS7_EEESaISB_EE16_M_destroy_nodesEPPSB_SF_.exit.i, !llvm.loop !254 _ZNSt11_Deque_baseIPN5folly22hazptr_obj_base_linkedINS0_14UnboundedQueueINS0_16ThreadedExecutor7MessageELb0ELb1ELb1ELm8ELm7ESt6atomicE7SegmentES5_St14default_deleteIS7_EEESaISB_EE16_M_destroy_nodesEPPSB_SF_.exit.i: ; preds = %for.body.i.i, %lpad.i diff --git a/bench/folly/optimized/TimedDrivableExecutor.cpp.ll b/bench/folly/optimized/TimedDrivableExecutor.cpp.ll index 1baca5ef3f1..f4467392dca 100644 --- a/bench/folly/optimized/TimedDrivableExecutor.cpp.ll +++ b/bench/folly/optimized/TimedDrivableExecutor.cpp.ll @@ -4836,18 +4836,19 @@ entry: %sub = sub nsw i64 %.sroa.speculated, %add %div1348 = lshr i64 %sub, 1 %add.ptr = getelementptr inbounds ptr, ptr %call5.i.i4.i, i64 %div1348 - %add.ptr14 = getelementptr inbounds ptr, ptr %add.ptr, i64 %add + %add.ptr14.idx = shl nuw nsw i64 %add, 3 br label %for.body.i for.body.i: ; preds = %invoke.cont.i, %entry - %__cur.013.i = phi ptr [ %incdec.ptr.i, %invoke.cont.i ], [ %add.ptr, %entry ] + %__cur.013.i.idx = phi i64 [ %__cur.013.i.add, %invoke.cont.i ], [ 0, %entry ] + %__cur.013.i.ptr = getelementptr inbounds i8, ptr %add.ptr, i64 %__cur.013.i.idx %call5.i.i.i10.i = invoke noalias noundef nonnull dereferenceable(512) ptr @_Znwm(i64 noundef 512) #32 to label %invoke.cont.i unwind label %lpad.i invoke.cont.i: ; preds = %for.body.i - store ptr %call5.i.i.i10.i, ptr %__cur.013.i, align 8, !tbaa !43 - %incdec.ptr.i = getelementptr inbounds i8, ptr %__cur.013.i, i64 8 - %cmp.i49 = icmp ult ptr %incdec.ptr.i, %add.ptr14 + store ptr %call5.i.i.i10.i, ptr %__cur.013.i.ptr, align 8, !tbaa !43 + %__cur.013.i.add = add nuw nsw i64 %__cur.013.i.idx, 8 + %cmp.i49 = icmp ult i64 %__cur.013.i.add, %add.ptr14.idx br i1 %cmp.i49, label %for.body.i, label %try.cont, !llvm.loop !209 lpad.i: ; preds = %for.body.i @@ -4855,15 +4856,15 @@ lpad.i: ; preds = %for.body.i catch ptr null %2 = extractvalue { ptr, i32 } %1, 0 %3 = tail call ptr @__cxa_begin_catch(ptr %2) #24 - %cmp4.i.i = icmp ugt ptr %__cur.013.i, %add.ptr - br i1 %cmp4.i.i, label %for.body.i.i, label %_ZNSt11_Deque_baseIPN5folly22hazptr_obj_base_linkedINS0_14UnboundedQueueINS0_8FunctionIFvvEEELb0ELb1ELb1ELm8ELm7ESt6atomicE7SegmentES6_St14default_deleteIS8_EEESaISC_EE16_M_destroy_nodesEPPSC_SG_.exit.i + %cmp4.i.i.not = icmp eq i64 %__cur.013.i.idx, 0 + br i1 %cmp4.i.i.not, label %_ZNSt11_Deque_baseIPN5folly22hazptr_obj_base_linkedINS0_14UnboundedQueueINS0_8FunctionIFvvEEELb0ELb1ELb1ELm8ELm7ESt6atomicE7SegmentES6_St14default_deleteIS8_EEESaISC_EE16_M_destroy_nodesEPPSC_SG_.exit.i, label %for.body.i.i for.body.i.i: ; preds = %lpad.i, %for.body.i.i %__n.05.i.i = phi ptr [ %incdec.ptr.i.i, %for.body.i.i ], [ %add.ptr, %lpad.i ] %4 = load ptr, ptr %__n.05.i.i, align 8, !tbaa !43 tail call void @_ZdlPv(ptr noundef %4) #31 %incdec.ptr.i.i = getelementptr inbounds i8, ptr %__n.05.i.i, i64 8 - %cmp.i.i = icmp ult ptr %incdec.ptr.i.i, %__cur.013.i + %cmp.i.i = icmp ult ptr %incdec.ptr.i.i, %__cur.013.i.ptr br i1 %cmp.i.i, label %for.body.i.i, label %_ZNSt11_Deque_baseIPN5folly22hazptr_obj_base_linkedINS0_14UnboundedQueueINS0_8FunctionIFvvEEELb0ELb1ELb1ELm8ELm7ESt6atomicE7SegmentES6_St14default_deleteIS8_EEESaISC_EE16_M_destroy_nodesEPPSC_SG_.exit.i, !llvm.loop !210 _ZNSt11_Deque_baseIPN5folly22hazptr_obj_base_linkedINS0_14UnboundedQueueINS0_8FunctionIFvvEEELb0ELb1ELb1ELm8ELm7ESt6atomicE7SegmentES6_St14default_deleteIS8_EEESaISC_EE16_M_destroy_nodesEPPSC_SG_.exit.i: ; preds = %for.body.i.i, %lpad.i diff --git a/bench/git/optimized/alias.ll b/bench/git/optimized/alias.ll index 247a8a8007e..8a15eb63ed8 100644 --- a/bench/git/optimized/alias.ll +++ b/bench/git/optimized/alias.ll @@ -94,7 +94,7 @@ entry: } ; Function Attrs: nounwind uwtable -define dso_local void @quote_cmdline(ptr noundef %buf, ptr noundef readonly %argv) local_unnamed_addr #0 { +define dso_local void @quote_cmdline(ptr noundef %buf, ptr nocapture noundef readonly %argv) local_unnamed_addr #0 { entry: %0 = load ptr, ptr %argv, align 8 %tobool.not73 = icmp eq ptr %0, null @@ -106,8 +106,9 @@ for.body.lr.ph: ; preds = %entry br label %for.body for.body: ; preds = %for.body.lr.ph, %strbuf_addch.exit72 - %argp.074 = phi ptr [ %argv, %for.body.lr.ph ], [ %incdec.ptr13, %strbuf_addch.exit72 ] - %cmp.not = icmp eq ptr %argp.074, %argv + %argp.0.ptr75 = phi ptr [ %argv, %for.body.lr.ph ], [ %argp.0.ptr, %strbuf_addch.exit72 ] + %argp.0.idx74 = phi i64 [ 0, %for.body.lr.ph ], [ %argp.0.add, %strbuf_addch.exit72 ] + %cmp.not = icmp eq i64 %argp.0.idx74, 0 br i1 %cmp.not, label %if.end, label %if.then if.then: ; preds = %for.body @@ -168,7 +169,7 @@ strbuf_addch.exit27: ; preds = %strbuf_avail.exit.i %12 = load i64, ptr %len.i.i, align 8 %arrayidx3.i22 = getelementptr inbounds i8, ptr %11, i64 %12 store i8 0, ptr %arrayidx3.i22, align 1 - %13 = load ptr, ptr %argp.074, align 8 + %13 = load ptr, ptr %argp.0.ptr75, align 8 br label %for.cond1 for.cond1: ; preds = %strbuf_addch.exit57, %strbuf_addch.exit27 @@ -269,8 +270,9 @@ strbuf_addch.exit72: ; preds = %strbuf_avail.exit.i %32 = load i64, ptr %len.i.i, align 8 %arrayidx3.i67 = getelementptr inbounds i8, ptr %31, i64 %32 store i8 0, ptr %arrayidx3.i67, align 1 - %incdec.ptr13 = getelementptr inbounds i8, ptr %argp.074, i64 8 - %33 = load ptr, ptr %incdec.ptr13, align 8 + %argp.0.add = add nuw nsw i64 %argp.0.idx74, 8 + %argp.0.ptr = getelementptr inbounds i8, ptr %argv, i64 %argp.0.add + %33 = load ptr, ptr %argp.0.ptr, align 8 %tobool.not = icmp eq ptr %33, null br i1 %tobool.not, label %for.end14, label %for.body, !llvm.loop !8 diff --git a/bench/git/optimized/branch.ll b/bench/git/optimized/branch.ll index 2c353ea8612..92f3dad15a9 100644 --- a/bench/git/optimized/branch.ll +++ b/bench/git/optimized/branch.ll @@ -159,7 +159,8 @@ if.end5: ; preds = %if.end if.then7: ; preds = %if.end5 %2 = load ptr, ptr %remotes, align 8 - %add.ptr = getelementptr inbounds %struct.string_list_item, ptr %2, i64 %1 + %add.ptr.idx = shl nsw i64 %1, 4 + %add.ptr.ptr = getelementptr inbounds i8, ptr %2, i64 %add.ptr.idx %tobool8.not105 = icmp ne ptr %2, null %cmp11106 = icmp sgt i64 %1, 0 %or.cond103107 = and i1 %tobool8.not105, %cmp11106 @@ -213,7 +214,7 @@ _.exit: ; preds = %if.then16, %if.end3 for.inc: ; preds = %skip_prefix.exit, %land.lhs.true13 %incdec.ptr = getelementptr inbounds i8, ptr %item.0109, i64 16 - %cmp11 = icmp ult ptr %incdec.ptr, %add.ptr + %cmp11 = icmp ult ptr %incdec.ptr, %add.ptr.ptr br i1 %cmp11, label %for.body, label %if.end19, !llvm.loop !8 if.end19: ; preds = %for.inc, %if.then7, %if.end5 @@ -632,7 +633,7 @@ while.body.i: ; preds = %while.cond.backedge %2 = phi ptr [ %0, %while.body.lr.ph.i ], [ %19, %while.cond.backedge.i ] %indvars.iv.i = phi i64 [ 0, %while.body.lr.ph.i ], [ %indvars.iv.next.i, %while.cond.backedge.i ] call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(184) %state.i, i8 0, i64 184, i1 false) - %indvars.iv.next.i = add nuw i64 %indvars.iv.i, 1 + %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(40) %update_refs.i, i8 0, i64 40, i1 false) store i8 1, ptr %1, align 8 %is_bare.i = getelementptr inbounds i8, ptr %2, i64 80 @@ -1746,7 +1747,7 @@ if.then9: ; preds = %if.end, %for.body.u unreachable for.inc: ; preds = %if.end, %for.body - %indvars.iv.next = add nuw i64 %indvars.iv, 1 + %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %arrayidx = getelementptr inbounds ptr, ptr %call, i64 %indvars.iv.next %7 = load ptr, ptr %arrayidx, align 8 %tobool.not = icmp eq ptr %7, null diff --git a/bench/git/optimized/gc.ll b/bench/git/optimized/gc.ll index f3a6d7a308f..e69cd8fdb3f 100644 --- a/bench/git/optimized/gc.ll +++ b/bench/git/optimized/gc.ll @@ -1034,7 +1034,7 @@ for.body.i56: ; preds = %if.then270, %for.bo %arrayidx.i = getelementptr inbounds %struct.string_list_item, ptr %64, i64 %indvars.iv.i %65 = load ptr, ptr %arrayidx.i, align 8 %call.i57 = call i32 @unlink_or_warn(ptr noundef %65) #21 - %indvars.iv.next.i = add nuw i64 %indvars.iv.i, 1 + %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %66 = load i64, ptr getelementptr inbounds (%struct.string_list, ptr @pack_garbage, i64 0, i32 1), align 8 %cmp.i58 = icmp ugt i64 %66, %indvars.iv.next.i br i1 %cmp.i58, label %for.body.i56, label %clean_pack_garbage.exit, !llvm.loop !8 @@ -2692,13 +2692,14 @@ if.then14: ; preds = %if.end11 land.rhs.lr.ph: ; preds = %if.then14 %nr = getelementptr inbounds i8, ptr %3, i64 8 %5 = load i64, ptr %nr, align 8 - %add.ptr = getelementptr inbounds %struct.string_list_item, ptr %4, i64 %5 + %add.ptr.idx = shl nsw i64 %5, 4 + %add.ptr.ptr = getelementptr inbounds i8, ptr %4, i64 %add.ptr.idx %cmp11 = icmp sgt i64 %5, 0 br i1 %cmp11, label %for.body, label %if.then23.critedge land.rhs: ; preds = %for.body %incdec.ptr = getelementptr inbounds i8, ptr %item.01012, i64 16 - %cmp = icmp ult ptr %incdec.ptr, %add.ptr + %cmp = icmp ult ptr %incdec.ptr, %add.ptr.ptr br i1 %cmp, label %for.body, label %if.then23.critedge for.body: ; preds = %land.rhs.lr.ph, %land.rhs @@ -2849,13 +2850,14 @@ if.then37: ; preds = %cond.false, %cond.t land.rhs.lr.ph: ; preds = %if.then37 %nr = getelementptr inbounds i8, ptr %5, i64 8 %7 = load i64, ptr %nr, align 8 - %add.ptr = getelementptr inbounds %struct.string_list_item, ptr %6, i64 %7 + %add.ptr.idx = shl nsw i64 %7, 4 + %add.ptr.ptr = getelementptr inbounds i8, ptr %6, i64 %add.ptr.idx %cmp16 = icmp sgt i64 %7, 0 br i1 %cmp16, label %for.body, label %if.else land.rhs: ; preds = %for.body %incdec.ptr = getelementptr inbounds i8, ptr %item.01517, i64 16 - %cmp = icmp ult ptr %incdec.ptr, %add.ptr + %cmp = icmp ult ptr %incdec.ptr, %add.ptr.ptr br i1 %cmp, label %for.body, label %if.else for.body: ; preds = %land.rhs.lr.ph, %land.rhs diff --git a/bench/git/optimized/pretty.ll b/bench/git/optimized/pretty.ll index cff2c04e021..7dc7173e09e 100644 --- a/bench/git/optimized/pretty.ll +++ b/bench/git/optimized/pretty.ll @@ -10,10 +10,10 @@ target triple = "x86_64-unknown-linux-gnu" %struct.strbuf = type { i64, i64, ptr } %struct.ident_split = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr } %struct.regmatch_t = type { i32, i32 } -%struct.string_list_item = type { ptr, ptr } %struct.format_commit_context = type { ptr, ptr, ptr, i8, %struct.signature_check, i32, i32, ptr, ptr, i64, i64, i64, i32, i32, %struct.chunk, %struct.chunk, i64, i64, i64, i64 } %struct.signature_check = type { ptr, i64, i32, i64, ptr, ptr, i8, ptr, ptr, ptr, ptr, i32 } %struct.chunk = type { i64, i64 } +%struct.string_list_item = type { ptr, ptr } %struct.pretty_print_context = type { i32, i32, ptr, i32, %struct.date_mode, i8, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, i32, ptr, i8, ptr, %struct.string_list, i32 } %struct.date_mode = type { i32, ptr, i32 } %struct.string_list = type { ptr, i64, i64, i8, ptr } @@ -2357,7 +2357,8 @@ entry: land.rhs.lr.ph: ; preds = %entry %nr = getelementptr inbounds i8, ptr %ud, i64 8 %1 = load i64, ptr %nr, align 8 - %add.ptr = getelementptr inbounds %struct.string_list_item, ptr %0, i64 %1 + %add.ptr.idx = shl nsw i64 %1, 4 + %add.ptr.ptr = getelementptr inbounds i8, ptr %0, i64 %add.ptr.idx %len = getelementptr inbounds i8, ptr %key, i64 8 %buf = getelementptr inbounds i8, ptr %key, i64 16 %cmp13 = icmp sgt i64 %1, 0 @@ -2384,7 +2385,7 @@ land.lhs.true: ; preds = %for.body for.inc: ; preds = %for.body, %land.lhs.true %incdec.ptr = getelementptr inbounds i8, ptr %item.01014, i64 16 - %cmp = icmp ult ptr %incdec.ptr, %add.ptr + %cmp = icmp ult ptr %incdec.ptr, %add.ptr.ptr br i1 %cmp, label %for.body, label %return return: ; preds = %for.inc, %land.lhs.true, %land.rhs.lr.ph, %entry diff --git a/bench/git/optimized/protocol.ll b/bench/git/optimized/protocol.ll index 86ac2477f2b..74e46a9d5d6 100644 --- a/bench/git/optimized/protocol.ll +++ b/bench/git/optimized/protocol.ll @@ -4,7 +4,6 @@ target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80: target triple = "x86_64-unknown-linux-gnu" %struct.string_list = type { ptr, i64, i64, i8, ptr } -%struct.string_list_item = type { ptr, ptr } @.str = private unnamed_addr constant [26 x i8] c"GIT_TEST_PROTOCOL_VERSION\00", align 1 @.str.1 = private unnamed_addr constant [17 x i8] c"protocol.version\00", align 1 @@ -112,7 +111,8 @@ if.then: ; preds = %entry land.rhs.lr.ph: ; preds = %if.then %nr = getelementptr inbounds i8, ptr %list, i64 8 %2 = load i64, ptr %nr, align 8 - %add.ptr = getelementptr inbounds %struct.string_list_item, ptr %1, i64 %2 + %add.ptr.idx = shl nsw i64 %2, 4 + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr.idx %cmp18 = icmp sgt i64 %2, 0 br i1 %cmp18, label %for.body, label %for.end @@ -162,7 +162,7 @@ parse_protocol_version.exit: ; preds = %if.then5, %if.else. for.inc: ; preds = %do.cond.i, %parse_protocol_version.exit %version.1 = phi i32 [ %spec.select, %parse_protocol_version.exit ], [ %version.01519, %do.cond.i ] %incdec.ptr = getelementptr inbounds i8, ptr %item.01420, i64 16 - %cmp = icmp ult ptr %incdec.ptr, %add.ptr + %cmp = icmp ult ptr %incdec.ptr, %add.ptr.ptr br i1 %cmp, label %for.body, label %for.end for.end: ; preds = %for.inc, %land.rhs.lr.ph, %if.then diff --git a/bench/git/optimized/push.ll b/bench/git/optimized/push.ll index df375c462d6..e4c554e0edb 100644 --- a/bench/git/optimized/push.ll +++ b/bench/git/optimized/push.ll @@ -8,7 +8,6 @@ target triple = "x86_64-unknown-linux-gnu" %struct.refspec = type { ptr, i32, i32, ptr, i32, i32, i32 } %struct.refspec_item = type { i8, ptr, ptr } %struct.option = type { i32, i32, ptr, ptr, ptr, ptr, i32, ptr, i64, ptr, i64, ptr } -%struct.string_list_item = type { ptr, ptr } @.str = private unnamed_addr constant [8 x i8] c"verbose\00", align 1 @verbosity = internal global i32 0, align 4 @@ -1053,13 +1052,14 @@ if.end408: ; preds = %if.then407, %land.l br i1 %tobool409.not42, label %for.end, label %land.rhs.lr.ph land.rhs.lr.ph: ; preds = %if.end408 - %add.ptr412 = getelementptr inbounds %struct.string_list_item, ptr %35, i64 %.pre46 + %add.ptr412.idx = shl nsw i64 %.pre46, 4 + %add.ptr412.ptr = getelementptr inbounds i8, ptr %35, i64 %add.ptr412.idx %cmp41349 = icmp sgt i64 %.pre46, 0 br i1 %cmp41349, label %for.body, label %for.end land.rhs: ; preds = %for.body %incdec.ptr = getelementptr inbounds i8, ptr %item.04350, i64 16 - %cmp413 = icmp ult ptr %incdec.ptr, %add.ptr412 + %cmp413 = icmp ult ptr %incdec.ptr, %add.ptr412.ptr br i1 %cmp413, label %for.body, label %for.end for.body: ; preds = %land.rhs.lr.ph, %land.rhs diff --git a/bench/git/optimized/remote.ll b/bench/git/optimized/remote.ll index 29e3f522863..078e97ad815 100644 --- a/bench/git/optimized/remote.ll +++ b/bench/git/optimized/remote.ll @@ -1935,7 +1935,7 @@ for.inc.i.us: ; preds = %refspec_match.exit. br i1 %exitcond.not, label %omit_name_by_refspec.exit.loopexit.us, label %for.body.i.us, !llvm.loop !17 omit_name_by_refspec.exit.loopexit.us: ; preds = %for.inc.i.us - %indvars.iv.next44 = add nuw i64 %indvars.iv43, 1 + %indvars.iv.next44 = add nuw nsw i64 %indvars.iv43, 1 %cmp48.us = icmp ugt i64 %.pre46, %indvars.iv.next44 br i1 %cmp48.us, label %for.body50.us, label %for.end60, !llvm.loop !21 @@ -6260,7 +6260,7 @@ for.body: ; preds = %query_refspecs_mult %12 = load ptr, ptr %arrayidx, align 8 %call = call i32 @string_list_has_string(ptr noundef %10, ptr noundef %12) #21 %tobool7.not = icmp eq i32 %call, 0 - %indvars.iv.next = add nuw i64 %indvars.iv, 1 + %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %13 = load i64, ptr %nr, align 8 %cmp5 = icmp ugt i64 %13, %indvars.iv.next %14 = select i1 %tobool7.not, i1 %cmp5, i1 false @@ -6710,11 +6710,12 @@ if.end4.i.i: ; preds = %if.end.i.i10 br i1 %cmp611.i.i, label %for.body.preheader.i.i, label %is_reachable_in_reflog.exit.thread.i for.body.preheader.i.i: ; preds = %if.end4.i.i - %add.ptr10.i.i = getelementptr inbounds ptr, ptr %.pre15.i.i, i64 %18 + %add.ptr10.idx.i.i = shl nsw i64 %18, 3 + %add.ptr10.ptr.i.i = getelementptr inbounds i8, ptr %.pre15.i.i, i64 %add.ptr10.idx.i.i br label %for.body.i.i for.body.i.i: ; preds = %for.inc.i.i, %for.body.preheader.i.i - %add.ptr13.i.i = phi ptr [ %add.ptr.i.i, %for.inc.i.i ], [ %add.ptr10.i.i, %for.body.preheader.i.i ] + %add.ptr13.i.i = phi ptr [ %add.ptr.i.i, %for.inc.i.i ], [ %add.ptr10.ptr.i.i, %for.body.preheader.i.i ] %chunk.012.i.i = phi ptr [ %add.ptr17.i.i, %for.inc.i.i ], [ %.pre15.i.i, %for.body.preheader.i.i ] %sub.ptr.lhs.cast.i.i = ptrtoint ptr %add.ptr13.i.i to i64 %sub.ptr.rhs.cast.i.i = ptrtoint ptr %chunk.012.i.i to i64 diff --git a/bench/git/optimized/submodule--helper.ll b/bench/git/optimized/submodule--helper.ll index 00127a38cb2..4580170a8f7 100644 --- a/bench/git/optimized/submodule--helper.ll +++ b/bench/git/optimized/submodule--helper.ll @@ -29,7 +29,6 @@ target triple = "x86_64-unknown-linux-gnu" %struct.module_list = type { ptr, i32, i32 } %struct.init_cb = type { ptr, ptr, i32 } %struct.update_clone_data = type { ptr, %struct.object_id, i32 } -%struct.string_list_item = type { ptr, ptr } %struct.foreach_cb = type { i32, ptr, ptr, ptr, i32, i32 } %struct.rev_info = type { ptr, %struct.object_array, ptr, %struct.object_array, %struct.rev_cmdline_info, %struct.list_objects_filter_options, %struct.ref_exclusions, ptr, ptr, %struct.pathspec, i32, i32, i32, i32, i64, i32, i24, %struct.date_mode, i32, i32, i32, i32, ptr, i32, i32, ptr, ptr, i32, ptr, ptr, %struct.ident_split, ptr, i32, ptr, ptr, ptr, i32, i32, i32, ptr, %struct.grep_opt, ptr, i32, i32, i64, i64, i64, i32, i32, ptr, ptr, ptr, %struct.diff_options, %struct.diff_options, ptr, %struct.decoration, %struct.decoration, %struct.decoration, %struct.display_notes_opt, ptr, ptr, ptr, ptr, ptr, i32, ptr, i32, i32, i32, %struct.decoration, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, ptr, i32, ptr, %struct.oidset } %struct.object_array = type { i32, i32, ptr } @@ -50,6 +49,7 @@ target triple = "x86_64-unknown-linux-gnu" %struct.summary_cb = type { i32, ptr, ptr, ptr, i8, i32 } %struct.refspec = type { ptr, i32, i32, ptr, i32, i32, i32 } %struct.refspec_item = type { i8, ptr, ptr } +%struct.string_list_item = type { ptr, ptr } %struct.stat = type { i64, i64, i64, i32, i32, i32, i32, i64, i64, i64, i64, %struct.timespec, %struct.timespec, %struct.timespec, [3 x i64] } %struct.timespec = type { i64, i64 } @@ -3560,7 +3560,8 @@ if.end44.i.i.i: ; preds = %submodule_update_ty br i1 %or.cond.i30.i, label %if.end54.i.i.i, label %land.rhs.i.preheader.i.i land.rhs.i.preheader.i.i: ; preds = %if.end44.i.i.i - %add.ptr.i.i.i = getelementptr inbounds %struct.string_list_item, ptr %next.sroa.7.0.copyload.i.i, i64 %next.sroa.9.0.copyload.i.i + %add.ptr.i.idx.i.i = shl nsw i64 %next.sroa.9.0.copyload.i.i, 4 + %add.ptr.i.ptr.i.i = getelementptr inbounds i8, ptr %next.sroa.7.0.copyload.i.i, i64 %add.ptr.i.idx.i.i %cmp53.i140.i.i = icmp sgt i64 %next.sroa.9.0.copyload.i.i, 0 br i1 %cmp53.i140.i.i, label %for.body.i.i.i, label %if.end54.i.i.i @@ -3569,7 +3570,7 @@ for.body.i.i.i: ; preds = %land.rhs.i.preheade %136 = load ptr, ptr %item.052.i141.i.i, align 8 call void (ptr, ...) @strvec_pushl(ptr noundef nonnull %cp.i.i, ptr noundef nonnull @.str.50, ptr noundef %136, ptr noundef null) #19 %incdec.ptr.i.i.i = getelementptr inbounds i8, ptr %item.052.i141.i.i, i64 16 - %cmp53.i.i.i = icmp ult ptr %incdec.ptr.i.i.i, %add.ptr.i.i.i + %cmp53.i.i.i = icmp ult ptr %incdec.ptr.i.i.i, %add.ptr.i.ptr.i.i br i1 %cmp53.i.i.i, label %for.body.i.i.i, label %if.end54.i.i.i if.end54.i.i.i: ; preds = %for.body.i.i.i, %land.rhs.i.preheader.i.i, %if.end44.i.i.i @@ -7086,7 +7087,7 @@ do.end: ; preds = %do.body.do.end_crit while.cond: ; preds = %land.rhs, %do.end %indvars.iv = phi i64 [ %indvars.iv.next, %land.rhs ], [ %idxprom, %do.end ] - %indvars.iv.next = add nsw i64 %indvars.iv, 1 + %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %17 = trunc i64 %indvars.iv.next to i32 %cmp46 = icmp ugt i32 %13, %17 br i1 %cmp46, label %land.rhs, label %for.inc diff --git a/bench/grpc/optimized/channel_init.cc.ll b/bench/grpc/optimized/channel_init.cc.ll index a31b57b8601..886a0c15819 100644 --- a/bench/grpc/optimized/channel_init.cc.ll +++ b/bench/grpc/optimized/channel_init.cc.ll @@ -4223,14 +4223,14 @@ invoke.cont: ; preds = %for.body lpad: ; preds = %for.body %1 = landingpad { ptr, i32 } cleanup - %2 = getelementptr inbounds i8, ptr %agg.result, i64 432 br label %arraydestroy.body.i arraydestroy.body.i: ; preds = %arraydestroy.body.i, %lpad - %arraydestroy.elementPast.i = phi ptr [ %2, %lpad ], [ %arraydestroy.element.i, %arraydestroy.body.i ] - %arraydestroy.element.i = getelementptr inbounds i8, ptr %arraydestroy.elementPast.i, i64 -72 - call void @_ZN9grpc_core11ChannelInit11StackConfigD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %arraydestroy.element.i) #20 - %arraydestroy.done.i = icmp eq ptr %arraydestroy.element.i, %agg.result + %arraydestroy.elementPast.idx.i = phi i64 [ 432, %lpad ], [ %arraydestroy.elementPast.add.i, %arraydestroy.body.i ] + %arraydestroy.elementPast.add.i = add nsw i64 %arraydestroy.elementPast.idx.i, -72 + %arraydestroy.element.ptr.i = getelementptr inbounds i8, ptr %agg.result, i64 %arraydestroy.elementPast.add.i + call void @_ZN9grpc_core11ChannelInit11StackConfigD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %arraydestroy.element.ptr.i) #20 + %arraydestroy.done.i = icmp eq i64 %arraydestroy.elementPast.add.i, 0 br i1 %arraydestroy.done.i, label %_ZN9grpc_core11ChannelInitD2Ev.exit, label %arraydestroy.body.i _ZN9grpc_core11ChannelInitD2Ev.exit: ; preds = %arraydestroy.body.i diff --git a/bench/grpc/optimized/client_channel.cc.ll b/bench/grpc/optimized/client_channel.cc.ll index 0faadd1fa42..0e4a7cb0ec9 100644 --- a/bench/grpc/optimized/client_channel.cc.ll +++ b/bench/grpc/optimized/client_channel.cc.ll @@ -30752,7 +30752,8 @@ if.then.i84: ; preds = %_ZNK9grpc_core5Tabl %21 = load ptr, ptr %data_.i.i.i.i.i.i, align 8 %cond.i.i.i.i.i = select i1 %tobool.i.not.i.i.i.i.i, ptr %data_.i.i.i.i.i.i, ptr %21 %shr.i.i.i.i.i.i = lshr i64 %20, 1 - %add.ptr.i.i.i.i = getelementptr inbounds %"struct.grpc_core::LbCostBinMetadata::ValueType", ptr %cond.i.i.i.i.i, i64 %shr.i.i.i.i.i.i + %add.ptr.i.idx.i.i.i = mul nsw i64 %shr.i.i.i.i.i.i, 40 + %add.ptr.i.ptr.i.i.i = getelementptr inbounds i8, ptr %cond.i.i.i.i.i, i64 %add.ptr.i.idx.i.i.i %cmp.not8.i.i.i = icmp ult i64 %20, 2 br i1 %cmp.not8.i.i.i, label %_ZNK9grpc_core5TableIJNS_15metadata_detail5ValueINS_17LbCostBinMetadataEvEENS2_INS_17GrpcStatusContextEvEENS2_INS_18XEnvoyPeerMetadataEvEENS2_INS_15LbTokenMetadataEvEENS2_INS_10PeerStringEvEENS2_INS_19GrpcTagsBinMetadataEvEENS2_INS_20GrpcTraceBinMetadataEvEENS2_INS_26GrpcServerStatsBinMetadataEvEENS2_INS_30EndpointLoadMetricsBinMetadataEvEENS2_INS_12HostMetadataEvEENS2_INS_19GrpcMessageMetadataEvEENS2_INS_17UserAgentMetadataEvEENS2_INS_21HttpAuthorityMetadataEvEENS2_INS_16HttpPathMetadataEvEENS2_INS_27GrpcRetryPushbackMsMetadataEvEENS2_INS_19GrpcTimeoutMetadataEvEENS2_INS_25GrpcLbClientStatsMetadataEvEENS2_INS_20GrpcRegisteredMethodEvEENS2_INS_27GrpcInternalEncodingRequestEvEENS2_INS_20GrpcEncodingMetadataEvEENS2_INS_18HttpStatusMetadataEvEENS2_INS_31GrpcPreviousRpcAttemptsMetadataEvEENS2_INS_18GrpcStatusMetadataEvEENS2_INS_12WaitForReadyEvEENS2_INS_26GrpcAcceptEncodingMetadataEvEENS2_INS_20GrpcCallWasCancelledEvEENS2_INS_18GrpcStatusFromWireEvEENS2_INS_10TeMetadataEvEENS2_INS_19ContentTypeMetadataEvEENS2_INS85, label %for.body.i.i.i @@ -30760,7 +30761,7 @@ for.body.i.i.i: ; preds = %if.then.i84, %for.b %__begin0.09.i.i.i = phi ptr [ %incdec.ptr.i.i.i, %for.body.i.i.i ], [ %cond.i.i.i.i.i, %if.then.i84 ] tail call void @_ZN9grpc_core13ClientChannel16LoadBalancedCall8Metadata7Encoder6EncodeINS_17LbCostBinMetadataEEEvT_RKNS6_9ValueTypeE(ptr noundef nonnull align 8 dereferenceable(24) %f.coerce, ptr noundef nonnull align 8 dereferenceable(40) %__begin0.09.i.i.i) %incdec.ptr.i.i.i = getelementptr inbounds i8, ptr %__begin0.09.i.i.i, i64 40 - %cmp.not.i.i.i = icmp eq ptr %incdec.ptr.i.i.i, %add.ptr.i.i.i.i + %cmp.not.i.i.i = icmp eq ptr %incdec.ptr.i.i.i, %add.ptr.i.ptr.i.i.i br i1 %cmp.not.i.i.i, label %_ZNK9grpc_core5TableIJNS_15metadata_detail5ValueINS_17LbCostBinMetadataEvEENS2_INS_17GrpcStatusContextEvEENS2_INS_18XEnvoyPeerMetadataEvEENS2_INS_15LbTokenMetadataEvEENS2_INS_10PeerStringEvEENS2_INS_19GrpcTagsBinMetadataEvEENS2_INS_20GrpcTraceBinMetadataEvEENS2_INS_26GrpcServerStatsBinMetadataEvEENS2_INS_30EndpointLoadMetricsBinMetadataEvEENS2_INS_12HostMetadataEvEENS2_INS_19GrpcMessageMetadataEvEENS2_INS_17UserAgentMetadataEvEENS2_INS_21HttpAuthorityMetadataEvEENS2_INS_16HttpPathMetadataEvEENS2_INS_27GrpcRetryPushbackMsMetadataEvEENS2_INS_19GrpcTimeoutMetadataEvEENS2_INS_25GrpcLbClientStatsMetadataEvEENS2_INS_20GrpcRegisteredMethodEvEENS2_INS_27GrpcInternalEncodingRequestEvEENS2_INS_20GrpcEncodingMetadataEvEENS2_INS_18HttpStatusMetadataEvEENS2_INS_31GrpcPreviousRpcAttemptsMetadataEvEENS2_INS_18GrpcStatusMetadataEvEENS2_INS_12WaitForReadyEvEENS2_INS_26GrpcAcceptEncodingMetadataEvEENS2_INS_20GrpcCallWasCancelledEvEENS2_INS_18GrpcStatusFromWireEvEENS2_INS_10TeMetadataEvEENS2_INS_19ContentTypeMetadataEvEENS2_INS115, label %for.body.i.i.i _ZNK9grpc_core5TableIJNS_15metadata_detail5ValueINS_17LbCostBinMetadataEvEENS2_INS_17GrpcStatusContextEvEENS2_INS_18XEnvoyPeerMetadataEvEENS2_INS_15LbTokenMetadataEvEENS2_INS_10PeerStringEvEENS2_INS_19GrpcTagsBinMetadataEvEENS2_INS_20GrpcTraceBinMetadataEvEENS2_INS_26GrpcServerStatsBinMetadataEvEENS2_INS_30EndpointLoadMetricsBinMetadataEvEENS2_INS_12HostMetadataEvEENS2_INS_19GrpcMessageMetadataEvEENS2_INS_17UserAgentMetadataEvEENS2_INS_21HttpAuthorityMetadataEvEENS2_INS_16HttpPathMetadataEvEENS2_INS_27GrpcRetryPushbackMsMetadataEvEENS2_INS_19GrpcTimeoutMetadataEvEENS2_INS_25GrpcLbClientStatsMetadataEvEENS2_INS_20GrpcRegisteredMethodEvEENS2_INS_27GrpcInternalEncodingRequestEvEENS2_INS_20GrpcEncodingMetadataEvEENS2_INS_18HttpStatusMetadataEvEENS2_INS_31GrpcPreviousRpcAttemptsMetadataEvEENS2_INS_18GrpcStatusMetadataEvEENS2_INS_12WaitForReadyEvEENS2_INS_26GrpcAcceptEncodingMetadataEvEENS2_INS_20GrpcCallWasCancelledEvEENS2_INS_18GrpcStatusFromWireEvEENS2_INS_10TeMetadataEvEENS2_INS_19ContentTypeMetadataEvEENS2_INS115: ; preds = %for.body.i.i.i @@ -35355,7 +35356,8 @@ if.end: ; preds = %entry %4 = load ptr, ptr %data_.i.i.i, align 8 %cond.i.i = select i1 %tobool.i.not.i.i, ptr %data_.i.i.i, ptr %4 %shr.i.i.i = lshr i64 %3, 1 - %add.ptr.i = getelementptr inbounds %"struct.grpc_core::LbCostBinMetadata::ValueType", ptr %cond.i.i, i64 %shr.i.i.i + %add.ptr.i.idx = mul nsw i64 %shr.i.i.i, 40 + %add.ptr.i.ptr = getelementptr inbounds i8, ptr %cond.i.i, i64 %add.ptr.i.idx %cmp5.not15 = icmp ult i64 %3, 2 br i1 %cmp5.not15, label %for.end, label %for.body.lr.ph @@ -35417,7 +35419,7 @@ terminate.lpad.i: ; preds = %if.then.i.i.i _ZN9grpc_core5SliceD2Ev.exit: ; preds = %invoke.cont15, %if.then.i.i, %if.then.i.i.i %incdec.ptr = getelementptr inbounds i8, ptr %__begin0.016, i64 40 - %cmp5.not = icmp eq ptr %incdec.ptr, %add.ptr.i + %cmp5.not = icmp eq ptr %incdec.ptr, %add.ptr.i.ptr br i1 %cmp5.not, label %for.end, label %for.body lpad: ; preds = %if.end10 diff --git a/bench/grpc/optimized/endpoint_list.cc.ll b/bench/grpc/optimized/endpoint_list.cc.ll index e1c3699b12f..c593c545013 100644 --- a/bench/grpc/optimized/endpoint_list.cc.ll +++ b/bench/grpc/optimized/endpoint_list.cc.ll @@ -914,8 +914,7 @@ if.then.i.i.i104: ; preds = %invoke.cont.i _ZNSt6vectorIN9grpc_core12experimental4JsonESaIS2_EED2Ev.exit: ; preds = %invoke.cont.i, %if.then.i.i.i104 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %ref.tmp.i.i.i.i106) - %_M_index.i.i.i.i.i107 = getelementptr inbounds i8, ptr %ref.tmp62, i64 48 - %83 = load i8, ptr %_M_index.i.i.i.i.i107, align 8 + %83 = load i8, ptr %_M_index.i.i.i.i.i.i.i.i.i.i93, align 8 %cmp.i.i.i.not.i.i108 = icmp eq i8 %83, -1 br i1 %cmp.i.i.i.not.i.i108, label %_ZN9grpc_core12experimental4JsonD2Ev.exit112, label %if.end.i.i.i.i109 @@ -924,7 +923,7 @@ if.end.i.i.i.i109: ; preds = %_ZNSt6vectorIN9grpc to label %.noexc.i.i.i111 unwind label %terminate.lpad.i.i.i.i110 .noexc.i.i.i111: ; preds = %if.end.i.i.i.i109 - store i8 -1, ptr %_M_index.i.i.i.i.i107, align 8 + store i8 -1, ptr %_M_index.i.i.i.i.i.i.i.i.i.i93, align 8 br label %_ZN9grpc_core12experimental4JsonD2Ev.exit112 terminate.lpad.i.i.i.i110: ; preds = %if.end.i.i.i.i109 diff --git a/bench/grpc/optimized/evaluate_args.cc.ll b/bench/grpc/optimized/evaluate_args.cc.ll index 6103ff37e0d..8c363922b3e 100644 --- a/bench/grpc/optimized/evaluate_args.cc.ll +++ b/bench/grpc/optimized/evaluate_args.cc.ll @@ -53,7 +53,6 @@ target triple = "x86_64-unknown-linux-gnu" %"class.grpc_core::Slice" = type { %"class.grpc_core::slice_detail::BaseSlice" } %"class.grpc_core::CompressionAlgorithmSet" = type { %"class.grpc_core::BitSet.46" } %"class.grpc_core::BitSet.46" = type { [1 x i8] } -%"struct.grpc_core::LbCostBinMetadata::ValueType" = type { double, %"class.std::__cxx11::basic_string" } %struct._Guard.159 = type { ptr } $_ZN9grpc_core19NoDestructSingletonINS_14promise_detail10UnwakeableEE6value_E = comdat any @@ -3251,7 +3250,8 @@ if.end: ; preds = %entry %4 = load ptr, ptr %data_.i.i.i, align 8 %cond.i.i = select i1 %tobool.i.not.i.i, ptr %data_.i.i.i, ptr %4 %shr.i.i.i = lshr i64 %3, 1 - %add.ptr.i = getelementptr inbounds %"struct.grpc_core::LbCostBinMetadata::ValueType", ptr %cond.i.i, i64 %shr.i.i.i + %add.ptr.i.idx = mul nsw i64 %shr.i.i.i, 40 + %add.ptr.i.ptr = getelementptr inbounds i8, ptr %cond.i.i, i64 %add.ptr.i.idx %cmp5.not15 = icmp ult i64 %3, 2 br i1 %cmp5.not15, label %for.end, label %for.body.lr.ph @@ -3313,7 +3313,7 @@ terminate.lpad.i: ; preds = %if.then.i.i.i _ZN9grpc_core5SliceD2Ev.exit: ; preds = %invoke.cont15, %if.then.i.i, %if.then.i.i.i %incdec.ptr = getelementptr inbounds i8, ptr %__begin0.016, i64 40 - %cmp5.not = icmp eq ptr %incdec.ptr, %add.ptr.i + %cmp5.not = icmp eq ptr %incdec.ptr, %add.ptr.i.ptr br i1 %cmp5.not, label %for.end, label %for.body lpad: ; preds = %if.end10 diff --git a/bench/grpc/optimized/fault_injection_filter.cc.ll b/bench/grpc/optimized/fault_injection_filter.cc.ll index a72e44bbbc6..6ebea78c711 100644 --- a/bench/grpc/optimized/fault_injection_filter.cc.ll +++ b/bench/grpc/optimized/fault_injection_filter.cc.ll @@ -3333,7 +3333,7 @@ cleanup.i.i: ; preds = %if.then.i.i.i.i.i.i %agg.tmp.sroa.5.0 = phi i8 [ undef, %if.then.i.i ], [ undef, %_ZN9grpc_core12_GLOBAL__N_111FaultHandleD2Ev.exit.i.i.i.thread.i.i ], [ undef, %if.then.i.i.i.i.i.i.i.i.i ], [ %11, %_ZNSt10unique_ptrI19grpc_metadata_batchN9grpc_core5Arena13PooledDeleterEED2Ev.exit.i.i ] %agg.tmp.sroa.0.0 = phi i8 [ 0, %if.then.i.i ], [ undef, %_ZN9grpc_core12_GLOBAL__N_111FaultHandleD2Ev.exit.i.i.i.thread.i.i ], [ undef, %if.then.i.i.i.i.i.i.i.i.i ], [ 1, %_ZNSt10unique_ptrI19grpc_metadata_batchN9grpc_core5Arena13PooledDeleterEED2Ev.exit.i.i ] %19 = phi ptr [ %4, %if.then.i.i ], [ %6, %_ZN9grpc_core12_GLOBAL__N_111FaultHandleD2Ev.exit.i.i.i.thread.i.i ], [ %6, %if.then.i.i.i.i.i.i.i.i.i ], [ %6, %_ZNSt10unique_ptrI19grpc_metadata_batchN9grpc_core5Arena13PooledDeleterEED2Ev.exit.i.i ] - %cleanup.dest.slot.0.i.i = phi i1 [ false, %if.then.i.i ], [ true, %_ZN9grpc_core12_GLOBAL__N_111FaultHandleD2Ev.exit.i.i.i.thread.i.i ], [ true, %if.then.i.i.i.i.i.i.i.i.i ], [ false, %_ZNSt10unique_ptrI19grpc_metadata_batchN9grpc_core5Arena13PooledDeleterEED2Ev.exit.i.i ] + %switch.i.i = phi i1 [ false, %if.then.i.i ], [ true, %_ZN9grpc_core12_GLOBAL__N_111FaultHandleD2Ev.exit.i.i.i.thread.i.i ], [ true, %if.then.i.i.i.i.i.i.i.i.i ], [ false, %_ZNSt10unique_ptrI19grpc_metadata_batchN9grpc_core5Arena13PooledDeleterEED2Ev.exit.i.i ] %20 = load i8, ptr %result.i.i, align 8, !noalias !39 %21 = and i8 %20, 1 %tobool.not.i.i.i = icmp eq i8 %21, 0 @@ -3357,7 +3357,7 @@ terminate.lpad.i.i.i.i.i: ; preds = %if.then.i.i.i.i21.i unreachable _ZN9grpc_core4PollIN4absl12lts_202308026StatusEED2Ev.exit.i.i: ; preds = %if.then.i.i.i.i21.i.i, %if.then.i20.i.i, %cleanup.i.i - br i1 %cleanup.dest.slot.0.i.i, label %sw.bb16.i.i, label %"_ZN9grpc_core14promise_detail6TrySeqINS_5SleepEJZNS_20FaultInjectionFilter15MakeCallPromiseENS_8CallArgsESt8functionIFNS_12ArenaPromiseISt10unique_ptrI19grpc_metadata_batchNS_5Arena13PooledDeleterEEEES4_EEE3$_0SC_EEclEv.exit" + br i1 %switch.i.i, label %sw.bb16.i.i, label %"_ZN9grpc_core14promise_detail6TrySeqINS_5SleepEJZNS_20FaultInjectionFilter15MakeCallPromiseENS_8CallArgsESt8functionIFNS_12ArenaPromiseISt10unique_ptrI19grpc_metadata_batchNS_5Arena13PooledDeleterEEEES4_EEE3$_0SC_EEclEv.exit" sw.bb16.i.i: ; preds = %_ZN9grpc_core4PollIN4absl12lts_202308026StatusEED2Ev.exit.i.i, %entry %agg.tmp.sroa.9.1 = phi ptr [ undef, %entry ], [ %agg.tmp.sroa.9.0, %_ZN9grpc_core4PollIN4absl12lts_202308026StatusEED2Ev.exit.i.i ] @@ -3510,7 +3510,7 @@ if.then.i54.i.i: ; preds = %cleanup44.i.i, %cle %agg.tmp.sroa.9.2 = phi ptr [ %agg.tmp.sroa.9.1, %cleanup44.thread.i.i ], [ %52, %cleanup44.i.i ] %agg.tmp.sroa.5.2 = phi i8 [ %agg.tmp.sroa.5.1, %cleanup44.thread.i.i ], [ %50, %cleanup44.i.i ] %agg.tmp.sroa.0.2 = phi i8 [ %agg.tmp.sroa.0.1, %cleanup44.thread.i.i ], [ 1, %cleanup44.i.i ] - %cleanup.dest.slot.1106.i.i = phi i1 [ true, %cleanup44.thread.i.i ], [ false, %cleanup44.i.i ] + %switch10106.i.i = phi i1 [ true, %cleanup44.thread.i.i ], [ false, %cleanup44.i.i ] %55 = phi ptr [ %42, %cleanup44.thread.i.i ], [ %39, %cleanup44.i.i ] %56 = load i64, ptr %55, align 8, !noalias !39 %and.i.i.i.i.i55.i.i = and i64 %56, 1 @@ -3529,7 +3529,7 @@ terminate.lpad.i.i.i58.i.i: ; preds = %if.then.i.i.i.i57.i unreachable _ZN9grpc_core4PollIN4absl12lts_202308026StatusEED2Ev.exit59.i.i: ; preds = %if.then.i.i.i.i57.i.i, %if.then.i54.i.i - br i1 %cleanup.dest.slot.1106.i.i, label %sw.bb48.i.i, label %"_ZN9grpc_core14promise_detail6TrySeqINS_5SleepEJZNS_20FaultInjectionFilter15MakeCallPromiseENS_8CallArgsESt8functionIFNS_12ArenaPromiseISt10unique_ptrI19grpc_metadata_batchNS_5Arena13PooledDeleterEEEES4_EEE3$_0SC_EEclEv.exit" + br i1 %switch10106.i.i, label %sw.bb48.i.i, label %"_ZN9grpc_core14promise_detail6TrySeqINS_5SleepEJZNS_20FaultInjectionFilter15MakeCallPromiseENS_8CallArgsESt8functionIFNS_12ArenaPromiseISt10unique_ptrI19grpc_metadata_batchNS_5Arena13PooledDeleterEEEES4_EEE3$_0SC_EEclEv.exit" sw.bb48.i.i: ; preds = %_ZN9grpc_core4PollIN4absl12lts_202308026StatusEED2Ev.exit59.i.i, %entry call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %ref.tmp.i60.i.i), !noalias !39 @@ -5352,7 +5352,8 @@ if.end: ; preds = %entry %4 = load ptr, ptr %data_.i.i.i, align 8 %cond.i.i = select i1 %tobool.i.not.i.i, ptr %data_.i.i.i, ptr %4 %shr.i.i.i = lshr i64 %3, 1 - %add.ptr.i = getelementptr inbounds %"struct.grpc_core::LbCostBinMetadata::ValueType", ptr %cond.i.i, i64 %shr.i.i.i + %add.ptr.i.idx = mul nsw i64 %shr.i.i.i, 40 + %add.ptr.i.ptr = getelementptr inbounds i8, ptr %cond.i.i, i64 %add.ptr.i.idx %cmp5.not15 = icmp ult i64 %3, 2 br i1 %cmp5.not15, label %for.end, label %for.body.lr.ph @@ -5414,7 +5415,7 @@ terminate.lpad.i: ; preds = %if.then.i.i.i _ZN9grpc_core5SliceD2Ev.exit: ; preds = %invoke.cont15, %if.then.i.i, %if.then.i.i.i %incdec.ptr = getelementptr inbounds i8, ptr %__begin0.016, i64 40 - %cmp5.not = icmp eq ptr %incdec.ptr, %add.ptr.i + %cmp5.not = icmp eq ptr %incdec.ptr, %add.ptr.i.ptr br i1 %cmp5.not, label %for.end, label %for.body lpad: ; preds = %if.end10 diff --git a/bench/grpc/optimized/hpack_parse_result.cc.ll b/bench/grpc/optimized/hpack_parse_result.cc.ll index b8652e9a574..dc925f7a31d 100644 --- a/bench/grpc/optimized/hpack_parse_result.cc.ll +++ b/bench/grpc/optimized/hpack_parse_result.cc.ll @@ -21,7 +21,6 @@ target triple = "x86_64-unknown-linux-gnu" %"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string::_Alloc_hider", i64, %union.anon.0 } %"struct.std::__cxx11::basic_string::_Alloc_hider" = type { ptr } %union.anon.0 = type { i64, [8 x i8] } -%"struct.grpc_core::LbCostBinMetadata::ValueType" = type { double, %"class.std::__cxx11::basic_string" } %"class.grpc_core::ManualConstructor" = type { [64 x i8] } %"class.std::allocator" = type { i8 } @@ -2221,7 +2220,8 @@ if.then.i648.i.i.i: ; preds = %_ZNK9grpc_core5Tabl %238 = load ptr, ptr %data_.i.i.i.i.i.i.i.i.i, align 8 %cond.i.i.i.i.i.i.i.i = select i1 %tobool.i.not.i.i.i.i.i.i.i.i, ptr %data_.i.i.i.i.i.i.i.i.i, ptr %238 %shr.i.i.i.i.i.i.i.i.i = lshr i64 %237, 1 - %add.ptr.i.i.i.i.i.i.i = getelementptr inbounds %"struct.grpc_core::LbCostBinMetadata::ValueType", ptr %cond.i.i.i.i.i.i.i.i, i64 %shr.i.i.i.i.i.i.i.i.i + %add.ptr.i.idx.i.i.i.i.i.i = mul nsw i64 %shr.i.i.i.i.i.i.i.i.i, 40 + %add.ptr.i.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %cond.i.i.i.i.i.i.i.i, i64 %add.ptr.i.idx.i.i.i.i.i.i %cmp.not8.i.i.i.i.i.i = icmp ult i64 %237, 2 br i1 %cmp.not8.i.i.i.i.i.i, label %_ZNK9grpc_core5TableIJNS_15metadata_detail5ValueINS_17LbCostBinMetadataEvEENS2_INS_17GrpcStatusContextEvEENS2_INS_18XEnvoyPeerMetadataEvEENS2_INS_15LbTokenMetadataEvEENS2_INS_10PeerStringEvEENS2_INS_19GrpcTagsBinMetadataEvEENS2_INS_20GrpcTraceBinMetadataEvEENS2_INS_26GrpcServerStatsBinMetadataEvEENS2_INS_30EndpointLoadMetricsBinMetadataEvEENS2_INS_12HostMetadataEvEENS2_INS_19GrpcMessageMetadataEvEENS2_INS_17UserAgentMetadataEvEENS2_INS_21HttpAuthorityMetadataEvEENS2_INS_16HttpPathMetadataEvEENS2_INS_27GrpcRetryPushbackMsMetadataEvEENS2_INS_19GrpcTimeoutMetadataEvEENS2_INS_25GrpcLbClientStatsMetadataEvEENS2_INS_20GrpcRegisteredMethodEvEENS2_INS_27GrpcInternalEncodingRequestEvEENS2_INS_20GrpcEncodingMetadataEvEENS2_INS_18HttpStatusMetadataEvEENS2_INS_31GrpcPreviousRpcAttemptsMetadataEvEENS2_INS_18GrpcStatusMetadataEvEENS2_INS_12WaitForReadyEvEENS2_INS_26GrpcAcceptEncodingMetadataEvEENS2_INS_20GrpcCallWasCancelledEvEENS2_INS_18GrpcStatusFromWireEvEENS2_INS_10TeMetadataEvEENS2_INS_19ContentTypeMetadataEvEENS2_INS52, label %for.body.lr.ph.i.i.i.i.i.i @@ -2304,7 +2304,7 @@ call.i.i.i.i.i.i663.i.i.i.noexc: ; preds = %_ZN9grpc_core12_GLO call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %ref.tmp.i.i.i.i.i.i643.i.i.i) call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %ref.tmp4.i.i.i.i.i644.i.i.i) %incdec.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__begin0.09.i.i.i.i.i.i, i64 40 - %cmp.not.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i, %add.ptr.i.i.i.i.i.i.i + %cmp.not.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i, %add.ptr.i.ptr.i.i.i.i.i.i br i1 %cmp.not.i.i.i.i.i.i, label %_ZNK9grpc_core5TableIJNS_15metadata_detail5ValueINS_17LbCostBinMetadataEvEENS2_INS_17GrpcStatusContextEvEENS2_INS_18XEnvoyPeerMetadataEvEENS2_INS_15LbTokenMetadataEvEENS2_INS_10PeerStringEvEENS2_INS_19GrpcTagsBinMetadataEvEENS2_INS_20GrpcTraceBinMetadataEvEENS2_INS_26GrpcServerStatsBinMetadataEvEENS2_INS_30EndpointLoadMetricsBinMetadataEvEENS2_INS_12HostMetadataEvEENS2_INS_19GrpcMessageMetadataEvEENS2_INS_17UserAgentMetadataEvEENS2_INS_21HttpAuthorityMetadataEvEENS2_INS_16HttpPathMetadataEvEENS2_INS_27GrpcRetryPushbackMsMetadataEvEENS2_INS_19GrpcTimeoutMetadataEvEENS2_INS_25GrpcLbClientStatsMetadataEvEENS2_INS_20GrpcRegisteredMethodEvEENS2_INS_27GrpcInternalEncodingRequestEvEENS2_INS_20GrpcEncodingMetadataEvEENS2_INS_18HttpStatusMetadataEvEENS2_INS_31GrpcPreviousRpcAttemptsMetadataEvEENS2_INS_18GrpcStatusMetadataEvEENS2_INS_12WaitForReadyEvEENS2_INS_26GrpcAcceptEncodingMetadataEvEENS2_INS_20GrpcCallWasCancelledEvEENS2_INS_18GrpcStatusFromWireEvEENS2_INS_10TeMetadataEvEENS2_INS_19ContentTypeMetadataEvEENS2_INS51, label %for.body.i.i.i.i.i.i _ZNK9grpc_core5TableIJNS_15metadata_detail5ValueINS_17LbCostBinMetadataEvEENS2_INS_17GrpcStatusContextEvEENS2_INS_18XEnvoyPeerMetadataEvEENS2_INS_15LbTokenMetadataEvEENS2_INS_10PeerStringEvEENS2_INS_19GrpcTagsBinMetadataEvEENS2_INS_20GrpcTraceBinMetadataEvEENS2_INS_26GrpcServerStatsBinMetadataEvEENS2_INS_30EndpointLoadMetricsBinMetadataEvEENS2_INS_12HostMetadataEvEENS2_INS_19GrpcMessageMetadataEvEENS2_INS_17UserAgentMetadataEvEENS2_INS_21HttpAuthorityMetadataEvEENS2_INS_16HttpPathMetadataEvEENS2_INS_27GrpcRetryPushbackMsMetadataEvEENS2_INS_19GrpcTimeoutMetadataEvEENS2_INS_25GrpcLbClientStatsMetadataEvEENS2_INS_20GrpcRegisteredMethodEvEENS2_INS_27GrpcInternalEncodingRequestEvEENS2_INS_20GrpcEncodingMetadataEvEENS2_INS_18HttpStatusMetadataEvEENS2_INS_31GrpcPreviousRpcAttemptsMetadataEvEENS2_INS_18GrpcStatusMetadataEvEENS2_INS_12WaitForReadyEvEENS2_INS_26GrpcAcceptEncodingMetadataEvEENS2_INS_20GrpcCallWasCancelledEvEENS2_INS_18GrpcStatusFromWireEvEENS2_INS_10TeMetadataEvEENS2_INS_19ContentTypeMetadataEvEENS2_INS51: ; preds = %.noexc118 diff --git a/bench/grpc/optimized/hpack_parser_table.cc.ll b/bench/grpc/optimized/hpack_parser_table.cc.ll index 5e5e0e5896f..7b26eb2e48b 100644 --- a/bench/grpc/optimized/hpack_parser_table.cc.ll +++ b/bench/grpc/optimized/hpack_parser_table.cc.ll @@ -1876,18 +1876,17 @@ entry: invoke.cont: ; preds = %entry, %invoke.cont %arrayctor.cur.idx = phi i64 [ 0, %entry ], [ %arrayctor.cur.add, %invoke.cont ] - %arrayctor.cur.ptr = getelementptr inbounds i8, ptr %this, i64 %arrayctor.cur.idx - store ptr @_ZZN9grpc_core14ParsedMetadataI19grpc_metadata_batchE11EmptyVTableEvE6vtable, ptr %arrayctor.cur.ptr, align 8 - %transport_size_.i.i = getelementptr inbounds i8, ptr %arrayctor.cur.ptr, i64 40 + %arrayctor.cur.ptr.ptr = getelementptr inbounds i8, ptr %this, i64 %arrayctor.cur.idx + store ptr @_ZZN9grpc_core14ParsedMetadataI19grpc_metadata_batchE11EmptyVTableEvE6vtable, ptr %arrayctor.cur.ptr.ptr, align 8 + %transport_size_.i.i = getelementptr inbounds i8, ptr %arrayctor.cur.ptr.ptr, i64 40 store i32 0, ptr %transport_size_.i.i, align 8 - %parse_status.i = getelementptr inbounds i8, ptr %arrayctor.cur.ptr, i64 48 + %parse_status.i = getelementptr inbounds i8, ptr %arrayctor.cur.ptr.ptr, i64 48 store ptr null, ptr %parse_status.i, align 8 %arrayctor.cur.add = add nuw nsw i64 %arrayctor.cur.idx, 56 %arrayctor.done = icmp eq i64 %arrayctor.cur.add, 3416 br i1 %arrayctor.done, label %for.cond.preheader, label %invoke.cont for.cond.preheader: ; preds = %invoke.cont - %arrayctor.end = getelementptr inbounds i8, ptr %this, i64 3416 %slice.sroa.2.0.agg.result.sroa_idx.i.i.i = getelementptr inbounds i8, ptr %agg.tmp1.i, i64 8 %slice.sroa.3.0.agg.result.sroa_idx.i.i.i = getelementptr inbounds i8, ptr %agg.tmp1.i, i64 16 %invoker_.i.i = getelementptr inbounds i8, ptr %agg.tmp6.i, i64 8 @@ -2041,10 +2040,11 @@ for.end: ; preds = %_ZN9grpc_core10HPac ret void arraydestroy.body7: ; preds = %arraydestroy.body7, %lpad.i - %arraydestroy.elementPast8 = phi ptr [ %arrayctor.end, %lpad.i ], [ %arraydestroy.element9, %arraydestroy.body7 ] - %arraydestroy.element9 = getelementptr inbounds i8, ptr %arraydestroy.elementPast8, i64 -56 - call void @_ZN9grpc_core10HPackTable7MementoD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %arraydestroy.element9) #22 - %arraydestroy.done10 = icmp eq ptr %arraydestroy.element9, %this + %arraydestroy.elementPast8.idx = phi i64 [ 3416, %lpad.i ], [ %arraydestroy.elementPast8.add, %arraydestroy.body7 ] + %arraydestroy.elementPast8.add = add nsw i64 %arraydestroy.elementPast8.idx, -56 + %arraydestroy.element9.ptr = getelementptr inbounds i8, ptr %this, i64 %arraydestroy.elementPast8.add + call void @_ZN9grpc_core10HPackTable7MementoD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %arraydestroy.element9.ptr) #22 + %arraydestroy.done10 = icmp eq i64 %arraydestroy.elementPast8.add, 0 br i1 %arraydestroy.done10, label %eh.resume, label %arraydestroy.body7 eh.resume: ; preds = %arraydestroy.body7 diff --git a/bench/grpc/optimized/legacy_server_auth_filter.cc.ll b/bench/grpc/optimized/legacy_server_auth_filter.cc.ll index 45be80c43fb..4e0cb756b60 100644 --- a/bench/grpc/optimized/legacy_server_auth_filter.cc.ll +++ b/bench/grpc/optimized/legacy_server_auth_filter.cc.ll @@ -4500,7 +4500,8 @@ if.then.i688.i.i.i.i: ; preds = %_ZNK9grpc_core5Tabl %202 = load ptr, ptr %data_.i.i.i.i.i.i.i.i.i.i, align 8, !noalias !40 %cond.i.i.i.i.i.i.i.i.i = select i1 %tobool.i.not.i.i.i.i.i.i.i.i.i, ptr %data_.i.i.i.i.i.i.i.i.i.i, ptr %202 %shr.i.i.i.i.i.i.i.i.i.i = lshr i64 %201, 1 - %add.ptr.i.i.i.i.i.i.i.i = getelementptr inbounds %"struct.grpc_core::LbCostBinMetadata::ValueType", ptr %cond.i.i.i.i.i.i.i.i.i, i64 %shr.i.i.i.i.i.i.i.i.i.i + %add.ptr.i.idx.i.i.i.i.i.i.i = mul nsw i64 %shr.i.i.i.i.i.i.i.i.i.i, 40 + %add.ptr.i.ptr.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %cond.i.i.i.i.i.i.i.i.i, i64 %add.ptr.i.idx.i.i.i.i.i.i.i %cmp.not8.i.i.i.i.i.i.i = icmp ult i64 %201, 2 br i1 %cmp.not8.i.i.i.i.i.i.i, label %_ZNK9grpc_core5TableIJNS_15metadata_detail5ValueINS_17LbCostBinMetadataEvEENS2_INS_17GrpcStatusContextEvEENS2_INS_18XEnvoyPeerMetadataEvEENS2_INS_15LbTokenMetadataEvEENS2_INS_10PeerStringEvEENS2_INS_19GrpcTagsBinMetadataEvEENS2_INS_20GrpcTraceBinMetadataEvEENS2_INS_26GrpcServerStatsBinMetadataEvEENS2_INS_30EndpointLoadMetricsBinMetadataEvEENS2_INS_12HostMetadataEvEENS2_INS_19GrpcMessageMetadataEvEENS2_INS_17UserAgentMetadataEvEENS2_INS_21HttpAuthorityMetadataEvEENS2_INS_16HttpPathMetadataEvEENS2_INS_27GrpcRetryPushbackMsMetadataEvEENS2_INS_19GrpcTimeoutMetadataEvEENS2_INS_25GrpcLbClientStatsMetadataEvEENS2_INS_20GrpcRegisteredMethodEvEENS2_INS_27GrpcInternalEncodingRequestEvEENS2_INS_20GrpcEncodingMetadataEvEENS2_INS_18HttpStatusMetadataEvEENS2_INS_31GrpcPreviousRpcAttemptsMetadataEvEENS2_INS_18GrpcStatusMetadataEvEENS2_INS_12WaitForReadyEvEENS2_INS_26GrpcAcceptEncodingMetadataEvEENS2_INS_20GrpcCallWasCancelledEvEENS2_INS_18GrpcStatusFromWireEvEENS2_INS_10TeMetadataEvEENS2_INS_19ContentTypeMetadataEvEENS2_INS23, label %for.body.lr.ph.i.i.i.i.i.i.i @@ -4621,7 +4622,7 @@ _ZN9grpc_core12_GLOBAL__N_112ArrayEncoder6EncodeINS_17LbCostBinMetadataEEEvT_RKN call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %agg.tmp.i.i.i.i684.i.i.i.i), !noalias !40 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %agg.tmp3.i.i.i.i685.i.i.i.i), !noalias !40 %incdec.ptr.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__begin0.09.i.i.i.i.i.i.i, i64 40 - %cmp.not.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i, %add.ptr.i.i.i.i.i.i.i.i + %cmp.not.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i, %add.ptr.i.ptr.i.i.i.i.i.i.i br i1 %cmp.not.i.i.i.i.i.i.i, label %_ZNK9grpc_core5TableIJNS_15metadata_detail5ValueINS_17LbCostBinMetadataEvEENS2_INS_17GrpcStatusContextEvEENS2_INS_18XEnvoyPeerMetadataEvEENS2_INS_15LbTokenMetadataEvEENS2_INS_10PeerStringEvEENS2_INS_19GrpcTagsBinMetadataEvEENS2_INS_20GrpcTraceBinMetadataEvEENS2_INS_26GrpcServerStatsBinMetadataEvEENS2_INS_30EndpointLoadMetricsBinMetadataEvEENS2_INS_12HostMetadataEvEENS2_INS_19GrpcMessageMetadataEvEENS2_INS_17UserAgentMetadataEvEENS2_INS_21HttpAuthorityMetadataEvEENS2_INS_16HttpPathMetadataEvEENS2_INS_27GrpcRetryPushbackMsMetadataEvEENS2_INS_19GrpcTimeoutMetadataEvEENS2_INS_25GrpcLbClientStatsMetadataEvEENS2_INS_20GrpcRegisteredMethodEvEENS2_INS_27GrpcInternalEncodingRequestEvEENS2_INS_20GrpcEncodingMetadataEvEENS2_INS_18HttpStatusMetadataEvEENS2_INS_31GrpcPreviousRpcAttemptsMetadataEvEENS2_INS_18GrpcStatusMetadataEvEENS2_INS_12WaitForReadyEvEENS2_INS_26GrpcAcceptEncodingMetadataEvEENS2_INS_20GrpcCallWasCancelledEvEENS2_INS_18GrpcStatusFromWireEvEENS2_INS_10TeMetadataEvEENS2_INS_19ContentTypeMetadataEvEENS2_INS22, label %for.body.i.i.i.i.i.i.i _ZNK9grpc_core5TableIJNS_15metadata_detail5ValueINS_17LbCostBinMetadataEvEENS2_INS_17GrpcStatusContextEvEENS2_INS_18XEnvoyPeerMetadataEvEENS2_INS_15LbTokenMetadataEvEENS2_INS_10PeerStringEvEENS2_INS_19GrpcTagsBinMetadataEvEENS2_INS_20GrpcTraceBinMetadataEvEENS2_INS_26GrpcServerStatsBinMetadataEvEENS2_INS_30EndpointLoadMetricsBinMetadataEvEENS2_INS_12HostMetadataEvEENS2_INS_19GrpcMessageMetadataEvEENS2_INS_17UserAgentMetadataEvEENS2_INS_21HttpAuthorityMetadataEvEENS2_INS_16HttpPathMetadataEvEENS2_INS_27GrpcRetryPushbackMsMetadataEvEENS2_INS_19GrpcTimeoutMetadataEvEENS2_INS_25GrpcLbClientStatsMetadataEvEENS2_INS_20GrpcRegisteredMethodEvEENS2_INS_27GrpcInternalEncodingRequestEvEENS2_INS_20GrpcEncodingMetadataEvEENS2_INS_18HttpStatusMetadataEvEENS2_INS_31GrpcPreviousRpcAttemptsMetadataEvEENS2_INS_18GrpcStatusMetadataEvEENS2_INS_12WaitForReadyEvEENS2_INS_26GrpcAcceptEncodingMetadataEvEENS2_INS_20GrpcCallWasCancelledEvEENS2_INS_18GrpcStatusFromWireEvEENS2_INS_10TeMetadataEvEENS2_INS_19ContentTypeMetadataEvEENS2_INS22: ; preds = %_ZN9grpc_core12_GLOBAL__N_112ArrayEncoder6EncodeINS_17LbCostBinMetadataEEEvT_RKNS4_9ValueTypeE.exit.i.i.i.i.i.i.i @@ -7535,7 +7536,7 @@ _ZN9grpc_core8DestructINS_14promise_detail18OncePromiseFactoryINS_8CallArgsESt8f cleanup: ; preds = %_ZN9grpc_core8DestructINS_14promise_detail18OncePromiseFactoryINS_8CallArgsESt8functionIFNS_12ArenaPromiseISt10unique_ptrI19grpc_metadata_batchNS_5Arena13PooledDeleterEEEES3_EEEEEEvPT_.exit, %_ZNSt10unique_ptrI19grpc_metadata_batchN9grpc_core5Arena13PooledDeleterEED2Ev.exit, %if.then %33 = phi ptr [ %17, %if.then ], [ %22, %_ZNSt10unique_ptrI19grpc_metadata_batchN9grpc_core5Arena13PooledDeleterEED2Ev.exit ], [ %22, %_ZN9grpc_core8DestructINS_14promise_detail18OncePromiseFactoryINS_8CallArgsESt8functionIFNS_12ArenaPromiseISt10unique_ptrI19grpc_metadata_batchNS_5Arena13PooledDeleterEEEES3_EEEEEEvPT_.exit ] - %cleanup.dest.slot.0 = phi i1 [ false, %if.then ], [ false, %_ZNSt10unique_ptrI19grpc_metadata_batchN9grpc_core5Arena13PooledDeleterEED2Ev.exit ], [ true, %_ZN9grpc_core8DestructINS_14promise_detail18OncePromiseFactoryINS_8CallArgsESt8functionIFNS_12ArenaPromiseISt10unique_ptrI19grpc_metadata_batchNS_5Arena13PooledDeleterEEEES3_EEEEEEvPT_.exit ] + %switch = phi i1 [ false, %if.then ], [ false, %_ZNSt10unique_ptrI19grpc_metadata_batchN9grpc_core5Arena13PooledDeleterEED2Ev.exit ], [ true, %_ZN9grpc_core8DestructINS_14promise_detail18OncePromiseFactoryINS_8CallArgsESt8functionIFNS_12ArenaPromiseISt10unique_ptrI19grpc_metadata_batchNS_5Arena13PooledDeleterEEEES3_EEEEEEvPT_.exit ] %34 = load i8, ptr %result, align 8 %35 = and i8 %34, 1 %tobool.not.i12 = icmp eq i8 %35, 0 @@ -7546,7 +7547,7 @@ if.then.i13: ; preds = %cleanup br label %_ZN9grpc_core4PollIN4absl12lts_202308028StatusOrINS_8CallArgsEEEED2Ev.exit14 _ZN9grpc_core4PollIN4absl12lts_202308028StatusOrINS_8CallArgsEEEED2Ev.exit14: ; preds = %cleanup, %if.then.i13 - br i1 %cleanup.dest.slot.0, label %sw.bb16, label %return + br i1 %switch, label %sw.bb16, label %return sw.bb16: ; preds = %_ZN9grpc_core4PollIN4absl12lts_202308028StatusOrINS_8CallArgsEEEED2Ev.exit14, %entry call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %ref.tmp.i15) diff --git a/bench/grpc/optimized/ring_hash.cc.ll b/bench/grpc/optimized/ring_hash.cc.ll index 89efd1a01c2..79d16315cc9 100644 --- a/bench/grpc/optimized/ring_hash.cc.ll +++ b/bench/grpc/optimized/ring_hash.cc.ll @@ -7694,8 +7694,7 @@ if.then.i.i.i22: ; preds = %invoke.cont.i _ZNSt6vectorIN9grpc_core12experimental4JsonESaIS2_EED2Ev.exit: ; preds = %invoke.cont.i, %if.then.i.i.i22 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %ref.tmp.i.i.i.i24) - %_M_index.i.i.i.i.i25 = getelementptr inbounds i8, ptr %ref.tmp4, i64 48 - %26 = load i8, ptr %_M_index.i.i.i.i.i25, align 8 + %26 = load i8, ptr %_M_index.i.i.i.i.i.i.i.i.i.i15, align 8 %cmp.i.i.i.not.i.i26 = icmp eq i8 %26, -1 br i1 %cmp.i.i.i.not.i.i26, label %_ZN9grpc_core12experimental4JsonD2Ev.exit30, label %if.end.i.i.i.i27 @@ -7704,7 +7703,7 @@ if.end.i.i.i.i27: ; preds = %_ZNSt6vectorIN9grpc to label %.noexc.i.i.i29 unwind label %terminate.lpad.i.i.i.i28 .noexc.i.i.i29: ; preds = %if.end.i.i.i.i27 - store i8 -1, ptr %_M_index.i.i.i.i.i25, align 8 + store i8 -1, ptr %_M_index.i.i.i.i.i.i.i.i.i.i15, align 8 br label %_ZN9grpc_core12experimental4JsonD2Ev.exit30 terminate.lpad.i.i.i.i28: ; preds = %if.end.i.i.i.i27 diff --git a/bench/grpc/optimized/server_auth_filter.cc.ll b/bench/grpc/optimized/server_auth_filter.cc.ll index 7abc5c7af60..34fa5380987 100644 --- a/bench/grpc/optimized/server_auth_filter.cc.ll +++ b/bench/grpc/optimized/server_auth_filter.cc.ll @@ -6542,7 +6542,8 @@ if.then.i688.i.i.i.i: ; preds = %_ZNK9grpc_core5Tabl %197 = load ptr, ptr %data_.i.i.i.i.i.i.i.i.i.i, align 8, !noalias !125 %cond.i.i.i.i.i.i.i.i.i = select i1 %tobool.i.not.i.i.i.i.i.i.i.i.i, ptr %data_.i.i.i.i.i.i.i.i.i.i, ptr %197 %shr.i.i.i.i.i.i.i.i.i.i = lshr i64 %196, 1 - %add.ptr.i.i.i.i.i.i.i.i = getelementptr inbounds %"struct.grpc_core::LbCostBinMetadata::ValueType", ptr %cond.i.i.i.i.i.i.i.i.i, i64 %shr.i.i.i.i.i.i.i.i.i.i + %add.ptr.i.idx.i.i.i.i.i.i.i = mul nsw i64 %shr.i.i.i.i.i.i.i.i.i.i, 40 + %add.ptr.i.ptr.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %cond.i.i.i.i.i.i.i.i.i, i64 %add.ptr.i.idx.i.i.i.i.i.i.i %cmp.not8.i.i.i.i.i.i.i = icmp ult i64 %196, 2 br i1 %cmp.not8.i.i.i.i.i.i.i, label %_ZNK9grpc_core5TableIJNS_15metadata_detail5ValueINS_17LbCostBinMetadataEvEENS2_INS_17GrpcStatusContextEvEENS2_INS_18XEnvoyPeerMetadataEvEENS2_INS_15LbTokenMetadataEvEENS2_INS_10PeerStringEvEENS2_INS_19GrpcTagsBinMetadataEvEENS2_INS_20GrpcTraceBinMetadataEvEENS2_INS_26GrpcServerStatsBinMetadataEvEENS2_INS_30EndpointLoadMetricsBinMetadataEvEENS2_INS_12HostMetadataEvEENS2_INS_19GrpcMessageMetadataEvEENS2_INS_17UserAgentMetadataEvEENS2_INS_21HttpAuthorityMetadataEvEENS2_INS_16HttpPathMetadataEvEENS2_INS_27GrpcRetryPushbackMsMetadataEvEENS2_INS_19GrpcTimeoutMetadataEvEENS2_INS_25GrpcLbClientStatsMetadataEvEENS2_INS_20GrpcRegisteredMethodEvEENS2_INS_27GrpcInternalEncodingRequestEvEENS2_INS_20GrpcEncodingMetadataEvEENS2_INS_18HttpStatusMetadataEvEENS2_INS_31GrpcPreviousRpcAttemptsMetadataEvEENS2_INS_18GrpcStatusMetadataEvEENS2_INS_12WaitForReadyEvEENS2_INS_26GrpcAcceptEncodingMetadataEvEENS2_INS_20GrpcCallWasCancelledEvEENS2_INS_18GrpcStatusFromWireEvEENS2_INS_10TeMetadataEvEENS2_INS_19ContentTypeMetadataEvEENS2_INS23, label %for.body.lr.ph.i.i.i.i.i.i.i @@ -6663,7 +6664,7 @@ _ZN9grpc_core12_GLOBAL__N_112ArrayEncoder6EncodeINS_17LbCostBinMetadataEEEvT_RKN call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %agg.tmp.i.i.i.i684.i.i.i.i), !noalias !125 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %agg.tmp3.i.i.i.i685.i.i.i.i), !noalias !125 %incdec.ptr.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__begin0.09.i.i.i.i.i.i.i, i64 40 - %cmp.not.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i, %add.ptr.i.i.i.i.i.i.i.i + %cmp.not.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i, %add.ptr.i.ptr.i.i.i.i.i.i.i br i1 %cmp.not.i.i.i.i.i.i.i, label %_ZNK9grpc_core5TableIJNS_15metadata_detail5ValueINS_17LbCostBinMetadataEvEENS2_INS_17GrpcStatusContextEvEENS2_INS_18XEnvoyPeerMetadataEvEENS2_INS_15LbTokenMetadataEvEENS2_INS_10PeerStringEvEENS2_INS_19GrpcTagsBinMetadataEvEENS2_INS_20GrpcTraceBinMetadataEvEENS2_INS_26GrpcServerStatsBinMetadataEvEENS2_INS_30EndpointLoadMetricsBinMetadataEvEENS2_INS_12HostMetadataEvEENS2_INS_19GrpcMessageMetadataEvEENS2_INS_17UserAgentMetadataEvEENS2_INS_21HttpAuthorityMetadataEvEENS2_INS_16HttpPathMetadataEvEENS2_INS_27GrpcRetryPushbackMsMetadataEvEENS2_INS_19GrpcTimeoutMetadataEvEENS2_INS_25GrpcLbClientStatsMetadataEvEENS2_INS_20GrpcRegisteredMethodEvEENS2_INS_27GrpcInternalEncodingRequestEvEENS2_INS_20GrpcEncodingMetadataEvEENS2_INS_18HttpStatusMetadataEvEENS2_INS_31GrpcPreviousRpcAttemptsMetadataEvEENS2_INS_18GrpcStatusMetadataEvEENS2_INS_12WaitForReadyEvEENS2_INS_26GrpcAcceptEncodingMetadataEvEENS2_INS_20GrpcCallWasCancelledEvEENS2_INS_18GrpcStatusFromWireEvEENS2_INS_10TeMetadataEvEENS2_INS_19ContentTypeMetadataEvEENS2_INS22, label %for.body.i.i.i.i.i.i.i _ZNK9grpc_core5TableIJNS_15metadata_detail5ValueINS_17LbCostBinMetadataEvEENS2_INS_17GrpcStatusContextEvEENS2_INS_18XEnvoyPeerMetadataEvEENS2_INS_15LbTokenMetadataEvEENS2_INS_10PeerStringEvEENS2_INS_19GrpcTagsBinMetadataEvEENS2_INS_20GrpcTraceBinMetadataEvEENS2_INS_26GrpcServerStatsBinMetadataEvEENS2_INS_30EndpointLoadMetricsBinMetadataEvEENS2_INS_12HostMetadataEvEENS2_INS_19GrpcMessageMetadataEvEENS2_INS_17UserAgentMetadataEvEENS2_INS_21HttpAuthorityMetadataEvEENS2_INS_16HttpPathMetadataEvEENS2_INS_27GrpcRetryPushbackMsMetadataEvEENS2_INS_19GrpcTimeoutMetadataEvEENS2_INS_25GrpcLbClientStatsMetadataEvEENS2_INS_20GrpcRegisteredMethodEvEENS2_INS_27GrpcInternalEncodingRequestEvEENS2_INS_20GrpcEncodingMetadataEvEENS2_INS_18HttpStatusMetadataEvEENS2_INS_31GrpcPreviousRpcAttemptsMetadataEvEENS2_INS_18GrpcStatusMetadataEvEENS2_INS_12WaitForReadyEvEENS2_INS_26GrpcAcceptEncodingMetadataEvEENS2_INS_20GrpcCallWasCancelledEvEENS2_INS_18GrpcStatusFromWireEvEENS2_INS_10TeMetadataEvEENS2_INS_19ContentTypeMetadataEvEENS2_INS22: ; preds = %_ZN9grpc_core12_GLOBAL__N_112ArrayEncoder6EncodeINS_17LbCostBinMetadataEEEvT_RKNS4_9ValueTypeE.exit.i.i.i.i.i.i.i @@ -8468,7 +8469,7 @@ invoke.cont12: ; preds = %if.end9 cleanup: ; preds = %invoke.cont12, %_ZNSt10unique_ptrI19grpc_metadata_batchN9grpc_core5Arena13PooledDeleterEED2Ev.exit, %if.then %19 = phi ptr [ %9, %if.then ], [ %11, %_ZNSt10unique_ptrI19grpc_metadata_batchN9grpc_core5Arena13PooledDeleterEED2Ev.exit ], [ %18, %invoke.cont12 ] - %cleanup.dest.slot.0 = phi i1 [ false, %if.then ], [ false, %_ZNSt10unique_ptrI19grpc_metadata_batchN9grpc_core5Arena13PooledDeleterEED2Ev.exit ], [ true, %invoke.cont12 ] + %switch = phi i1 [ false, %if.then ], [ false, %_ZNSt10unique_ptrI19grpc_metadata_batchN9grpc_core5Arena13PooledDeleterEED2Ev.exit ], [ true, %invoke.cont12 ] %20 = load i8, ptr %result, align 8 %21 = and i8 %20, 1 %tobool.not.i = icmp eq i8 %21, 0 @@ -8492,7 +8493,7 @@ terminate.lpad.i.i.i: ; preds = %if.then.i.i.i.i11 unreachable _ZN9grpc_core4PollIN4absl12lts_202308026StatusEED2Ev.exit: ; preds = %cleanup, %if.then.i10, %if.then.i.i.i.i11 - br i1 %cleanup.dest.slot.0, label %sw.bb17, label %return + br i1 %switch, label %sw.bb17, label %return sw.bb17: ; preds = %_ZN9grpc_core4PollIN4absl12lts_202308026StatusEED2Ev.exit, %entry call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %ref.tmp.i) diff --git a/bench/grpc/optimized/slice.cc.ll b/bench/grpc/optimized/slice.cc.ll index 471fe89d188..234c34e19ab 100644 --- a/bench/grpc/optimized/slice.cc.ll +++ b/bench/grpc/optimized/slice.cc.ll @@ -1431,10 +1431,9 @@ if.then45: ; preds = %if.end43 br label %return if.end48: ; preds = %if.end43 - %add.ptr = getelementptr inbounds i8, ptr %cond11, i64 %cond - %idx.neg = sub i64 0, %cond22 - %add.ptr49 = getelementptr inbounds i8, ptr %add.ptr, i64 %idx.neg - %cmp50.not22 = icmp ugt ptr %cond11, %add.ptr49 + %add.ptr.add = sub i64 %cond, %cond22 + %add.ptr49.ptr = getelementptr inbounds i8, ptr %cond11, i64 %add.ptr.add + %cmp50.not22 = icmp slt i64 %add.ptr.add, 0 br i1 %cmp50.not22, label %return, label %for.body for.body: ; preds = %if.end48, %for.inc @@ -1452,7 +1451,7 @@ if.then53: ; preds = %for.body for.inc: ; preds = %for.body %incdec.ptr = getelementptr inbounds i8, ptr %cur.023, i64 1 - %cmp50.not = icmp ugt ptr %incdec.ptr, %add.ptr49 + %cmp50.not = icmp ugt ptr %incdec.ptr, %add.ptr49.ptr br i1 %cmp50.not, label %return, label %for.body, !llvm.loop !69 return: ; preds = %for.inc, %if.end48, %if.end27.i, %if.end.i, %if.then39, %entry, %if.then53, %if.then45 diff --git a/bench/grpc/optimized/ssl_utils.cc.ll b/bench/grpc/optimized/ssl_utils.cc.ll index 81099c8805d..deaf3e0081c 100644 --- a/bench/grpc/optimized/ssl_utils.cc.ll +++ b/bench/grpc/optimized/ssl_utils.cc.ll @@ -2723,28 +2723,29 @@ if.then4: ; preds = %if.then br i1 %cmp10, label %for.body.i.i.i.i.i.preheader, label %_ZSt7advanceIPZNK4absl12lts_2023080216strings_internal8SplitterINS1_6ByCharENS1_10AllowEmptyESt17basic_string_viewIcSt11char_traitsIcEEE18ConvertToContainerISt6vectorIS9_SaIS9_EES9_Lb0EEclERKSA_E8raw_viewmEvRT_T0_.exit for.body.i.i.i.i.i.preheader: ; preds = %if.then4 - %idx.neg = sub nsw i64 0, %sub.ptr.div.i.i - %add.ptr = getelementptr %"class.std::basic_string_view", ptr %1, i64 %idx.neg + %add.ptr.idx = sub i64 0, %sub.ptr.sub.i.i + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr.idx br label %for.body.i.i.i.i.i for.body.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i.preheader, %for.body.i.i.i.i.i %__cur.09.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %for.body.i.i.i.i.i ], [ %1, %for.body.i.i.i.i.i.preheader ] - %__first.sroa.0.08.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i, %for.body.i.i.i.i.i ], [ %add.ptr, %for.body.i.i.i.i.i.preheader ] - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %__cur.09.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %__first.sroa.0.08.i.i.i.i.i, i64 16, i1 false) - %incdec.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.08.i.i.i.i.i, i64 16 + %__first.sroa.0.08.i.i.i.i.i.idx = phi i64 [ %__first.sroa.0.08.i.i.i.i.i.add, %for.body.i.i.i.i.i ], [ %add.ptr.idx, %for.body.i.i.i.i.i.preheader ] + %__first.sroa.0.08.i.i.i.i.i.ptr = getelementptr inbounds i8, ptr %1, i64 %__first.sroa.0.08.i.i.i.i.i.idx + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %__cur.09.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(16) %__first.sroa.0.08.i.i.i.i.i.ptr, i64 16, i1 false) + %__first.sroa.0.08.i.i.i.i.i.add = add nsw i64 %__first.sroa.0.08.i.i.i.i.i.idx, 16 %incdec.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.09.i.i.i.i.i, i64 16 - %cmp.i.i.not.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i, %1 + %cmp.i.i.not.i.i.i.i.i = icmp eq i64 %__first.sroa.0.08.i.i.i.i.i.add, 0 br i1 %cmp.i.i.not.i.i.i.i.i, label %_ZSt22__uninitialized_move_aIPSt17basic_string_viewIcSt11char_traitsIcEES4_SaIS3_EET0_T_S7_S6_RT1_.exit, label %for.body.i.i.i.i.i, !llvm.loop !31 _ZSt22__uninitialized_move_aIPSt17basic_string_viewIcSt11char_traitsIcEES4_SaIS3_EET0_T_S7_S6_RT1_.exit: ; preds = %for.body.i.i.i.i.i %.pre118 = load ptr, ptr %_M_finish, align 8 %add.ptr22 = getelementptr inbounds i8, ptr %.pre118, i64 %sub.ptr.sub.i.i store ptr %add.ptr22, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce + %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %_ZSt13move_backwardIPSt17basic_string_viewIcSt11char_traitsIcEES4_ET0_T_S6_S5_.exit, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPSt17basic_string_viewIcSt11char_traitsIcEES4_SaIS3_EET0_T_S7_S6_RT1_.exit - %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 4 %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i diff --git a/bench/grpc/optimized/stats_data.cc.ll b/bench/grpc/optimized/stats_data.cc.ll index fd866786ab7..93b2070fafe 100644 --- a/bench/grpc/optimized/stats_data.cc.ll +++ b/bench/grpc/optimized/stats_data.cc.ll @@ -18,12 +18,6 @@ target triple = "x86_64-unknown-linux-gnu" %"class.std::tuple" = type { %"struct.std::_Tuple_impl" } %"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.1" } %"struct.std::_Head_base.1" = type { ptr } -%"struct.grpc_core::GlobalStatsCollector::Data" = type { %"struct.std::atomic", %"struct.std::atomic", %"struct.std::atomic", %"struct.std::atomic", %"struct.std::atomic", %"struct.std::atomic", %"struct.std::atomic", %"struct.std::atomic", %"struct.std::atomic", %"struct.std::atomic", %"struct.std::atomic", %"struct.std::atomic", %"struct.std::atomic", %"struct.std::atomic", %"struct.std::atomic", %"struct.std::atomic", %"struct.std::atomic", %"struct.std::atomic", %"struct.std::atomic", %"struct.std::atomic", %"struct.std::atomic", %"class.grpc_core::HistogramCollector_65536_26", %"class.grpc_core::HistogramCollector_16777216_20", %"class.grpc_core::HistogramCollector_80_10", %"class.grpc_core::HistogramCollector_16777216_20", %"class.grpc_core::HistogramCollector_16777216_20", %"class.grpc_core::HistogramCollector_80_10", %"class.grpc_core::HistogramCollector_16777216_20", %"class.grpc_core::HistogramCollector_65536_26", %"class.grpc_core::HistogramCollector_10000_20", %"class.grpc_core::HistogramCollector_10000_20", %"class.grpc_core::HistogramCollector_100000_20", %"class.grpc_core::HistogramCollector_100000_20", %"class.grpc_core::HistogramCollector_100000_20", %"class.grpc_core::HistogramCollector_10000_20" } -%"class.grpc_core::HistogramCollector_80_10" = type { [10 x %"struct.std::atomic"] } -%"class.grpc_core::HistogramCollector_16777216_20" = type { [20 x %"struct.std::atomic"] } -%"class.grpc_core::HistogramCollector_65536_26" = type { [26 x %"struct.std::atomic"] } -%"class.grpc_core::HistogramCollector_100000_20" = type { [20 x %"struct.std::atomic"] } -%"class.grpc_core::HistogramCollector_10000_20" = type { [20 x %"struct.std::atomic"] } @.str = private unnamed_addr constant [21 x i8] c"client_calls_created\00", align 1 @.str.1 = private unnamed_addr constant [21 x i8] c"server_calls_created\00", align 1 @@ -587,7 +581,8 @@ _ZSt11make_uniqueIN9grpc_core11GlobalStatsEJEENSt8__detail9_MakeUniqIT_E15__sing %1 = load ptr, ptr %data_.i, align 8 %shards_.i = getelementptr inbounds i8, ptr %this, i64 8 %2 = load i64, ptr %shards_.i, align 8 - %add.ptr.i = getelementptr inbounds %"struct.grpc_core::GlobalStatsCollector::Data", ptr %1, i64 %2 + %add.ptr.i.idx = mul nsw i64 %2, 2344 + %add.ptr.i.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr.i.idx %cmp.not161 = icmp eq i64 %2, 0 br i1 %cmp.not161, label %nrvo.skipdtor, label %for.body.lr.ph @@ -978,7 +973,7 @@ for.body.i153: ; preds = %for.body.i153, %_ZN _ZNK9grpc_core27HistogramCollector_10000_207CollectEPNS_18Histogram_10000_20E.exit160: ; preds = %for.body.i153 %incdec.ptr = getelementptr inbounds i8, ptr %__begin1.0162, i64 2344 - %cmp.not = icmp eq ptr %incdec.ptr, %add.ptr.i + %cmp.not = icmp eq ptr %incdec.ptr, %add.ptr.i.ptr br i1 %cmp.not, label %nrvo.skipdtor, label %for.body nrvo.skipdtor: ; preds = %_ZNK9grpc_core27HistogramCollector_10000_207CollectEPNS_18Histogram_10000_20E.exit160, %_ZSt11make_uniqueIN9grpc_core11GlobalStatsEJEENSt8__detail9_MakeUniqIT_E15__single_objectEDpOT0_.exit diff --git a/bench/grpc/optimized/timer.cc.ll b/bench/grpc/optimized/timer.cc.ll index 4ec57c98bf1..1ef253ab43a 100644 --- a/bench/grpc/optimized/timer.cc.ll +++ b/bench/grpc/optimized/timer.cc.ll @@ -362,13 +362,14 @@ delete.notnull.i: ; preds = %entry br i1 %arraydestroy.isempty.i, label %_ZNKSt14default_deleteIA_N17grpc_event_engine12experimental9TimerList5ShardEEclIS3_EENSt9enable_ifIXsr14is_convertibleIPA_T_PS4_EE5valueEvE4typeEPS8_.exit, label %arraydestroy.body.preheader.i arraydestroy.body.preheader.i: ; preds = %delete.notnull.i - %delete.end.i = getelementptr inbounds %"struct.grpc_event_engine::experimental::TimerList::Shard", ptr %0, i64 %2 + %delete.end.idx.i = mul nsw i64 %2, 176 br label %arraydestroy.body.i arraydestroy.body.i: ; preds = %_ZN17grpc_event_engine12experimental9TimerList5ShardD2Ev.exit.i, %arraydestroy.body.preheader.i - %arraydestroy.elementPast.i = phi ptr [ %arraydestroy.element.i, %_ZN17grpc_event_engine12experimental9TimerList5ShardD2Ev.exit.i ], [ %delete.end.i, %arraydestroy.body.preheader.i ] - %arraydestroy.element.i = getelementptr inbounds i8, ptr %arraydestroy.elementPast.i, i64 -176 - %heap.i.i = getelementptr inbounds i8, ptr %arraydestroy.elementPast.i, i64 -88 + %arraydestroy.elementPast.idx.i = phi i64 [ %arraydestroy.elementPast.add.i, %_ZN17grpc_event_engine12experimental9TimerList5ShardD2Ev.exit.i ], [ %delete.end.idx.i, %arraydestroy.body.preheader.i ] + %arraydestroy.elementPast.add.i = add nsw i64 %arraydestroy.elementPast.idx.i, -176 + %arraydestroy.element.ptr.i = getelementptr inbounds i8, ptr %0, i64 %arraydestroy.elementPast.add.i + %heap.i.i = getelementptr inbounds i8, ptr %arraydestroy.element.ptr.i, i64 88 %3 = load ptr, ptr %heap.i.i, align 8 %tobool.not.i.i.i.i.i.i = icmp eq ptr %3, null br i1 %tobool.not.i.i.i.i.i.i, label %_ZN17grpc_event_engine12experimental9TimerList5ShardD2Ev.exit.i, label %if.then.i.i.i.i.i.i @@ -378,8 +379,8 @@ if.then.i.i.i.i.i.i: ; preds = %arraydestroy.body.i br label %_ZN17grpc_event_engine12experimental9TimerList5ShardD2Ev.exit.i _ZN17grpc_event_engine12experimental9TimerList5ShardD2Ev.exit.i: ; preds = %if.then.i.i.i.i.i.i, %arraydestroy.body.i - tail call void @_ZN4absl12lts_202308025MutexD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %arraydestroy.element.i) #16 - %arraydestroy.done.i = icmp eq ptr %arraydestroy.element.i, %0 + tail call void @_ZN4absl12lts_202308025MutexD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %arraydestroy.element.ptr.i) #16 + %arraydestroy.done.i = icmp eq i64 %arraydestroy.elementPast.add.i, 0 br i1 %arraydestroy.done.i, label %_ZNKSt14default_deleteIA_N17grpc_event_engine12experimental9TimerList5ShardEEclIS3_EENSt9enable_ifIXsr14is_convertibleIPA_T_PS4_EE5valueEvE4typeEPS8_.exit, label %arraydestroy.body.i _ZNKSt14default_deleteIA_N17grpc_event_engine12experimental9TimerList5ShardEEclIS3_EENSt9enable_ifIXsr14is_convertibleIPA_T_PS4_EE5valueEvE4typeEPS8_.exit: ; preds = %_ZN17grpc_event_engine12experimental9TimerList5ShardD2Ev.exit.i, %delete.notnull.i diff --git a/bench/grpc/optimized/xds_audit_logger_registry.cc.ll b/bench/grpc/optimized/xds_audit_logger_registry.cc.ll index 980b32a1999..a537ca32c2a 100644 --- a/bench/grpc/optimized/xds_audit_logger_registry.cc.ll +++ b/bench/grpc/optimized/xds_audit_logger_registry.cc.ll @@ -862,8 +862,7 @@ lpad4.i: ; preds = %_ZNSt4pairIKNSt7__c arraydestroy.body.preheader: ; preds = %call3.i.noexc.i call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %ref.tmp.i.i.i.i.i) - %_M_index.i.i.i.i.i.i = getelementptr inbounds i8, ptr %ref.tmp40, i64 80 - %55 = load i8, ptr %_M_index.i.i.i.i.i.i, align 8 + %55 = load i8, ptr %_M_index.i.i.i.i.i.i.i.i.i30, align 8 %cmp.i.i.i.not.i.i.i = icmp eq i8 %55, -1 br i1 %cmp.i.i.i.not.i.i.i, label %_ZNSt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN9grpc_core12experimental4JsonEED2Ev.exit, label %if.end.i.i.i.i.i @@ -875,12 +874,11 @@ terminate.lpad.i.i: ; preds = %call3.i.noexc.i unreachable if.end.i.i.i.i.i: ; preds = %arraydestroy.body.preheader - %second.i35 = getelementptr inbounds i8, ptr %ref.tmp40, i64 32 - invoke void @_ZSt10__do_visitIvZNSt8__detail9__variant16_Variant_storageILb0EJSt9monostatebN9grpc_core12experimental4Json11NumberValueENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt3mapISD_S6_St4lessISD_ESaISt4pairIKSD_S6_EEESt6vectorIS6_SaIS6_EEEE8_M_resetEvEUlOT_E_JRSt7variantIJS3_bS7_SD_SL_SO_EEEEDcOT0_DpOT1_(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(49) %second.i35) + invoke void @_ZSt10__do_visitIvZNSt8__detail9__variant16_Variant_storageILb0EJSt9monostatebN9grpc_core12experimental4Json11NumberValueENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt3mapISD_S6_St4lessISD_ESaISt4pairIKSD_S6_EEESt6vectorIS6_SaIS6_EEEE8_M_resetEvEUlOT_E_JRSt7variantIJS3_bS7_SD_SL_SO_EEEEDcOT0_DpOT1_(ptr noundef nonnull align 1 dereferenceable(1) %ref.tmp.i.i.i.i.i, ptr noundef nonnull align 8 dereferenceable(49) %second.i) to label %.noexc.i.i.i.i unwind label %terminate.lpad.i.i.i.i.i .noexc.i.i.i.i: ; preds = %if.end.i.i.i.i.i - store i8 -1, ptr %_M_index.i.i.i.i.i.i, align 8 + store i8 -1, ptr %_M_index.i.i.i.i.i.i.i.i.i30, align 8 br label %_ZNSt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN9grpc_core12experimental4JsonEED2Ev.exit terminate.lpad.i.i.i.i.i: ; preds = %if.end.i.i.i.i.i diff --git a/bench/grpc/optimized/xds_routing.cc.ll b/bench/grpc/optimized/xds_routing.cc.ll index 336aac4198c..022276f2f0d 100644 --- a/bench/grpc/optimized/xds_routing.cc.ll +++ b/bench/grpc/optimized/xds_routing.cc.ll @@ -53,7 +53,6 @@ target triple = "x86_64-unknown-linux-gnu" %"class.grpc_core::Slice" = type { %"class.grpc_core::slice_detail::BaseSlice" } %"class.grpc_core::CompressionAlgorithmSet" = type { %"class.grpc_core::BitSet.69" } %"class.grpc_core::BitSet.69" = type { [1 x i8] } -%"struct.grpc_core::LbCostBinMetadata::ValueType" = type { double, %"class.std::__cxx11::basic_string" } %struct._Guard.246 = type { ptr } %"struct.std::_Rb_tree, std::pair, std::vector>>, std::_Select1st, std::vector>>>, std::less>>::_Auto_node" = type { ptr, ptr } @@ -3443,7 +3442,8 @@ if.end: ; preds = %entry %4 = load ptr, ptr %data_.i.i.i, align 8 %cond.i.i = select i1 %tobool.i.not.i.i, ptr %data_.i.i.i, ptr %4 %shr.i.i.i = lshr i64 %3, 1 - %add.ptr.i = getelementptr inbounds %"struct.grpc_core::LbCostBinMetadata::ValueType", ptr %cond.i.i, i64 %shr.i.i.i + %add.ptr.i.idx = mul nsw i64 %shr.i.i.i, 40 + %add.ptr.i.ptr = getelementptr inbounds i8, ptr %cond.i.i, i64 %add.ptr.i.idx %cmp5.not15 = icmp ult i64 %3, 2 br i1 %cmp5.not15, label %for.end, label %for.body.lr.ph @@ -3505,7 +3505,7 @@ terminate.lpad.i: ; preds = %if.then.i.i.i _ZN9grpc_core5SliceD2Ev.exit: ; preds = %invoke.cont15, %if.then.i.i, %if.then.i.i.i %incdec.ptr = getelementptr inbounds i8, ptr %__begin0.016, i64 40 - %cmp5.not = icmp eq ptr %incdec.ptr, %add.ptr.i + %cmp5.not = icmp eq ptr %incdec.ptr, %add.ptr.i.ptr br i1 %cmp5.not, label %for.end, label %for.body lpad: ; preds = %if.end10 diff --git a/bench/harfbuzz/optimized/gsubgpos-context.cc.ll b/bench/harfbuzz/optimized/gsubgpos-context.cc.ll index 03cf5a728bc..adae25c65fb 100644 --- a/bench/harfbuzz/optimized/gsubgpos-context.cc.ll +++ b/bench/harfbuzz/optimized/gsubgpos-context.cc.ll @@ -14,11 +14,11 @@ target triple = "x86_64-unknown-linux-gnu" %"struct.hb_serialize_context_t::object_t::link_t" = type { i32, i32, i32 } %struct.hb_concat_iter_t = type { %struct.hb_array_t.41, %struct.hb_array_t.41 } %struct.hb_array_t.41 = type { ptr, i32, i32 } -%"struct.hb_hashmap_t::item_t" = type { i32, i32, ptr } %"struct.OT::OffsetTo.20" = type { %"struct.OT::Offset" } %"struct.OT::Offset" = type { %"struct.OT::IntType" } %"struct.OT::IntType" = type { %struct.BEInt } %struct.BEInt = type { [2 x i8] } +%"struct.hb_hashmap_t::item_t" = type { i32, i32, ptr } %"struct.hb_hashmap_t::item_t" = type { i32, i32, i32 } %"struct.hb_user_data_array_t::hb_user_data_item_t" = type { ptr, ptr, ptr } @@ -596,7 +596,8 @@ _ZNR9hb_iter_tI10hb_array_tIN12hb_hashmap_tIjPN5graph6LookupELb0EE6item_tEERS6_E for.body.preheader: ; preds = %_ZN9hb_iter_tI10hb_array_tIN12hb_hashmap_tIjPN5graph6LookupELb0EE6item_tEERS6_EdeEv.exit.i.us.i.i.i.i.i %idx.ext.i.i.i.i.i.i.i.i.i.i.i.i = zext i32 %ref.tmp2.sroa.3.sroa.0.0.i.i to i64 - %add.ptr.i.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds %"struct.hb_hashmap_t::item_t", ptr %ref.tmp2.sroa.0.0.i.i, i64 %idx.ext.i.i.i.i.i.i.i.i.i.i.i.i + %add.ptr.i.i.i.i.i.i.i.i.i.i.i.i.idx = shl nuw nsw i64 %idx.ext.i.i.i.i.i.i.i.i.i.i.i.i, 4 + %ref.tmp.sroa.0.2.i.i.i.i.i.ptr = getelementptr inbounds i8, ptr %ref.tmp2.sroa.0.0.i.i, i64 %add.ptr.i.i.i.i.i.i.i.i.i.i.i.i.idx br label %for.body for.body: ; preds = %for.body.preheader, %"_ZNR9hb_iter_tI13hb_map_iter_tIS0_I16hb_filter_iter_tI10hb_array_tIN12hb_hashmap_tIjPN5graph6LookupELb0EE6item_tEEMS8_KFbvERK3$_7LPv0EEMS8_FRS6_vEL24hb_function_sortedness_t0ELSF_0EERK3$_8LSK_0ELSF_0EES6_EppEv.exit" @@ -670,7 +671,7 @@ _ZNR9hb_iter_tI10hb_array_tIN12hb_hashmap_tIjPN5graph6LookupELb0EE6item_tEERS6_E "_ZNR9hb_iter_tI13hb_map_iter_tIS0_I16hb_filter_iter_tI10hb_array_tIN12hb_hashmap_tIjPN5graph6LookupELb0EE6item_tEEMS8_KFbvERK3$_7LPv0EEMS8_FRS6_vEL24hb_function_sortedness_t0ELSF_0EERK3$_8LSK_0ELSF_0EES6_EppEv.exit": ; preds = %do.body.i.i.i.i.i.i, %_ZNR9hb_iter_tI10hb_array_tIN12hb_hashmap_tIjPN5graph6LookupELb0EE6item_tEERS6_EppEv.exit.i.i.i.i.i.i, %"_ZNK4$_15clIRMN12hb_hashmap_tIjPN5graph6LookupELb0EE6item_tEKFbvERS6_EEN10_hb_head_tIbJDTcl4implclsr3stdE7forwardIT_Efp_Eclsr3stdE7forwardIT0_Efp0_Ecv11hb_priorityILj16EE_EEEEE4typeEOSC_OSD_.exit.i.i.i.i.i.i" %__begin1.sroa.0.2 = phi ptr [ %scevgep, %do.body.i.i.i.i.i.i ], [ %incdec.ptr.i.i.i.i.i.i.i.i, %_ZNR9hb_iter_tI10hb_array_tIN12hb_hashmap_tIjPN5graph6LookupELb0EE6item_tEERS6_EppEv.exit.i.i.i.i.i.i ], [ %incdec.ptr.i.i.i.i.i.i.i.i, %"_ZNK4$_15clIRMN12hb_hashmap_tIjPN5graph6LookupELb0EE6item_tEKFbvERS6_EEN10_hb_head_tIbJDTcl4implclsr3stdE7forwardIT_Efp_Eclsr3stdE7forwardIT0_Efp0_Ecv11hb_priorityILj16EE_EEEEE4typeEOSC_OSD_.exit.i.i.i.i.i.i" ] %__begin1.sroa.5.2 = phi i32 [ 0, %do.body.i.i.i.i.i.i ], [ 0, %_ZNR9hb_iter_tI10hb_array_tIN12hb_hashmap_tIjPN5graph6LookupELb0EE6item_tEERS6_EppEv.exit.i.i.i.i.i.i ], [ %dec.i.i.i.i.i.i.i.i, %"_ZNK4$_15clIRMN12hb_hashmap_tIjPN5graph6LookupELb0EE6item_tEKFbvERS6_EEN10_hb_head_tIbJDTcl4implclsr3stdE7forwardIT_Efp_Eclsr3stdE7forwardIT0_Efp0_Ecv11hb_priorityILj16EE_EEEEE4typeEOSC_OSD_.exit.i.i.i.i.i.i" ] - %cmp.not.i.i.i.i = icmp ne ptr %__begin1.sroa.0.2, %add.ptr.i.i.i.i.i.i.i.i.i.i.i.i + %cmp.not.i.i.i.i = icmp ne ptr %__begin1.sroa.0.2, %ref.tmp.sroa.0.2.i.i.i.i.i.ptr %cmp4.i.i.i.i = icmp ne i32 %__begin1.sroa.5.2, 0 %9 = or i1 %cmp.not.i.i.i.i, %cmp4.i.i.i.i br i1 %9, label %for.body, label %for.end @@ -1532,12 +1533,12 @@ if.then.i.i.i.i.i.i.i.i: ; preds = %_ZNR9hb_iter_tI10hb for.body.preheader.i.i: ; preds = %"_ZN9hb_iter_tI13hb_map_iter_tIS0_I16hb_filter_iter_tI10hb_array_tIN12hb_hashmap_tIjjLb0EE6item_tEEMS5_KFbvERK3$_7LPv0EEMS5_FRjvEL24hb_function_sortedness_t0ELSC_0EERK3$_8LSH_0ELSC_0EEjEdeEv.exit" %retval.sroa.2.8.insert.ext.i.i.i = zext i32 %add.i.i.i.i to i64 + %add.ptr.i.idx.i.i = mul nuw nsw i64 %retval.sroa.2.8.insert.ext.i.i.i, 12 %22 = load ptr, ptr %items.i, align 8 - %23 = mul nuw nsw i64 %retval.sroa.2.8.insert.ext.i.i.i, 12 - %24 = add nsw i64 %23, -12 - %25 = urem i64 %24, 12 - %26 = sub nuw nsw i64 %23, %25 - call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %22, i8 0, i64 %26, i1 false) + %23 = add nsw i64 %add.ptr.i.idx.i.i, -12 + %24 = urem i64 %23, 12 + %25 = sub nuw nsw i64 %add.ptr.i.idx.i.i, %24 + call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %22, i8 0, i64 %25, i1 false) br label %_ZN12hb_hashmap_tIjjLb0EE5resetEv.exit _ZN12hb_hashmap_tIjjLb0EE5resetEv.exit: ; preds = %"_ZN9hb_iter_tI13hb_map_iter_tIS0_I16hb_filter_iter_tI10hb_array_tIN12hb_hashmap_tIjjLb0EE6item_tEEMS5_KFbvERK3$_7LPv0EEMS5_FRjvEL24hb_function_sortedness_t0ELSC_0EERK3$_8LSH_0ELSC_0EEjEdeEv.exit", %for.body.preheader.i.i diff --git a/bench/harfbuzz/optimized/hb-subset-instancer-solver.cc.ll b/bench/harfbuzz/optimized/hb-subset-instancer-solver.cc.ll index 586261c129f..6d328b1c56a 100644 --- a/bench/harfbuzz/optimized/hb-subset-instancer-solver.cc.ll +++ b/bench/harfbuzz/optimized/hb-subset-instancer-solver.cc.ll @@ -131,7 +131,8 @@ entry: %length.i = getelementptr inbounds i8, ptr %sols, i64 4 %1 = load i32, ptr %length.i, align 4 %idx.ext.i = zext i32 %1 to i64 - %add.ptr.i = getelementptr inbounds %struct.hb_pair_t, ptr %0, i64 %idx.ext.i + %add.ptr.i.idx = shl nuw nsw i64 %idx.ext.i, 4 + %add.ptr.i.ptr = getelementptr inbounds i8, ptr %0, i64 %add.ptr.i.idx %cmp.not64 = icmp eq i32 %1, 0 br i1 %cmp.not64, label %nrvo.skipdtor, label %for.body.lr.ph @@ -303,7 +304,7 @@ for.inc: ; preds = %if.end.i31, %if.the %inc.i3372 = phi i32 [ %inc.i3373, %for.body ], [ %inc.i3373, %if.then.i ], [ %.pre79, %if.end.i ], [ %inc.i3373, %if.then.i56 ], [ %.pre80, %if.end.i31 ] %new_allocated.128.sink.i.ph.i5558 = phi i32 [ %new_allocated.128.sink.i.ph.i556365, %for.body ], [ %new_allocated.128.sink.i.ph.i5561, %if.then.i ], [ %new_allocated.128.sink.i.ph.i5562, %if.end.i ], [ %new_allocated.128.sink.i.ph.i5559, %if.then.i56 ], [ %new_allocated.128.sink.i.ph.i5560, %if.end.i31 ] %incdec.ptr = getelementptr inbounds i8, ptr %__begin1.068, i64 16 - %cmp.not = icmp eq ptr %incdec.ptr, %add.ptr.i + %cmp.not = icmp eq ptr %incdec.ptr, %add.ptr.i.ptr br i1 %cmp.not, label %nrvo.skipdtor, label %for.body nrvo.skipdtor: ; preds = %for.inc, %entry @@ -359,7 +360,8 @@ if.then: ; preds = %entry %length.i = getelementptr inbounds i8, ptr %agg.result, i64 4 %3 = load i32, ptr %length.i, align 4 %idx.ext.i = zext i32 %3 to i64 - %add.ptr.i = getelementptr inbounds %struct.hb_pair_t, ptr %2, i64 %idx.ext.i + %add.ptr.i.idx = shl nuw nsw i64 %idx.ext.i, 4 + %add.ptr.i.ptr = getelementptr inbounds i8, ptr %2, i64 %add.ptr.i.idx %cmp10.not669 = icmp eq i32 %3, 0 br i1 %cmp10.not669, label %return, label %for.body.lr.ph @@ -389,7 +391,7 @@ for.body: ; preds = %for.body.lr.ph, %fo store <2 x float> %retval.i.0.retval.i.0.retval.i.0.retval.0.retval.0..fca.0.load.i, ptr %__begin2.0670, align 4 store <2 x float> %retval.i.8.retval.i.8.retval.i.8.retval.8.retval.8..fca.1.load.i, ptr %middle.i76, align 4 %incdec.ptr = getelementptr inbounds i8, ptr %__begin2.0670, i64 16 - %cmp10.not = icmp eq ptr %incdec.ptr, %add.ptr.i + %cmp10.not = icmp eq ptr %incdec.ptr, %add.ptr.i.ptr br i1 %cmp10.not, label %return, label %for.body if.end: ; preds = %entry @@ -446,7 +448,8 @@ _ZL13supportScalarfRK6Triple.exit: ; preds = %if.then21, %if.end. %length.i91 = getelementptr inbounds i8, ptr %agg.result, i64 4 %10 = load i32, ptr %length.i91, align 4 %idx.ext.i92 = zext i32 %10 to i64 - %add.ptr.i93 = getelementptr inbounds %struct.hb_pair_t, ptr %9, i64 %idx.ext.i92 + %add.ptr.i93.idx = shl nuw nsw i64 %idx.ext.i92, 4 + %add.ptr.i93.ptr = getelementptr inbounds i8, ptr %9, i64 %add.ptr.i93.idx %cmp33.not667 = icmp eq i32 %10, 0 br i1 %cmp33.not667, label %return, label %for.body34.lr.ph @@ -475,7 +478,7 @@ for.body34: ; preds = %for.body34.lr.ph, % %ref.tmp36.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %__begin228.0668, i64 8 store <2 x float> %retval.i96.8.retval.i96.8.retval.i96.8.retval.8.retval.8..fca.1.load.i105, ptr %ref.tmp36.sroa.2.0..sroa_idx, align 4 %incdec.ptr44 = getelementptr inbounds i8, ptr %__begin228.0668, i64 16 - %cmp33.not = icmp eq ptr %incdec.ptr44, %add.ptr.i93 + %cmp33.not = icmp eq ptr %incdec.ptr44, %add.ptr.i93.ptr br i1 %cmp33.not, label %return, label %for.body34 if.end49: ; preds = %if.end19 diff --git a/bench/hermes/optimized/Array.cpp.ll b/bench/hermes/optimized/Array.cpp.ll index a03489da94b..b24fc52bab3 100644 --- a/bench/hermes/optimized/Array.cpp.ll +++ b/bench/hermes/optimized/Array.cpp.ll @@ -2714,8 +2714,8 @@ if.end63: ; preds = %if.end56 %29 = load i32, ptr %curChunkIndex_.i, align 8 %30 = load ptr, ptr %args, align 8, !noalias !36 %conv.i.i43 = zext i32 %26 to i64 - %idx.neg.i.i.i = sub nsw i64 0, %conv.i.i43 - %add.ptr.i.i.i = getelementptr inbounds %"class.hermes::vm::PinnedHermesValue", ptr %30, i64 %idx.neg.i.i.i + %.neg = mul nsw i64 %conv.i.i43, -8 + %add.ptr.i.i.i.ptr = getelementptr inbounds i8, ptr %30, i64 %.neg %cmp.i.i.i44.not78 = icmp eq i32 %26, 0 br i1 %cmp.i.i.i44.not78, label %for.end, label %for.body.lr.ph @@ -2742,7 +2742,7 @@ if.end89: ; preds = %for.body %33 = load double, ptr %retval.0.i.i.i.i.i.i18, align 8 %add94 = fadd double %33, 1.000000e+00 store double %add94, ptr %retval.0.i.i.i.i.i.i18, align 8 - %cmp.i.i.i44.not = icmp eq ptr %incdec.ptr.i.i, %add.ptr.i.i.i + %cmp.i.i.i44.not = icmp eq ptr %incdec.ptr.i.i, %add.ptr.i.i.i.ptr br i1 %cmp.i.i.i44.not, label %for.end, label %for.body for.end: ; preds = %if.end89, %if.end63 @@ -3645,8 +3645,8 @@ _ZN6hermes2vm7JSArray17setLengthPropertyENS0_6HandleIS1_EERNS0_7RuntimeEjNS0_11P %22 = load ptr, ptr %args, align 8, !noalias !56 %23 = load i32, ptr %argCount_.i, align 8, !noalias !59 %conv.i.i40 = zext i32 %23 to i64 - %idx.neg.i.i.i = sub nsw i64 0, %conv.i.i40 - %add.ptr.i.i.i = getelementptr inbounds %"class.hermes::vm::PinnedHermesValue", ptr %22, i64 %idx.neg.i.i.i + %.neg = mul nsw i64 %conv.i.i40, -8 + %add.ptr.i.i.i.ptr = getelementptr inbounds i8, ptr %22, i64 %.neg %cmp.i.i.i41.not59 = icmp eq i32 %23, 0 %chunks_.i.i.i.phi.trans.insert = getelementptr inbounds i8, ptr %19, i64 144 br i1 %cmp.i.i.i41.not59, label %_ZN6hermes2vm7JSArray17setLengthPropertyENS0_6HandleIS1_EERNS0_7RuntimeEjNS0_11PropOpFlagsE.exit39.for.end_crit_edge, label %for.body.lr.ph @@ -3674,7 +3674,7 @@ for.body: ; preds = %for.body.lr.ph, %fo store i32 %21, ptr %curChunkIndex_.i.i, align 8 store ptr %add.ptr.i.i, ptr %curChunkEnd_.i.i, align 8 store ptr %20, ptr %next_.i.i, align 8 - %cmp.i.i.i41.not = icmp eq ptr %incdec.ptr.i.i, %add.ptr.i.i.i + %cmp.i.i.i41.not = icmp eq ptr %incdec.ptr.i.i, %add.ptr.i.i.i.ptr br i1 %cmp.i.i.i41.not, label %for.end, label %for.body for.end: ; preds = %for.body, %_ZN6hermes2vm7JSArray17setLengthPropertyENS0_6HandleIS1_EERNS0_7RuntimeEjNS0_11PropOpFlagsE.exit39.for.end_crit_edge @@ -6216,8 +6216,8 @@ while.end: ; preds = %if.end159, %_ZN6her %55 = load ptr, ptr %args, align 8, !noalias !92 %56 = load i32, ptr %argCount_.i, align 8, !noalias !95 %conv.i.i = zext i32 %56 to i64 - %idx.neg.i.i.i = sub nsw i64 0, %conv.i.i - %add.ptr.i.i.i = getelementptr inbounds %"class.hermes::vm::PinnedHermesValue", ptr %55, i64 %idx.neg.i.i.i + %.neg = mul nsw i64 %conv.i.i, -8 + %add.ptr.i.i.i.ptr = getelementptr inbounds i8, ptr %55, i64 %.neg %cmp.i.i.i.not200 = icmp eq i32 %56, 0 br i1 %cmp.i.i.i.not200, label %if.end203, label %for.body.lr.ph @@ -6247,7 +6247,7 @@ if.end192: ; preds = %for.body %61 = bitcast double %add197 to i64 %retval.sroa.0.0.i159 = select i1 %60, i64 9221120237041090560, i64 %61 store i64 %retval.sroa.0.0.i159, ptr %retval.0.i.i.i.i.i.i57, align 8 - %cmp.i.i.i.not = icmp eq ptr %incdec.ptr.i.i, %add.ptr.i.i.i + %cmp.i.i.i.not = icmp eq ptr %incdec.ptr.i.i, %add.ptr.i.i.i.ptr br i1 %cmp.i.i.i.not, label %if.end203, label %for.body if.end203: ; preds = %if.end192, %if.end35, %while.end diff --git a/bench/hermes/optimized/BCP47Parser.cpp.ll b/bench/hermes/optimized/BCP47Parser.cpp.ll index 09ea4362752..678d72ad962 100644 --- a/bench/hermes/optimized/BCP47Parser.cpp.ll +++ b/bench/hermes/optimized/BCP47Parser.cpp.ll @@ -790,7 +790,8 @@ for.body: ; preds = %_ZSt7reverseIN9__gn %31 = load ptr, ptr %__begin2.sroa.0.017, align 8 %_M_string_length.i.i = getelementptr inbounds i8, ptr %__begin2.sroa.0.017, i64 8 %32 = load i64, ptr %_M_string_length.i.i, align 8 - %add.ptr.i = getelementptr inbounds i16, ptr %31, i64 %32 + %add.ptr.i.idx = shl nsw i64 %32, 1 + %add.ptr.i.ptr = getelementptr inbounds i8, ptr %31, i64 %add.ptr.i.idx %cmp.i8.not14 = icmp eq i64 %32, 0 br i1 %cmp.i8.not14, label %for.inc31, label %for.body24 @@ -808,7 +809,7 @@ if.then: ; preds = %for.body24 for.inc: ; preds = %for.body24, %if.then %incdec.ptr.i = getelementptr inbounds i8, ptr %__begin3.sroa.0.015, i64 2 - %cmp.i8.not = icmp eq ptr %incdec.ptr.i, %add.ptr.i + %cmp.i8.not = icmp eq ptr %incdec.ptr.i, %add.ptr.i.ptr br i1 %cmp.i8.not, label %for.inc31, label %for.body24 for.inc31: ; preds = %for.inc, %for.body @@ -3765,7 +3766,8 @@ _ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEEpLEDs.exit53: ; preds = store i16 0, ptr %arrayidx.i.i.i48, align 2 %30 = load ptr, ptr %regionSubtag, align 8 %31 = load i64, ptr %_M_string_length.i.i39, align 8 - %add.ptr.i = getelementptr inbounds i16, ptr %30, i64 %31 + %add.ptr.i.idx = shl nsw i64 %31, 1 + %add.ptr.i.ptr = getelementptr inbounds i8, ptr %30, i64 %add.ptr.i.idx %cmp.i55.not989 = icmp eq i64 %31, 0 br i1 %cmp.i55.not989, label %if.end29, label %for.body22 @@ -3807,7 +3809,7 @@ _ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEEpLEDs.exit71: ; preds = %arrayidx.i.i.i66 = getelementptr inbounds i16, ptr %38, i64 %add.i.i60 store i16 0, ptr %arrayidx.i.i.i66, align 2 %incdec.ptr.i = getelementptr inbounds i8, ptr %__begin3.sroa.0.0990, i64 2 - %cmp.i55.not = icmp eq ptr %incdec.ptr.i, %add.ptr.i + %cmp.i55.not = icmp eq ptr %incdec.ptr.i, %add.ptr.i.ptr br i1 %cmp.i55.not, label %if.end29, label %for.body22 if.end29: ; preds = %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEEpLEDs.exit71, %_ZNSt7__cxx1112basic_stringIDsSt11char_traitsIDsESaIDsEEpLEDs.exit53, %if.end diff --git a/bench/hermes/optimized/Callable.cpp.ll b/bench/hermes/optimized/Callable.cpp.ll index c04ff5e9881..f16888e6ef1 100644 --- a/bench/hermes/optimized/Callable.cpp.ll +++ b/bench/hermes/optimized/Callable.cpp.ll @@ -4837,7 +4837,8 @@ entry: %currentFrame_.i = getelementptr inbounds i8, ptr %runtime, i64 9496 %retval.sroa.0.0.copyload.i = load ptr, ptr %currentFrame_.i, align 8 %idx.ext = zext i32 %sub.i to i64 - %add.ptr = getelementptr inbounds %"class.hermes::vm::PinnedHermesValue", ptr %retval.sroa.0.0.copyload.i, i64 %idx.ext + %add.ptr.idx = shl nuw nsw i64 %idx.ext, 3 + %add.ptr.ptr = getelementptr inbounds i8, ptr %retval.sroa.0.0.copyload.i, i64 %add.ptr.idx %heapStorage_.i = getelementptr inbounds i8, ptr %runtime, i64 840 %cmp.not5.i = icmp eq i32 %sub.i, 0 br i1 %cmp.not5.i, label %_ZN6hermes2vm17GCHermesValueBaseINS0_11HermesValueEE4copyIPNS0_17PinnedHermesValueEPS3_EET0_T_S9_S8_RNS0_7HadesGCE.exit, label %for.body.lr.ph.i @@ -4869,7 +4870,7 @@ _ZN6hermes2vm17GCHermesValueBaseINS0_11HermesValueEE3setISt17integral_constantIb store i64 %agg.tmp.sroa.0.0.copyload.i, ptr %result.addr.06.i, align 8 %incdec.ptr.i = getelementptr inbounds i8, ptr %first.addr.07.i, i64 8 %incdec.ptr1.i = getelementptr inbounds i8, ptr %result.addr.06.i, i64 8 - %cmp.not.i = icmp eq ptr %incdec.ptr.i, %add.ptr + %cmp.not.i = icmp eq ptr %incdec.ptr.i, %add.ptr.ptr br i1 %cmp.not.i, label %_ZN6hermes2vm17GCHermesValueBaseINS0_11HermesValueEE4copyIPNS0_17PinnedHermesValueEPS3_EET0_T_S9_S8_RNS0_7HadesGCE.exit, label %for.body.i, !llvm.loop !54 _ZN6hermes2vm17GCHermesValueBaseINS0_11HermesValueEE4copyIPNS0_17PinnedHermesValueEPS3_EET0_T_S9_S8_RNS0_7HadesGCE.exit: ; preds = %_ZN6hermes2vm17GCHermesValueBaseINS0_11HermesValueEE3setISt17integral_constantIbLb1EEEEvS2_RNS0_7HadesGCE.exit.i, %entry diff --git a/bench/hermes/optimized/CharacterProperties.cpp.ll b/bench/hermes/optimized/CharacterProperties.cpp.ll index 995f12e2e91..b4b62ce66e7 100644 --- a/bench/hermes/optimized/CharacterProperties.cpp.ll +++ b/bench/hermes/optimized/CharacterProperties.cpp.ll @@ -263,7 +263,8 @@ _ZN6hermes12CodePointSetC2ERKS0_.exit: ; preds = %entry, %return.sink %5 = phi i32 [ %0, %entry ], [ %.pre, %return.sink.split.i.i.i ] %6 = load ptr, ptr %set, align 8 %conv.i.i.i = zext i32 %5 to i64 - %add.ptr.i = getelementptr inbounds %"struct.hermes::CodePointRange", ptr %6, i64 %conv.i.i.i + %add.ptr.i.idx = shl nuw nsw i64 %conv.i.i.i, 3 + %add.ptr.i.ptr = getelementptr inbounds i8, ptr %6, i64 %add.ptr.i.idx %cmp.not221 = icmp eq i32 %5, 0 br i1 %cmp.not221, label %for.end, label %for.body.lr.ph @@ -641,7 +642,7 @@ if.end.i: ; preds = %for.end.i, %while.b _ZN6hermesL17canonicalizeRangeENS_14CodePointRangeEPNS_12CodePointSetEb.exit: ; preds = %if.end.i, %_ZSt11lower_boundIPKN6hermes21UnicodeTransformRangeEjET_S4_S4_RKT0_.exit.i %incdec.ptr = getelementptr inbounds i8, ptr %__begin1.0222, i64 8 - %cmp.not = icmp eq ptr %incdec.ptr, %add.ptr.i + %cmp.not = icmp eq ptr %incdec.ptr, %add.ptr.i.ptr br i1 %cmp.not, label %for.end.loopexit, label %for.body for.end.loopexit: ; preds = %_ZN6hermesL17canonicalizeRangeENS_14CodePointRangeEPNS_12CodePointSetEb.exit @@ -695,7 +696,8 @@ _ZN6hermes12CodePointSetC2ERKS0_.exit33: ; preds = %for.end, %return.si %52 = phi i32 [ %48, %for.end ], [ %.pre237, %return.sink.split.i.i.i26 ] %53 = load ptr, ptr %canonicalized, align 8 %conv.i.i.i35 = zext i32 %52 to i64 - %add.ptr.i39 = getelementptr inbounds %"struct.hermes::CodePointRange", ptr %53, i64 %conv.i.i.i35 + %add.ptr.i39.idx = shl nuw nsw i64 %conv.i.i.i35, 3 + %add.ptr.i39.ptr = getelementptr inbounds i8, ptr %53, i64 %add.ptr.i39.idx %cmp11.not223 = icmp eq i32 %52, 0 br i1 %cmp11.not223, label %nrvo.skipdtor, label %for.body12.lr.ph @@ -1058,7 +1060,7 @@ for.inc31.i: ; preds = %for.inc.i, %for.bod _ZN6hermesL25addPrecanonicalCharactersENS_14CodePointRangeEPNS_12CodePointSetEb.exit: ; preds = %for.inc31.i, %for.body12 %incdec.ptr17 = getelementptr inbounds i8, ptr %__begin16.0224, i64 8 - %cmp11.not = icmp eq ptr %incdec.ptr17, %add.ptr.i39 + %cmp11.not = icmp eq ptr %incdec.ptr17, %add.ptr.i39.ptr br i1 %cmp11.not, label %nrvo.skipdtor.loopexit, label %for.body12 nrvo.skipdtor.loopexit: ; preds = %_ZN6hermesL25addPrecanonicalCharactersENS_14CodePointRangeEPNS_12CodePointSetEb.exit diff --git a/bench/hermes/optimized/CommonJS.cpp.ll b/bench/hermes/optimized/CommonJS.cpp.ll index ee2b9222b36..2196e78b562 100644 --- a/bench/hermes/optimized/CommonJS.cpp.ll +++ b/bench/hermes/optimized/CommonJS.cpp.ll @@ -855,7 +855,8 @@ if.then: ; preds = %_ZN4llvh8DenseMapIN store i32 0, ptr %NumTombstones.i.i.i, align 4 %3 = load i32, ptr %NumBuckets, align 8 %idx.ext.i.i = zext i32 %3 to i64 - %add.ptr.i.i = getelementptr inbounds %"struct.llvh::detail::DenseMapPair", ptr %call.i, i64 %idx.ext.i.i + %add.ptr.i.idx.i = mul nuw nsw i64 %idx.ext.i.i, 24 + %add.ptr.i.ptr.i = getelementptr inbounds i8, ptr %call.i, i64 %add.ptr.i.idx.i %cmp.not3.i = icmp eq i32 %3, 0 br i1 %cmp.not3.i, label %return, label %for.body.i @@ -865,19 +866,21 @@ for.body.i: ; preds = %if.then, %for.body. %EmptyKey.sroa.2.0.call4.sroa_idx.i = getelementptr inbounds i8, ptr %B.04.i, i64 8 store i64 0, ptr %EmptyKey.sroa.2.0.call4.sroa_idx.i, align 8 %incdec.ptr.i = getelementptr inbounds i8, ptr %B.04.i, i64 24 - %cmp.not.i = icmp eq ptr %incdec.ptr.i, %add.ptr.i.i + %cmp.not.i = icmp eq ptr %incdec.ptr.i, %add.ptr.i.ptr.i br i1 %cmp.not.i, label %return, label %for.body.i, !llvm.loop !11 if.end: ; preds = %_ZN4llvh8DenseMapINS_9StringRefEPN6hermes12UniqueStringENS_12DenseMapInfoIS1_EENS_6detail12DenseMapPairIS1_S4_EEE15allocateBucketsEj.exit %idx.ext = zext i32 %0 to i64 - %add.ptr = getelementptr inbounds %"struct.llvh::detail::DenseMapPair", ptr %1, i64 %idx.ext + %add.ptr.idx = mul nuw nsw i64 %idx.ext, 24 + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr.idx %NumEntries.i.i.i.i = getelementptr inbounds i8, ptr %this, i64 8 store i32 0, ptr %NumEntries.i.i.i.i, align 8 %NumTombstones.i.i.i.i = getelementptr inbounds i8, ptr %this, i64 12 store i32 0, ptr %NumTombstones.i.i.i.i, align 4 %4 = load i32, ptr %NumBuckets, align 8 %idx.ext.i.i.i = zext i32 %4 to i64 - %add.ptr.i.i.i = getelementptr inbounds %"struct.llvh::detail::DenseMapPair", ptr %call.i, i64 %idx.ext.i.i.i + %add.ptr.i.idx.i.i = mul nuw nsw i64 %idx.ext.i.i.i, 24 + %add.ptr.i.ptr.i.i = getelementptr inbounds i8, ptr %call.i, i64 %add.ptr.i.idx.i.i %cmp.not3.i.i = icmp eq i32 %4, 0 br i1 %cmp.not3.i.i, label %_ZN4llvh12DenseMapBaseINS_8DenseMapINS_9StringRefEPN6hermes12UniqueStringENS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_S5_EEEES2_S5_S7_SA_E9initEmptyEv.exit.i, label %for.body.i.i @@ -887,7 +890,7 @@ for.body.i.i: ; preds = %if.end, %for.body.i %EmptyKey.sroa.2.0.call4.sroa_idx.i.i = getelementptr inbounds i8, ptr %B.04.i.i, i64 8 store i64 0, ptr %EmptyKey.sroa.2.0.call4.sroa_idx.i.i, align 8 %incdec.ptr.i.i = getelementptr inbounds i8, ptr %B.04.i.i, i64 24 - %cmp.not.i.i = icmp eq ptr %incdec.ptr.i.i, %add.ptr.i.i.i + %cmp.not.i.i = icmp eq ptr %incdec.ptr.i.i, %add.ptr.i.ptr.i.i br i1 %cmp.not.i.i, label %_ZN4llvh12DenseMapBaseINS_8DenseMapINS_9StringRefEPN6hermes12UniqueStringENS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_S5_EEEES2_S5_S7_SA_E9initEmptyEv.exit.i, label %for.body.i.i, !llvm.loop !11 _ZN4llvh12DenseMapBaseINS_8DenseMapINS_9StringRefEPN6hermes12UniqueStringENS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_S5_EEEES2_S5_S7_SA_E9initEmptyEv.exit.i: ; preds = %for.body.i.i, %if.end @@ -917,7 +920,7 @@ if.then.i: ; preds = %_ZN4llvh12DenseMapI if.end.i5: ; preds = %if.then.i, %_ZN4llvh12DenseMapInfoINS_9StringRefEE7isEqualES1_S1_.exit.i %incdec.ptr.i6 = getelementptr inbounds i8, ptr %B.027.i, i64 24 - %cmp.not.i7 = icmp eq ptr %incdec.ptr.i6, %add.ptr + %cmp.not.i7 = icmp eq ptr %incdec.ptr.i6, %add.ptr.ptr br i1 %cmp.not.i7, label %_ZN4llvh12DenseMapBaseINS_8DenseMapINS_9StringRefEPN6hermes12UniqueStringENS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_S5_EEEES2_S5_S7_SA_E18moveFromOldBucketsEPSA_SD_.exit, label %_ZN4llvh12DenseMapInfoINS_9StringRefEE7isEqualES1_S1_.exit.i, !llvm.loop !12 _ZN4llvh12DenseMapBaseINS_8DenseMapINS_9StringRefEPN6hermes12UniqueStringENS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_S5_EEEES2_S5_S7_SA_E18moveFromOldBucketsEPSA_SD_.exit: ; preds = %if.end.i5, %_ZN4llvh12DenseMapBaseINS_8DenseMapINS_9StringRefEPN6hermes12UniqueStringENS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_S5_EEEES2_S5_S7_SA_E9initEmptyEv.exit.i diff --git a/bench/hermes/optimized/ConvertUTFWrapper.cpp.ll b/bench/hermes/optimized/ConvertUTFWrapper.cpp.ll index c1777ddc444..eea7696a790 100644 --- a/bench/hermes/optimized/ConvertUTFWrapper.cpp.ll +++ b/bench/hermes/optimized/ConvertUTFWrapper.cpp.ll @@ -606,17 +606,17 @@ if.then4: ; preds = %if.then br i1 %cmp10, label %_ZSt22__uninitialized_move_aIPtS0_SaItEET0_T_S3_S2_RT1_.exit, label %_ZSt7advanceIPKtmEvRT_T0_.exit _ZSt22__uninitialized_move_aIPtS0_SaItEET0_T_S3_S2_RT1_.exit: ; preds = %if.then4 - %idx.neg = sub nsw i64 0, %sub.ptr.div.i.i - %add.ptr = getelementptr inbounds i16, ptr %1, i64 %idx.neg - tail call void @llvm.memmove.p0.p0.i64(ptr align 2 %1, ptr align 2 %add.ptr, i64 %sub.ptr.sub.i.i, i1 false) + %add.ptr.idx = sub i64 0, %sub.ptr.sub.i.i + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr.idx + tail call void @llvm.memmove.p0.p0.i64(ptr align 2 %1, ptr align 2 %add.ptr.ptr, i64 %sub.ptr.sub.i.i, i1 false) %.pre85 = load ptr, ptr %_M_finish, align 8 %add.ptr22 = getelementptr inbounds i8, ptr %.pre85, i64 %sub.ptr.sub.i.i store ptr %add.ptr22, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce + %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %_ZSt4copyIPKtN9__gnu_cxx17__normal_iteratorIPtSt6vectorItSaItEEEEET0_T_SA_S9_.exit, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPtS0_SaItEET0_T_S3_S2_RT1_.exit - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 1 %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i @@ -629,14 +629,14 @@ _ZSt4copyIPKtN9__gnu_cxx17__normal_iteratorIPtSt6vectorItSaItEEEEET0_T_SA_S9_.ex br label %if.end80 _ZSt7advanceIPKtmEvRT_T0_.exit: ; preds = %if.then4 - %incdec.ptr.i.i = getelementptr inbounds i8, ptr %__first, i64 %sub.ptr.sub.i - %tobool.not.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i, %__last + %incdec.ptr4.sink.i.i.ptr = getelementptr inbounds i8, ptr %__first, i64 %sub.ptr.sub.i + %tobool.not.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr4.sink.i.i.ptr, %__last br i1 %tobool.not.i.i.i.i.i.i.i.i, label %_ZSt22__uninitialized_copy_aIPKtPttET0_T_S4_S3_RSaIT1_E.exit, label %if.then.i.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i.i: ; preds = %_ZSt7advanceIPKtmEvRT_T0_.exit - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i = ptrtoint ptr %incdec.ptr.i.i to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i = ptrtoint ptr %incdec.ptr4.sink.i.i.ptr to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i, %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 2 %1, ptr align 2 %incdec.ptr.i.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 2 %1, ptr align 2 %incdec.ptr4.sink.i.i.ptr, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i, i1 false) %.pre = load ptr, ptr %_M_finish, align 8 br label %_ZSt22__uninitialized_copy_aIPKtPttET0_T_S4_S3_RSaIT1_E.exit diff --git a/bench/hermes/optimized/DCE.cpp.ll b/bench/hermes/optimized/DCE.cpp.ll index 14e14633701..bb15d4fee8a 100644 --- a/bench/hermes/optimized/DCE.cpp.ll +++ b/bench/hermes/optimized/DCE.cpp.ll @@ -296,7 +296,8 @@ for.end32: ; preds = %for.inc30 %.pre = load ptr, ptr %toRemove, align 8 %.pre81 = load i32, ptr %Size.i.i.i.i.i20, align 8 %conv.i = zext i32 %.pre81 to i64 - %add.ptr.i78 = getelementptr inbounds ptr, ptr %.pre, i64 %conv.i + %add.ptr.i78.idx = shl nuw nsw i64 %conv.i, 3 + %add.ptr.i78.ptr = getelementptr inbounds i8, ptr %.pre, i64 %add.ptr.i78.idx %cmp39.not72 = icmp eq i32 %.pre81, 0 br i1 %cmp39.not72, label %for.end46, label %for.body40 @@ -305,7 +306,7 @@ for.body40: ; preds = %for.end32, %for.bod %35 = load ptr, ptr %__begin234.073, align 8 call void @_ZN6hermes8Function24eraseFromParentNoDestroyEv(ptr noundef nonnull align 8 dereferenceable(304) %35) #6 %incdec.ptr = getelementptr inbounds i8, ptr %__begin234.073, i64 8 - %cmp39.not = icmp eq ptr %incdec.ptr, %add.ptr.i78 + %cmp39.not = icmp eq ptr %incdec.ptr, %add.ptr.i78.ptr br i1 %cmp39.not, label %for.end46.loopexit, label %for.body40 for.end46.loopexit: ; preds = %for.body40 @@ -327,11 +328,12 @@ _ZN4llvh11SmallVectorIPN6hermes8FunctionELj16EED2Ev.exit: ; preds = %for.end46, br i1 %tobool48.not, label %do.end49, label %do.body10, !llvm.loop !7 do.end49: ; preds = %do.body10, %_ZN4llvh11SmallVectorIPN6hermes8FunctionELj16EED2Ev.exit - %changed.2.lcssa909499 = phi i8 [ %changed.3, %_ZN4llvh11SmallVectorIPN6hermes8FunctionELj16EED2Ev.exit ], [ %changed.1, %do.body10 ] + %changed.2.lcssa9195100 = phi i8 [ %changed.3, %_ZN4llvh11SmallVectorIPN6hermes8FunctionELj16EED2Ev.exit ], [ %changed.1, %do.body10 ] %38 = load ptr, ptr %toDestroy, align 8 %39 = load i32, ptr %Size.i.i.i.i.i, align 8 %conv.i46 = zext i32 %39 to i64 - %add.ptr.i = getelementptr inbounds ptr, ptr %38, i64 %conv.i46 + %add.ptr.i.idx = shl nuw nsw i64 %conv.i46, 3 + %add.ptr.i.ptr = getelementptr inbounds i8, ptr %38, i64 %add.ptr.i.idx %cmp56.not74 = icmp eq i32 %39, 0 br i1 %cmp56.not74, label %for.end62, label %for.body57 @@ -343,7 +345,7 @@ for.body57: ; preds = %do.end49, %for.body %spec.select = select i1 %41, ptr null, ptr %add.ptr59 call void @_ZN6hermes5Value7destroyEPS0_(ptr noundef %spec.select) #6 %incdec.ptr61 = getelementptr inbounds i8, ptr %__begin151.075, i64 8 - %cmp56.not = icmp eq ptr %incdec.ptr61, %add.ptr.i + %cmp56.not = icmp eq ptr %incdec.ptr61, %add.ptr.i.ptr br i1 %cmp56.not, label %for.end62.loopexit, label %for.body57 for.end62.loopexit: ; preds = %for.body57 @@ -360,7 +362,7 @@ if.then.i.i49: ; preds = %for.end62 br label %_ZN4llvh11SmallVectorIPN6hermes8FunctionELj16EED2Ev.exit50 _ZN4llvh11SmallVectorIPN6hermes8FunctionELj16EED2Ev.exit50: ; preds = %for.end62, %if.then.i.i49 - %43 = and i8 %changed.2.lcssa909499, 1 + %43 = and i8 %changed.2.lcssa9195100, 1 %tobool63 = icmp ne i8 %43, 0 ret i1 %tobool63 } diff --git a/bench/hermes/optimized/FileCheck.cpp.ll b/bench/hermes/optimized/FileCheck.cpp.ll index 04cade404fa..4a8836c25de 100644 --- a/bench/hermes/optimized/FileCheck.cpp.ll +++ b/bench/hermes/optimized/FileCheck.cpp.ll @@ -5139,7 +5139,8 @@ while.cond.i.i.i.backedge: ; preds = %while.cond.i.i.i, % for.end.i: ; preds = %for.cond.loopexit.i %.pre21.i = load ptr, ptr %LocalVars.i, align 8 %conv.i.i = zext i32 %21 to i64 - %add.ptr.i.i = getelementptr inbounds %"class.llvh::StringRef", ptr %.pre21.i, i64 %conv.i.i + %add.ptr.i.idx.i = shl nuw nsw i64 %conv.i.i, 4 + %add.ptr.i.ptr.i = getelementptr inbounds i8, ptr %.pre21.i, i64 %add.ptr.i.idx.i %cmp18.not19.i = icmp eq i32 %21, 0 br i1 %cmp18.not19.i, label %for.end23.i, label %for.body19.i @@ -5167,7 +5168,7 @@ if.end.i.i45: ; preds = %for.body19.i _ZN4llvh9StringMapINS_9StringRefENS_15MallocAllocatorEE5eraseES1_.exit.i: ; preds = %if.end.i.i45, %for.body19.i %incdec.ptr.i44 = getelementptr inbounds i8, ptr %__begin113.020.i, i64 16 - %cmp18.not.i = icmp eq ptr %incdec.ptr.i44, %add.ptr.i.i + %cmp18.not.i = icmp eq ptr %incdec.ptr.i44, %add.ptr.i.ptr.i br i1 %cmp18.not.i, label %for.end23.loopexit.i, label %for.body19.i for.end23.loopexit.i: ; preds = %_ZN4llvh9StringMapINS_9StringRefENS_15MallocAllocatorEE5eraseES1_.exit.i diff --git a/bench/hermes/optimized/FuncCallNOpts.cpp.ll b/bench/hermes/optimized/FuncCallNOpts.cpp.ll index b3a20ff78a6..f51c653d847 100644 --- a/bench/hermes/optimized/FuncCallNOpts.cpp.ll +++ b/bench/hermes/optimized/FuncCallNOpts.cpp.ll @@ -234,7 +234,8 @@ for.end36: ; preds = %for.inc34 %15 = and i8 %changed.1.lcssa, 1 %16 = icmp ne i8 %15, 0 %conv.i.i = zext i32 %.pre54 to i64 - %add.ptr.i.i = getelementptr inbounds ptr, ptr %.pre, i64 %conv.i.i + %add.ptr.i.idx.i = shl nuw nsw i64 %conv.i.i, 3 + %add.ptr.i.ptr.i = getelementptr inbounds i8, ptr %.pre, i64 %add.ptr.i.idx.i %cmp.not4.i = icmp eq i32 %.pre54, 0 br i1 %cmp.not4.i, label %for.end.i, label %for.body.i22 @@ -243,7 +244,7 @@ for.body.i22: ; preds = %for.end36, %for.bod %17 = load ptr, ptr %__begin2.05.i, align 8 call void @_ZN6hermes11Instruction15eraseFromParentEv(ptr noundef nonnull align 8 dereferenceable(132) %17) #9 %incdec.ptr.i = getelementptr inbounds i8, ptr %__begin2.05.i, i64 8 - %cmp.not.i = icmp eq ptr %incdec.ptr.i, %add.ptr.i.i + %cmp.not.i = icmp eq ptr %incdec.ptr.i, %add.ptr.i.ptr.i br i1 %cmp.not.i, label %for.end.loopexit.i, label %for.body.i22 for.end.loopexit.i: ; preds = %for.body.i22 @@ -260,8 +261,8 @@ if.then.i.i.i24: ; preds = %for.end.i br label %_ZN6hermes9IRBuilder20InstructionDestroyerD2Ev.exit _ZN6hermes9IRBuilder20InstructionDestroyerD2Ev.exit: ; preds = %entry, %for.end.i, %if.then.i.i.i24 - %changed.0.lcssa5962 = phi i1 [ %16, %for.end.i ], [ %16, %if.then.i.i.i24 ], [ false, %entry ] - ret i1 %changed.0.lcssa5962 + %changed.0.lcssa6063 = phi i1 [ %16, %for.end.i ], [ %16, %if.then.i.i.i24 ], [ false, %entry ] + ret i1 %changed.0.lcssa6063 } declare void @_ZN6hermes9IRBuilder17setInsertionPointEPNS_11InstructionE(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef) local_unnamed_addr #1 diff --git a/bench/hermes/optimized/GraphWriter.cpp.ll b/bench/hermes/optimized/GraphWriter.cpp.ll index 2af6c2387ce..23640275954 100644 --- a/bench/hermes/optimized/GraphWriter.cpp.ll +++ b/bench/hermes/optimized/GraphWriter.cpp.ll @@ -1317,7 +1317,8 @@ entry: %1 = load ptr, ptr %parts, align 8 %2 = load i32, ptr %Size.i.i.i.i.i, align 8 %conv.i = zext i32 %2 to i64 - %add.ptr.i = getelementptr inbounds %"class.llvh::StringRef", ptr %1, i64 %conv.i + %add.ptr.i.idx = shl nuw nsw i64 %conv.i, 4 + %add.ptr.i.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr.i.idx %cmp.not40.not = icmp eq i32 %2, 0 br i1 %cmp.not40.not, label %cleanup11, label %for.body.lr.ph @@ -1422,7 +1423,7 @@ if.then4.i.i24: ; preds = %_ZN4llvh11raw_ostre _ZN4llvh11raw_ostreamlsEPKc.exit29: ; preds = %if.then.i.i27, %if.then4.i.i24 %incdec.ptr = getelementptr inbounds i8, ptr %__begin2.041, i64 16 - %cmp.not.not = icmp eq ptr %incdec.ptr, %add.ptr.i + %cmp.not.not = icmp eq ptr %incdec.ptr, %add.ptr.i.ptr br i1 %cmp.not.not, label %cleanup11, label %for.body cleanup11: ; preds = %_ZN4llvh11raw_ostreamlsEPKc.exit29, %entry, %if.then.i, %if.then diff --git a/bench/hermes/optimized/HermesValue.cpp.ll b/bench/hermes/optimized/HermesValue.cpp.ll index 1535d22fd78..633ecee6d0b 100644 --- a/bench/hermes/optimized/HermesValue.cpp.ll +++ b/bench/hermes/optimized/HermesValue.cpp.ll @@ -489,7 +489,6 @@ if.then58: ; preds = %_ZN4llvh11raw_ostre br i1 %cmp.i.i243.not488, label %if.end69, label %for.body.lr.ph for.body.lr.ph: ; preds = %if.then58 - %add.ptr.i.i242 = getelementptr inbounds i8, ptr %48, i64 %49 %DecValue.i.i261 = getelementptr inbounds i8, ptr %ref.tmp65, i64 8 %Width.i.i262 = getelementptr inbounds i8, ptr %ref.tmp65, i64 16 %Hex.i.i263 = getelementptr inbounds i8, ptr %ref.tmp65, i64 20 @@ -498,7 +497,7 @@ for.body.lr.ph: ; preds = %if.then58 br label %for.body for.body: ; preds = %for.body.lr.ph, %_ZN4llvh11raw_ostreamlsEPKc.exit259 - %it.sroa.0.0489 = phi ptr [ %add.ptr.i.i242, %for.body.lr.ph ], [ %incdec.ptr.i260, %_ZN4llvh11raw_ostreamlsEPKc.exit259 ] + %it.sroa.0.0.idx489 = phi i64 [ %49, %for.body.lr.ph ], [ %it.sroa.0.0.add, %_ZN4llvh11raw_ostreamlsEPKc.exit259 ] %50 = load ptr, ptr %OutBufEnd.i5.i186, align 8 %51 = load ptr, ptr %OutBufCur.i6.i187, align 8 %cmp.i.i251 = icmp eq ptr %50, %51 @@ -517,8 +516,9 @@ if.then4.i.i254: ; preds = %for.body _ZN4llvh11raw_ostreamlsEPKc.exit259: ; preds = %if.then.i.i257, %if.then4.i.i254 %phi.call.i256 = phi ptr [ %call3.i.i258, %if.then.i.i257 ], [ %OS, %if.then4.i.i254 ] - %incdec.ptr.i260 = getelementptr inbounds i8, ptr %it.sroa.0.0489, i64 -1 - %53 = load i8, ptr %incdec.ptr.i260, align 1 + %it.sroa.0.0.add = add nsw i64 %it.sroa.0.0.idx489, -1 + %incdec.ptr.i260.ptr = getelementptr inbounds i8, ptr %48, i64 %it.sroa.0.0.add + %53 = load i8, ptr %incdec.ptr.i260.ptr, align 1 %conv = zext i8 %53 to i64 store i64 %conv, ptr %ref.tmp65, align 8, !alias.scope !13 store i64 0, ptr %DecValue.i.i261, align 8, !alias.scope !13 @@ -527,7 +527,7 @@ _ZN4llvh11raw_ostreamlsEPKc.exit259: ; preds = %if.then.i.i257, %if store i8 0, ptr %Upper.i.i264, align 1, !alias.scope !13 store i8 1, ptr %HexPrefix.i.i265, align 2, !alias.scope !13 %call67 = call noundef nonnull align 8 dereferenceable(36) ptr @_ZN4llvh11raw_ostreamlsERKNS_15FormattedNumberE(ptr noundef nonnull align 8 dereferenceable(36) %phi.call.i256, ptr noundef nonnull align 8 dereferenceable(23) %ref.tmp65) #7 - %cmp.i.i243.not = icmp eq ptr %incdec.ptr.i260, %48 + %cmp.i.i243.not = icmp eq i64 %it.sroa.0.0.add, 0 br i1 %cmp.i.i243.not, label %if.end69, label %for.body, !llvm.loop !16 if.end69: ; preds = %_ZN4llvh11raw_ostreamlsEPKc.exit259, %if.then58, %_ZN4llvh11raw_ostreamlsEPKc.exit231 diff --git a/bench/hermes/optimized/InitLLVM.cpp.ll b/bench/hermes/optimized/InitLLVM.cpp.ll index 48cc1b82141..0e99a14ce11 100644 --- a/bench/hermes/optimized/InitLLVM.cpp.ll +++ b/bench/hermes/optimized/InitLLVM.cpp.ll @@ -3,8 +3,6 @@ source_filename = "bench/hermes/original/InitLLVM.cpp.ll" target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" -%"struct.std::pair" = type { ptr, i64 } - @_ZTVN4llvh23PrettyStackTraceProgramE = external unnamed_addr constant { [5 x ptr] }, align 8 @_ZN4llvh8InitLLVMC1ERiRPPKc = hidden unnamed_addr alias void (ptr, ptr, ptr), ptr @_ZN4llvh8InitLLVMC2ERiRPPKc @@ -82,7 +80,8 @@ _ZN4llvh11SmallVectorIPKcLj0EED2Ev.exit: ; preds = %entry, %if.then.i.i %Size.i.i = getelementptr inbounds i8, ptr %this, i64 24 %2 = load i32, ptr %Size.i.i, align 8 %conv.i.i = zext i32 %2 to i64 - %add.ptr.i.i = getelementptr inbounds ptr, ptr %1, i64 %conv.i.i + %add.ptr.i.idx.i = shl nuw nsw i64 %conv.i.i, 3 + %add.ptr.i.ptr.i = getelementptr inbounds i8, ptr %1, i64 %add.ptr.i.idx.i %cmp.not4.i.i = icmp eq i32 %2, 0 br i1 %cmp.not4.i.i, label %_ZN4llvh20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096EE15DeallocateSlabsEPPvS4_.exit.i, label %for.body.i.i @@ -91,7 +90,7 @@ for.body.i.i: ; preds = %_ZN4llvh11SmallVect %3 = load ptr, ptr %I.addr.05.i.i, align 8 tail call void @free(ptr noundef %3) #6 %incdec.ptr.i.i = getelementptr inbounds i8, ptr %I.addr.05.i.i, i64 8 - %cmp.not.i.i = icmp eq ptr %incdec.ptr.i.i, %add.ptr.i.i + %cmp.not.i.i = icmp eq ptr %incdec.ptr.i.i, %add.ptr.i.ptr.i br i1 %cmp.not.i.i, label %_ZN4llvh20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096EE15DeallocateSlabsEPPvS4_.exit.i, label %for.body.i.i, !llvm.loop !4 _ZN4llvh20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096EE15DeallocateSlabsEPPvS4_.exit.i: ; preds = %for.body.i.i, %_ZN4llvh11SmallVectorIPKcLj0EED2Ev.exit @@ -100,7 +99,8 @@ _ZN4llvh20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096EE15DeallocateS %Size.i.i.i = getelementptr inbounds i8, ptr %this, i64 72 %5 = load i32, ptr %Size.i.i.i, align 8 %conv.i.i.i = zext i32 %5 to i64 - %add.ptr.i.i.i = getelementptr inbounds %"struct.std::pair", ptr %4, i64 %conv.i.i.i + %add.ptr.i.idx.i.i = shl nuw nsw i64 %conv.i.i.i, 4 + %add.ptr.i.ptr.i.i = getelementptr inbounds i8, ptr %4, i64 %add.ptr.i.idx.i.i %cmp.not5.i.i = icmp eq i32 %5, 0 br i1 %cmp.not5.i.i, label %_ZN4llvh20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096EE26DeallocateCustomSizedSlabsEv.exit.i, label %for.body.i1.i @@ -109,7 +109,7 @@ for.body.i1.i: ; preds = %_ZN4llvh20BumpPtrAl %6 = load ptr, ptr %__begin2.06.i.i, align 8 tail call void @free(ptr noundef %6) #6 %incdec.ptr.i2.i = getelementptr inbounds i8, ptr %__begin2.06.i.i, i64 16 - %cmp.not.i3.i = icmp eq ptr %incdec.ptr.i2.i, %add.ptr.i.i.i + %cmp.not.i3.i = icmp eq ptr %incdec.ptr.i2.i, %add.ptr.i.ptr.i.i br i1 %cmp.not.i3.i, label %_ZN4llvh20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096EE26DeallocateCustomSizedSlabsEv.exit.loopexit.i, label %for.body.i1.i _ZN4llvh20BumpPtrAllocatorImplINS_15MallocAllocatorELm4096ELm4096EE26DeallocateCustomSizedSlabsEv.exit.loopexit.i: ; preds = %for.body.i1.i diff --git a/bench/hermes/optimized/InternalIdentifierMaker.cpp.ll b/bench/hermes/optimized/InternalIdentifierMaker.cpp.ll index 8b449543a05..58462aba81b 100644 --- a/bench/hermes/optimized/InternalIdentifierMaker.cpp.ll +++ b/bench/hermes/optimized/InternalIdentifierMaker.cpp.ll @@ -644,7 +644,8 @@ if.then: ; preds = %_ZN4llvh8DenseMapIN store i32 0, ptr %NumTombstones.i.i.i, align 4 %3 = load i32, ptr %NumBuckets, align 8 %idx.ext.i.i = zext i32 %3 to i64 - %add.ptr.i.i = getelementptr inbounds %"struct.llvh::detail::DenseMapPair", ptr %call.i, i64 %idx.ext.i.i + %add.ptr.i.idx.i = mul nuw nsw i64 %idx.ext.i.i, 24 + %add.ptr.i.ptr.i = getelementptr inbounds i8, ptr %call.i, i64 %add.ptr.i.idx.i %cmp.not3.i = icmp eq i32 %3, 0 br i1 %cmp.not3.i, label %return, label %for.body.i @@ -654,19 +655,21 @@ for.body.i: ; preds = %if.then, %for.body. %EmptyKey.sroa.2.0.call4.sroa_idx.i = getelementptr inbounds i8, ptr %B.04.i, i64 8 store i64 0, ptr %EmptyKey.sroa.2.0.call4.sroa_idx.i, align 8 %incdec.ptr.i = getelementptr inbounds i8, ptr %B.04.i, i64 24 - %cmp.not.i = icmp eq ptr %incdec.ptr.i, %add.ptr.i.i + %cmp.not.i = icmp eq ptr %incdec.ptr.i, %add.ptr.i.ptr.i br i1 %cmp.not.i, label %return, label %for.body.i, !llvm.loop !11 if.end: ; preds = %_ZN4llvh8DenseMapINS_9StringRefEPN6hermes12UniqueStringENS_12DenseMapInfoIS1_EENS_6detail12DenseMapPairIS1_S4_EEE15allocateBucketsEj.exit %idx.ext = zext i32 %0 to i64 - %add.ptr = getelementptr inbounds %"struct.llvh::detail::DenseMapPair", ptr %1, i64 %idx.ext + %add.ptr.idx = mul nuw nsw i64 %idx.ext, 24 + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr.idx %NumEntries.i.i.i.i = getelementptr inbounds i8, ptr %this, i64 8 store i32 0, ptr %NumEntries.i.i.i.i, align 8 %NumTombstones.i.i.i.i = getelementptr inbounds i8, ptr %this, i64 12 store i32 0, ptr %NumTombstones.i.i.i.i, align 4 %4 = load i32, ptr %NumBuckets, align 8 %idx.ext.i.i.i = zext i32 %4 to i64 - %add.ptr.i.i.i = getelementptr inbounds %"struct.llvh::detail::DenseMapPair", ptr %call.i, i64 %idx.ext.i.i.i + %add.ptr.i.idx.i.i = mul nuw nsw i64 %idx.ext.i.i.i, 24 + %add.ptr.i.ptr.i.i = getelementptr inbounds i8, ptr %call.i, i64 %add.ptr.i.idx.i.i %cmp.not3.i.i = icmp eq i32 %4, 0 br i1 %cmp.not3.i.i, label %_ZN4llvh12DenseMapBaseINS_8DenseMapINS_9StringRefEPN6hermes12UniqueStringENS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_S5_EEEES2_S5_S7_SA_E9initEmptyEv.exit.i, label %for.body.i.i @@ -676,7 +679,7 @@ for.body.i.i: ; preds = %if.end, %for.body.i %EmptyKey.sroa.2.0.call4.sroa_idx.i.i = getelementptr inbounds i8, ptr %B.04.i.i, i64 8 store i64 0, ptr %EmptyKey.sroa.2.0.call4.sroa_idx.i.i, align 8 %incdec.ptr.i.i = getelementptr inbounds i8, ptr %B.04.i.i, i64 24 - %cmp.not.i.i = icmp eq ptr %incdec.ptr.i.i, %add.ptr.i.i.i + %cmp.not.i.i = icmp eq ptr %incdec.ptr.i.i, %add.ptr.i.ptr.i.i br i1 %cmp.not.i.i, label %_ZN4llvh12DenseMapBaseINS_8DenseMapINS_9StringRefEPN6hermes12UniqueStringENS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_S5_EEEES2_S5_S7_SA_E9initEmptyEv.exit.i, label %for.body.i.i, !llvm.loop !11 _ZN4llvh12DenseMapBaseINS_8DenseMapINS_9StringRefEPN6hermes12UniqueStringENS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_S5_EEEES2_S5_S7_SA_E9initEmptyEv.exit.i: ; preds = %for.body.i.i, %if.end @@ -706,7 +709,7 @@ if.then.i: ; preds = %_ZN4llvh12DenseMapI if.end.i5: ; preds = %if.then.i, %_ZN4llvh12DenseMapInfoINS_9StringRefEE7isEqualES1_S1_.exit.i %incdec.ptr.i6 = getelementptr inbounds i8, ptr %B.027.i, i64 24 - %cmp.not.i7 = icmp eq ptr %incdec.ptr.i6, %add.ptr + %cmp.not.i7 = icmp eq ptr %incdec.ptr.i6, %add.ptr.ptr br i1 %cmp.not.i7, label %_ZN4llvh12DenseMapBaseINS_8DenseMapINS_9StringRefEPN6hermes12UniqueStringENS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_S5_EEEES2_S5_S7_SA_E18moveFromOldBucketsEPSA_SD_.exit, label %_ZN4llvh12DenseMapInfoINS_9StringRefEE7isEqualES1_S1_.exit.i, !llvm.loop !12 _ZN4llvh12DenseMapBaseINS_8DenseMapINS_9StringRefEPN6hermes12UniqueStringENS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_S5_EEEES2_S5_S7_SA_E18moveFromOldBucketsEPSA_SD_.exit: ; preds = %if.end.i5, %_ZN4llvh12DenseMapBaseINS_8DenseMapINS_9StringRefEPN6hermes12UniqueStringENS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_S5_EEEES2_S5_S7_SA_E9initEmptyEv.exit.i diff --git a/bench/hermes/optimized/JSArray.cpp.ll b/bench/hermes/optimized/JSArray.cpp.ll index 8584edc6a4d..796b38ce2e0 100644 --- a/bench/hermes/optimized/JSArray.cpp.ll +++ b/bench/hermes/optimized/JSArray.cpp.ll @@ -2919,20 +2919,21 @@ for.inc.i.i: ; preds = %"_ZZN6hermes2vm7JSA for.body38.preheader: ; preds = %"_ZN6hermes2vm11HiddenClass15forEachPropertyIZNS0_7JSArray9setLengthENS0_6HandleIS3_EERNS0_7RuntimeEjNS0_11PropOpFlagsEE3$_0EEvNS4_IS1_EES7_RKT_.exit" %conv.i.i61 = zext i32 %60 to i64 - %add.ptr.i.i62 = getelementptr inbounds %"struct.std::pair.207", ptr %59, i64 %conv.i.i61 + %add.ptr.i.i62.idx = shl nuw nsw i64 %conv.i.i61, 3 br label %for.body38 for.body38: ; preds = %for.body38.preheader, %for.inc54 - %it.sroa.0.0197 = phi ptr [ %incdec.ptr.i, %for.inc54 ], [ %add.ptr.i.i62, %for.body38.preheader ] - %incdec.ptr.i = getelementptr inbounds i8, ptr %it.sroa.0.0197, i64 -8 - %61 = load i32, ptr %incdec.ptr.i, align 4 + %it.sroa.0.0.idx197 = phi i64 [ %it.sroa.0.0.add, %for.inc54 ], [ %add.ptr.i.i62.idx, %for.body38.preheader ] + %it.sroa.0.0.add = add nsw i64 %it.sroa.0.0.idx197, -8 + %incdec.ptr.i.ptr = getelementptr inbounds i8, ptr %59, i64 %it.sroa.0.0.add + %61 = load i32, ptr %incdec.ptr.i.ptr, align 4 %cmp41.not = icmp ult i32 %61, %adjustedLength.4 br i1 %cmp41.not, label %for.inc54, label %if.then42 if.then42: ; preds = %for.body38 %62 = load ptr, ptr %next_.i, align 8 %63 = load i32, ptr %curChunkIndex_.i, align 8 - %second46 = getelementptr inbounds i8, ptr %it.sroa.0.0197, i64 -4 + %second46 = getelementptr inbounds i8, ptr %incdec.ptr.i.ptr, i64 4 %agg.tmp44.sroa.0.0.copyload = load i32, ptr %second46, align 4 %call52 = call i32 @_ZN6hermes2vm8JSObject11deleteNamedENS0_6HandleIS1_EERNS0_7RuntimeENS0_8SymbolIDENS0_11PropOpFlagsE(ptr nonnull %selfHandle.coerce, ptr noundef nonnull align 8 dereferenceable(9832) %runtime, i32 %agg.tmp44.sroa.0.0.copyload, i32 0) #11 %conv.i.i.i66 = zext i32 %63 to i64 @@ -2946,7 +2947,7 @@ if.then42: ; preds = %for.body38 br label %for.inc54 for.inc54: ; preds = %for.body38, %if.then42 - %cmp.i.i63.not = icmp eq ptr %incdec.ptr.i, %59 + %cmp.i.i63.not = icmp eq i64 %it.sroa.0.0.add, 0 br i1 %cmp.i.i63.not, label %for.end56, label %for.body38, !llvm.loop !19 for.end56: ; preds = %for.inc54, %"_ZN6hermes2vm11HiddenClass15forEachPropertyIZNS0_7JSArray9setLengthENS0_6HandleIS3_EERNS0_7RuntimeEjNS0_11PropOpFlagsEE3$_0EEvNS4_IS1_EES7_RKT_.exit" diff --git a/bench/hermes/optimized/JSONParser.cpp.ll b/bench/hermes/optimized/JSONParser.cpp.ll index 9e4bc013af0..78c9f71812d 100644 --- a/bench/hermes/optimized/JSONParser.cpp.ll +++ b/bench/hermes/optimized/JSONParser.cpp.ll @@ -1923,7 +1923,8 @@ if.then: ; preds = %_ZN4llvh8DenseMapIN store i32 0, ptr %NumTombstones.i.i.i, align 4 %3 = load i32, ptr %NumBuckets, align 8 %idx.ext.i.i = zext i32 %3 to i64 - %add.ptr.i.i = getelementptr inbounds %"struct.llvh::detail::DenseMapPair", ptr %call.i, i64 %idx.ext.i.i + %add.ptr.i.idx.i = mul nuw nsw i64 %idx.ext.i.i, 24 + %add.ptr.i.ptr.i = getelementptr inbounds i8, ptr %call.i, i64 %add.ptr.i.idx.i %cmp.not3.i = icmp eq i32 %3, 0 br i1 %cmp.not3.i, label %return, label %for.body.i @@ -1933,19 +1934,21 @@ for.body.i: ; preds = %if.then, %for.body. %EmptyKey.sroa.2.0.call4.sroa_idx.i = getelementptr inbounds i8, ptr %B.04.i, i64 8 store i64 0, ptr %EmptyKey.sroa.2.0.call4.sroa_idx.i, align 8 %incdec.ptr.i = getelementptr inbounds i8, ptr %B.04.i, i64 24 - %cmp.not.i = icmp eq ptr %incdec.ptr.i, %add.ptr.i.i + %cmp.not.i = icmp eq ptr %incdec.ptr.i, %add.ptr.i.ptr.i br i1 %cmp.not.i, label %return, label %for.body.i, !llvm.loop !29 if.end: ; preds = %_ZN4llvh8DenseMapINS_9StringRefEPN6hermes12UniqueStringENS_12DenseMapInfoIS1_EENS_6detail12DenseMapPairIS1_S4_EEE15allocateBucketsEj.exit %idx.ext = zext i32 %0 to i64 - %add.ptr = getelementptr inbounds %"struct.llvh::detail::DenseMapPair", ptr %1, i64 %idx.ext + %add.ptr.idx = mul nuw nsw i64 %idx.ext, 24 + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr.idx %NumEntries.i.i.i.i = getelementptr inbounds i8, ptr %this, i64 8 store i32 0, ptr %NumEntries.i.i.i.i, align 8 %NumTombstones.i.i.i.i = getelementptr inbounds i8, ptr %this, i64 12 store i32 0, ptr %NumTombstones.i.i.i.i, align 4 %4 = load i32, ptr %NumBuckets, align 8 %idx.ext.i.i.i = zext i32 %4 to i64 - %add.ptr.i.i.i = getelementptr inbounds %"struct.llvh::detail::DenseMapPair", ptr %call.i, i64 %idx.ext.i.i.i + %add.ptr.i.idx.i.i = mul nuw nsw i64 %idx.ext.i.i.i, 24 + %add.ptr.i.ptr.i.i = getelementptr inbounds i8, ptr %call.i, i64 %add.ptr.i.idx.i.i %cmp.not3.i.i = icmp eq i32 %4, 0 br i1 %cmp.not3.i.i, label %_ZN4llvh12DenseMapBaseINS_8DenseMapINS_9StringRefEPN6hermes12UniqueStringENS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_S5_EEEES2_S5_S7_SA_E9initEmptyEv.exit.i, label %for.body.i.i @@ -1955,7 +1958,7 @@ for.body.i.i: ; preds = %if.end, %for.body.i %EmptyKey.sroa.2.0.call4.sroa_idx.i.i = getelementptr inbounds i8, ptr %B.04.i.i, i64 8 store i64 0, ptr %EmptyKey.sroa.2.0.call4.sroa_idx.i.i, align 8 %incdec.ptr.i.i = getelementptr inbounds i8, ptr %B.04.i.i, i64 24 - %cmp.not.i.i = icmp eq ptr %incdec.ptr.i.i, %add.ptr.i.i.i + %cmp.not.i.i = icmp eq ptr %incdec.ptr.i.i, %add.ptr.i.ptr.i.i br i1 %cmp.not.i.i, label %_ZN4llvh12DenseMapBaseINS_8DenseMapINS_9StringRefEPN6hermes12UniqueStringENS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_S5_EEEES2_S5_S7_SA_E9initEmptyEv.exit.i, label %for.body.i.i, !llvm.loop !29 _ZN4llvh12DenseMapBaseINS_8DenseMapINS_9StringRefEPN6hermes12UniqueStringENS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_S5_EEEES2_S5_S7_SA_E9initEmptyEv.exit.i: ; preds = %for.body.i.i, %if.end @@ -1985,7 +1988,7 @@ if.then.i: ; preds = %_ZN4llvh12DenseMapI if.end.i5: ; preds = %if.then.i, %_ZN4llvh12DenseMapInfoINS_9StringRefEE7isEqualES1_S1_.exit.i %incdec.ptr.i6 = getelementptr inbounds i8, ptr %B.027.i, i64 24 - %cmp.not.i7 = icmp eq ptr %incdec.ptr.i6, %add.ptr + %cmp.not.i7 = icmp eq ptr %incdec.ptr.i6, %add.ptr.ptr br i1 %cmp.not.i7, label %_ZN4llvh12DenseMapBaseINS_8DenseMapINS_9StringRefEPN6hermes12UniqueStringENS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_S5_EEEES2_S5_S7_SA_E18moveFromOldBucketsEPSA_SD_.exit, label %_ZN4llvh12DenseMapInfoINS_9StringRefEE7isEqualES1_S1_.exit.i, !llvm.loop !30 _ZN4llvh12DenseMapBaseINS_8DenseMapINS_9StringRefEPN6hermes12UniqueStringENS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_S5_EEEES2_S5_S7_SA_E18moveFromOldBucketsEPSA_SD_.exit: ; preds = %if.end.i5, %_ZN4llvh12DenseMapBaseINS_8DenseMapINS_9StringRefEPN6hermes12UniqueStringENS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_S5_EEEES2_S5_S7_SA_E9initEmptyEv.exit.i diff --git a/bench/hermes/optimized/JSParserImpl-jsx.cpp.ll b/bench/hermes/optimized/JSParserImpl-jsx.cpp.ll index 8d97b63e175..db60f494256 100644 --- a/bench/hermes/optimized/JSParserImpl-jsx.cpp.ll +++ b/bench/hermes/optimized/JSParserImpl-jsx.cpp.ll @@ -2706,7 +2706,8 @@ if.then: ; preds = %_ZN4llvh8DenseMapIN store i32 0, ptr %NumTombstones.i.i.i, align 4 %3 = load i32, ptr %NumBuckets, align 8 %idx.ext.i.i = zext i32 %3 to i64 - %add.ptr.i.i = getelementptr inbounds %"struct.llvh::detail::DenseMapPair", ptr %call.i, i64 %idx.ext.i.i + %add.ptr.i.idx.i = mul nuw nsw i64 %idx.ext.i.i, 24 + %add.ptr.i.ptr.i = getelementptr inbounds i8, ptr %call.i, i64 %add.ptr.i.idx.i %cmp.not3.i = icmp eq i32 %3, 0 br i1 %cmp.not3.i, label %return, label %for.body.i @@ -2716,19 +2717,21 @@ for.body.i: ; preds = %if.then, %for.body. %EmptyKey.sroa.2.0.call4.sroa_idx.i = getelementptr inbounds i8, ptr %B.04.i, i64 8 store i64 0, ptr %EmptyKey.sroa.2.0.call4.sroa_idx.i, align 8 %incdec.ptr.i = getelementptr inbounds i8, ptr %B.04.i, i64 24 - %cmp.not.i = icmp eq ptr %incdec.ptr.i, %add.ptr.i.i + %cmp.not.i = icmp eq ptr %incdec.ptr.i, %add.ptr.i.ptr.i br i1 %cmp.not.i, label %return, label %for.body.i, !llvm.loop !15 if.end: ; preds = %_ZN4llvh8DenseMapINS_9StringRefEPN6hermes12UniqueStringENS_12DenseMapInfoIS1_EENS_6detail12DenseMapPairIS1_S4_EEE15allocateBucketsEj.exit %idx.ext = zext i32 %0 to i64 - %add.ptr = getelementptr inbounds %"struct.llvh::detail::DenseMapPair", ptr %1, i64 %idx.ext + %add.ptr.idx = mul nuw nsw i64 %idx.ext, 24 + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr.idx %NumEntries.i.i.i.i = getelementptr inbounds i8, ptr %this, i64 8 store i32 0, ptr %NumEntries.i.i.i.i, align 8 %NumTombstones.i.i.i.i = getelementptr inbounds i8, ptr %this, i64 12 store i32 0, ptr %NumTombstones.i.i.i.i, align 4 %4 = load i32, ptr %NumBuckets, align 8 %idx.ext.i.i.i = zext i32 %4 to i64 - %add.ptr.i.i.i = getelementptr inbounds %"struct.llvh::detail::DenseMapPair", ptr %call.i, i64 %idx.ext.i.i.i + %add.ptr.i.idx.i.i = mul nuw nsw i64 %idx.ext.i.i.i, 24 + %add.ptr.i.ptr.i.i = getelementptr inbounds i8, ptr %call.i, i64 %add.ptr.i.idx.i.i %cmp.not3.i.i = icmp eq i32 %4, 0 br i1 %cmp.not3.i.i, label %_ZN4llvh12DenseMapBaseINS_8DenseMapINS_9StringRefEPN6hermes12UniqueStringENS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_S5_EEEES2_S5_S7_SA_E9initEmptyEv.exit.i, label %for.body.i.i @@ -2738,7 +2741,7 @@ for.body.i.i: ; preds = %if.end, %for.body.i %EmptyKey.sroa.2.0.call4.sroa_idx.i.i = getelementptr inbounds i8, ptr %B.04.i.i, i64 8 store i64 0, ptr %EmptyKey.sroa.2.0.call4.sroa_idx.i.i, align 8 %incdec.ptr.i.i = getelementptr inbounds i8, ptr %B.04.i.i, i64 24 - %cmp.not.i.i = icmp eq ptr %incdec.ptr.i.i, %add.ptr.i.i.i + %cmp.not.i.i = icmp eq ptr %incdec.ptr.i.i, %add.ptr.i.ptr.i.i br i1 %cmp.not.i.i, label %_ZN4llvh12DenseMapBaseINS_8DenseMapINS_9StringRefEPN6hermes12UniqueStringENS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_S5_EEEES2_S5_S7_SA_E9initEmptyEv.exit.i, label %for.body.i.i, !llvm.loop !15 _ZN4llvh12DenseMapBaseINS_8DenseMapINS_9StringRefEPN6hermes12UniqueStringENS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_S5_EEEES2_S5_S7_SA_E9initEmptyEv.exit.i: ; preds = %for.body.i.i, %if.end @@ -2768,7 +2771,7 @@ if.then.i: ; preds = %_ZN4llvh12DenseMapI if.end.i5: ; preds = %if.then.i, %_ZN4llvh12DenseMapInfoINS_9StringRefEE7isEqualES1_S1_.exit.i %incdec.ptr.i6 = getelementptr inbounds i8, ptr %B.027.i, i64 24 - %cmp.not.i7 = icmp eq ptr %incdec.ptr.i6, %add.ptr + %cmp.not.i7 = icmp eq ptr %incdec.ptr.i6, %add.ptr.ptr br i1 %cmp.not.i7, label %_ZN4llvh12DenseMapBaseINS_8DenseMapINS_9StringRefEPN6hermes12UniqueStringENS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_S5_EEEES2_S5_S7_SA_E18moveFromOldBucketsEPSA_SD_.exit, label %_ZN4llvh12DenseMapInfoINS_9StringRefEE7isEqualES1_S1_.exit.i, !llvm.loop !16 _ZN4llvh12DenseMapBaseINS_8DenseMapINS_9StringRefEPN6hermes12UniqueStringENS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_S5_EEEES2_S5_S7_SA_E18moveFromOldBucketsEPSA_SD_.exit: ; preds = %if.end.i5, %_ZN4llvh12DenseMapBaseINS_8DenseMapINS_9StringRefEPN6hermes12UniqueStringENS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_S5_EEEES2_S5_S7_SA_E9initEmptyEv.exit.i diff --git a/bench/hermes/optimized/Object.cpp.ll b/bench/hermes/optimized/Object.cpp.ll index 5eae0b5caec..5736f3e8778 100644 --- a/bench/hermes/optimized/Object.cpp.ll +++ b/bench/hermes/optimized/Object.cpp.ll @@ -4498,7 +4498,8 @@ _ZN4llvh11safe_mallocEm.exit.i.i: ; preds = %if.then.i.i.i, %if. %43 = load ptr, ptr %newProps, align 8 %44 = load i32, ptr %Size.i.i.i.i.i, align 8 %conv.i5.i.i = zext i32 %44 to i64 - %add.ptr.i30.i.i = getelementptr inbounds %struct.NewProps, ptr %43, i64 %conv.i5.i.i + %add.ptr.i30.idx.i.i = shl nuw nsw i64 %conv.i5.i.i, 4 + %add.ptr.i30.ptr.i.i = getelementptr inbounds i8, ptr %43, i64 %add.ptr.i30.idx.i.i %cmp.i.i.not4.i.i.i.i.i.i = icmp eq i32 %44, 0 br i1 %cmp.i.i.not4.i.i.i.i.i.i, label %_ZN4llvh23SmallVectorTemplateBaseIZN6hermes2vmL30objectDefinePropertiesInternalERNS2_7RuntimeENS2_6HandleINS2_11HermesValueEEES7_E8NewPropsLb0EE18uninitialized_moveIPS8_SB_EEvT_SC_T0_.exit.i.i, label %for.body.i.i.i.i.i.i @@ -4513,7 +4514,7 @@ for.body.i.i.i.i.i.i: ; preds = %_ZN4llvh11safe_mall store i64 %46, ptr %valueOrAccessor.i.i.i.i.i.i.i.i, align 8 %incdec.ptr.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.05.i.i.i.i.i.i, i64 16 %incdec.ptr.i.i.i.i.i.i116 = getelementptr inbounds i8, ptr %__cur.06.i.i.i.i.i.i, i64 16 - %cmp.i.i.not.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i, %add.ptr.i30.i.i + %cmp.i.i.not.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i, %add.ptr.i30.ptr.i.i br i1 %cmp.i.i.not.i.i.i.i.i.i, label %_ZN4llvh23SmallVectorTemplateBaseIZN6hermes2vmL30objectDefinePropertiesInternalERNS2_7RuntimeENS2_6HandleINS2_11HermesValueEEES7_E8NewPropsLb0EE18uninitialized_moveIPS8_SB_EEvT_SC_T0_.exit.i.i, label %for.body.i.i.i.i.i.i, !llvm.loop !48 _ZN4llvh23SmallVectorTemplateBaseIZN6hermes2vmL30objectDefinePropertiesInternalERNS2_7RuntimeENS2_6HandleINS2_11HermesValueEEES7_E8NewPropsLb0EE18uninitialized_moveIPS8_SB_EEvT_SC_T0_.exit.i.i: ; preds = %for.body.i.i.i.i.i.i, %_ZN4llvh11safe_mallocEm.exit.i.i @@ -4558,7 +4559,8 @@ for.end: ; preds = %for.inc %.pre = load ptr, ptr %newProps, align 8 %.pre234 = load i32, ptr %Size.i.i.i.i.i, align 8 %conv.i = zext i32 %.pre234 to i64 - %add.ptr.i = getelementptr inbounds %struct.NewProps, ptr %.pre, i64 %conv.i + %add.ptr.i.idx = shl nuw nsw i64 %conv.i, 4 + %add.ptr.i.ptr = getelementptr inbounds i8, ptr %.pre, i64 %add.ptr.i.idx %cmp120.not230 = icmp eq i32 %.pre234, 0 br i1 %cmp120.not230, label %for.end154, label %for.body121.lr.ph @@ -4568,7 +4570,7 @@ for.body121.lr.ph: ; preds = %for.end for.cond119: ; preds = %_ZNK6hermes2vm13HermesValue329unboxToHVERNS0_11PointerBaseE.exit194 %incdec.ptr = getelementptr inbounds i8, ptr %__begin2.0231, i64 16 - %cmp120.not = icmp eq ptr %incdec.ptr, %add.ptr.i + %cmp120.not = icmp eq ptr %incdec.ptr, %add.ptr.i.ptr br i1 %cmp120.not, label %for.end154, label %for.body121 for.body121: ; preds = %for.body121.lr.ph, %for.cond119 diff --git a/bench/hermes/optimized/PredefinedStringIDs.cpp.ll b/bench/hermes/optimized/PredefinedStringIDs.cpp.ll index 94fd20069a4..8b00e623119 100644 --- a/bench/hermes/optimized/PredefinedStringIDs.cpp.ll +++ b/bench/hermes/optimized/PredefinedStringIDs.cpp.ll @@ -481,7 +481,8 @@ if.then: ; preds = %_ZN4llvh8DenseMapIN store i32 0, ptr %NumTombstones.i.i.i, align 4 %3 = load i32, ptr %NumBuckets, align 8 %idx.ext.i.i = zext i32 %3 to i64 - %add.ptr.i.i = getelementptr inbounds %"struct.llvh::detail::DenseMapPair", ptr %call.i, i64 %idx.ext.i.i + %add.ptr.i.idx.i = mul nuw nsw i64 %idx.ext.i.i, 24 + %add.ptr.i.ptr.i = getelementptr inbounds i8, ptr %call.i, i64 %add.ptr.i.idx.i %cmp.not3.i = icmp eq i32 %3, 0 br i1 %cmp.not3.i, label %return, label %for.body.i @@ -491,19 +492,21 @@ for.body.i: ; preds = %if.then, %for.body. %EmptyKey.sroa.2.0.call4.sroa_idx.i = getelementptr inbounds i8, ptr %B.04.i, i64 8 store i64 0, ptr %EmptyKey.sroa.2.0.call4.sroa_idx.i, align 8 %incdec.ptr.i = getelementptr inbounds i8, ptr %B.04.i, i64 24 - %cmp.not.i = icmp eq ptr %incdec.ptr.i, %add.ptr.i.i + %cmp.not.i = icmp eq ptr %incdec.ptr.i, %add.ptr.i.ptr.i br i1 %cmp.not.i, label %return, label %for.body.i, !llvm.loop !11 if.end: ; preds = %_ZN4llvh8DenseMapINS_9StringRefEN6hermes2vm8SymbolIDENS_12DenseMapInfoIS1_EENS_6detail12DenseMapPairIS1_S4_EEE15allocateBucketsEj.exit %idx.ext = zext i32 %0 to i64 - %add.ptr = getelementptr inbounds %"struct.llvh::detail::DenseMapPair", ptr %1, i64 %idx.ext + %add.ptr.idx = mul nuw nsw i64 %idx.ext, 24 + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr.idx %NumEntries.i.i.i.i = getelementptr inbounds i8, ptr %this, i64 8 store i32 0, ptr %NumEntries.i.i.i.i, align 8 %NumTombstones.i.i.i.i = getelementptr inbounds i8, ptr %this, i64 12 store i32 0, ptr %NumTombstones.i.i.i.i, align 4 %4 = load i32, ptr %NumBuckets, align 8 %idx.ext.i.i.i = zext i32 %4 to i64 - %add.ptr.i.i.i = getelementptr inbounds %"struct.llvh::detail::DenseMapPair", ptr %call.i, i64 %idx.ext.i.i.i + %add.ptr.i.idx.i.i = mul nuw nsw i64 %idx.ext.i.i.i, 24 + %add.ptr.i.ptr.i.i = getelementptr inbounds i8, ptr %call.i, i64 %add.ptr.i.idx.i.i %cmp.not3.i.i = icmp eq i32 %4, 0 br i1 %cmp.not3.i.i, label %_ZN4llvh12DenseMapBaseINS_8DenseMapINS_9StringRefEN6hermes2vm8SymbolIDENS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_S5_EEEES2_S5_S7_SA_E9initEmptyEv.exit.i, label %for.body.i.i @@ -513,7 +516,7 @@ for.body.i.i: ; preds = %if.end, %for.body.i %EmptyKey.sroa.2.0.call4.sroa_idx.i.i = getelementptr inbounds i8, ptr %B.04.i.i, i64 8 store i64 0, ptr %EmptyKey.sroa.2.0.call4.sroa_idx.i.i, align 8 %incdec.ptr.i.i = getelementptr inbounds i8, ptr %B.04.i.i, i64 24 - %cmp.not.i.i = icmp eq ptr %incdec.ptr.i.i, %add.ptr.i.i.i + %cmp.not.i.i = icmp eq ptr %incdec.ptr.i.i, %add.ptr.i.ptr.i.i br i1 %cmp.not.i.i, label %_ZN4llvh12DenseMapBaseINS_8DenseMapINS_9StringRefEN6hermes2vm8SymbolIDENS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_S5_EEEES2_S5_S7_SA_E9initEmptyEv.exit.i, label %for.body.i.i, !llvm.loop !11 _ZN4llvh12DenseMapBaseINS_8DenseMapINS_9StringRefEN6hermes2vm8SymbolIDENS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_S5_EEEES2_S5_S7_SA_E9initEmptyEv.exit.i: ; preds = %for.body.i.i, %if.end @@ -543,7 +546,7 @@ if.then.i: ; preds = %_ZN4llvh12DenseMapI if.end.i5: ; preds = %if.then.i, %_ZN4llvh12DenseMapInfoINS_9StringRefEE7isEqualES1_S1_.exit.i %incdec.ptr.i6 = getelementptr inbounds i8, ptr %B.027.i, i64 24 - %cmp.not.i7 = icmp eq ptr %incdec.ptr.i6, %add.ptr + %cmp.not.i7 = icmp eq ptr %incdec.ptr.i6, %add.ptr.ptr br i1 %cmp.not.i7, label %_ZN4llvh12DenseMapBaseINS_8DenseMapINS_9StringRefEN6hermes2vm8SymbolIDENS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_S5_EEEES2_S5_S7_SA_E18moveFromOldBucketsEPSA_SD_.exit, label %_ZN4llvh12DenseMapInfoINS_9StringRefEE7isEqualES1_S1_.exit.i, !llvm.loop !12 _ZN4llvh12DenseMapBaseINS_8DenseMapINS_9StringRefEN6hermes2vm8SymbolIDENS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_S5_EEEES2_S5_S7_SA_E18moveFromOldBucketsEPSA_SD_.exit: ; preds = %if.end.i5, %_ZN4llvh12DenseMapBaseINS_8DenseMapINS_9StringRefEN6hermes2vm8SymbolIDENS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_S5_EEEES2_S5_S7_SA_E9initEmptyEv.exit.i diff --git a/bench/hermes/optimized/SamplingProfilerPosix.cpp.ll b/bench/hermes/optimized/SamplingProfilerPosix.cpp.ll index 0f1508ef7f4..027e3e60486 100644 --- a/bench/hermes/optimized/SamplingProfilerPosix.cpp.ll +++ b/bench/hermes/optimized/SamplingProfilerPosix.cpp.ll @@ -12,11 +12,6 @@ target triple = "x86_64-unknown-linux-gnu" %"class.std::tuple" = type { %"struct.std::_Tuple_impl" } %"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.41" } %"struct.std::_Head_base.41" = type { ptr } -%"struct.llvh::detail::DenseMapPair" = type { %"struct.std::pair" } -%"struct.std::pair" = type { i64, %"class.std::__cxx11::basic_string" } -%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string::_Alloc_hider", i64, %union.anon } -%"struct.std::__cxx11::basic_string::_Alloc_hider" = type { ptr } -%union.anon = type { i64, [8 x i8] } $_ZN6hermes2vm16SamplingProfilerD2Ev = comdat any @@ -480,7 +475,8 @@ _ZNSt13unordered_setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4hash for.body.preheader.i.i: ; preds = %_ZNSt13unordered_setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4hashIS5_ESt8equal_toIS5_ESaIS5_EED2Ev.exit %idx.ext.i.i.i = zext i32 %7 to i64 - %add.ptr.i.i.i = getelementptr inbounds %"struct.llvh::detail::DenseMapPair", ptr %.pre1.i, i64 %idx.ext.i.i.i + %add.ptr.i.idx.i.i = mul nuw nsw i64 %idx.ext.i.i.i, 40 + %add.ptr.i.ptr.i.i = getelementptr inbounds i8, ptr %.pre1.i, i64 %add.ptr.i.idx.i.i br label %for.body.i.i for.body.i.i: ; preds = %if.end13.i.i, %for.body.preheader.i.i @@ -496,7 +492,7 @@ if.then11.i.i: ; preds = %for.body.i.i if.end13.i.i: ; preds = %if.then11.i.i, %for.body.i.i %incdec.ptr.i.i = getelementptr inbounds i8, ptr %P.08.i.i, i64 40 - %cmp6.not.i.i = icmp eq ptr %incdec.ptr.i.i, %add.ptr.i.i.i + %cmp6.not.i.i = icmp eq ptr %incdec.ptr.i.i, %add.ptr.i.ptr.i.i br i1 %cmp6.not.i.i, label %_ZN4llvh12DenseMapBaseINS_8DenseMapImNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_12DenseMapInfoImEENS_6detail12DenseMapPairImS7_EEEEmS7_S9_SC_E10destroyAllEv.exit.loopexit.i, label %for.body.i.i, !llvm.loop !13 _ZN4llvh12DenseMapBaseINS_8DenseMapImNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_12DenseMapInfoImEENS_6detail12DenseMapPairImS7_EEEEmS7_S9_SC_E10destroyAllEv.exit.loopexit.i: ; preds = %if.end13.i.i diff --git a/bench/hermes/optimized/SmallPtrSet.cpp.ll b/bench/hermes/optimized/SmallPtrSet.cpp.ll index cf15f171141..8c61c1932b6 100644 --- a/bench/hermes/optimized/SmallPtrSet.cpp.ll +++ b/bench/hermes/optimized/SmallPtrSet.cpp.ll @@ -183,7 +183,8 @@ entry: %3 = load i32, ptr %CurArraySize.i, align 8 %cond.v.v.i = select i1 %cmp.i.i, i32 %2, i32 %3 %cond.v.i = zext i32 %cond.v.v.i to i64 - %cond.i = getelementptr inbounds ptr, ptr %0, i64 %cond.v.i + %cond.i.idx = shl nuw nsw i64 %cond.v.i, 3 + %cond.i.ptr = getelementptr inbounds i8, ptr %0, i64 %cond.i.idx %conv = zext i32 %NewSize to i64 %mul = shl nuw nsw i64 %conv, 3 %call.i = tail call noalias ptr @malloc(i64 noundef %mul) #14 @@ -260,7 +261,7 @@ _ZNK4llvh19SmallPtrSetImplBase13FindBucketForEPKv.exit: ; preds = %if.end.i, %if for.inc: ; preds = %for.body, %_ZNK4llvh19SmallPtrSetImplBase13FindBucketForEPKv.exit %incdec.ptr = getelementptr inbounds i8, ptr %BucketPtr.017, i64 8 - %cmp.not = icmp eq ptr %incdec.ptr, %cond.i + %cmp.not = icmp eq ptr %incdec.ptr, %cond.i.ptr br i1 %cmp.not, label %for.end, label %for.body, !llvm.loop !7 for.end: ; preds = %for.inc, %_ZN4llvh11safe_mallocEm.exit @@ -815,7 +816,8 @@ if.end49: ; preds = %land.lhs.true29 %29 = load i32, ptr %NumNonEmpty50, align 4 %30 = tail call i32 @llvm.umin.i32(i32 %28, i32 %29) %idx.ext55 = zext i32 %30 to i64 - %add.ptr56 = getelementptr inbounds ptr, ptr %1, i64 %idx.ext55 + %add.ptr56.idx = shl nuw nsw i64 %idx.ext55, 3 + %add.ptr56.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr56.idx %cmp.not5.i = icmp eq i32 %30, 0 br i1 %cmp.not5.i, label %_ZSt11swap_rangesIPPKvS2_ET0_T_S4_S3_.exit, label %for.body.i @@ -828,7 +830,7 @@ for.body.i: ; preds = %if.end49, %for.body store ptr %31, ptr %__first2.addr.07.i, align 8 %incdec.ptr.i = getelementptr inbounds i8, ptr %__first1.addr.06.i, i64 8 %incdec.ptr1.i = getelementptr inbounds i8, ptr %__first2.addr.07.i, i64 8 - %cmp.not.i = icmp eq ptr %incdec.ptr.i, %add.ptr56 + %cmp.not.i = icmp eq ptr %incdec.ptr.i, %add.ptr56.ptr br i1 %cmp.not.i, label %_ZSt11swap_rangesIPPKvS2_ET0_T_S4_S3_.exit.loopexit, label %for.body.i, !llvm.loop !8 _ZSt11swap_rangesIPPKvS2_ET0_T_S4_S3_.exit.loopexit: ; preds = %for.body.i diff --git a/bench/hermes/optimized/String.cpp.ll b/bench/hermes/optimized/String.cpp.ll index d926db378d9..1377a3bc00a 100644 --- a/bench/hermes/optimized/String.cpp.ll +++ b/bench/hermes/optimized/String.cpp.ll @@ -7500,7 +7500,8 @@ entry: br i1 %useCurrentLocale, label %if.end175, label %if.then if.then: ; preds = %entry - %add.ptr.i = getelementptr inbounds i16, ptr %1, i64 %conv.i.i + %add.ptr.i.idx = shl nuw nsw i64 %conv.i.i, 1 + %add.ptr.i.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr.i.idx %cmp.not136 = icmp eq i32 %2, 0 br i1 %upperCase, label %if.then5, label %if.else @@ -7517,7 +7518,7 @@ for.body: ; preds = %if.then5, %for.body %5 = icmp ult i16 %4, -26 %tobool17 = select i1 %5, i1 %noop.0138, i1 false %incdec.ptr = getelementptr inbounds i8, ptr %__begin4.0137, i64 2 - %cmp.not = icmp eq ptr %incdec.ptr, %add.ptr.i + %cmp.not = icmp eq ptr %incdec.ptr, %add.ptr.i.ptr br i1 %cmp.not, label %if.end, label %for.body if.else: ; preds = %if.then @@ -7533,7 +7534,7 @@ for.body26: ; preds = %if.else, %for.body2 %8 = icmp ult i16 %7, -26 %tobool43 = select i1 %8, i1 %noop.1133, i1 false %incdec.ptr46 = getelementptr inbounds i8, ptr %__begin420.0132, i64 2 - %cmp25.not = icmp eq ptr %incdec.ptr46, %add.ptr.i + %cmp25.not = icmp eq ptr %incdec.ptr46, %add.ptr.i.ptr br i1 %cmp25.not, label %if.end, label %for.body26 if.end: ; preds = %for.body26, %for.body @@ -7639,7 +7640,8 @@ if.end109: ; preds = %if.end.i.i.i.i.i.i. %ref.tmp7.sroa.47.8.index_.i.i.i.i.sroa_idx.i = getelementptr inbounds i8, ptr %builder, i64 16 store ptr %runtime, ptr %ref.tmp7.sroa.47.8.index_.i.i.i.i.sroa_idx.i, align 8, !alias.scope !127 %hasVal.i.i.i = getelementptr inbounds i8, ptr %builder, i64 24 - %add.ptr.i52 = getelementptr inbounds i16, ptr %1, i64 %conv.i.i + %add.ptr.i52.idx = shl nuw nsw i64 %conv.i.i, 1 + %add.ptr.i52.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr.i52.idx %cmp115.not144 = icmp eq i32 %2, 0 br i1 %upperCase, label %if.then111, label %if.else136 @@ -7744,7 +7746,7 @@ _ZN6hermes2vm15StringPrimitive26castToUTF16PointerForWriteEv.exit.i: ; preds = % _ZN6hermes2vm13StringBuilder15appendCharacterEDs.exit: ; preds = %_ZN6hermes2vm15StringPrimitive26castToASCIIPointerForWriteEv.exit.i, %if.else.i, %_ZN6hermes2vm15StringPrimitive26castToUTF16PointerForWriteEv.exit.i call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %ch.addr.i) %incdec.ptr134 = getelementptr inbounds i8, ptr %__begin5.0145, i64 2 - %cmp115.not = icmp eq ptr %incdec.ptr134, %add.ptr.i52 + %cmp115.not = icmp eq ptr %incdec.ptr134, %add.ptr.i52.ptr br i1 %cmp115.not, label %cleanup, label %for.body116 if.else136: ; preds = %if.end109 @@ -7848,7 +7850,7 @@ _ZN6hermes2vm15StringPrimitive26castToUTF16PointerForWriteEv.exit.i70: ; preds = _ZN6hermes2vm13StringBuilder15appendCharacterEDs.exit102: ; preds = %_ZN6hermes2vm15StringPrimitive26castToASCIIPointerForWriteEv.exit.i91, %if.else.i82, %_ZN6hermes2vm15StringPrimitive26castToUTF16PointerForWriteEv.exit.i70 call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %ch.addr.i58) %incdec.ptr161 = getelementptr inbounds i8, ptr %__begin5138.0143, i64 2 - %cmp143.not = icmp eq ptr %incdec.ptr161, %add.ptr.i52 + %cmp143.not = icmp eq ptr %incdec.ptr161, %add.ptr.i52.ptr br i1 %cmp143.not, label %cleanup, label %for.body144 cleanup: ; preds = %_ZN6hermes2vm13StringBuilder15appendCharacterEDs.exit102, %_ZN6hermes2vm13StringBuilder15appendCharacterEDs.exit, %if.then111, %if.else136 diff --git a/bench/hermes/optimized/StringRef.cpp.ll b/bench/hermes/optimized/StringRef.cpp.ll index 7dc2d48c18b..06d5e97eb59 100644 --- a/bench/hermes/optimized/StringRef.cpp.ll +++ b/bench/hermes/optimized/StringRef.cpp.ll @@ -2646,28 +2646,29 @@ delete.notnull.i: ; preds = %entry br i1 %arraydestroy.isempty.i, label %_ZNKSt14default_deleteIA_N4llvh7APFloatEEclIS1_EENSt9enable_ifIXsr14is_convertibleIPA_T_PS2_EE5valueEvE4typeEPS6_.exit, label %arraydestroy.body.i.preheader arraydestroy.body.i.preheader: ; preds = %delete.notnull.i - %delete.end.i = getelementptr inbounds %"class.llvh::APFloat", ptr %0, i64 %2 + %delete.end.idx.i = shl nsw i64 %2, 5 + %invariant.gep = getelementptr i8, ptr %0, i64 8 %call.i1 = tail call noundef nonnull align 1 ptr @_ZN4llvh11APFloatBase15PPCDoubleDoubleEv() #21 br label %arraydestroy.body.i arraydestroy.body.i: ; preds = %arraydestroy.body.i.preheader, %_ZN4llvh7APFloatD2Ev.exit.i - %arraydestroy.elementPast.i = phi ptr [ %arraydestroy.element.i, %_ZN4llvh7APFloatD2Ev.exit.i ], [ %delete.end.i, %arraydestroy.body.i.preheader ] - %arraydestroy.element.i = getelementptr inbounds i8, ptr %arraydestroy.elementPast.i, i64 -32 - %U.i.i = getelementptr inbounds i8, ptr %arraydestroy.elementPast.i, i64 -24 - %3 = load ptr, ptr %U.i.i, align 8 + %arraydestroy.elementPast.idx.i = phi i64 [ %arraydestroy.elementPast.add.i, %_ZN4llvh7APFloatD2Ev.exit.i ], [ %delete.end.idx.i, %arraydestroy.body.i.preheader ] + %arraydestroy.elementPast.add.i = add nsw i64 %arraydestroy.elementPast.idx.i, -32 + %gep = getelementptr i8, ptr %invariant.gep, i64 %arraydestroy.elementPast.add.i + %3 = load ptr, ptr %gep, align 8 %cmp.i2.not = icmp eq ptr %call.i1, %3 br i1 %cmp.i2.not, label %if.end.i.i.i, label %if.then.i.i.i if.then.i.i.i: ; preds = %arraydestroy.body.i - tail call void @_ZN4llvh6detail9IEEEFloatD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %U.i.i) #20 + tail call void @_ZN4llvh6detail9IEEEFloatD1Ev(ptr noundef nonnull align 8 dereferenceable(24) %gep) #20 br label %_ZN4llvh7APFloatD2Ev.exit.i if.end.i.i.i: ; preds = %arraydestroy.body.i - tail call void @_ZN4llvh6detail13DoubleAPFloatD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %U.i.i) #20 + tail call void @_ZN4llvh6detail13DoubleAPFloatD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %gep) #20 br label %_ZN4llvh7APFloatD2Ev.exit.i _ZN4llvh7APFloatD2Ev.exit.i: ; preds = %if.end.i.i.i, %if.then.i.i.i - %arraydestroy.done.i = icmp eq ptr %arraydestroy.element.i, %0 + %arraydestroy.done.i = icmp eq i64 %arraydestroy.elementPast.add.i, 0 br i1 %arraydestroy.done.i, label %_ZNKSt14default_deleteIA_N4llvh7APFloatEEclIS1_EENSt9enable_ifIXsr14is_convertibleIPA_T_PS2_EE5valueEvE4typeEPS6_.exit, label %arraydestroy.body.i _ZNKSt14default_deleteIA_N4llvh7APFloatEEclIS1_EENSt9enable_ifIXsr14is_convertibleIPA_T_PS2_EE5valueEvE4typeEPS6_.exit: ; preds = %_ZN4llvh7APFloatD2Ev.exit.i, %delete.notnull.i diff --git a/bench/hermes/optimized/StringSaver.cpp.ll b/bench/hermes/optimized/StringSaver.cpp.ll index a25c7788dd7..5974e0729a4 100644 --- a/bench/hermes/optimized/StringSaver.cpp.ll +++ b/bench/hermes/optimized/StringSaver.cpp.ll @@ -562,7 +562,8 @@ if.then: ; preds = %_ZN4llvh8DenseMapIN store i32 0, ptr %NumTombstones.i.i.i, align 4 %3 = load i32, ptr %NumBuckets, align 8 %idx.ext.i.i = zext i32 %3 to i64 - %add.ptr.i.i = getelementptr inbounds %"class.llvh::detail::DenseSetPair", ptr %call.i, i64 %idx.ext.i.i + %add.ptr.i.idx.i = shl nuw nsw i64 %idx.ext.i.i, 4 + %add.ptr.i.ptr.i = getelementptr inbounds i8, ptr %call.i, i64 %add.ptr.i.idx.i %cmp.not3.i = icmp eq i32 %3, 0 br i1 %cmp.not3.i, label %return, label %for.body.i @@ -572,19 +573,21 @@ for.body.i: ; preds = %if.then, %for.body. %EmptyKey.sroa.2.0.call4.sroa_idx.i = getelementptr inbounds i8, ptr %B.04.i, i64 8 store i64 0, ptr %EmptyKey.sroa.2.0.call4.sroa_idx.i, align 8 %incdec.ptr.i = getelementptr inbounds i8, ptr %B.04.i, i64 16 - %cmp.not.i = icmp eq ptr %incdec.ptr.i, %add.ptr.i.i + %cmp.not.i = icmp eq ptr %incdec.ptr.i, %add.ptr.i.ptr.i br i1 %cmp.not.i, label %return, label %for.body.i, !llvm.loop !11 if.end: ; preds = %_ZN4llvh8DenseMapINS_9StringRefENS_6detail13DenseSetEmptyENS_12DenseMapInfoIS1_EENS2_12DenseSetPairIS1_EEE15allocateBucketsEj.exit %idx.ext = zext i32 %0 to i64 - %add.ptr = getelementptr inbounds %"class.llvh::detail::DenseSetPair", ptr %1, i64 %idx.ext + %add.ptr.idx = shl nuw nsw i64 %idx.ext, 4 + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr.idx %NumEntries.i.i.i.i = getelementptr inbounds i8, ptr %this, i64 8 store i32 0, ptr %NumEntries.i.i.i.i, align 8 %NumTombstones.i.i.i.i = getelementptr inbounds i8, ptr %this, i64 12 store i32 0, ptr %NumTombstones.i.i.i.i, align 4 %4 = load i32, ptr %NumBuckets, align 8 %idx.ext.i.i.i = zext i32 %4 to i64 - %add.ptr.i.i.i = getelementptr inbounds %"class.llvh::detail::DenseSetPair", ptr %call.i, i64 %idx.ext.i.i.i + %add.ptr.i.idx.i.i = shl nuw nsw i64 %idx.ext.i.i.i, 4 + %add.ptr.i.ptr.i.i = getelementptr inbounds i8, ptr %call.i, i64 %add.ptr.i.idx.i.i %cmp.not3.i.i = icmp eq i32 %4, 0 br i1 %cmp.not3.i.i, label %_ZN4llvh12DenseMapBaseINS_8DenseMapINS_9StringRefENS_6detail13DenseSetEmptyENS_12DenseMapInfoIS2_EENS3_12DenseSetPairIS2_EEEES2_S4_S6_S8_E9initEmptyEv.exit.i, label %for.body.i.i @@ -594,7 +597,7 @@ for.body.i.i: ; preds = %if.end, %for.body.i %EmptyKey.sroa.2.0.call4.sroa_idx.i.i = getelementptr inbounds i8, ptr %B.04.i.i, i64 8 store i64 0, ptr %EmptyKey.sroa.2.0.call4.sroa_idx.i.i, align 8 %incdec.ptr.i.i = getelementptr inbounds i8, ptr %B.04.i.i, i64 16 - %cmp.not.i.i = icmp eq ptr %incdec.ptr.i.i, %add.ptr.i.i.i + %cmp.not.i.i = icmp eq ptr %incdec.ptr.i.i, %add.ptr.i.ptr.i.i br i1 %cmp.not.i.i, label %_ZN4llvh12DenseMapBaseINS_8DenseMapINS_9StringRefENS_6detail13DenseSetEmptyENS_12DenseMapInfoIS2_EENS3_12DenseSetPairIS2_EEEES2_S4_S6_S8_E9initEmptyEv.exit.i, label %for.body.i.i, !llvm.loop !11 _ZN4llvh12DenseMapBaseINS_8DenseMapINS_9StringRefENS_6detail13DenseSetEmptyENS_12DenseMapInfoIS2_EENS3_12DenseSetPairIS2_EEEES2_S4_S6_S8_E9initEmptyEv.exit.i: ; preds = %for.body.i.i, %if.end @@ -620,7 +623,7 @@ if.then.i: ; preds = %_ZN4llvh12DenseMapI if.end.i5: ; preds = %if.then.i, %_ZN4llvh12DenseMapInfoINS_9StringRefEE7isEqualES1_S1_.exit.i %incdec.ptr.i6 = getelementptr inbounds i8, ptr %B.025.i, i64 16 - %cmp.not.i7 = icmp eq ptr %incdec.ptr.i6, %add.ptr + %cmp.not.i7 = icmp eq ptr %incdec.ptr.i6, %add.ptr.ptr br i1 %cmp.not.i7, label %_ZN4llvh12DenseMapBaseINS_8DenseMapINS_9StringRefENS_6detail13DenseSetEmptyENS_12DenseMapInfoIS2_EENS3_12DenseSetPairIS2_EEEES2_S4_S6_S8_E18moveFromOldBucketsEPS8_SB_.exit, label %_ZN4llvh12DenseMapInfoINS_9StringRefEE7isEqualES1_S1_.exit.i, !llvm.loop !12 _ZN4llvh12DenseMapBaseINS_8DenseMapINS_9StringRefENS_6detail13DenseSetEmptyENS_12DenseMapInfoIS2_EENS3_12DenseSetPairIS2_EEEES2_S4_S6_S8_E18moveFromOldBucketsEPS8_SB_.exit: ; preds = %if.end.i5, %_ZN4llvh12DenseMapBaseINS_8DenseMapINS_9StringRefENS_6detail13DenseSetEmptyENS_12DenseMapInfoIS2_EENS3_12DenseSetPairIS2_EEEES2_S4_S6_S8_E9initEmptyEv.exit.i diff --git a/bench/hermes/optimized/UniquingFilenameTable.cpp.ll b/bench/hermes/optimized/UniquingFilenameTable.cpp.ll index 0884fd1426b..c661fa4b553 100644 --- a/bench/hermes/optimized/UniquingFilenameTable.cpp.ll +++ b/bench/hermes/optimized/UniquingFilenameTable.cpp.ll @@ -853,7 +853,8 @@ if.then: ; preds = %_ZN4llvh8DenseMapIN store i32 0, ptr %NumTombstones.i.i.i, align 4 %3 = load i32, ptr %NumBuckets, align 8 %idx.ext.i.i = zext i32 %3 to i64 - %add.ptr.i.i = getelementptr inbounds %"struct.llvh::detail::DenseMapPair", ptr %call.i, i64 %idx.ext.i.i + %add.ptr.i.idx.i = mul nuw nsw i64 %idx.ext.i.i, 24 + %add.ptr.i.ptr.i = getelementptr inbounds i8, ptr %call.i, i64 %add.ptr.i.idx.i %cmp.not3.i = icmp eq i32 %3, 0 br i1 %cmp.not3.i, label %return, label %for.body.i @@ -863,19 +864,21 @@ for.body.i: ; preds = %if.then, %for.body. %EmptyKey.sroa.2.0.call4.sroa_idx.i = getelementptr inbounds i8, ptr %B.04.i, i64 8 store i64 0, ptr %EmptyKey.sroa.2.0.call4.sroa_idx.i, align 8 %incdec.ptr.i = getelementptr inbounds i8, ptr %B.04.i, i64 24 - %cmp.not.i = icmp eq ptr %incdec.ptr.i, %add.ptr.i.i + %cmp.not.i = icmp eq ptr %incdec.ptr.i, %add.ptr.i.ptr.i br i1 %cmp.not.i, label %return, label %for.body.i, !llvm.loop !31 if.end: ; preds = %_ZN4llvh8DenseMapINS_9StringRefEjNS_12DenseMapInfoIS1_EENS_6detail12DenseMapPairIS1_jEEE15allocateBucketsEj.exit %idx.ext = zext i32 %0 to i64 - %add.ptr = getelementptr inbounds %"struct.llvh::detail::DenseMapPair", ptr %1, i64 %idx.ext + %add.ptr.idx = mul nuw nsw i64 %idx.ext, 24 + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr.idx %NumEntries.i.i.i.i = getelementptr inbounds i8, ptr %this, i64 8 store i32 0, ptr %NumEntries.i.i.i.i, align 8 %NumTombstones.i.i.i.i = getelementptr inbounds i8, ptr %this, i64 12 store i32 0, ptr %NumTombstones.i.i.i.i, align 4 %4 = load i32, ptr %NumBuckets, align 8 %idx.ext.i.i.i = zext i32 %4 to i64 - %add.ptr.i.i.i = getelementptr inbounds %"struct.llvh::detail::DenseMapPair", ptr %call.i, i64 %idx.ext.i.i.i + %add.ptr.i.idx.i.i = mul nuw nsw i64 %idx.ext.i.i.i, 24 + %add.ptr.i.ptr.i.i = getelementptr inbounds i8, ptr %call.i, i64 %add.ptr.i.idx.i.i %cmp.not3.i.i = icmp eq i32 %4, 0 br i1 %cmp.not3.i.i, label %_ZN4llvh12DenseMapBaseINS_8DenseMapINS_9StringRefEjNS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_jEEEES2_jS4_S7_E9initEmptyEv.exit.i, label %for.body.i.i @@ -885,7 +888,7 @@ for.body.i.i: ; preds = %if.end, %for.body.i %EmptyKey.sroa.2.0.call4.sroa_idx.i.i = getelementptr inbounds i8, ptr %B.04.i.i, i64 8 store i64 0, ptr %EmptyKey.sroa.2.0.call4.sroa_idx.i.i, align 8 %incdec.ptr.i.i = getelementptr inbounds i8, ptr %B.04.i.i, i64 24 - %cmp.not.i.i = icmp eq ptr %incdec.ptr.i.i, %add.ptr.i.i.i + %cmp.not.i.i = icmp eq ptr %incdec.ptr.i.i, %add.ptr.i.ptr.i.i br i1 %cmp.not.i.i, label %_ZN4llvh12DenseMapBaseINS_8DenseMapINS_9StringRefEjNS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_jEEEES2_jS4_S7_E9initEmptyEv.exit.i, label %for.body.i.i, !llvm.loop !31 _ZN4llvh12DenseMapBaseINS_8DenseMapINS_9StringRefEjNS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_jEEEES2_jS4_S7_E9initEmptyEv.exit.i: ; preds = %for.body.i.i, %if.end @@ -915,7 +918,7 @@ if.then.i: ; preds = %_ZN4llvh12DenseMapI if.end.i5: ; preds = %if.then.i, %_ZN4llvh12DenseMapInfoINS_9StringRefEE7isEqualES1_S1_.exit.i %incdec.ptr.i6 = getelementptr inbounds i8, ptr %B.027.i, i64 24 - %cmp.not.i7 = icmp eq ptr %incdec.ptr.i6, %add.ptr + %cmp.not.i7 = icmp eq ptr %incdec.ptr.i6, %add.ptr.ptr br i1 %cmp.not.i7, label %_ZN4llvh12DenseMapBaseINS_8DenseMapINS_9StringRefEjNS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_jEEEES2_jS4_S7_E18moveFromOldBucketsEPS7_SA_.exit, label %_ZN4llvh12DenseMapInfoINS_9StringRefEE7isEqualES1_S1_.exit.i, !llvm.loop !32 _ZN4llvh12DenseMapBaseINS_8DenseMapINS_9StringRefEjNS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_jEEEES2_jS4_S7_E18moveFromOldBucketsEPS7_SA_.exit: ; preds = %if.end.i5, %_ZN4llvh12DenseMapBaseINS_8DenseMapINS_9StringRefEjNS_12DenseMapInfoIS2_EENS_6detail12DenseMapPairIS2_jEEEES2_jS4_S7_E9initEmptyEv.exit.i diff --git a/bench/hermes/optimized/escape.cpp.ll b/bench/hermes/optimized/escape.cpp.ll index ebdd89d1d7b..9afa5cb0716 100644 --- a/bench/hermes/optimized/escape.cpp.ll +++ b/bench/hermes/optimized/escape.cpp.ll @@ -2989,9 +2989,9 @@ _ZN4llvh15SmallVectorImplIDsE7reserveEm.exit: ; preds = %if.end, %if.then.i2 br i1 %cmp16.not, label %if.end31, label %if.then17 if.then17: ; preds = %_ZN4llvh15SmallVectorImplIDsE7reserveEm.exit - %idx.neg = sub i64 0, %retval.0.i.i.i.i - %add.ptr21 = getelementptr inbounds i16, ptr %add.ptr.i83, i64 %idx.neg - %sub.ptr.rhs.cast.i.i.i.i38 = ptrtoint ptr %add.ptr21 to i64 + %.neg = mul i64 %retval.0.i.i.i.i, -2 + %add.ptr21.ptr = getelementptr inbounds i8, ptr %add.ptr.i83, i64 %.neg + %sub.ptr.rhs.cast.i.i.i.i38 = ptrtoint ptr %add.ptr21.ptr to i64 %sub.ptr.sub.i.i.i.i39 = sub i64 %sub.ptr.lhs.cast12, %sub.ptr.rhs.cast.i.i.i.i38 %sub.ptr.div.i.i.i.i40 = ashr exact i64 %sub.ptr.sub.i.i.i.i39, 1 %13 = load i32, ptr %Capacity.i.i23, align 4 @@ -3016,7 +3016,7 @@ if.then.i.i.i.i.i.i.i.i.i: ; preds = %if.end.i47 %14 = load ptr, ptr %this, align 8 %conv.i7.i = zext i32 %.pre11.i48 to i64 %add.ptr.i.i49 = getelementptr inbounds i16, ptr %14, i64 %conv.i7.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 2 %add.ptr.i.i49, ptr nonnull align 2 %add.ptr21, i64 %sub.ptr.sub.i.i.i.i39, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 2 %add.ptr.i.i49, ptr align 2 %add.ptr21.ptr, i64 %sub.ptr.sub.i.i.i.i39, i1 false) %.pre.i50 = load i32, ptr %Size.i, align 8 br label %_ZN4llvh15SmallVectorImplIDsE6appendISt13move_iteratorIPDsEvEEvT_S6_.exit @@ -3025,7 +3025,7 @@ _ZN4llvh15SmallVectorImplIDsE6appendISt13move_iteratorIPDsEvEEvT_S6_.exit: ; pre %16 = trunc i64 %sub.ptr.div.i.i.i.i40 to i32 %conv.i10.i51 = add i32 %15, %16 store i32 %conv.i10.i51, ptr %Size.i, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr21, %add.ptr10 + %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr21.ptr, %add.ptr10 br i1 %tobool.not.i.i.i.i.i, label %_ZSt13move_backwardIPDsS0_ET0_T_S2_S1_.exit, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %_ZN4llvh15SmallVectorImplIDsE6appendISt13move_iteratorIPDsEvEEvT_S6_.exit diff --git a/bench/hermes/optimized/hbc-deltaprep.cpp.ll b/bench/hermes/optimized/hbc-deltaprep.cpp.ll index 43702f2b944..9c388cc6898 100644 --- a/bench/hermes/optimized/hbc-deltaprep.cpp.ll +++ b/bench/hermes/optimized/hbc-deltaprep.cpp.ll @@ -67,7 +67,6 @@ target triple = "x86_64-unknown-linux-gnu" %"class.llvh::raw_ostream.base" = type <{ ptr, ptr, ptr, ptr, i32 }> %"class.llvh::cl::parser::OptionInfo" = type { %"class.llvh::cl::generic_parser_base::GenericOptionInfo", %"struct.llvh::cl::OptionValue" } %"class.llvh::cl::generic_parser_base::GenericOptionInfo" = type { %"class.llvh::StringRef", %"class.llvh::StringRef" } -%"struct.llvh::cl::OptionEnumValue" = type { %"class.llvh::StringRef", i32, %"class.llvh::StringRef" } %"class.llvh::cl::ValuesClass" = type { %"class.llvh::SmallVector.0" } %"class.llvh::SmallVector.0" = type { %"class.llvh::SmallVectorImpl.1", %"struct.llvh::SmallVectorStorage.4" } %"class.llvh::SmallVectorImpl.1" = type { %"class.llvh::SmallVectorTemplateBase.2" } @@ -1144,7 +1143,8 @@ entry: %Size.i.i.i.i = getelementptr inbounds i8, ptr %Ms, i64 8 %1 = load i32, ptr %Size.i.i.i.i, align 8 %conv.i.i.i.i = zext i32 %1 to i64 - %add.ptr.i.i.i.i = getelementptr inbounds %"struct.llvh::cl::OptionEnumValue", ptr %0, i64 %conv.i.i.i.i + %add.ptr.i.idx.i.i.i = mul nuw nsw i64 %conv.i.i.i.i, 40 + %add.ptr.i.ptr.i.i.i = getelementptr inbounds i8, ptr %0, i64 %add.ptr.i.idx.i.i.i %cmp.not5.i.i.i = icmp eq i32 %1, 0 br i1 %cmp.not5.i.i.i, label %_ZN4llvh2cl5applyINS0_3optIN6hermes3hbc12BytecodeFormELb0ENS0_6parserIS5_EEEENS0_11ValuesClassEJNS0_18NumOccurrencesFlagENS0_4descEEEEvPT_RKT0_DpRKT1_.exit, label %for.body.lr.ph.i.i.i @@ -1200,7 +1200,7 @@ _ZN4llvh2cl6parserIN6hermes3hbc12BytecodeFormEE16addLiteralOptionIiEEvNS_9String %7 = load ptr, ptr %Owner.i.i.i.i, align 8 tail call void @_ZN4llvh2cl16AddLiteralOptionERNS0_6OptionENS_9StringRefE(ptr noundef nonnull align 8 dereferenceable(145) %7, ptr %Value.sroa.0.0.copyload.i.i.i, i64 %Value.sroa.2.0.copyload.i.i.i) #18 %incdec.ptr.i.i.i = getelementptr inbounds i8, ptr %__begin3.06.i.i.i, i64 40 - %cmp.not.i.i.i = icmp eq ptr %incdec.ptr.i.i.i, %add.ptr.i.i.i.i + %cmp.not.i.i.i = icmp eq ptr %incdec.ptr.i.i.i, %add.ptr.i.ptr.i.i.i br i1 %cmp.not.i.i.i, label %_ZN4llvh2cl5applyINS0_3optIN6hermes3hbc12BytecodeFormELb0ENS0_6parserIS5_EEEENS0_11ValuesClassEJNS0_18NumOccurrencesFlagENS0_4descEEEEvPT_RKT0_DpRKT1_.exit, label %for.body.i.i.i _ZN4llvh2cl5applyINS0_3optIN6hermes3hbc12BytecodeFormELb0ENS0_6parserIS5_EEEENS0_11ValuesClassEJNS0_18NumOccurrencesFlagENS0_4descEEEEvPT_RKT0_DpRKT1_.exit: ; preds = %_ZN4llvh2cl6parserIN6hermes3hbc12BytecodeFormEE16addLiteralOptionIiEEvNS_9StringRefERKT_S7_.exit.i.i.i, %entry @@ -1272,7 +1272,8 @@ _ZN4llvh11safe_mallocEm.exit: ; preds = %if.end, %if.then.i %Size.i = getelementptr inbounds i8, ptr %this, i64 8 %2 = load i32, ptr %Size.i, align 8 %conv.i5 = zext i32 %2 to i64 - %add.ptr.i30 = getelementptr inbounds %"class.llvh::cl::parser::OptionInfo", ptr %1, i64 %conv.i5 + %add.ptr.i30.idx = mul nuw nsw i64 %conv.i5, 48 + %add.ptr.i30.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr.i30.idx %cmp.i.i.not5.i.i.i.i = icmp eq i32 %2, 0 br i1 %cmp.i.i.not5.i.i.i.i, label %_ZN4llvh23SmallVectorTemplateBaseINS_2cl6parserIN6hermes3hbc12BytecodeFormEE10OptionInfoELb0EE18uninitialized_moveIPS7_SA_EEvT_SB_T0_.exit, label %for.body.i.i.i.i @@ -1287,7 +1288,7 @@ for.body.i.i.i.i: ; preds = %_ZN4llvh11safe_mall store ptr getelementptr inbounds ({ [4 x ptr] }, ptr @_ZTVN4llvh2cl11OptionValueIN6hermes3hbc12BytecodeFormEEE, i64 0, inrange i32 0, i64 2), ptr %V.i.i.i.i.i.i, align 8 %incdec.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.06.i.i.i.i, i64 48 %incdec.ptr.i.i.i.i = getelementptr inbounds i8, ptr %__cur.07.i.i.i.i, i64 48 - %cmp.i.i.not.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i, %add.ptr.i30 + %cmp.i.i.not.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i, %add.ptr.i30.ptr br i1 %cmp.i.i.not.i.i.i.i, label %_ZN4llvh23SmallVectorTemplateBaseINS_2cl6parserIN6hermes3hbc12BytecodeFormEE10OptionInfoELb0EE18uninitialized_moveIPS7_SA_EEvT_SB_T0_.exit, label %for.body.i.i.i.i, !llvm.loop !22 _ZN4llvh23SmallVectorTemplateBaseINS_2cl6parserIN6hermes3hbc12BytecodeFormEE10OptionInfoELb0EE18uninitialized_moveIPS7_SA_EEvT_SB_T0_.exit: ; preds = %for.body.i.i.i.i, %_ZN4llvh11safe_mallocEm.exit diff --git a/bench/hermes/optimized/interp-dispatch-bench.cpp.ll b/bench/hermes/optimized/interp-dispatch-bench.cpp.ll index 615098b71a1..87501382198 100644 --- a/bench/hermes/optimized/interp-dispatch-bench.cpp.ll +++ b/bench/hermes/optimized/interp-dispatch-bench.cpp.ll @@ -167,14 +167,6 @@ target triple = "x86_64-unknown-linux-gnu" %"struct.llvh::AlignedCharArray.182" = type { [2 x i8] } %"class.hermes::vm::StringView" = type { %union.anon.184, i32, i32 } %union.anon.184 = type { ptr } -%"struct.llvh::detail::DenseMapPair.383" = type { %"struct.std::pair.384" } -%"struct.std::pair.384" = type { ptr, %"class.std::unique_ptr.269" } -%"class.std::unique_ptr.269" = type { %"struct.std::__uniq_ptr_data.270" } -%"struct.std::__uniq_ptr_data.270" = type { %"class.std::__uniq_ptr_impl.271" } -%"class.std::__uniq_ptr_impl.271" = type { %"class.std::tuple.272" } -%"class.std::tuple.272" = type { %"struct.std::_Tuple_impl.273" } -%"struct.std::_Tuple_impl.273" = type { %"struct.std::_Head_base.276" } -%"struct.std::_Head_base.276" = type { ptr } %"struct.std::array.446" = type { [20 x i8] } $_ZN4llvh2cl3optIdLb0ENS0_6parserIdEEED2Ev = comdat any @@ -6689,7 +6681,8 @@ entry: for.body.preheader: ; preds = %entry %1 = load ptr, ptr %this, align 8 %idx.ext.i = zext i32 %0 to i64 - %add.ptr.i = getelementptr inbounds %"struct.llvh::detail::DenseMapPair.383", ptr %1, i64 %idx.ext.i + %add.ptr.i.idx = shl nuw nsw i64 %idx.ext.i, 4 + %add.ptr.i.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr.i.idx br label %for.body for.body: ; preds = %for.body.preheader, %if.end13 @@ -6766,7 +6759,7 @@ _ZNSt10unique_ptrIN6hermes3hbc25BytecodeFunctionGeneratorESt14default_deleteIS2_ if.end13: ; preds = %for.body, %for.body, %_ZNSt10unique_ptrIN6hermes3hbc25BytecodeFunctionGeneratorESt14default_deleteIS2_EED2Ev.exit %incdec.ptr = getelementptr inbounds i8, ptr %P.08, i64 16 - %cmp6.not = icmp eq ptr %incdec.ptr, %add.ptr.i + %cmp6.not = icmp eq ptr %incdec.ptr, %add.ptr.i.ptr br i1 %cmp6.not, label %for.end, label %for.body, !llvm.loop !36 for.end: ; preds = %if.end13, %entry diff --git a/bench/hermes/optimized/print.cpp.ll b/bench/hermes/optimized/print.cpp.ll index 26ada44f53c..fbf5c19a1ae 100644 --- a/bench/hermes/optimized/print.cpp.ll +++ b/bench/hermes/optimized/print.cpp.ll @@ -22,8 +22,6 @@ target triple = "x86_64-unknown-linux-gnu" %"struct.llvh::AlignedCharArray.167" = type { [2 x i8] } %"class.hermes::vm::StringView" = type { %union.anon.169, i32, i32 } %union.anon.169 = type { ptr } -%"class.hermes::vm::PinnedHermesValue" = type { %"class.hermes::vm::HermesValue" } -%"class.hermes::vm::HermesValue" = type { i64 } @.str = private unnamed_addr constant [2 x i8] c" \00", align 1 @.str.1 = private unnamed_addr constant [2 x i8] c"\0A\00", align 1 @@ -59,8 +57,8 @@ entry: %argCount_.i.i = getelementptr inbounds i8, ptr %args, i64 8 %3 = load i32, ptr %argCount_.i.i, align 8, !noalias !7 %conv.i.i = zext i32 %3 to i64 - %idx.neg.i.i.i = sub nsw i64 0, %conv.i.i - %add.ptr.i.i.i = getelementptr inbounds %"class.hermes::vm::PinnedHermesValue", ptr %2, i64 %idx.neg.i.i.i + %.neg = mul nsw i64 %conv.i.i, -8 + %add.ptr.i.i.i.ptr = getelementptr inbounds i8, ptr %2, i64 %.neg %cmp.i.i.i.not34 = icmp eq i32 %3, 0 br i1 %cmp.i.i.i.not34, label %for.end, label %for.body.lr.ph @@ -153,7 +151,7 @@ if.then.i.i.i: ; preds = %_ZN6hermes2vm15Hand br label %_ZN6hermes2vm12SmallXStringIDsLj32EED2Ev.exit _ZN6hermes2vm12SmallXStringIDsLj32EED2Ev.exit: ; preds = %_ZN6hermes2vm15HandleRootOwner10makeHandleINS0_15StringPrimitiveEEENS0_6HandleIT_EEONS0_12PseudoHandleIS5_EE.exit, %if.then.i.i.i - %cmp.i.i.i.not = icmp eq ptr %incdec.ptr.i.i, %add.ptr.i.i.i + %cmp.i.i.i.not = icmp eq ptr %incdec.ptr.i.i, %add.ptr.i.i.i.ptr br i1 %cmp.i.i.i.not, label %for.end, label %for.body for.end: ; preds = %_ZN6hermes2vm12SmallXStringIDsLj32EED2Ev.exit, %entry diff --git a/bench/hyperscan/optimized/Utf8ComponentClass.cpp.ll b/bench/hyperscan/optimized/Utf8ComponentClass.cpp.ll index 3d33984583e..5e09f57396a 100644 --- a/bench/hyperscan/optimized/Utf8ComponentClass.cpp.ll +++ b/bench/hyperscan/optimized/Utf8ComponentClass.cpp.ll @@ -9547,28 +9547,30 @@ if.then9: ; preds = %_ZSt8distanceISt23_ if.then16: ; preds = %if.then9 %idx.neg = xor i64 %__n.05.i.i, -1 - %add.ptr = getelementptr %"class.ue2::PositionInfo", ptr %1, i64 %idx.neg + %add.ptr.idx = shl i64 %idx.neg, 3 br label %for.body.i.i.i.i.i for.body.i.i.i.i.i: ; preds = %if.then16, %for.body.i.i.i.i.i %__cur.09.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %for.body.i.i.i.i.i ], [ %1, %if.then16 ] - %__first.sroa.0.08.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i, %for.body.i.i.i.i.i ], [ %add.ptr, %if.then16 ] - %2 = load i64, ptr %__first.sroa.0.08.i.i.i.i.i, align 4 + %__first.sroa.0.08.i.i.i.i.i.idx = phi i64 [ %__first.sroa.0.08.i.i.i.i.i.add, %for.body.i.i.i.i.i ], [ %add.ptr.idx, %if.then16 ] + %__first.sroa.0.08.i.i.i.i.i.ptr = getelementptr inbounds i8, ptr %1, i64 %__first.sroa.0.08.i.i.i.i.i.idx + %2 = load i64, ptr %__first.sroa.0.08.i.i.i.i.i.ptr, align 4 store i64 %2, ptr %__cur.09.i.i.i.i.i, align 4 - %incdec.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.08.i.i.i.i.i, i64 8 + %__first.sroa.0.08.i.i.i.i.i.add = add nsw i64 %__first.sroa.0.08.i.i.i.i.i.idx, 8 %incdec.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.09.i.i.i.i.i, i64 8 - %cmp.i.i.not.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i, %1 + %cmp.i.i.not.i.i.i.i.i = icmp eq i64 %__first.sroa.0.08.i.i.i.i.i.add, 0 br i1 %cmp.i.i.not.i.i.i.i.i, label %_ZSt22__uninitialized_move_aIPN3ue212PositionInfoES2_SaIS1_EET0_T_S5_S4_RT1_.exit, label %for.body.i.i.i.i.i, !llvm.loop !66 _ZSt22__uninitialized_move_aIPN3ue212PositionInfoES2_SaIS1_EET0_T_S5_S4_RT1_.exit: ; preds = %for.body.i.i.i.i.i + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr.idx %3 = load ptr, ptr %_M_finish, align 8 %add.ptr27 = getelementptr inbounds %"class.ue2::PositionInfo", ptr %3, i64 %inc.i.i store ptr %add.ptr27, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce + %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %for.body.i.i.i.i.i26.preheader, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPN3ue212PositionInfoES2_SaIS1_EET0_T_S5_S4_RT1_.exit - %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i diff --git a/bench/hyperscan/optimized/accelcompile.cpp.ll b/bench/hyperscan/optimized/accelcompile.cpp.ll index 829f8b7ae1f..694af3f0417 100644 --- a/bench/hyperscan/optimized/accelcompile.cpp.ll +++ b/bench/hyperscan/optimized/accelcompile.cpp.ll @@ -3,8 +3,6 @@ source_filename = "bench/hyperscan/original/accelcompile.cpp.ll" target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" -%"struct.std::pair" = type { i8, i8 } - @_ZTIN3ue218ResourceLimitErrorE = external constant ptr ; Function Attrs: mustprogress nofree norecurse nosync nounwind memory(read, argmem: readwrite, inaccessiblemem: none) uwtable @@ -13,7 +11,8 @@ entry: %0 = load ptr, ptr %escape_set, align 8, !noalias !5 %m_size.i.i.i = getelementptr inbounds i8, ptr %escape_set, i64 8 %1 = load i64, ptr %m_size.i.i.i, align 8 - %add.ptr.i.i.i = getelementptr inbounds %"struct.std::pair", ptr %0, i64 %1 + %add.ptr.i.i.i.idx = shl nsw i64 %1, 1 + %add.ptr.i.i.i.ptr = getelementptr inbounds i8, ptr %0, i64 %add.ptr.i.i.i.idx %cmp.i.i.i.i.not30 = icmp eq i64 %1, 0 br i1 %cmp.i.i.i.i.not30, label %for.end, label %for.body @@ -26,7 +25,7 @@ for.body: ; preds = %entry, %for.body %6 = and <2 x i8> %4, %2 %7 = and <2 x i8> %3, %5 %incdec.ptr.i.i.i.i = getelementptr inbounds i8, ptr %__begin1.sroa.0.031, i64 2 - %cmp.i.i.i.i.not = icmp eq ptr %incdec.ptr.i.i.i.i, %add.ptr.i.i.i + %cmp.i.i.i.i.not = icmp eq ptr %incdec.ptr.i.i.i.i, %add.ptr.i.i.i.ptr br i1 %cmp.i.i.i.i.not, label %for.end.loopexit, label %for.body for.end.loopexit: ; preds = %for.body @@ -230,7 +229,8 @@ if.then18.i: ; preds = %for.cond.i.i br label %if.end7 if.then38.i: ; preds = %lor.lhs.false.i.i, %for.body.i.i11, %land.lhs.true15.i - %add.ptr.i.i.i.i.i = getelementptr inbounds %"struct.std::pair", ptr %double_stop2.val.i, i64 %10 + %add.ptr.i.i.i.idx.i.i = shl nsw i64 %10, 1 + %add.ptr.i.i.i.ptr.i.i = getelementptr inbounds i8, ptr %double_stop2.val.i, i64 %add.ptr.i.i.i.idx.i.i br label %for.body.i46.i for.body.i46.i: ; preds = %for.body.i46.i, %if.then38.i @@ -249,7 +249,7 @@ for.body.i46.i: ; preds = %for.body.i46.i, %if %not15.i.i = xor i8 %32, -1 %and17.i.i = and i8 %b2.032.i.i, %not15.i.i %incdec.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__begin1.sroa.0.031.i.i, i64 2 - %cmp.i.i.i.i.not.i48.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i, %add.ptr.i.i.i.i.i + %cmp.i.i.i.i.not.i48.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i, %add.ptr.i.i.i.ptr.i.i br i1 %cmp.i.i.i.i.not.i48.i, label %for.end.i.i, label %for.body.i46.i for.end.i.i: ; preds = %for.body.i46.i diff --git a/bench/hyperscan/optimized/ng_expr_info.cpp.ll b/bench/hyperscan/optimized/ng_expr_info.cpp.ll index 93dfa19eaea..2c5be021f52 100644 --- a/bench/hyperscan/optimized/ng_expr_info.cpp.ll +++ b/bench/hyperscan/optimized/ng_expr_info.cpp.ll @@ -780,7 +780,8 @@ _ZNKSt6vectorIN3ue211DepthMinMaxESaIS1_EE2atEm.exit: ; preds = %if.end7 %2 = load ptr, ptr %reports, align 8, !noalias !27 %m_size.i.i.i = getelementptr inbounds i8, ptr %v.coerce0, i64 56 %3 = load i64, ptr %m_size.i.i.i, align 8, !noalias !28 - %add.ptr.i.i.i = getelementptr inbounds i32, ptr %2, i64 %3 + %add.ptr.i.i.i.idx = shl nsw i64 %3, 2 + %add.ptr.i.i.i.ptr = getelementptr inbounds i8, ptr %2, i64 %add.ptr.i.i.i.idx %cmp.i.i.i.i.not23 = icmp eq i64 %3, 0 br i1 %cmp.i.i.i.i.not23, label %for.end, label %for.body.lr.ph @@ -876,7 +877,7 @@ do.end: ; preds = %if.then44, %if.end3 %call55 = call i64 @_ZN3ue216unionDepthMinMaxERKNS_11DepthMinMaxES2_(ptr noundef nonnull align 4 dereferenceable(8) %info, ptr noundef nonnull align 4 dereferenceable(8) %rd) store i64 %call55, ptr %info, align 4 %incdec.ptr.i.i.i.i = getelementptr inbounds i8, ptr %__begin1.sroa.0.024, i64 4 - %cmp.i.i.i.i.not = icmp eq ptr %incdec.ptr.i.i.i.i, %add.ptr.i.i.i + %cmp.i.i.i.i.not = icmp eq ptr %incdec.ptr.i.i.i.i, %add.ptr.i.i.i.ptr br i1 %cmp.i.i.i.i.not, label %for.end, label %for.body for.end: ; preds = %do.end, %entry, %_ZNKSt6vectorIN3ue211DepthMinMaxESaIS1_EE2atEm.exit, %if.then3 diff --git a/bench/hyperscan/optimized/ng_fixed_width.cpp.ll b/bench/hyperscan/optimized/ng_fixed_width.cpp.ll index 1194db1eb77..55d3eec8353 100644 --- a/bench/hyperscan/optimized/ng_fixed_width.cpp.ll +++ b/bench/hyperscan/optimized/ng_fixed_width.cpp.ll @@ -318,7 +318,8 @@ do.end46.i: ; preds = %while.cond.i, %if.e %19 = load ptr, ptr %reports50.i, align 8, !noalias !26 %m_size.i.i.i.i.i = getelementptr inbounds i8, ptr %u.sroa.0.0.lcssa.i, i64 56 %20 = load i64, ptr %m_size.i.i.i.i.i, align 8, !noalias !27 - %add.ptr.i.i.i.i.i = getelementptr inbounds i32, ptr %19, i64 %20 + %add.ptr.i.i.i.idx.i.i = shl nsw i64 %20, 2 + %add.ptr.i.i.i.ptr.i.i = getelementptr inbounds i8, ptr %19, i64 %add.ptr.i.i.i.idx.i.i call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %tmp.i.i.i) %cmp.i.i.i.i.not1.i.i.i = icmp eq i64 %20, 0 br i1 %cmp.i.i.i.i.not1.i.i.i, label %_ZN3ue26insertINS_8flat_setIjSt4lessIjESaIjEEES5_EEvPT_RKT0_.exit.i, label %for.body.i.i.i @@ -330,7 +331,7 @@ for.body.i.i.i: ; preds = %do.end46.i, %.noexc .noexc.i: ; preds = %for.body.i.i.i %incdec.ptr.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp.sroa.0.0.i.i, i64 4 - %cmp.i.i.i.i.not.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i, %add.ptr.i.i.i.i.i + %cmp.i.i.i.i.not.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i, %add.ptr.i.i.i.ptr.i.i br i1 %cmp.i.i.i.i.not.i.i.i, label %_ZN3ue26insertINS_8flat_setIjSt4lessIjESaIjEEES5_EEvPT_RKT0_.exit.i, label %for.body.i.i.i, !llvm.loop !34 _ZN3ue26insertINS_8flat_setIjSt4lessIjESaIjEEES5_EEvPT_RKT0_.exit.i: ; preds = %.noexc.i, %do.end46.i diff --git a/bench/hyperscan/optimized/ng_puff.cpp.ll b/bench/hyperscan/optimized/ng_puff.cpp.ll index 85c9ca11eff..e0b015cfd46 100644 --- a/bench/hyperscan/optimized/ng_puff.cpp.ll +++ b/bench/hyperscan/optimized/ng_puff.cpp.ll @@ -1369,7 +1369,8 @@ invoke.cont239.i: ; preds = %for.body21.i.i321.i %90 = load ptr, ptr %reports238.i, align 8, !noalias !35 %m_size.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp234.sroa.0.0.copyload.i, i64 56 %91 = load i64, ptr %m_size.i.i.i.i, align 8, !noalias !85 - %add.ptr.i.i.i363.i = getelementptr inbounds i32, ptr %90, i64 %91 + %add.ptr.i.i.i363.idx.i = shl nsw i64 %91, 2 + %add.ptr.i.i.i363.ptr.i = getelementptr inbounds i8, ptr %90, i64 %add.ptr.i.i.i363.idx.i %cmp.i.i.i.i364.not727.i = icmp eq i64 %91, 0 br i1 %cmp.i.i.i.i364.not727.i, label %for.end271.i, label %invoke.cont245.lr.ph.i @@ -1425,7 +1426,7 @@ if.end261.i: ; preds = %invoke.cont247.i for.inc268.i: ; preds = %if.end261.i, %if.end3.i.i %incdec.ptr.i.i.i.i368.i = getelementptr inbounds i8, ptr %__begin1.sroa.0.0728.i, i64 4 - %cmp.i.i.i.i364.not.i = icmp eq ptr %incdec.ptr.i.i.i.i368.i, %add.ptr.i.i.i363.i + %cmp.i.i.i.i364.not.i = icmp eq ptr %incdec.ptr.i.i.i.i368.i, %add.ptr.i.i.i363.ptr.i br i1 %cmp.i.i.i.i364.not.i, label %for.end271.i, label %invoke.cont245.i for.end271.i: ; preds = %for.inc268.i, %invoke.cont239.i @@ -1467,7 +1468,8 @@ invoke.cont284.i: ; preds = %call3.i.noexc.i, %d store i64 0, ptr %m_size.i.i.i.i.i.i.i.i.i.i, align 8 %100 = load ptr, ptr %reports238.i, align 8, !noalias !35 %101 = load i64, ptr %m_size.i.i.i.i, align 8, !noalias !93 - %add.ptr.i.i.i378.i = getelementptr inbounds i32, ptr %100, i64 %101 + %add.ptr.i.i.i378.idx.i = shl nsw i64 %101, 2 + %add.ptr.i.i.i378.ptr.i = getelementptr inbounds i8, ptr %100, i64 %add.ptr.i.i.i378.idx.i %cmp.i.i.i.i379.not729.i = icmp eq i64 %101, 0 br i1 %cmp.i.i.i.i379.not729.i, label %if.end310.i, label %invoke.cont292.lr.ph.i @@ -1992,7 +1994,7 @@ for.inc301.i: ; preds = %do.end45.i.invoke.i call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %tmp.i.i) call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %rp46.i.i) %incdec.ptr.i.i.i.i415.i = getelementptr inbounds i8, ptr %__begin1282.sroa.0.0730.i, i64 4 - %cmp.i.i.i.i379.not.i = icmp eq ptr %incdec.ptr.i.i.i.i415.i, %add.ptr.i.i.i378.i + %cmp.i.i.i.i379.not.i = icmp eq ptr %incdec.ptr.i.i.i.i415.i, %add.ptr.i.i.i378.ptr.i br i1 %cmp.i.i.i.i379.not.i, label %for.end304.i, label %invoke.cont292.i lpad283.loopexit.i: ; preds = %_ZNSt8_Rb_treeIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderENS0_19NFAGraphVertexPropsENS0_17NFAGraphEdgePropsEEEEES8_St9_IdentityIS8_ESt4lessIS8_ESaIS8_EE10_M_insert_IRS8_NSE_11_Alloc_nodeEEESt17_Rb_tree_iteratorIS8_EPSt18_Rb_tree_node_baseSL_OT_RT0_.exit.i.i.i.i @@ -2069,7 +2071,8 @@ do.end.i426.i: ; preds = %for.body.i422.i store i64 0, ptr %m_size.i.i.i.i.i, align 8 %162 = load ptr, ptr %chain_reports.i, align 8, !noalias !35 %163 = load i64, ptr %m_size.i.i.i.i.i.i.i.i.i.i, align 8, !noalias !110 - %add.ptr.i.i.i.i.i = getelementptr inbounds i32, ptr %162, i64 %163 + %add.ptr.i.i.i.idx.i.i = shl nsw i64 %163, 2 + %add.ptr.i.i.i.ptr.i.i = getelementptr inbounds i8, ptr %162, i64 %add.ptr.i.i.i.idx.i.i %cmp.i.i.i.i.not1.i.i.i = icmp eq i64 %163, 0 br i1 %cmp.i.i.i.i.not1.i.i.i, label %for.inc.i432.i, label %for.body.i.preheader.i.i @@ -2277,7 +2280,7 @@ _ZN5boost9container13move_backwardIPjS2_EENS0_3dtl37enable_if_memtransfer_copy_a _ZN3ue28flat_setIjSt4lessIjESaIjEE6insertERKj.exit.i.i: ; preds = %_ZN5boost9container13move_backwardIPjS2_EENS0_3dtl37enable_if_memtransfer_copy_assignableIT_T0_S6_E4typeES5_S5_S6_.exit.i.i.i.i.i.i.i, %if.then3.i.i.i.i.i.i.i, %_ZN5boost9container6vectorIjNS0_22small_vector_allocatorIjSaIvEvEEvE37priv_forward_range_insert_no_capacityINS0_3dtl17insert_copy_proxyIS4_PjEEEENS0_12vec_iteratorIS9_Lb0EEERKS9_mT_NS_11move_detail17integral_constantIjLj1EEE.exit.i.i, %lor.rhs.i.i.i %incdec.ptr.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp7.sroa.0.0.i.i, i64 4 - %cmp.i.i.i.i.not.i.i431.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i, %add.ptr.i.i.i.i.i + %cmp.i.i.i.i.not.i.i431.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i, %add.ptr.i.i.i.ptr.i.i br i1 %cmp.i.i.i.i.not.i.i431.i, label %for.inc.i432.i, label %for.body.i.i428.i, !llvm.loop !136 for.inc.i432.i: ; preds = %_ZN3ue28flat_setIjSt4lessIjESaIjEE6insertERKj.exit.i.i, %.noexc443.i, %for.body.i422.i diff --git a/bench/hyperscan/optimized/ng_region_redundancy.cpp.ll b/bench/hyperscan/optimized/ng_region_redundancy.cpp.ll index 310baa9e10a..5006ab836b5 100644 --- a/bench/hyperscan/optimized/ng_region_redundancy.cpp.ll +++ b/bench/hyperscan/optimized/ng_region_redundancy.cpp.ll @@ -2373,6 +2373,7 @@ for.body.lr.ph: ; preds = %entry %1 = load i64, ptr %_M_bucket_count.i.i.i.i, align 8 %2 = load ptr, ptr %region_map, align 8 %_M_before_begin.i.i.i.i.i = getelementptr inbounds i8, ptr %region_map, i64 16 + %add.ptr.i.i.idx.i.i.i.us = shl nsw i64 %expected_reports.8.val, 2 %cmp.i.not3.i.i.i.i.i.us = icmp eq i64 %expected_reports.8.val, 0 br i1 %cmp.not.not.i.i.i, label %for.body.us, label %for.body @@ -2422,7 +2423,7 @@ land.lhs.true.us: ; preds = %for.body9.us land.rhs.i.i.i.us: ; preds = %land.lhs.true.us %11 = load ptr, ptr %reports.us, align 8, !noalias !27 - %add.ptr.i.i.i.i.i15.us = getelementptr inbounds i32, ptr %11, i64 %expected_reports.8.val + %add.ptr.i.i.ptr.i.i.i.us = getelementptr inbounds i8, ptr %11, i64 %add.ptr.i.i.idx.i.i.i.us br i1 %cmp.i.not3.i.i.i.i.i.us, label %for.inc.us, label %for.body.i.i.i.i.i.us for.body.i.i.i.i.i.us: ; preds = %land.rhs.i.i.i.us, %for.inc.i.i.i.i.i.us @@ -2436,7 +2437,7 @@ for.body.i.i.i.i.i.us: ; preds = %land.rhs.i.i.i.us, for.inc.i.i.i.i.i.us: ; preds = %for.body.i.i.i.i.i.us %incdec.ptr.i.i.i.i.i.i.us = getelementptr inbounds i8, ptr %12, i64 4 %incdec.ptr.i2.i.i.i.i.i.us = getelementptr inbounds i8, ptr %agg.tmp2.sroa.0.0.i.i.i.i.us, i64 4 - %cmp.i.not.i.i.i.i.i.us = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.us, %add.ptr.i.i.i.i.i15.us + %cmp.i.not.i.i.i.i.i.us = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.us, %add.ptr.i.i.ptr.i.i.i.us br i1 %cmp.i.not.i.i.i.i.i.us, label %for.inc.us, label %for.body.i.i.i.i.i.us, !llvm.loop !72 for.inc.us: ; preds = %for.inc.i.i.i.i.i.us, %land.rhs.i.i.i.us, %for.body9.us @@ -2548,7 +2549,7 @@ land.lhs.true: ; preds = %for.body9 land.rhs.i.i.i: ; preds = %land.lhs.true %33 = load ptr, ptr %reports, align 8, !noalias !27 - %add.ptr.i.i.i.i.i15 = getelementptr inbounds i32, ptr %33, i64 %expected_reports.8.val + %add.ptr.i.i.ptr.i.i.i = getelementptr inbounds i8, ptr %33, i64 %add.ptr.i.i.idx.i.i.i.us br i1 %cmp.i.not3.i.i.i.i.i.us, label %for.inc, label %for.body.i.i.i.i.i for.body.i.i.i.i.i: ; preds = %land.rhs.i.i.i, %for.inc.i.i.i.i.i @@ -2562,7 +2563,7 @@ for.body.i.i.i.i.i: ; preds = %land.rhs.i.i.i, %fo for.inc.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i %incdec.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %34, i64 4 %incdec.ptr.i2.i.i.i.i.i = getelementptr inbounds i8, ptr %agg.tmp2.sroa.0.0.i.i.i.i, i64 4 - %cmp.i.not.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i, %add.ptr.i.i.i.i.i15 + %cmp.i.not.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i, %add.ptr.i.i.ptr.i.i.i br i1 %cmp.i.not.i.i.i.i.i, label %for.inc, label %for.body.i.i.i.i.i, !llvm.loop !72 for.inc: ; preds = %for.inc.i.i.i.i.i, %land.rhs.i.i.i, %for.body9 diff --git a/bench/hyperscan/optimized/ng_som_util.cpp.ll b/bench/hyperscan/optimized/ng_som_util.cpp.ll index 23e90cfb268..1829d5adf1d 100644 --- a/bench/hyperscan/optimized/ng_som_util.cpp.ll +++ b/bench/hyperscan/optimized/ng_som_util.cpp.ll @@ -1134,7 +1134,8 @@ invoke.cont29: ; preds = %invoke.cont25.threa %13 = load ptr, ptr %states, align 8 %m_size.i.i = getelementptr inbounds i8, ptr %states, i64 8 %14 = load i64, ptr %m_size.i.i, align 8, !noalias !51 - %add.ptr.i.i = getelementptr inbounds %"class.ue2::graph_detail::vertex_descriptor", ptr %13, i64 %14 + %add.ptr.i.i.idx = shl nsw i64 %14, 4 + %add.ptr.i.i.ptr = getelementptr inbounds i8, ptr %13, i64 %add.ptr.i.i.idx %cmp.i.i.i.i12.not50 = icmp eq i64 %14, 0 br i1 %cmp.i.i.i.i12.not50, label %cleanup, label %invoke.cont37.lr.ph @@ -1184,7 +1185,7 @@ for.body21.i.i: ; preds = %for.cond19.i.i for.inc51: ; preds = %for.body21.i.i, %for.body.i.i %incdec.ptr.i.i.i.i = getelementptr inbounds i8, ptr %__begin128.sroa.0.051, i64 16 - %cmp.i.i.i.i12.not = icmp eq ptr %incdec.ptr.i.i.i.i, %add.ptr.i.i + %cmp.i.i.i.i12.not = icmp eq ptr %incdec.ptr.i.i.i.i, %add.ptr.i.i.ptr br i1 %cmp.i.i.i.i12.not, label %cleanup, label %invoke.cont37 cleanup: ; preds = %for.inc51, %for.cond19.i.i, %for.cond.i.i, %invoke.cont29 @@ -3180,7 +3181,8 @@ if.then.i.i.i.i.i.i.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i invoke.cont43: ; preds = %invoke.cont39.thread, %if.then.i.i.i.i.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i.i, %invoke.cont39 %12 = load ptr, ptr %states, align 8 %13 = load i64, ptr %m_size.i.i, align 8, !noalias !175 - %add.ptr.i.i16 = getelementptr inbounds %"class.ue2::graph_detail::vertex_descriptor", ptr %12, i64 %13 + %add.ptr.i.i16.idx = shl nsw i64 %13, 4 + %add.ptr.i.i16.ptr = getelementptr inbounds i8, ptr %12, i64 %add.ptr.i.i16.idx %cmp.i.i.i.i17.not67 = icmp eq i64 %13, 0 br i1 %cmp.i.i.i.i17.not67, label %cleanup, label %invoke.cont51.lr.ph @@ -3227,7 +3229,7 @@ do.end68.us: ; preds = %invoke.cont63.loope for.inc72.us: ; preds = %do.end68.us, %invoke.cont63.loopexit.us, %invoke.cont51.us %first_bad_region.1.us = phi i32 [ %first_bad_region.069.us, %invoke.cont51.us ], [ %.sroa.speculated.us, %do.end68.us ], [ %first_bad_region.069.us, %invoke.cont63.loopexit.us ] %incdec.ptr.i.i.i.i27.us = getelementptr inbounds i8, ptr %__begin142.sroa.0.068.us, i64 16 - %cmp.i.i.i.i17.not.us = icmp eq ptr %incdec.ptr.i.i.i.i27.us, %add.ptr.i.i16 + %cmp.i.i.i.i17.not.us = icmp eq ptr %incdec.ptr.i.i.i.i27.us, %add.ptr.i.i16.ptr br i1 %cmp.i.i.i.i17.not.us, label %for.end75, label %invoke.cont51.us invoke.cont63.loopexit.us: ; preds = %for.body.i.i.i.us @@ -3307,7 +3309,7 @@ do.end68: ; preds = %invoke.cont63 for.inc72: ; preds = %invoke.cont63, %do.end68, %invoke.cont51 %first_bad_region.1 = phi i32 [ %first_bad_region.069, %invoke.cont51 ], [ %.sroa.speculated, %do.end68 ], [ %first_bad_region.069, %invoke.cont63 ] %incdec.ptr.i.i.i.i27 = getelementptr inbounds i8, ptr %__begin142.sroa.0.068, i64 16 - %cmp.i.i.i.i17.not = icmp eq ptr %incdec.ptr.i.i.i.i27, %add.ptr.i.i16 + %cmp.i.i.i.i17.not = icmp eq ptr %incdec.ptr.i.i.i.i27, %add.ptr.i.i16.ptr br i1 %cmp.i.i.i.i17.not, label %for.end75, label %invoke.cont51 for.end75: ; preds = %for.inc72, %for.inc72.us diff --git a/bench/hyperscan/optimized/rdfa.cpp.ll b/bench/hyperscan/optimized/rdfa.cpp.ll index 91890c54ab2..2467f88e8ee 100644 --- a/bench/hyperscan/optimized/rdfa.cpp.ll +++ b/bench/hyperscan/optimized/rdfa.cpp.ll @@ -184,7 +184,8 @@ for.body: ; preds = %entry, %for.inc11 %2 = load ptr, ptr %reports, align 8, !noalias !7 %m_size.i.i = getelementptr inbounds i8, ptr %__begin1.sroa.0.012, i64 40 %3 = load i64, ptr %m_size.i.i, align 8, !noalias !8 - %add.ptr.i.i = getelementptr inbounds i32, ptr %2, i64 %3 + %add.ptr.i.i.idx = shl nsw i64 %3, 2 + %add.ptr.i.i.ptr = getelementptr inbounds i8, ptr %2, i64 %add.ptr.i.i.idx %cmp.i.i.i.i.not9 = icmp eq i64 %3, 0 br i1 %cmp.i.i.i.i.not9, label %for.inc11, label %for.body8.lr.ph @@ -254,7 +255,7 @@ _ZN3ue28flat_setIjSt4lessIjESaIjEE5eraseENS_11flat_detail12iter_wrapperIN5boost9 _ZN3ue28flat_setIjSt4lessIjESaIjEE5eraseERKj.exit: ; preds = %_ZSt11lower_boundIN5boost9container12vec_iteratorIPjLb0EEEjSt4lessIjEET_S7_S7_RKT0_T1_.exit.i.i, %_ZN3ue28flat_setIjSt4lessIjESaIjEE4findERKj.exit.i, %_ZN3ue28flat_setIjSt4lessIjESaIjEE5eraseENS_11flat_detail12iter_wrapperIN5boost9container12vec_iteratorIPjLb1EEEKjEE.exit.i %15 = phi i64 [ %4, %_ZSt11lower_boundIN5boost9container12vec_iteratorIPjLb0EEEjSt4lessIjEET_S7_S7_RKT0_T1_.exit.i.i ], [ %4, %_ZN3ue28flat_setIjSt4lessIjESaIjEE4findERKj.exit.i ], [ %dec.i.i.i.i, %_ZN3ue28flat_setIjSt4lessIjESaIjEE5eraseENS_11flat_detail12iter_wrapperIN5boost9container12vec_iteratorIPjLb1EEEKjEE.exit.i ] %incdec.ptr.i.i.i.i = getelementptr inbounds i8, ptr %__begin2.sroa.0.010, i64 4 - %cmp.i.i.i.i.not = icmp eq ptr %incdec.ptr.i.i.i.i, %add.ptr.i.i + %cmp.i.i.i.i.not = icmp eq ptr %incdec.ptr.i.i.i.i, %add.ptr.i.i.ptr br i1 %cmp.i.i.i.i.not, label %for.inc11, label %for.body8 for.inc11: ; preds = %_ZN3ue28flat_setIjSt4lessIjESaIjEE5eraseERKj.exit, %for.body diff --git a/bench/hyperscan/optimized/shufticompile.cpp.ll b/bench/hyperscan/optimized/shufticompile.cpp.ll index a01c86a11ea..71fc6860db6 100644 --- a/bench/hyperscan/optimized/shufticompile.cpp.ll +++ b/bench/hyperscan/optimized/shufticompile.cpp.ll @@ -27,7 +27,6 @@ target triple = "x86_64-unknown-linux-gnu" %"struct.std::_Rb_tree_key_compare.31" = type { %"struct.std::less.32" } %"struct.std::less.32" = type { i8 } %"struct.std::array.25" = type { [4 x i16] } -%"struct.std::pair.23" = type { i8, i8 } $_ZNSt3mapIhN3ue29CharReachESt4lessIhESaISt4pairIKhS1_EEEixERS5_ = comdat any @@ -672,7 +671,8 @@ invoke.cont: %0 = load ptr, ptr %twochar, align 8, !noalias !15 %m_size.i.i.i = getelementptr inbounds i8, ptr %twochar, i64 8 %1 = load i64, ptr %m_size.i.i.i, align 8, !noalias !16 - %add.ptr.i.i.i = getelementptr inbounds %"struct.std::pair.23", ptr %0, i64 %1 + %add.ptr.i.i.i.idx = shl nsw i64 %1, 1 + %add.ptr.i.i.i.ptr = getelementptr inbounds i8, ptr %0, i64 %add.ptr.i.i.i.idx %cmp.i.i.i.i.not452 = icmp eq i64 %1, 0 br i1 %cmp.i.i.i.i.not452, label %for.body.i.i.preheader, label %invoke.cont6 @@ -782,7 +782,7 @@ for.inc: ; preds = %_ZNSt6vectorISt5arr %nibble_masks.sroa.0.1 = phi ptr [ %cond.i10.i.i.i, %_ZNSt6vectorISt5arrayItLm4EESaIS1_EE17_M_realloc_insertIJS1_EEEvN9__gnu_cxx17__normal_iteratorIPS1_S3_EEDpOT_.exit.i.i ], [ %nibble_masks.sroa.0.0456, %if.then.i.i ] %nibble_masks.sroa.13.1 = getelementptr inbounds i8, ptr %add.ptr.i.i.i.i.i.i.pn, i64 8 %incdec.ptr.i.i.i.i = getelementptr inbounds i8, ptr %__begin1.sroa.0.0453, i64 2 - %cmp.i.i.i.i.not = icmp eq ptr %incdec.ptr.i.i.i.i, %add.ptr.i.i.i + %cmp.i.i.i.i.not = icmp eq ptr %incdec.ptr.i.i.i.i, %add.ptr.i.i.i.ptr br i1 %cmp.i.i.i.i.not, label %for.body.i.i.preheader, label %invoke.cont6 lpad.loopexit410: ; preds = %cond.true.i.i.i.i46 diff --git a/bench/icu/optimized/dbgutil.ll b/bench/icu/optimized/dbgutil.ll index 09458126a3f..aec099f5051 100644 --- a/bench/icu/optimized/dbgutil.ll +++ b/bench/icu/optimized/dbgutil.ll @@ -979,14 +979,15 @@ delete.notnull.i: ; preds = %for.body.i br i1 %arraydestroy.isempty.i, label %arraydestroy.done2.i, label %arraydestroy.body.preheader.i arraydestroy.body.preheader.i: ; preds = %delete.notnull.i - %delete.end.i = getelementptr inbounds %"class.icu_75::UnicodeString", ptr %2, i64 %4 + %delete.end.idx.i = shl nsw i64 %4, 6 br label %arraydestroy.body.i arraydestroy.body.i: ; preds = %arraydestroy.body.i, %arraydestroy.body.preheader.i - %arraydestroy.elementPast.i = phi ptr [ %arraydestroy.element.i, %arraydestroy.body.i ], [ %delete.end.i, %arraydestroy.body.preheader.i ] - %arraydestroy.element.i = getelementptr inbounds i8, ptr %arraydestroy.elementPast.i, i64 -64 - tail call void @_ZN6icu_7513UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %arraydestroy.element.i) #12 - %arraydestroy.done.i = icmp eq ptr %arraydestroy.element.i, %2 + %arraydestroy.elementPast.idx.i = phi i64 [ %arraydestroy.elementPast.add.i, %arraydestroy.body.i ], [ %delete.end.idx.i, %arraydestroy.body.preheader.i ] + %arraydestroy.elementPast.add.i = add nsw i64 %arraydestroy.elementPast.idx.i, -64 + %arraydestroy.element.ptr.i = getelementptr inbounds i8, ptr %2, i64 %arraydestroy.elementPast.add.i + tail call void @_ZN6icu_7513UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %arraydestroy.element.ptr.i) #12 + %arraydestroy.done.i = icmp eq i64 %arraydestroy.elementPast.add.i, 0 br i1 %arraydestroy.done.i, label %arraydestroy.done2.i, label %arraydestroy.body.i arraydestroy.done2.i: ; preds = %arraydestroy.body.i, %delete.notnull.i diff --git a/bench/icu/optimized/dtitvinf.ll b/bench/icu/optimized/dtitvinf.ll index bc57ba5b871..bd3e8039356 100644 --- a/bench/icu/optimized/dtitvinf.ll +++ b/bench/icu/optimized/dtitvinf.ll @@ -1328,14 +1328,15 @@ delete.notnull: ; preds = %while.body br i1 %arraydestroy.isempty, label %arraydestroy.done4, label %arraydestroy.body.preheader arraydestroy.body.preheader: ; preds = %delete.notnull - %delete.end = getelementptr inbounds %"class.icu_75::UnicodeString", ptr %valueTok.sroa.0.0.copyload, i64 %2 + %delete.end.idx = shl nsw i64 %2, 6 br label %arraydestroy.body arraydestroy.body: ; preds = %arraydestroy.body.preheader, %arraydestroy.body - %arraydestroy.elementPast = phi ptr [ %arraydestroy.element, %arraydestroy.body ], [ %delete.end, %arraydestroy.body.preheader ] - %arraydestroy.element = getelementptr inbounds i8, ptr %arraydestroy.elementPast, i64 -64 - call void @_ZN6icu_7513UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %arraydestroy.element) #15 - %arraydestroy.done = icmp eq ptr %arraydestroy.element, %valueTok.sroa.0.0.copyload + %arraydestroy.elementPast.idx = phi i64 [ %arraydestroy.elementPast.add, %arraydestroy.body ], [ %delete.end.idx, %arraydestroy.body.preheader ] + %arraydestroy.elementPast.add = add nsw i64 %arraydestroy.elementPast.idx, -64 + %arraydestroy.element.ptr = getelementptr inbounds i8, ptr %valueTok.sroa.0.0.copyload, i64 %arraydestroy.elementPast.add + call void @_ZN6icu_7513UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %arraydestroy.element.ptr) #15 + %arraydestroy.done = icmp eq i64 %arraydestroy.elementPast.add, 0 br i1 %arraydestroy.done, label %arraydestroy.done4, label %arraydestroy.body arraydestroy.done4: ; preds = %arraydestroy.body, %delete.notnull diff --git a/bench/icu/optimized/fmtable.ll b/bench/icu/optimized/fmtable.ll index 20c63d07281..1b07ad904f0 100644 --- a/bench/icu/optimized/fmtable.ll +++ b/bench/icu/optimized/fmtable.ll @@ -1358,14 +1358,15 @@ delete.notnull5: ; preds = %sw.bb2 br i1 %arraydestroy.isempty, label %arraydestroy.done7, label %arraydestroy.body.preheader arraydestroy.body.preheader: ; preds = %delete.notnull5 - %delete.end6 = getelementptr inbounds %"class.icu_75::Formattable", ptr %3, i64 %5 + %delete.end6.idx = mul nsw i64 %5, 112 br label %arraydestroy.body arraydestroy.body: ; preds = %arraydestroy.body.preheader, %arraydestroy.body - %arraydestroy.elementPast = phi ptr [ %arraydestroy.element, %arraydestroy.body ], [ %delete.end6, %arraydestroy.body.preheader ] - %arraydestroy.element = getelementptr inbounds i8, ptr %arraydestroy.elementPast, i64 -112 - tail call void @_ZN6icu_7511FormattableD1Ev(ptr noundef nonnull align 8 dereferenceable(112) %arraydestroy.element) #16 - %arraydestroy.done = icmp eq ptr %arraydestroy.element, %3 + %arraydestroy.elementPast.idx = phi i64 [ %arraydestroy.elementPast.add, %arraydestroy.body ], [ %delete.end6.idx, %arraydestroy.body.preheader ] + %arraydestroy.elementPast.add = add nsw i64 %arraydestroy.elementPast.idx, -112 + %arraydestroy.element.ptr = getelementptr inbounds i8, ptr %3, i64 %arraydestroy.elementPast.add + tail call void @_ZN6icu_7511FormattableD1Ev(ptr noundef nonnull align 8 dereferenceable(112) %arraydestroy.element.ptr) #16 + %arraydestroy.done = icmp eq i64 %arraydestroy.elementPast.add, 0 br i1 %arraydestroy.done, label %arraydestroy.done7, label %arraydestroy.body arraydestroy.done7: ; preds = %arraydestroy.body, %delete.notnull5 @@ -3172,7 +3173,7 @@ declare noundef signext i8 @_ZNK6icu_7513UnicodeString8doEqualsERKS0_i(ptr nound declare noundef zeroext i1 @_ZNK6icu_757MeasureeqERKNS_7UObjectE(ptr noundef nonnull align 8 dereferenceable(128), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5 -; Function Attrs: nofree nounwind memory(read) +; Function Attrs: mustprogress nofree nounwind willreturn memory(read) declare ptr @__dynamic_cast(ptr, ptr, ptr, i64) local_unnamed_addr #13 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) @@ -3194,7 +3195,7 @@ attributes #9 = { mustprogress nofree norecurse nosync nounwind willreturn memor attributes #10 = { mustprogress nofree nounwind memory(read, argmem: readwrite) 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 #11 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } attributes #12 = { mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: readwrite) 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 #13 = { nofree nounwind memory(read) } +attributes #13 = { mustprogress nofree nounwind willreturn memory(read) } attributes #14 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } attributes #15 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } attributes #16 = { nounwind } diff --git a/bench/icu/optimized/localematcher.ll b/bench/icu/optimized/localematcher.ll index 555e18f7aa9..1eec4d594cb 100644 --- a/bench/icu/optimized/localematcher.ll +++ b/bench/icu/optimized/localematcher.ll @@ -2091,19 +2091,20 @@ delete.notnull4: ; preds = %invoke.cont br i1 %arraydestroy.isempty, label %arraydestroy.done6, label %arraydestroy.body.preheader arraydestroy.body.preheader: ; preds = %delete.notnull4 - %delete.end5 = getelementptr inbounds %"struct.icu_75::LSR", ptr %8, i64 %10 + %delete.end5.idx = mul nsw i64 %10, 48 br label %arraydestroy.body arraydestroy.body: ; preds = %arraydestroy.body.preheader, %_ZN6icu_753LSRD2Ev.exit - %arraydestroy.elementPast = phi ptr [ %arraydestroy.element, %_ZN6icu_753LSRD2Ev.exit ], [ %delete.end5, %arraydestroy.body.preheader ] - %arraydestroy.element = getelementptr inbounds i8, ptr %arraydestroy.elementPast, i64 -48 - %owned.i = getelementptr inbounds i8, ptr %arraydestroy.elementPast, i64 -24 + %arraydestroy.elementPast.idx = phi i64 [ %arraydestroy.elementPast.add, %_ZN6icu_753LSRD2Ev.exit ], [ %delete.end5.idx, %arraydestroy.body.preheader ] + %arraydestroy.elementPast.add = add nsw i64 %arraydestroy.elementPast.idx, -48 + %arraydestroy.element.ptr = getelementptr inbounds i8, ptr %8, i64 %arraydestroy.elementPast.add + %owned.i = getelementptr inbounds i8, ptr %arraydestroy.element.ptr, i64 24 %11 = load ptr, ptr %owned.i, align 8 %cmp.not.i = icmp eq ptr %11, null br i1 %cmp.not.i, label %_ZN6icu_753LSRD2Ev.exit, label %if.then.i if.then.i: ; preds = %arraydestroy.body - invoke void @_ZN6icu_753LSR11deleteOwnedEv(ptr noundef nonnull align 8 dereferenceable(48) %arraydestroy.element) + invoke void @_ZN6icu_753LSR11deleteOwnedEv(ptr noundef nonnull align 8 dereferenceable(48) %arraydestroy.element.ptr) to label %_ZN6icu_753LSRD2Ev.exit unwind label %terminate.lpad.i terminate.lpad.i: ; preds = %if.then.i @@ -2114,7 +2115,7 @@ terminate.lpad.i: ; preds = %if.then.i unreachable _ZN6icu_753LSRD2Ev.exit: ; preds = %arraydestroy.body, %if.then.i - %arraydestroy.done = icmp eq ptr %arraydestroy.element, %8 + %arraydestroy.done = icmp eq i64 %arraydestroy.elementPast.add, 0 br i1 %arraydestroy.done, label %arraydestroy.done6, label %arraydestroy.body arraydestroy.done6: ; preds = %_ZN6icu_753LSRD2Ev.exit, %delete.notnull4 diff --git a/bench/icu/optimized/locavailable.ll b/bench/icu/optimized/locavailable.ll index 4f8fdd37b65..03b0ef0ffb1 100644 --- a/bench/icu/optimized/locavailable.ll +++ b/bench/icu/optimized/locavailable.ll @@ -287,14 +287,15 @@ delete.notnull: ; preds = %entry br i1 %arraydestroy.isempty, label %arraydestroy.done1, label %arraydestroy.body.preheader arraydestroy.body.preheader: ; preds = %delete.notnull - %delete.end = getelementptr inbounds %"class.icu_75::Locale", ptr %0, i64 %2 + %delete.end.idx = mul nsw i64 %2, 224 br label %arraydestroy.body arraydestroy.body: ; preds = %arraydestroy.body.preheader, %arraydestroy.body - %arraydestroy.elementPast = phi ptr [ %arraydestroy.element, %arraydestroy.body ], [ %delete.end, %arraydestroy.body.preheader ] - %arraydestroy.element = getelementptr inbounds i8, ptr %arraydestroy.elementPast, i64 -224 - tail call void @_ZN6icu_756LocaleD1Ev(ptr noundef nonnull align 8 dereferenceable(217) %arraydestroy.element) #12 - %arraydestroy.done = icmp eq ptr %arraydestroy.element, %0 + %arraydestroy.elementPast.idx = phi i64 [ %arraydestroy.elementPast.add, %arraydestroy.body ], [ %delete.end.idx, %arraydestroy.body.preheader ] + %arraydestroy.elementPast.add = add nsw i64 %arraydestroy.elementPast.idx, -224 + %arraydestroy.element.ptr = getelementptr inbounds i8, ptr %0, i64 %arraydestroy.elementPast.add + tail call void @_ZN6icu_756LocaleD1Ev(ptr noundef nonnull align 8 dereferenceable(217) %arraydestroy.element.ptr) #12 + %arraydestroy.done = icmp eq i64 %arraydestroy.elementPast.add, 0 br i1 %arraydestroy.done, label %arraydestroy.done1, label %arraydestroy.body arraydestroy.done1: ; preds = %arraydestroy.body, %delete.notnull @@ -635,7 +636,7 @@ for.body32: ; preds = %for.cond29.preheade %8 = load ptr, ptr %arrayidx23, align 8 %arrayidx36 = getelementptr inbounds ptr, ptr %8, i64 %indvars.iv store ptr %7, ptr %arrayidx36, align 8 - %indvars.iv.next = add nuw i64 %indvars.iv, 1 + %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %9 = trunc i64 %indvars.iv.next to i32 %call30 = call noundef signext i8 @_ZNK6icu_7513ResourceTable14getKeyAndValueEiRPKcRNS_13ResourceValueE(ptr noundef nonnull align 8 dereferenceable(37) %availableLocalesTable, i32 noundef %9, ptr noundef nonnull align 8 dereferenceable(8) %key.addr, ptr noundef nonnull align 8 dereferenceable(8) %value) %tobool31.not = icmp eq i8 %call30, 0 diff --git a/bench/icu/optimized/locid.ll b/bench/icu/optimized/locid.ll index ee42fc9d274..939a5574c23 100644 --- a/bench/icu/optimized/locid.ll +++ b/bench/icu/optimized/locid.ll @@ -10,11 +10,11 @@ target triple = "x86_64-unknown-linux-gnu" %"class.icu_75::MaybeStackArray" = type <{ ptr, i32, i8, [40 x i8], [3 x i8] }> %"class.icu_75::CharStringByteSink" = type { %"class.icu_75::ByteSink", ptr } %"class.icu_75::ByteSink" = type { ptr } -%"class.icu_75::Locale" = type <{ %"class.icu_75::UObject", [12 x i8], [6 x i8], [4 x i8], [2 x i8], i32, [4 x i8], ptr, [157 x i8], [3 x i8], ptr, i8, [7 x i8] }> -%"class.icu_75::UObject" = type { ptr } %"class.icu_75::LocalUHashtablePointer" = type { %"class.icu_75::LocalPointerBase.38" } %"class.icu_75::LocalPointerBase.38" = type { ptr } %"class.icu_75::StringPiece" = type <{ ptr, i32, [4 x i8] }> +%"class.icu_75::Locale" = type <{ %"class.icu_75::UObject", [12 x i8], [6 x i8], [4 x i8], [2 x i8], i32, [4 x i8], ptr, [157 x i8], [3 x i8], ptr, i8, [7 x i8] }> +%"class.icu_75::UObject" = type { ptr } %"class.icu_75::LocalUResourceBundlePointer" = type { %"class.icu_75::LocalPointerBase.7" } %"class.icu_75::LocalPointerBase.7" = type { ptr } %"class.icu_75::UniqueCharStrings" = type <{ %struct.UHashtable, ptr, %"class.icu_75::MemoryPool", i8, [7 x i8] }> @@ -1017,14 +1017,15 @@ delete.notnull: ; preds = %entry br i1 %arraydestroy.isempty, label %arraydestroy.done1, label %arraydestroy.body.preheader arraydestroy.body.preheader: ; preds = %delete.notnull - %delete.end = getelementptr inbounds %"class.icu_75::Locale", ptr %0, i64 %2 + %delete.end.idx = mul nsw i64 %2, 224 br label %arraydestroy.body arraydestroy.body: ; preds = %arraydestroy.body.preheader, %arraydestroy.body - %arraydestroy.elementPast = phi ptr [ %arraydestroy.element, %arraydestroy.body ], [ %delete.end, %arraydestroy.body.preheader ] - %arraydestroy.element = getelementptr inbounds i8, ptr %arraydestroy.elementPast, i64 -224 - tail call void @_ZN6icu_756LocaleD1Ev(ptr noundef nonnull align 8 dereferenceable(217) %arraydestroy.element) #20 - %arraydestroy.done = icmp eq ptr %arraydestroy.element, %0 + %arraydestroy.elementPast.idx = phi i64 [ %arraydestroy.elementPast.add, %arraydestroy.body ], [ %delete.end.idx, %arraydestroy.body.preheader ] + %arraydestroy.elementPast.add = add nsw i64 %arraydestroy.elementPast.idx, -224 + %arraydestroy.element.ptr = getelementptr inbounds i8, ptr %0, i64 %arraydestroy.elementPast.add + tail call void @_ZN6icu_756LocaleD1Ev(ptr noundef nonnull align 8 dereferenceable(217) %arraydestroy.element.ptr) #20 + %arraydestroy.done = icmp eq i64 %arraydestroy.elementPast.add, 0 br i1 %arraydestroy.done, label %arraydestroy.done1, label %arraydestroy.body arraydestroy.done1: ; preds = %arraydestroy.body, %delete.notnull @@ -8577,7 +8578,7 @@ land.rhs.lr.ph: ; preds = %_ZN6icu_7511LocalMe br label %land.rhs for.cond: ; preds = %_ZN6icu_7527LocalUResourceBundlePointerD2Ev.exit - %indvars.iv.next = add nuw i64 %indvars.iv, 1 + %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %3 = load i32, ptr %status, align 4 %cmp.i29 = icmp sgt i32 %3, 0 br i1 %cmp.i29, label %for.end, label %land.rhs, !llvm.loop !27 diff --git a/bench/icu/optimized/number_formatimpl.ll b/bench/icu/optimized/number_formatimpl.ll index b174d666cf0..00044b7953a 100644 --- a/bench/icu/optimized/number_formatimpl.ll +++ b/bench/icu/optimized/number_formatimpl.ll @@ -4039,14 +4039,15 @@ delete.notnull: ; preds = %entry br i1 %arraydestroy.isempty, label %arraydestroy.done2, label %arraydestroy.body.preheader arraydestroy.body.preheader: ; preds = %delete.notnull - %delete.end = getelementptr inbounds %"class.icu_75::UnicodeString", ptr %0, i64 %2 + %delete.end.idx = shl nsw i64 %2, 6 br label %arraydestroy.body arraydestroy.body: ; preds = %arraydestroy.body.preheader, %arraydestroy.body - %arraydestroy.elementPast = phi ptr [ %arraydestroy.element, %arraydestroy.body ], [ %delete.end, %arraydestroy.body.preheader ] - %arraydestroy.element = getelementptr inbounds i8, ptr %arraydestroy.elementPast, i64 -64 - tail call void @_ZN6icu_7513UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %arraydestroy.element) #13 - %arraydestroy.done = icmp eq ptr %arraydestroy.element, %0 + %arraydestroy.elementPast.idx = phi i64 [ %arraydestroy.elementPast.add, %arraydestroy.body ], [ %delete.end.idx, %arraydestroy.body.preheader ] + %arraydestroy.elementPast.add = add nsw i64 %arraydestroy.elementPast.idx, -64 + %arraydestroy.element.ptr = getelementptr inbounds i8, ptr %0, i64 %arraydestroy.elementPast.add + tail call void @_ZN6icu_7513UnicodeStringD1Ev(ptr noundef nonnull align 8 dereferenceable(64) %arraydestroy.element.ptr) #13 + %arraydestroy.done = icmp eq i64 %arraydestroy.elementPast.add, 0 br i1 %arraydestroy.done, label %arraydestroy.done2, label %arraydestroy.body arraydestroy.done2: ; preds = %arraydestroy.body, %delete.notnull diff --git a/bench/icu/optimized/parse.ll b/bench/icu/optimized/parse.ll index 0f3c47433dd..8fb65c7685a 100644 --- a/bench/icu/optimized/parse.ll +++ b/bench/icu/optimized/parse.ll @@ -1626,7 +1626,7 @@ if.end34: ; preds = %if.end30 store i8 %18, ptr %arrayidx39, align 1 %call40 = call i64 @strtoul(ptr noundef nonnull %toConv, ptr noundef nonnull %stopstring, i32 noundef 16) #19 %conv41 = trunc i64 %call40 to i8 - %indvars.iv.next63 = add nuw i64 %indvars.iv62, 1 + %indvars.iv.next63 = add nuw nsw i64 %indvars.iv62, 1 %arrayidx.i36 = getelementptr inbounds i8, ptr %value.sroa.0.2, i64 %indvars.iv62 store i8 %conv41, ptr %arrayidx.i36, align 1 %19 = load ptr, ptr %stopstring, align 8 @@ -3107,7 +3107,8 @@ if.end36: ; preds = %if.end28 %call39 = call noalias ptr @uprv_malloc_75(i64 noundef %conv38) #20 call void @llvm.memset.p0.i64(ptr align 2 %call39, i8 0, i64 %conv38, i1 false) %idx.ext = sext i32 %add to i64 - %add.ptr = getelementptr inbounds i16, ptr %call39, i64 %idx.ext + %add.ptr.idx = shl nsw i64 %idx.ext, 1 + %add.ptr.ptr = getelementptr inbounds i8, ptr %call39, i64 %add.ptr.idx %cmp42123 = icmp sgt i32 %call37, -1 br i1 %cmp42123, label %while.body.lr.ph.split.us, label %while.end119 @@ -3247,12 +3248,12 @@ if.else105: ; preds = %do.body100 if.end118: ; preds = %if.else105, %if.then102 %quoted.190 = phi i8 [ %quoted.191, %if.then102 ], [ %quoted.1.us118, %if.else105 ] %target.4 = phi ptr [ %incdec.ptr104, %if.then102 ], [ %add.ptr114, %if.else105 ] - %cmp42 = icmp ult ptr %target.4, %add.ptr + %cmp42 = icmp ult ptr %target.4, %add.ptr.ptr br i1 %cmp42, label %while.body.lr.ph.split.us, label %while.end119, !llvm.loop !17 while.end119: ; preds = %if.end97, %if.end118, %if.end36 %target.0.ph97 = phi ptr [ %call39, %if.end36 ], [ %target.0.ph125, %if.end97 ], [ %target.4, %if.end118 ] - %cmp120 = icmp ult ptr %target.0.ph97, %add.ptr + %cmp120 = icmp ult ptr %target.0.ph97, %add.ptr.ptr br i1 %cmp120, label %if.then121, label %if.end122 if.then121: ; preds = %while.end119 diff --git a/bench/icu/optimized/rbbitblb.ll b/bench/icu/optimized/rbbitblb.ll index 2e559c24be6..617d48f4fe9 100644 --- a/bench/icu/optimized/rbbitblb.ll +++ b/bench/icu/optimized/rbbitblb.ll @@ -2255,7 +2255,8 @@ if.end10: ; preds = %invoke.cont6, %entr %4 = phi i32 [ %.pre, %invoke.cont6 ], [ 16, %entry ] %5 = phi ptr [ %call.i45, %invoke.cont6 ], [ %stackArray.i, %entry ] %idx.ext = sext i32 %0 to i64 - %add.ptr = getelementptr inbounds ptr, ptr %5, i64 %idx.ext + %add.ptr.idx = shl nsw i64 %idx.ext, 3 + %add.ptr.ptr = getelementptr inbounds i8, ptr %5, i64 %add.ptr.idx %cmp15 = icmp sgt i32 %1, %4 br i1 %cmp15, label %if.then16, label %if.end10.if.end22_crit_edge @@ -2296,7 +2297,8 @@ invoke.cont17: ; preds = %if.then3.i53, %if.t if.end22: ; preds = %if.end10.if.end22_crit_edge, %invoke.cont17 %8 = phi ptr [ %.pre96, %if.end10.if.end22_crit_edge ], [ %call.i60, %invoke.cont17 ] %idx.ext25 = sext i32 %1 to i64 - %add.ptr26 = getelementptr inbounds ptr, ptr %8, i64 %idx.ext25 + %add.ptr26.idx = shl nsw i64 %idx.ext25, 3 + %add.ptr26.ptr = getelementptr inbounds i8, ptr %8, i64 %add.ptr26.idx %call28 = invoke noundef ptr @_ZNK6icu_757UVector7toArrayEPPv(ptr noundef nonnull align 8 dereferenceable(40) %dest, ptr noundef nonnull %5) to label %invoke.cont27 unwind label %lpad3.loopexit.split-lp.loopexit.split-lp.loopexit.split-lp @@ -2366,15 +2368,15 @@ if.end54: ; preds = %if.then45, %if.else %sourcePtr.1 = phi ptr [ %incdec.ptr, %invoke.cont41 ], [ %sourcePtr.089, %if.then45 ], [ %incdec.ptr50, %if.else49 ] %destPtr.1 = phi ptr [ %incdec.ptr42, %invoke.cont41 ], [ %incdec.ptr46, %if.then45 ], [ %destPtr.090, %if.else49 ] %di.1 = add nuw nsw i32 %di.091, 1 - %cmp37 = icmp ult ptr %sourcePtr.1, %add.ptr26 - %cmp38 = icmp ult ptr %destPtr.1, %add.ptr + %cmp37 = icmp ult ptr %sourcePtr.1, %add.ptr26.ptr + %cmp38 = icmp ult ptr %destPtr.1, %add.ptr.ptr %15 = select i1 %cmp37, i1 %cmp38, i1 false br i1 %15, label %while.body, label %while.cond55.preheader, !llvm.loop !29 while.cond55: ; preds = %while.cond55.preheader, %while.body57 %destPtr.2 = phi ptr [ %incdec.ptr58, %while.body57 ], [ %destPtr.0.lcssa, %while.cond55.preheader ] %di.2 = phi i32 [ %inc59, %while.body57 ], [ %di.0.lcssa, %while.cond55.preheader ] - %cmp56 = icmp ult ptr %destPtr.2, %add.ptr + %cmp56 = icmp ult ptr %destPtr.2, %add.ptr.ptr br i1 %cmp56, label %while.body57, label %while.cond62 while.body57: ; preds = %while.cond55 @@ -2387,7 +2389,7 @@ while.body57: ; preds = %while.cond55 while.cond62: ; preds = %while.cond55, %while.body64 %sourcePtr.2 = phi ptr [ %incdec.ptr65, %while.body64 ], [ %sourcePtr.0.lcssa, %while.cond55 ] %di.3 = phi i32 [ %inc66, %while.body64 ], [ %di.2, %while.cond55 ] - %cmp63 = icmp ult ptr %sourcePtr.2, %add.ptr26 + %cmp63 = icmp ult ptr %sourcePtr.2, %add.ptr26.ptr br i1 %cmp63, label %while.body64, label %while.end68 while.body64: ; preds = %while.cond62 @@ -4060,7 +4062,7 @@ invoke.cont124: ; preds = %invoke.cont118 to label %for.inc128 unwind label %lpad43.loopexit.split-lp.loopexit for.inc128: ; preds = %invoke.cont124 - %indvars.iv.next172 = add nuw i64 %indvars.iv171, 2 + %indvars.iv.next172 = add nuw nsw i64 %indvars.iv171, 2 %37 = load i16, ptr %fUnion2.i, align 8 %cmp.i.i67 = icmp slt i16 %37, 0 %38 = ashr i16 %37, 5 diff --git a/bench/icu/optimized/rematch.ll b/bench/icu/optimized/rematch.ll index 4d7398faf7b..80ef83a19c5 100644 --- a/bench/icu/optimized/rematch.ll +++ b/bench/icu/optimized/rematch.ll @@ -18021,21 +18021,22 @@ if.then5: ; preds = %_ZN6icu_759UVector6 if.end6: ; preds = %_ZN6icu_759UVector6412reserveBlockEiR10UErrorCode.exit %8 = load i32, ptr %fFrameSize, align 8 %idx.ext = sext i32 %8 to i64 - %idx.neg = sub nsw i64 0, %idx.ext - %add.ptr = getelementptr i64, ptr %retval.0.i, i64 %idx.neg + %.neg = mul nsw i64 %idx.ext, -8 br label %for.cond for.cond: ; preds = %for.cond, %if.end6 - %source.0 = phi ptr [ %add.ptr, %if.end6 ], [ %incdec.ptr, %for.cond ] + %source.0.idx = phi i64 [ %.neg, %if.end6 ], [ %source.0.add, %for.cond ] %dest.0 = phi ptr [ %retval.0.i, %if.end6 ], [ %incdec.ptr8, %for.cond ] - %incdec.ptr = getelementptr inbounds i8, ptr %source.0, i64 8 - %9 = load i64, ptr %source.0, align 8 + %source.0.ptr = getelementptr inbounds i8, ptr %retval.0.i, i64 %source.0.idx + %source.0.add = add nsw i64 %source.0.idx, 8 + %9 = load i64, ptr %source.0.ptr, align 8 %incdec.ptr8 = getelementptr inbounds i8, ptr %dest.0, i64 8 store i64 %9, ptr %dest.0, align 8 - %cmp = icmp eq ptr %incdec.ptr, %retval.0.i + %cmp = icmp eq i64 %source.0.add, 0 br i1 %cmp, label %for.end, label %for.cond, !llvm.loop !48 for.end: ; preds = %for.cond + %add.ptr.ptr = getelementptr inbounds i8, ptr %retval.0.i, i64 %.neg %fTickCounter = getelementptr inbounds i8, ptr %this, i64 272 %10 = load i32, ptr %fTickCounter, align 8 %dec = add nsw i32 %10, -1 @@ -18080,7 +18081,7 @@ if.end12.sink.split.i: ; preds = %if.end6.i, %if.then br label %if.end14 if.end14: ; preds = %if.end12.sink.split.i, %if.end6.i, %for.end - %fPatIdx = getelementptr inbounds i8, ptr %add.ptr, i64 8 + %fPatIdx = getelementptr inbounds i8, ptr %add.ptr.ptr, i64 8 store i64 %savePatIdx, ptr %fPatIdx, align 8 br label %return diff --git a/bench/icu/optimized/usearch.ll b/bench/icu/optimized/usearch.ll index 14d94055211..eb7ab1d04dc 100644 --- a/bench/icu/optimized/usearch.ll +++ b/bench/icu/optimized/usearch.ll @@ -403,7 +403,7 @@ if.else.i: ; preds = %if.end.i %4 = load ptr, ptr @_ZL9g_nfcImpl, align 8 %idx.ext1.i.i = sext i32 %2 to i64 %add.ptr2.i.idx.i = shl nsw i64 %idx.ext1.i.i, 1 - %add.ptr2.i.ptr.i = getelementptr inbounds i8, ptr %1, i64 %add.ptr2.i.idx.i + %add.ptr2.i.i = getelementptr inbounds i8, ptr %1, i64 %add.ptr2.i.idx.i %incdec.ptr.i.i.i = getelementptr inbounds i8, ptr %1, i64 2 %5 = load i16, ptr %1, align 2 %conv.i.i.i = zext i16 %5 to i32 @@ -516,7 +516,7 @@ lor.lhs.false.i.i28.i: ; preds = %do.end.i if.end.i.i39.i: ; preds = %lor.lhs.false.i.i28.i %and.i.i40.i = and i32 %conv.i.i25.i, 64512 %cmp3.i.i41.i = icmp ne i32 %and.i.i40.i, 55296 - %cmp4.not.i.i42.i = icmp eq ptr %incdec.ptr.i.i24.i, %add.ptr2.i.ptr.i + %cmp4.not.i.i42.i = icmp eq ptr %incdec.ptr.i.i24.i, %add.ptr2.i.i %or.cond.i.i43.i = select i1 %cmp3.i.i41.i, i1 true, i1 %cmp4.not.i.i42.i br i1 %or.cond.i.i43.i, label %if.end12.i.i48.i, label %land.lhs.true5.i.i44.i @@ -4224,7 +4224,8 @@ if.then4: ; preds = %if.then %textLength = getelementptr inbounds i8, ptr %ss, i64 16 %4 = load i32, ptr %textLength, align 8 %idx.ext = sext i32 %4 to i64 - %add.ptr = getelementptr inbounds i16, ptr %3, i64 %idx.ext + %add.ptr.idx = shl nsw i64 %idx.ext, 1 + %add.ptr.ptr = getelementptr inbounds i8, ptr %3, i64 %add.ptr.idx %cmp624 = icmp sgt i32 %4, 0 br i1 %cmp624, label %while.body, label %if.end28 @@ -4244,7 +4245,7 @@ while.body: ; preds = %if.then4, %while.bo %storemerge.v = select i1 %or.cond20, i32 8, i32 3 %storemerge = add nsw i32 %storemerge.v, %storemerge2325 store i32 %storemerge, ptr %bufSize, align 8 - %cmp6 = icmp ult ptr %incdec.ptr, %add.ptr + %cmp6 = icmp ult ptr %incdec.ptr, %add.ptr.ptr br i1 %cmp6, label %while.body, label %if.end28, !llvm.loop !13 if.end28: ; preds = %while.body, %if.then4, %if.then, %entry diff --git a/bench/imgui/optimized/imgui_tables.cpp.ll b/bench/imgui/optimized/imgui_tables.cpp.ll index ab0064034e1..d28630e9cfc 100644 --- a/bench/imgui/optimized/imgui_tables.cpp.ll +++ b/bench/imgui/optimized/imgui_tables.cpp.ll @@ -23,12 +23,12 @@ target triple = "x86_64-unknown-linux-gnu" %struct.ImVec1 = type { float } %struct.ImGuiTableColumn = type <{ i32, float, float, float, float, float, float, float, %struct.ImRect, i32, float, float, float, float, float, float, float, i16, i16, i16, i16, i16, i16, i16, i16, i16, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8 }> %struct.ImVec4 = type { float, float, float, float } -%struct.ImGuiTableCellData = type { i32, i16 } %struct.MergeGroup = type { %struct.ImRect, i32, ptr } %struct.ImDrawChannel = type { %struct.ImVector.32, %struct.ImVector } %struct.ImVector.32 = type { i32, i32, ptr } %struct.ImVector = type { i32, i32, ptr } %struct.ImDrawCmd = type { %struct.ImVec4, ptr, i32, i32, i32, ptr, ptr } +%struct.ImGuiTableCellData = type { i32, i16 } %struct.ImGuiSettingsHandler = type { ptr, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr } %"struct.ImGuiStorage::ImGuiStoragePair" = type { i32, %union.anon } %union.anon = type { ptr } @@ -2039,7 +2039,7 @@ for.body70.lr.ph: ; preds = %for.cond68.preheade for.body: ; preds = %for.body.lr.ph, %for.body %indvars.iv = phi i64 [ %13, %for.body.lr.ph ], [ %indvars.iv.next, %for.body ] - %indvars.iv.next = add i64 %indvars.iv, %14 + %indvars.iv.next = add nsw i64 %indvars.iv, %14 %16 = load ptr, ptr %DisplayOrderToIndex, align 8 %add.ptr.i60 = getelementptr inbounds i16, ptr %16, i64 %indvars.iv.next %17 = load i16, ptr %add.ptr.i60, align 2 @@ -6453,7 +6453,8 @@ if.then129: ; preds = %if.end127 %68 = load i16, ptr %RowCellDataCurrent, align 2 %69 = load ptr, ptr %RowCellData, align 8 %idx.ext.i = sext i16 %68 to i64 - %add.ptr.i = getelementptr inbounds %struct.ImGuiTableCellData, ptr %69, i64 %idx.ext.i + %add.ptr.i.idx = shl nsw i64 %idx.ext.i, 3 + %add.ptr.i.ptr = getelementptr inbounds i8, ptr %69, i64 %add.ptr.i.idx %cmp135.not201 = icmp slt i16 %68, 0 br i1 %cmp135.not201, label %if.end158, label %for.body.lr.ph @@ -6513,7 +6514,7 @@ for.body: ; preds = %for.body.lr.ph, %fo %94 = load i32, ptr %cell_data.0202, align 4 call void @_ZN10ImDrawList13AddRectFilledERK6ImVec2S2_jfi(ptr noundef nonnull align 8 dereferenceable(196) %93, ptr noundef nonnull align 4 dereferenceable(8) %cell_bg_rect, ptr noundef nonnull align 4 dereferenceable(8) %70, i32 noundef %94, float noundef 0.000000e+00, i32 noundef 0) %incdec.ptr = getelementptr inbounds i8, ptr %cell_data.0202, i64 8 - %cmp135.not = icmp ugt ptr %incdec.ptr, %add.ptr.i + %cmp135.not = icmp ugt ptr %incdec.ptr, %add.ptr.i.ptr br i1 %cmp135.not, label %if.end158, label %for.body, !llvm.loop !29 if.end158: ; preds = %for.body, %if.then129, %if.end127 @@ -8107,7 +8108,7 @@ if.then14: ; preds = %if.end ] if.then20: ; preds = %if.then14, %if.then14 - %or = or i32 %flags, 16 + %or = or disjoint i32 %flags, 16 br label %if.end22 if.end22: ; preds = %if.then14, %if.then20, %if.end diff --git a/bench/libquic/optimized/gzread.c.ll b/bench/libquic/optimized/gzread.c.ll index 621498bbb94..40dcbcb1e21 100644 --- a/bench/libquic/optimized/gzread.c.ll +++ b/bench/libquic/optimized/gzread.c.ll @@ -836,7 +836,8 @@ do.body.preheader: ; preds = %if.end16 do.body: ; preds = %do.body.preheader, %if.end29 %9 = phi i32 [ %sub49, %if.end29 ], [ %.pre, %do.body.preheader ] %left.0 = phi i32 [ %sub55, %if.end29 ], [ %sub, %do.body.preheader ] - %buf.addr.0 = phi ptr [ %add.ptr57, %if.end29 ], [ %buf, %do.body.preheader ] + %buf.addr.0.idx = phi i64 [ %buf.addr.0.add, %if.end29 ], [ 0, %do.body.preheader ] + %buf.addr.0.ptr = getelementptr inbounds i8, ptr %buf, i64 %buf.addr.0.idx %cmp19 = icmp eq i32 %9, 0 br i1 %cmp19, label %land.lhs.true20, label %if.end29 @@ -869,7 +870,7 @@ if.end29: ; preds = %do.body, %if.end24 %add = add i32 %conv42, 1 %n.0 = select i1 %cmp37.not, i32 %left.0., i32 %add %conv46 = zext i32 %n.0 to i64 - tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %buf.addr.0, ptr align 1 %11, i64 %conv46, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %buf.addr.0.ptr, ptr align 1 %11, i64 %conv46, i1 false) %12 = load i32, ptr %file, align 8 %sub49 = sub i32 %12, %n.0 store i32 %sub49, ptr %file, align 8 @@ -880,18 +881,19 @@ if.end29: ; preds = %do.body, %if.end24 %add54 = add nsw i64 %14, %conv46 store i64 %add54, ptr %pos, align 8 %sub55 = sub i32 %left.0, %n.0 - %add.ptr57 = getelementptr inbounds i8, ptr %buf.addr.0, i64 %conv46 + %buf.addr.0.add = add nuw nsw i64 %buf.addr.0.idx, %conv46 %tobool58 = icmp ne i32 %sub55, 0 %15 = and i1 %cmp37.not, %tobool58 br i1 %15, label %do.body, label %if.end61, !llvm.loop !13 if.end61: ; preds = %if.end29, %if.then28 - %buf.addr.1 = phi ptr [ %buf.addr.0, %if.then28 ], [ %add.ptr57, %if.end29 ] - %cmp62 = icmp eq ptr %buf.addr.1, %buf + %buf.addr.1.idx = phi i64 [ %buf.addr.0.idx, %if.then28 ], [ %buf.addr.0.add, %if.end29 ] + %cmp62 = icmp eq i64 %buf.addr.1.idx, 0 br i1 %cmp62, label %return, label %if.end65 if.end65: ; preds = %if.end61 - store i8 0, ptr %buf.addr.1, align 1 + %buf.addr.1.ptr = getelementptr inbounds i8, ptr %buf, i64 %buf.addr.1.idx + store i8 0, ptr %buf.addr.1.ptr, align 1 br label %return return: ; preds = %if.else19.i, %land.lhs.true20, %if.end16, %if.end61, %if.end, %lor.lhs.false5, %entry, %if.end65 diff --git a/bench/libquic/optimized/persistent_histogram_allocator.cc.ll b/bench/libquic/optimized/persistent_histogram_allocator.cc.ll index 52c03175720..de4a5ebc638 100644 --- a/bench/libquic/optimized/persistent_histogram_allocator.cc.ll +++ b/bench/libquic/optimized/persistent_histogram_allocator.cc.ll @@ -3294,17 +3294,17 @@ if.then9: ; preds = %if.then br i1 %cmp15, label %_ZSt22__uninitialized_move_aIPjS0_SaIjEET0_T_S3_S2_RT1_.exit, label %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEmEvRT_T0_.exit _ZSt22__uninitialized_move_aIPjS0_SaIjEET0_T_S3_S2_RT1_.exit: ; preds = %if.then9 - %idx.neg = sub nsw i64 0, %sub.ptr.div.i.i.i - %add.ptr = getelementptr inbounds i32, ptr %1, i64 %idx.neg - tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %1, ptr align 4 %add.ptr, i64 %sub.ptr.sub.i.i.i, i1 false) + %add.ptr.idx = sub i64 0, %sub.ptr.sub.i.i.i + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr.idx + tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %1, ptr align 4 %add.ptr.ptr, i64 %sub.ptr.sub.i.i.i, i1 false) %.pre78 = load ptr, ptr %_M_finish, align 8 %add.ptr27 = getelementptr inbounds i8, ptr %.pre78, i64 %sub.ptr.sub.i.i.i store ptr %add.ptr27, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce + %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %if.then.i.i.i.i.i30, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPjS0_SaIjEET0_T_S3_S2_RT1_.exit - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 2 %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i @@ -3317,14 +3317,14 @@ if.then.i.i.i.i.i30: ; preds = %if.then.i.i.i.i.i, br label %if.end109 _ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEmEvRT_T0_.exit: ; preds = %if.then9 - %incdec.ptr.i.i.i = getelementptr inbounds i8, ptr %__first.coerce, i64 %sub.ptr.sub.i - %tobool.not.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i, %__last.coerce + %incdec.ptr.i8.sink.i.i.ptr = getelementptr inbounds i8, ptr %__first.coerce, i64 %sub.ptr.sub.i + %tobool.not.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i8.sink.i.i.ptr, %__last.coerce br i1 %tobool.not.i.i.i.i.i.i.i.i, label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEES2_jET0_T_S8_S7_RSaIT1_E.exit, label %if.then.i.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i.i: ; preds = %_ZSt7advanceIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEmEvRT_T0_.exit - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i = ptrtoint ptr %incdec.ptr.i.i.i to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i = ptrtoint ptr %incdec.ptr.i8.sink.i.i.ptr to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i, %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %1, ptr align 4 %incdec.ptr.i.i.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 4 %1, ptr align 4 %incdec.ptr.i8.sink.i.i.ptr, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i, i1 false) %.pre = load ptr, ptr %_M_finish, align 8 br label %_ZSt22__uninitialized_copy_aIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEES2_jET0_T_S8_S7_RSaIT1_E.exit diff --git a/bench/libquic/optimized/string_piece.cc.ll b/bench/libquic/optimized/string_piece.cc.ll index 09da6bcb137..a76ddb0e8d7 100644 --- a/bench/libquic/optimized/string_piece.cc.ll +++ b/bench/libquic/optimized/string_piece.cc.ll @@ -3266,7 +3266,8 @@ entry: %2 = load ptr, ptr %s, align 8 %length_.i6.i = getelementptr inbounds i8, ptr %s, i64 8 %3 = load i64, ptr %length_.i6.i, align 8 - %add.ptr.i7.i = getelementptr inbounds i16, ptr %2, i64 %3 + %add.ptr.i7.idx.i = shl nsw i64 %3, 1 + %add.ptr.i7.ptr.i = getelementptr inbounds i8, ptr %2, i64 %add.ptr.i7.idx.i %cmp.not11.i.i = icmp eq i64 %1, %pos br i1 %cmp.not11.i.i, label %_ZSt13find_first_ofIPKtS1_ET_S2_S2_T0_S3_.exit.i, label %for.cond1.preheader.lr.ph.i.i @@ -3281,7 +3282,7 @@ for.cond1.preheader.i.i: ; preds = %for.cond1.preheader for.cond1.i.i: ; preds = %for.body3.i.i %incdec.ptr.i.i = getelementptr inbounds i8, ptr %__iter.010.i.i, i64 2 - %cmp2.not.i.i = icmp eq ptr %incdec.ptr.i.i, %add.ptr.i7.i + %cmp2.not.i.i = icmp eq ptr %incdec.ptr.i.i, %add.ptr.i7.ptr.i br i1 %cmp2.not.i.i, label %for.cond1.for.inc6_crit_edge.i.i, label %for.body3.i.i, !llvm.loop !17 for.body3.i.i: ; preds = %for.cond1.i.i, %for.cond1.preheader.i.i @@ -3323,7 +3324,8 @@ entry: %2 = load ptr, ptr %s, align 8 %length_.i6 = getelementptr inbounds i8, ptr %s, i64 8 %3 = load i64, ptr %length_.i6, align 8 - %add.ptr.i7 = getelementptr inbounds i16, ptr %2, i64 %3 + %add.ptr.i7.idx = shl nsw i64 %3, 1 + %add.ptr.i7.ptr = getelementptr inbounds i8, ptr %2, i64 %add.ptr.i7.idx %cmp.not11.i = icmp eq i64 %1, %pos br i1 %cmp.not11.i, label %_ZSt13find_first_ofIPKtS1_ET_S2_S2_T0_S3_.exit, label %for.cond1.preheader.lr.ph.i @@ -3338,7 +3340,7 @@ for.cond1.preheader.i: ; preds = %for.cond1.preheader for.cond1.i: ; preds = %for.body3.i %incdec.ptr.i = getelementptr inbounds i8, ptr %__iter.010.i, i64 2 - %cmp2.not.i = icmp eq ptr %incdec.ptr.i, %add.ptr.i7 + %cmp2.not.i = icmp eq ptr %incdec.ptr.i, %add.ptr.i7.ptr br i1 %cmp2.not.i, label %for.cond1.for.inc6_crit_edge.i, label %for.body3.i, !llvm.loop !17 for.body3.i: ; preds = %for.cond1.i, %for.cond1.preheader.i diff --git a/bench/libzmq/optimized/ctx.cpp.ll b/bench/libzmq/optimized/ctx.cpp.ll index 6f56682bf3d..ea352ca1ef8 100644 --- a/bench/libzmq/optimized/ctx.cpp.ll +++ b/bench/libzmq/optimized/ctx.cpp.ll @@ -6548,18 +6548,18 @@ if.then4: ; preds = %if.then br i1 %cmp10, label %if.then11, label %if.else if.then11: ; preds = %if.then4 - %idx.neg = sub i64 0, %__n - %add.ptr = getelementptr inbounds ptr, ptr %1, i64 %idx.neg + %.neg = mul i64 %__n, -8 + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %.neg %add.ptr.idx.neg = shl i64 %__n, 3 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr nonnull align 8 %add.ptr, i64 %add.ptr.idx.neg, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %add.ptr.ptr, i64 %add.ptr.idx.neg, i1 false) %3 = load ptr, ptr %_M_finish, align 8 %add.ptr16 = getelementptr inbounds ptr, ptr %3, i64 %__n store ptr %add.ptr16, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce + %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %invoke.cont20, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %if.then11 - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i diff --git a/bench/meshoptimizer/optimized/vcacheoptimizer.cpp.ll b/bench/meshoptimizer/optimized/vcacheoptimizer.cpp.ll index 62e9cafeeb4..6c59b286b4e 100644 --- a/bench/meshoptimizer/optimized/vcacheoptimizer.cpp.ll +++ b/bench/meshoptimizer/optimized/vcacheoptimizer.cpp.ll @@ -318,7 +318,8 @@ if.end146: ; preds = %for.body138 %add.ptr169 = getelementptr inbounds i32, ptr %23, i64 %idx.ext168 %43 = load i32, ptr %arrayidx143, align 4 %idx.ext173 = zext i32 %43 to i64 - %add.ptr174 = getelementptr inbounds i32, ptr %add.ptr169, i64 %idx.ext173 + %add.ptr174.idx = shl nuw nsw i64 %idx.ext173, 2 + %add.ptr174.ptr = getelementptr inbounds i8, ptr %add.ptr169, i64 %add.ptr174.idx %cmp176.not155 = icmp eq i32 %43, 0 br i1 %cmp176.not155, label %for.inc196, label %for.body177 @@ -336,7 +337,7 @@ for.body177: ; preds = %if.end146, %for.bod %cond191 = select i1 %cmp182, float %add181, float %best_score.1157 store float %add181, ptr %arrayidx180, align 4 %incdec.ptr = getelementptr inbounds i8, ptr %it.0158, i64 4 - %cmp176.not = icmp eq ptr %incdec.ptr, %add.ptr174 + %cmp176.not = icmp eq ptr %incdec.ptr, %add.ptr174.ptr br i1 %cmp176.not, label %for.inc196, label %for.body177, !llvm.loop !11 for.inc196: ; preds = %for.body177, %if.end146, %for.body138 @@ -721,7 +722,8 @@ while.body: ; preds = %invoke.cont14, %if. %arrayidx23 = getelementptr inbounds i32, ptr %4, i64 %idxprom %14 = load i32, ptr %arrayidx23, align 4 %idx.ext24 = zext i32 %14 to i64 - %add.ptr25 = getelementptr inbounds i32, ptr %add.ptr20, i64 %idx.ext24 + %add.ptr25.idx = shl nuw nsw i64 %idx.ext24, 2 + %add.ptr25.ptr = getelementptr inbounds i8, ptr %add.ptr20, i64 %add.ptr25.idx %cmp26.not126 = icmp eq i32 %14, 0 br i1 %cmp26.not126, label %for.end, label %for.body @@ -837,7 +839,7 @@ for.inc: ; preds = %for.body, %if.end97 %output_triangle.2 = phi i32 [ %inc, %if.end97 ], [ %output_triangle.1129, %for.body ] %timestamp.5 = phi i32 [ %timestamp.4, %if.end97 ], [ %timestamp.1130, %for.body ] %incdec.ptr = getelementptr inbounds i8, ptr %it.0128, i64 4 - %cmp26.not = icmp eq ptr %incdec.ptr, %add.ptr25 + %cmp26.not = icmp eq ptr %incdec.ptr, %add.ptr25.ptr br i1 %cmp26.not, label %for.end.loopexit, label %for.body, !llvm.loop !20 for.end.loopexit: ; preds = %for.inc diff --git a/bench/mold/optimized/input-sections.cc.ALPHA.cc.ll b/bench/mold/optimized/input-sections.cc.ALPHA.cc.ll index 65b13a4474a..1c4efbe105a 100644 --- a/bench/mold/optimized/input-sections.cc.ALPHA.cc.ll +++ b/bench/mold/optimized/input-sections.cc.ALPHA.cc.ll @@ -1338,7 +1338,8 @@ _ZNK4mold3elf12InputSectionINS0_5ALPHAEE8get_fdesEv.exit: ; preds = %if.then %sub.i.i = sub nsw i64 %sub.ptr.div.i.i.i.i, %conv.i %__count.addr.0.i.i = select i1 %cmp.i.i, i64 %sub.i.i, i64 %conv4.i %add.ptr.i.i = getelementptr inbounds %"struct.mold::elf::FdeRecord", ptr %4, i64 %conv.i - %add.ptr.i = getelementptr inbounds %"struct.mold::elf::FdeRecord", ptr %add.ptr.i.i, i64 %__count.addr.0.i.i + %add.ptr.i.idx = shl nsw i64 %__count.addr.0.i.i, 4 + %add.ptr.i.ptr = getelementptr inbounds i8, ptr %add.ptr.i.i, i64 %add.ptr.i.idx %cmp.i26 = icmp eq i64 %__count.addr.0.i.i, 0 br i1 %cmp.i26, label %if.end, label %for.body @@ -1347,7 +1348,7 @@ for.body: ; preds = %_ZNK4mold3elf12Inpu %is_alive8 = getelementptr inbounds i8, ptr %__begin1.sroa.0.07, i64 14 store atomic i8 0, ptr %is_alive8 monotonic, align 1 %incdec.ptr.i = getelementptr inbounds i8, ptr %__begin1.sroa.0.07, i64 16 - %cmp.i2 = icmp eq ptr %incdec.ptr.i, %add.ptr.i + %cmp.i2 = icmp eq ptr %incdec.ptr.i, %add.ptr.i.ptr br i1 %cmp.i2, label %if.end, label %for.body if.end: ; preds = %for.body, %if.then, %_ZNK4mold3elf12InputSectionINS0_5ALPHAEE8get_fdesEv.exit, %entry diff --git a/bench/mold/optimized/input-sections.cc.ARM32.cc.ll b/bench/mold/optimized/input-sections.cc.ARM32.cc.ll index 150db917a4f..a3e77f54baf 100644 --- a/bench/mold/optimized/input-sections.cc.ARM32.cc.ll +++ b/bench/mold/optimized/input-sections.cc.ARM32.cc.ll @@ -1437,7 +1437,8 @@ _ZNK4mold3elf12InputSectionINS0_5ARM32EE8get_fdesEv.exit: ; preds = %if.then %sub.i.i = sub nsw i64 %sub.ptr.div.i.i.i.i, %conv.i %__count.addr.0.i.i = select i1 %cmp.i.i, i64 %sub.i.i, i64 %conv4.i %add.ptr.i.i = getelementptr inbounds %"struct.mold::elf::FdeRecord", ptr %4, i64 %conv.i - %add.ptr.i = getelementptr inbounds %"struct.mold::elf::FdeRecord", ptr %add.ptr.i.i, i64 %__count.addr.0.i.i + %add.ptr.i.idx = shl nsw i64 %__count.addr.0.i.i, 4 + %add.ptr.i.ptr = getelementptr inbounds i8, ptr %add.ptr.i.i, i64 %add.ptr.i.idx %cmp.i26 = icmp eq i64 %__count.addr.0.i.i, 0 br i1 %cmp.i26, label %if.end, label %for.body @@ -1446,7 +1447,7 @@ for.body: ; preds = %_ZNK4mold3elf12Inpu %is_alive8 = getelementptr inbounds i8, ptr %__begin1.sroa.0.07, i64 14 store atomic i8 0, ptr %is_alive8 monotonic, align 1 %incdec.ptr.i = getelementptr inbounds i8, ptr %__begin1.sroa.0.07, i64 16 - %cmp.i2 = icmp eq ptr %incdec.ptr.i, %add.ptr.i + %cmp.i2 = icmp eq ptr %incdec.ptr.i, %add.ptr.i.ptr br i1 %cmp.i2, label %if.end, label %for.body if.end: ; preds = %for.body, %if.then, %_ZNK4mold3elf12InputSectionINS0_5ARM32EE8get_fdesEv.exit, %entry diff --git a/bench/mold/optimized/input-sections.cc.ARM64.cc.ll b/bench/mold/optimized/input-sections.cc.ARM64.cc.ll index bc26f7d3ac1..830d4128062 100644 --- a/bench/mold/optimized/input-sections.cc.ARM64.cc.ll +++ b/bench/mold/optimized/input-sections.cc.ARM64.cc.ll @@ -1366,7 +1366,8 @@ _ZNK4mold3elf12InputSectionINS0_5ARM64EE8get_fdesEv.exit: ; preds = %if.then %sub.i.i = sub nsw i64 %sub.ptr.div.i.i.i.i, %conv.i %__count.addr.0.i.i = select i1 %cmp.i.i, i64 %sub.i.i, i64 %conv4.i %add.ptr.i.i = getelementptr inbounds %"struct.mold::elf::FdeRecord", ptr %4, i64 %conv.i - %add.ptr.i = getelementptr inbounds %"struct.mold::elf::FdeRecord", ptr %add.ptr.i.i, i64 %__count.addr.0.i.i + %add.ptr.i.idx = shl nsw i64 %__count.addr.0.i.i, 4 + %add.ptr.i.ptr = getelementptr inbounds i8, ptr %add.ptr.i.i, i64 %add.ptr.i.idx %cmp.i26 = icmp eq i64 %__count.addr.0.i.i, 0 br i1 %cmp.i26, label %if.end, label %for.body @@ -1375,7 +1376,7 @@ for.body: ; preds = %_ZNK4mold3elf12Inpu %is_alive8 = getelementptr inbounds i8, ptr %__begin1.sroa.0.07, i64 14 store atomic i8 0, ptr %is_alive8 monotonic, align 1 %incdec.ptr.i = getelementptr inbounds i8, ptr %__begin1.sroa.0.07, i64 16 - %cmp.i2 = icmp eq ptr %incdec.ptr.i, %add.ptr.i + %cmp.i2 = icmp eq ptr %incdec.ptr.i, %add.ptr.i.ptr br i1 %cmp.i2, label %if.end, label %for.body if.end: ; preds = %for.body, %if.then, %_ZNK4mold3elf12InputSectionINS0_5ARM64EE8get_fdesEv.exit, %entry diff --git a/bench/mold/optimized/input-sections.cc.I386.cc.ll b/bench/mold/optimized/input-sections.cc.I386.cc.ll index 4d09e95b92b..2432a1129a0 100644 --- a/bench/mold/optimized/input-sections.cc.I386.cc.ll +++ b/bench/mold/optimized/input-sections.cc.I386.cc.ll @@ -1430,7 +1430,8 @@ _ZNK4mold3elf12InputSectionINS0_4I386EE8get_fdesEv.exit: ; preds = %if.then %sub.i.i = sub nsw i64 %sub.ptr.div.i.i.i.i, %conv.i %__count.addr.0.i.i = select i1 %cmp.i.i, i64 %sub.i.i, i64 %conv4.i %add.ptr.i.i = getelementptr inbounds %"struct.mold::elf::FdeRecord", ptr %4, i64 %conv.i - %add.ptr.i = getelementptr inbounds %"struct.mold::elf::FdeRecord", ptr %add.ptr.i.i, i64 %__count.addr.0.i.i + %add.ptr.i.idx = shl nsw i64 %__count.addr.0.i.i, 4 + %add.ptr.i.ptr = getelementptr inbounds i8, ptr %add.ptr.i.i, i64 %add.ptr.i.idx %cmp.i26 = icmp eq i64 %__count.addr.0.i.i, 0 br i1 %cmp.i26, label %if.end, label %for.body @@ -1439,7 +1440,7 @@ for.body: ; preds = %_ZNK4mold3elf12Inpu %is_alive8 = getelementptr inbounds i8, ptr %__begin1.sroa.0.07, i64 14 store atomic i8 0, ptr %is_alive8 monotonic, align 1 %incdec.ptr.i = getelementptr inbounds i8, ptr %__begin1.sroa.0.07, i64 16 - %cmp.i2 = icmp eq ptr %incdec.ptr.i, %add.ptr.i + %cmp.i2 = icmp eq ptr %incdec.ptr.i, %add.ptr.i.ptr br i1 %cmp.i2, label %if.end, label %for.body if.end: ; preds = %for.body, %if.then, %_ZNK4mold3elf12InputSectionINS0_4I386EE8get_fdesEv.exit, %entry diff --git a/bench/mold/optimized/input-sections.cc.LOONGARCH32.cc.ll b/bench/mold/optimized/input-sections.cc.LOONGARCH32.cc.ll index 053e2d9c0e5..0d067cdb366 100644 --- a/bench/mold/optimized/input-sections.cc.LOONGARCH32.cc.ll +++ b/bench/mold/optimized/input-sections.cc.LOONGARCH32.cc.ll @@ -1385,7 +1385,8 @@ _ZNK4mold3elf12InputSectionINS0_11LOONGARCH32EE8get_fdesEv.exit: ; preds = %if.t %sub.i.i = sub nsw i64 %sub.ptr.div.i.i.i.i, %conv.i %__count.addr.0.i.i = select i1 %cmp.i.i, i64 %sub.i.i, i64 %conv4.i %add.ptr.i.i = getelementptr inbounds %"struct.mold::elf::FdeRecord", ptr %4, i64 %conv.i - %add.ptr.i = getelementptr inbounds %"struct.mold::elf::FdeRecord", ptr %add.ptr.i.i, i64 %__count.addr.0.i.i + %add.ptr.i.idx = shl nsw i64 %__count.addr.0.i.i, 4 + %add.ptr.i.ptr = getelementptr inbounds i8, ptr %add.ptr.i.i, i64 %add.ptr.i.idx %cmp.i26 = icmp eq i64 %__count.addr.0.i.i, 0 br i1 %cmp.i26, label %if.end, label %for.body @@ -1394,7 +1395,7 @@ for.body: ; preds = %_ZNK4mold3elf12Inpu %is_alive8 = getelementptr inbounds i8, ptr %__begin1.sroa.0.07, i64 14 store atomic i8 0, ptr %is_alive8 monotonic, align 1 %incdec.ptr.i = getelementptr inbounds i8, ptr %__begin1.sroa.0.07, i64 16 - %cmp.i2 = icmp eq ptr %incdec.ptr.i, %add.ptr.i + %cmp.i2 = icmp eq ptr %incdec.ptr.i, %add.ptr.i.ptr br i1 %cmp.i2, label %if.end, label %for.body if.end: ; preds = %for.body, %if.then, %_ZNK4mold3elf12InputSectionINS0_11LOONGARCH32EE8get_fdesEv.exit, %entry diff --git a/bench/mold/optimized/input-sections.cc.LOONGARCH64.cc.ll b/bench/mold/optimized/input-sections.cc.LOONGARCH64.cc.ll index b7389097218..341a3974599 100644 --- a/bench/mold/optimized/input-sections.cc.LOONGARCH64.cc.ll +++ b/bench/mold/optimized/input-sections.cc.LOONGARCH64.cc.ll @@ -1366,7 +1366,8 @@ _ZNK4mold3elf12InputSectionINS0_11LOONGARCH64EE8get_fdesEv.exit: ; preds = %if.t %sub.i.i = sub nsw i64 %sub.ptr.div.i.i.i.i, %conv.i %__count.addr.0.i.i = select i1 %cmp.i.i, i64 %sub.i.i, i64 %conv4.i %add.ptr.i.i = getelementptr inbounds %"struct.mold::elf::FdeRecord", ptr %4, i64 %conv.i - %add.ptr.i = getelementptr inbounds %"struct.mold::elf::FdeRecord", ptr %add.ptr.i.i, i64 %__count.addr.0.i.i + %add.ptr.i.idx = shl nsw i64 %__count.addr.0.i.i, 4 + %add.ptr.i.ptr = getelementptr inbounds i8, ptr %add.ptr.i.i, i64 %add.ptr.i.idx %cmp.i26 = icmp eq i64 %__count.addr.0.i.i, 0 br i1 %cmp.i26, label %if.end, label %for.body @@ -1375,7 +1376,7 @@ for.body: ; preds = %_ZNK4mold3elf12Inpu %is_alive8 = getelementptr inbounds i8, ptr %__begin1.sroa.0.07, i64 14 store atomic i8 0, ptr %is_alive8 monotonic, align 1 %incdec.ptr.i = getelementptr inbounds i8, ptr %__begin1.sroa.0.07, i64 16 - %cmp.i2 = icmp eq ptr %incdec.ptr.i, %add.ptr.i + %cmp.i2 = icmp eq ptr %incdec.ptr.i, %add.ptr.i.ptr br i1 %cmp.i2, label %if.end, label %for.body if.end: ; preds = %for.body, %if.then, %_ZNK4mold3elf12InputSectionINS0_11LOONGARCH64EE8get_fdesEv.exit, %entry diff --git a/bench/mold/optimized/input-sections.cc.M68K.cc.ll b/bench/mold/optimized/input-sections.cc.M68K.cc.ll index 10165579721..e53fbd4cf4d 100644 --- a/bench/mold/optimized/input-sections.cc.M68K.cc.ll +++ b/bench/mold/optimized/input-sections.cc.M68K.cc.ll @@ -1386,7 +1386,8 @@ _ZNK4mold3elf12InputSectionINS0_4M68KEE8get_fdesEv.exit: ; preds = %if.then %sub.i.i = sub nsw i64 %sub.ptr.div.i.i.i.i, %conv.i %__count.addr.0.i.i = select i1 %cmp.i.i, i64 %sub.i.i, i64 %conv4.i %add.ptr.i.i = getelementptr inbounds %"struct.mold::elf::FdeRecord", ptr %4, i64 %conv.i - %add.ptr.i = getelementptr inbounds %"struct.mold::elf::FdeRecord", ptr %add.ptr.i.i, i64 %__count.addr.0.i.i + %add.ptr.i.idx = shl nsw i64 %__count.addr.0.i.i, 4 + %add.ptr.i.ptr = getelementptr inbounds i8, ptr %add.ptr.i.i, i64 %add.ptr.i.idx %cmp.i26 = icmp eq i64 %__count.addr.0.i.i, 0 br i1 %cmp.i26, label %if.end, label %for.body @@ -1395,7 +1396,7 @@ for.body: ; preds = %_ZNK4mold3elf12Inpu %is_alive8 = getelementptr inbounds i8, ptr %__begin1.sroa.0.07, i64 14 store atomic i8 0, ptr %is_alive8 monotonic, align 1 %incdec.ptr.i = getelementptr inbounds i8, ptr %__begin1.sroa.0.07, i64 16 - %cmp.i2 = icmp eq ptr %incdec.ptr.i, %add.ptr.i + %cmp.i2 = icmp eq ptr %incdec.ptr.i, %add.ptr.i.ptr br i1 %cmp.i2, label %if.end, label %for.body if.end: ; preds = %for.body, %if.then, %_ZNK4mold3elf12InputSectionINS0_4M68KEE8get_fdesEv.exit, %entry diff --git a/bench/mold/optimized/input-sections.cc.PPC32.cc.ll b/bench/mold/optimized/input-sections.cc.PPC32.cc.ll index 3631c07c395..b0f143bd464 100644 --- a/bench/mold/optimized/input-sections.cc.PPC32.cc.ll +++ b/bench/mold/optimized/input-sections.cc.PPC32.cc.ll @@ -1414,7 +1414,8 @@ _ZNK4mold3elf12InputSectionINS0_5PPC32EE8get_fdesEv.exit: ; preds = %if.then %sub.i.i = sub nsw i64 %sub.ptr.div.i.i.i.i, %conv.i %__count.addr.0.i.i = select i1 %cmp.i.i, i64 %sub.i.i, i64 %conv4.i %add.ptr.i.i = getelementptr inbounds %"struct.mold::elf::FdeRecord", ptr %4, i64 %conv.i - %add.ptr.i = getelementptr inbounds %"struct.mold::elf::FdeRecord", ptr %add.ptr.i.i, i64 %__count.addr.0.i.i + %add.ptr.i.idx = shl nsw i64 %__count.addr.0.i.i, 4 + %add.ptr.i.ptr = getelementptr inbounds i8, ptr %add.ptr.i.i, i64 %add.ptr.i.idx %cmp.i26 = icmp eq i64 %__count.addr.0.i.i, 0 br i1 %cmp.i26, label %if.end, label %for.body @@ -1423,7 +1424,7 @@ for.body: ; preds = %_ZNK4mold3elf12Inpu %is_alive8 = getelementptr inbounds i8, ptr %__begin1.sroa.0.07, i64 14 store atomic i8 0, ptr %is_alive8 monotonic, align 1 %incdec.ptr.i = getelementptr inbounds i8, ptr %__begin1.sroa.0.07, i64 16 - %cmp.i2 = icmp eq ptr %incdec.ptr.i, %add.ptr.i + %cmp.i2 = icmp eq ptr %incdec.ptr.i, %add.ptr.i.ptr br i1 %cmp.i2, label %if.end, label %for.body if.end: ; preds = %for.body, %if.then, %_ZNK4mold3elf12InputSectionINS0_5PPC32EE8get_fdesEv.exit, %entry diff --git a/bench/mold/optimized/input-sections.cc.PPC64V1.cc.ll b/bench/mold/optimized/input-sections.cc.PPC64V1.cc.ll index 208118068a6..7bcaf8664a5 100644 --- a/bench/mold/optimized/input-sections.cc.PPC64V1.cc.ll +++ b/bench/mold/optimized/input-sections.cc.PPC64V1.cc.ll @@ -1388,7 +1388,8 @@ _ZNK4mold3elf12InputSectionINS0_7PPC64V1EE8get_fdesEv.exit: ; preds = %if.then %sub.i.i = sub nsw i64 %sub.ptr.div.i.i.i.i, %conv.i %__count.addr.0.i.i = select i1 %cmp.i.i, i64 %sub.i.i, i64 %conv4.i %add.ptr.i.i = getelementptr inbounds %"struct.mold::elf::FdeRecord", ptr %4, i64 %conv.i - %add.ptr.i = getelementptr inbounds %"struct.mold::elf::FdeRecord", ptr %add.ptr.i.i, i64 %__count.addr.0.i.i + %add.ptr.i.idx = shl nsw i64 %__count.addr.0.i.i, 4 + %add.ptr.i.ptr = getelementptr inbounds i8, ptr %add.ptr.i.i, i64 %add.ptr.i.idx %cmp.i26 = icmp eq i64 %__count.addr.0.i.i, 0 br i1 %cmp.i26, label %if.end, label %for.body @@ -1397,7 +1398,7 @@ for.body: ; preds = %_ZNK4mold3elf12Inpu %is_alive8 = getelementptr inbounds i8, ptr %__begin1.sroa.0.07, i64 14 store atomic i8 0, ptr %is_alive8 monotonic, align 1 %incdec.ptr.i = getelementptr inbounds i8, ptr %__begin1.sroa.0.07, i64 16 - %cmp.i2 = icmp eq ptr %incdec.ptr.i, %add.ptr.i + %cmp.i2 = icmp eq ptr %incdec.ptr.i, %add.ptr.i.ptr br i1 %cmp.i2, label %if.end, label %for.body if.end: ; preds = %for.body, %if.then, %_ZNK4mold3elf12InputSectionINS0_7PPC64V1EE8get_fdesEv.exit, %entry diff --git a/bench/mold/optimized/input-sections.cc.PPC64V2.cc.ll b/bench/mold/optimized/input-sections.cc.PPC64V2.cc.ll index 1ed24f1c91b..5147cfe1fec 100644 --- a/bench/mold/optimized/input-sections.cc.PPC64V2.cc.ll +++ b/bench/mold/optimized/input-sections.cc.PPC64V2.cc.ll @@ -1366,7 +1366,8 @@ _ZNK4mold3elf12InputSectionINS0_7PPC64V2EE8get_fdesEv.exit: ; preds = %if.then %sub.i.i = sub nsw i64 %sub.ptr.div.i.i.i.i, %conv.i %__count.addr.0.i.i = select i1 %cmp.i.i, i64 %sub.i.i, i64 %conv4.i %add.ptr.i.i = getelementptr inbounds %"struct.mold::elf::FdeRecord", ptr %4, i64 %conv.i - %add.ptr.i = getelementptr inbounds %"struct.mold::elf::FdeRecord", ptr %add.ptr.i.i, i64 %__count.addr.0.i.i + %add.ptr.i.idx = shl nsw i64 %__count.addr.0.i.i, 4 + %add.ptr.i.ptr = getelementptr inbounds i8, ptr %add.ptr.i.i, i64 %add.ptr.i.idx %cmp.i26 = icmp eq i64 %__count.addr.0.i.i, 0 br i1 %cmp.i26, label %if.end, label %for.body @@ -1375,7 +1376,7 @@ for.body: ; preds = %_ZNK4mold3elf12Inpu %is_alive8 = getelementptr inbounds i8, ptr %__begin1.sroa.0.07, i64 14 store atomic i8 0, ptr %is_alive8 monotonic, align 1 %incdec.ptr.i = getelementptr inbounds i8, ptr %__begin1.sroa.0.07, i64 16 - %cmp.i2 = icmp eq ptr %incdec.ptr.i, %add.ptr.i + %cmp.i2 = icmp eq ptr %incdec.ptr.i, %add.ptr.i.ptr br i1 %cmp.i2, label %if.end, label %for.body if.end: ; preds = %for.body, %if.then, %_ZNK4mold3elf12InputSectionINS0_7PPC64V2EE8get_fdesEv.exit, %entry diff --git a/bench/mold/optimized/input-sections.cc.RV32BE.cc.ll b/bench/mold/optimized/input-sections.cc.RV32BE.cc.ll index 0a9dadf026e..ee3426351a0 100644 --- a/bench/mold/optimized/input-sections.cc.RV32BE.cc.ll +++ b/bench/mold/optimized/input-sections.cc.RV32BE.cc.ll @@ -1409,7 +1409,8 @@ _ZNK4mold3elf12InputSectionINS0_6RV32BEEE8get_fdesEv.exit: ; preds = %if.then %sub.i.i = sub nsw i64 %sub.ptr.div.i.i.i.i, %conv.i %__count.addr.0.i.i = select i1 %cmp.i.i, i64 %sub.i.i, i64 %conv4.i %add.ptr.i.i = getelementptr inbounds %"struct.mold::elf::FdeRecord", ptr %4, i64 %conv.i - %add.ptr.i = getelementptr inbounds %"struct.mold::elf::FdeRecord", ptr %add.ptr.i.i, i64 %__count.addr.0.i.i + %add.ptr.i.idx = shl nsw i64 %__count.addr.0.i.i, 4 + %add.ptr.i.ptr = getelementptr inbounds i8, ptr %add.ptr.i.i, i64 %add.ptr.i.idx %cmp.i26 = icmp eq i64 %__count.addr.0.i.i, 0 br i1 %cmp.i26, label %if.end, label %for.body @@ -1418,7 +1419,7 @@ for.body: ; preds = %_ZNK4mold3elf12Inpu %is_alive8 = getelementptr inbounds i8, ptr %__begin1.sroa.0.07, i64 14 store atomic i8 0, ptr %is_alive8 monotonic, align 1 %incdec.ptr.i = getelementptr inbounds i8, ptr %__begin1.sroa.0.07, i64 16 - %cmp.i2 = icmp eq ptr %incdec.ptr.i, %add.ptr.i + %cmp.i2 = icmp eq ptr %incdec.ptr.i, %add.ptr.i.ptr br i1 %cmp.i2, label %if.end, label %for.body if.end: ; preds = %for.body, %if.then, %_ZNK4mold3elf12InputSectionINS0_6RV32BEEE8get_fdesEv.exit, %entry diff --git a/bench/mold/optimized/input-sections.cc.RV32LE.cc.ll b/bench/mold/optimized/input-sections.cc.RV32LE.cc.ll index 3b0e40ecc79..9c913003935 100644 --- a/bench/mold/optimized/input-sections.cc.RV32LE.cc.ll +++ b/bench/mold/optimized/input-sections.cc.RV32LE.cc.ll @@ -1380,7 +1380,8 @@ _ZNK4mold3elf12InputSectionINS0_6RV32LEEE8get_fdesEv.exit: ; preds = %if.then %sub.i.i = sub nsw i64 %sub.ptr.div.i.i.i.i, %conv.i %__count.addr.0.i.i = select i1 %cmp.i.i, i64 %sub.i.i, i64 %conv4.i %add.ptr.i.i = getelementptr inbounds %"struct.mold::elf::FdeRecord", ptr %4, i64 %conv.i - %add.ptr.i = getelementptr inbounds %"struct.mold::elf::FdeRecord", ptr %add.ptr.i.i, i64 %__count.addr.0.i.i + %add.ptr.i.idx = shl nsw i64 %__count.addr.0.i.i, 4 + %add.ptr.i.ptr = getelementptr inbounds i8, ptr %add.ptr.i.i, i64 %add.ptr.i.idx %cmp.i26 = icmp eq i64 %__count.addr.0.i.i, 0 br i1 %cmp.i26, label %if.end, label %for.body @@ -1389,7 +1390,7 @@ for.body: ; preds = %_ZNK4mold3elf12Inpu %is_alive8 = getelementptr inbounds i8, ptr %__begin1.sroa.0.07, i64 14 store atomic i8 0, ptr %is_alive8 monotonic, align 1 %incdec.ptr.i = getelementptr inbounds i8, ptr %__begin1.sroa.0.07, i64 16 - %cmp.i2 = icmp eq ptr %incdec.ptr.i, %add.ptr.i + %cmp.i2 = icmp eq ptr %incdec.ptr.i, %add.ptr.i.ptr br i1 %cmp.i2, label %if.end, label %for.body if.end: ; preds = %for.body, %if.then, %_ZNK4mold3elf12InputSectionINS0_6RV32LEEE8get_fdesEv.exit, %entry diff --git a/bench/mold/optimized/input-sections.cc.RV64BE.cc.ll b/bench/mold/optimized/input-sections.cc.RV64BE.cc.ll index e28d370bbff..d1956930c47 100644 --- a/bench/mold/optimized/input-sections.cc.RV64BE.cc.ll +++ b/bench/mold/optimized/input-sections.cc.RV64BE.cc.ll @@ -1382,7 +1382,8 @@ _ZNK4mold3elf12InputSectionINS0_6RV64BEEE8get_fdesEv.exit: ; preds = %if.then %sub.i.i = sub nsw i64 %sub.ptr.div.i.i.i.i, %conv.i %__count.addr.0.i.i = select i1 %cmp.i.i, i64 %sub.i.i, i64 %conv4.i %add.ptr.i.i = getelementptr inbounds %"struct.mold::elf::FdeRecord", ptr %4, i64 %conv.i - %add.ptr.i = getelementptr inbounds %"struct.mold::elf::FdeRecord", ptr %add.ptr.i.i, i64 %__count.addr.0.i.i + %add.ptr.i.idx = shl nsw i64 %__count.addr.0.i.i, 4 + %add.ptr.i.ptr = getelementptr inbounds i8, ptr %add.ptr.i.i, i64 %add.ptr.i.idx %cmp.i26 = icmp eq i64 %__count.addr.0.i.i, 0 br i1 %cmp.i26, label %if.end, label %for.body @@ -1391,7 +1392,7 @@ for.body: ; preds = %_ZNK4mold3elf12Inpu %is_alive8 = getelementptr inbounds i8, ptr %__begin1.sroa.0.07, i64 14 store atomic i8 0, ptr %is_alive8 monotonic, align 1 %incdec.ptr.i = getelementptr inbounds i8, ptr %__begin1.sroa.0.07, i64 16 - %cmp.i2 = icmp eq ptr %incdec.ptr.i, %add.ptr.i + %cmp.i2 = icmp eq ptr %incdec.ptr.i, %add.ptr.i.ptr br i1 %cmp.i2, label %if.end, label %for.body if.end: ; preds = %for.body, %if.then, %_ZNK4mold3elf12InputSectionINS0_6RV64BEEE8get_fdesEv.exit, %entry diff --git a/bench/mold/optimized/input-sections.cc.RV64LE.cc.ll b/bench/mold/optimized/input-sections.cc.RV64LE.cc.ll index 5fdeec3abe1..5667ad0462d 100644 --- a/bench/mold/optimized/input-sections.cc.RV64LE.cc.ll +++ b/bench/mold/optimized/input-sections.cc.RV64LE.cc.ll @@ -1361,7 +1361,8 @@ _ZNK4mold3elf12InputSectionINS0_6RV64LEEE8get_fdesEv.exit: ; preds = %if.then %sub.i.i = sub nsw i64 %sub.ptr.div.i.i.i.i, %conv.i %__count.addr.0.i.i = select i1 %cmp.i.i, i64 %sub.i.i, i64 %conv4.i %add.ptr.i.i = getelementptr inbounds %"struct.mold::elf::FdeRecord", ptr %4, i64 %conv.i - %add.ptr.i = getelementptr inbounds %"struct.mold::elf::FdeRecord", ptr %add.ptr.i.i, i64 %__count.addr.0.i.i + %add.ptr.i.idx = shl nsw i64 %__count.addr.0.i.i, 4 + %add.ptr.i.ptr = getelementptr inbounds i8, ptr %add.ptr.i.i, i64 %add.ptr.i.idx %cmp.i26 = icmp eq i64 %__count.addr.0.i.i, 0 br i1 %cmp.i26, label %if.end, label %for.body @@ -1370,7 +1371,7 @@ for.body: ; preds = %_ZNK4mold3elf12Inpu %is_alive8 = getelementptr inbounds i8, ptr %__begin1.sroa.0.07, i64 14 store atomic i8 0, ptr %is_alive8 monotonic, align 1 %incdec.ptr.i = getelementptr inbounds i8, ptr %__begin1.sroa.0.07, i64 16 - %cmp.i2 = icmp eq ptr %incdec.ptr.i, %add.ptr.i + %cmp.i2 = icmp eq ptr %incdec.ptr.i, %add.ptr.i.ptr br i1 %cmp.i2, label %if.end, label %for.body if.end: ; preds = %for.body, %if.then, %_ZNK4mold3elf12InputSectionINS0_6RV64LEEE8get_fdesEv.exit, %entry diff --git a/bench/mold/optimized/input-sections.cc.S390X.cc.ll b/bench/mold/optimized/input-sections.cc.S390X.cc.ll index 660f08012bf..04676f80e8f 100644 --- a/bench/mold/optimized/input-sections.cc.S390X.cc.ll +++ b/bench/mold/optimized/input-sections.cc.S390X.cc.ll @@ -1380,7 +1380,8 @@ _ZNK4mold3elf12InputSectionINS0_5S390XEE8get_fdesEv.exit: ; preds = %if.then %sub.i.i = sub nsw i64 %sub.ptr.div.i.i.i.i, %conv.i %__count.addr.0.i.i = select i1 %cmp.i.i, i64 %sub.i.i, i64 %conv4.i %add.ptr.i.i = getelementptr inbounds %"struct.mold::elf::FdeRecord", ptr %4, i64 %conv.i - %add.ptr.i = getelementptr inbounds %"struct.mold::elf::FdeRecord", ptr %add.ptr.i.i, i64 %__count.addr.0.i.i + %add.ptr.i.idx = shl nsw i64 %__count.addr.0.i.i, 4 + %add.ptr.i.ptr = getelementptr inbounds i8, ptr %add.ptr.i.i, i64 %add.ptr.i.idx %cmp.i26 = icmp eq i64 %__count.addr.0.i.i, 0 br i1 %cmp.i26, label %if.end, label %for.body @@ -1389,7 +1390,7 @@ for.body: ; preds = %_ZNK4mold3elf12Inpu %is_alive8 = getelementptr inbounds i8, ptr %__begin1.sroa.0.07, i64 14 store atomic i8 0, ptr %is_alive8 monotonic, align 1 %incdec.ptr.i = getelementptr inbounds i8, ptr %__begin1.sroa.0.07, i64 16 - %cmp.i2 = icmp eq ptr %incdec.ptr.i, %add.ptr.i + %cmp.i2 = icmp eq ptr %incdec.ptr.i, %add.ptr.i.ptr br i1 %cmp.i2, label %if.end, label %for.body if.end: ; preds = %for.body, %if.then, %_ZNK4mold3elf12InputSectionINS0_5S390XEE8get_fdesEv.exit, %entry diff --git a/bench/mold/optimized/input-sections.cc.SH4.cc.ll b/bench/mold/optimized/input-sections.cc.SH4.cc.ll index be0ecb82423..3cd9e86e588 100644 --- a/bench/mold/optimized/input-sections.cc.SH4.cc.ll +++ b/bench/mold/optimized/input-sections.cc.SH4.cc.ll @@ -1410,7 +1410,8 @@ _ZNK4mold3elf12InputSectionINS0_3SH4EE8get_fdesEv.exit: ; preds = %if.then %sub.i.i = sub nsw i64 %sub.ptr.div.i.i.i.i, %conv.i %__count.addr.0.i.i = select i1 %cmp.i.i, i64 %sub.i.i, i64 %conv4.i %add.ptr.i.i = getelementptr inbounds %"struct.mold::elf::FdeRecord", ptr %4, i64 %conv.i - %add.ptr.i = getelementptr inbounds %"struct.mold::elf::FdeRecord", ptr %add.ptr.i.i, i64 %__count.addr.0.i.i + %add.ptr.i.idx = shl nsw i64 %__count.addr.0.i.i, 4 + %add.ptr.i.ptr = getelementptr inbounds i8, ptr %add.ptr.i.i, i64 %add.ptr.i.idx %cmp.i26 = icmp eq i64 %__count.addr.0.i.i, 0 br i1 %cmp.i26, label %if.end, label %for.body @@ -1419,7 +1420,7 @@ for.body: ; preds = %_ZNK4mold3elf12Inpu %is_alive8 = getelementptr inbounds i8, ptr %__begin1.sroa.0.07, i64 14 store atomic i8 0, ptr %is_alive8 monotonic, align 1 %incdec.ptr.i = getelementptr inbounds i8, ptr %__begin1.sroa.0.07, i64 16 - %cmp.i2 = icmp eq ptr %incdec.ptr.i, %add.ptr.i + %cmp.i2 = icmp eq ptr %incdec.ptr.i, %add.ptr.i.ptr br i1 %cmp.i2, label %if.end, label %for.body if.end: ; preds = %for.body, %if.then, %_ZNK4mold3elf12InputSectionINS0_3SH4EE8get_fdesEv.exit, %entry diff --git a/bench/mold/optimized/input-sections.cc.SPARC64.cc.ll b/bench/mold/optimized/input-sections.cc.SPARC64.cc.ll index c5adf42de0d..3cd26fdf725 100644 --- a/bench/mold/optimized/input-sections.cc.SPARC64.cc.ll +++ b/bench/mold/optimized/input-sections.cc.SPARC64.cc.ll @@ -1381,7 +1381,8 @@ _ZNK4mold3elf12InputSectionINS0_7SPARC64EE8get_fdesEv.exit: ; preds = %if.then %sub.i.i = sub nsw i64 %sub.ptr.div.i.i.i.i, %conv.i %__count.addr.0.i.i = select i1 %cmp.i.i, i64 %sub.i.i, i64 %conv4.i %add.ptr.i.i = getelementptr inbounds %"struct.mold::elf::FdeRecord", ptr %4, i64 %conv.i - %add.ptr.i = getelementptr inbounds %"struct.mold::elf::FdeRecord", ptr %add.ptr.i.i, i64 %__count.addr.0.i.i + %add.ptr.i.idx = shl nsw i64 %__count.addr.0.i.i, 4 + %add.ptr.i.ptr = getelementptr inbounds i8, ptr %add.ptr.i.i, i64 %add.ptr.i.idx %cmp.i26 = icmp eq i64 %__count.addr.0.i.i, 0 br i1 %cmp.i26, label %if.end, label %for.body @@ -1390,7 +1391,7 @@ for.body: ; preds = %_ZNK4mold3elf12Inpu %is_alive8 = getelementptr inbounds i8, ptr %__begin1.sroa.0.07, i64 14 store atomic i8 0, ptr %is_alive8 monotonic, align 1 %incdec.ptr.i = getelementptr inbounds i8, ptr %__begin1.sroa.0.07, i64 16 - %cmp.i2 = icmp eq ptr %incdec.ptr.i, %add.ptr.i + %cmp.i2 = icmp eq ptr %incdec.ptr.i, %add.ptr.i.ptr br i1 %cmp.i2, label %if.end, label %for.body if.end: ; preds = %for.body, %if.then, %_ZNK4mold3elf12InputSectionINS0_7SPARC64EE8get_fdesEv.exit, %entry diff --git a/bench/mold/optimized/input-sections.cc.X86_64.cc.ll b/bench/mold/optimized/input-sections.cc.X86_64.cc.ll index 5aa70979610..f7f4cfb76ca 100644 --- a/bench/mold/optimized/input-sections.cc.X86_64.cc.ll +++ b/bench/mold/optimized/input-sections.cc.X86_64.cc.ll @@ -1359,7 +1359,8 @@ _ZNK4mold3elf12InputSectionINS0_6X86_64EE8get_fdesEv.exit: ; preds = %if.then %sub.i.i = sub nsw i64 %sub.ptr.div.i.i.i.i, %conv.i %__count.addr.0.i.i = select i1 %cmp.i.i, i64 %sub.i.i, i64 %conv4.i %add.ptr.i.i = getelementptr inbounds %"struct.mold::elf::FdeRecord", ptr %4, i64 %conv.i - %add.ptr.i = getelementptr inbounds %"struct.mold::elf::FdeRecord", ptr %add.ptr.i.i, i64 %__count.addr.0.i.i + %add.ptr.i.idx = shl nsw i64 %__count.addr.0.i.i, 4 + %add.ptr.i.ptr = getelementptr inbounds i8, ptr %add.ptr.i.i, i64 %add.ptr.i.idx %cmp.i26 = icmp eq i64 %__count.addr.0.i.i, 0 br i1 %cmp.i26, label %if.end, label %for.body @@ -1368,7 +1369,7 @@ for.body: ; preds = %_ZNK4mold3elf12Inpu %is_alive8 = getelementptr inbounds i8, ptr %__begin1.sroa.0.07, i64 14 store atomic i8 0, ptr %is_alive8 monotonic, align 1 %incdec.ptr.i = getelementptr inbounds i8, ptr %__begin1.sroa.0.07, i64 16 - %cmp.i2 = icmp eq ptr %incdec.ptr.i, %add.ptr.i + %cmp.i2 = icmp eq ptr %incdec.ptr.i, %add.ptr.i.ptr br i1 %cmp.i2, label %if.end, label %for.body if.end: ; preds = %for.body, %if.then, %_ZNK4mold3elf12InputSectionINS0_6X86_64EE8get_fdesEv.exit, %entry diff --git a/bench/mold/optimized/relocatable.cc.ALPHA.cc.ll b/bench/mold/optimized/relocatable.cc.ALPHA.cc.ll index ee0225575eb..868deb5cd7b 100644 --- a/bench/mold/optimized/relocatable.cc.ALPHA.cc.ll +++ b/bench/mold/optimized/relocatable.cc.ALPHA.cc.ll @@ -5092,7 +5092,8 @@ if.end.i.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i. %16 = load ptr, ptr %members12.i.i.i.i.i.i.i.i.i.i, align 8 %_M_extent.i.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__begin0.sroa.0.0131.i.i.i.i.i.i.i.i.i.i, i64 24 %17 = load i64, ptr %_M_extent.i.i.i.i.i.i.i.i.i.i.i.i, align 8 - %add.ptr.i16.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds %"class.mold::LittleEndian", ptr %16, i64 %17 + %add.ptr.i16.idx.i.i.i.i.i.i.i.i.i.i = shl nsw i64 %17, 2 + %add.ptr.i16.ptr.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %16, i64 %add.ptr.i16.idx.i.i.i.i.i.i.i.i.i.i %cmp.i17123.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %17, 0 br i1 %cmp.i17123.i.i.i.i.i.i.i.i.i.i, label %for.end.i.i.i.i.i.i.i.i.i.i, label %for.body22.i.i.i.i.i.i.i.i.i.i @@ -5250,7 +5251,7 @@ for.inc.i.i.i.i.i.i.i.i.i.i: ; preds = %_ZNSt6vectorIPN4mol %members.sroa.8.4.i.i.i.i.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_5ALPHAEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i.i50.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_5ALPHAEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i53.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i28.i.i.i.i.i.i.i.i.i.i, %if.then.i.i27.i.i.i.i.i.i.i.i.i.i ] %members.sroa.0.4.i.i.i.i.i.i.i.i.i.i = phi ptr [ %cond.i10.i.i.i.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_5ALPHAEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i.i.i.i.i.i.i.i.i.i.i ], [ %members.sroa.0.1127.i.i.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i.i.i.i.i ], [ %cond.i10.i.i.i45.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_5ALPHAEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i53.i.i.i.i.i.i.i.i.i.i ], [ %members.sroa.0.1127.i.i.i.i.i.i.i.i.i.i, %if.then.i.i27.i.i.i.i.i.i.i.i.i.i ] %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__begin013.sroa.0.0124.i.i.i.i.i.i.i.i.i.i, i64 4 - %cmp.i17.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i, %add.ptr.i16.i.i.i.i.i.i.i.i.i.i + %cmp.i17.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i, %add.ptr.i16.ptr.i.i.i.i.i.i.i.i.i.i br i1 %cmp.i17.i.i.i.i.i.i.i.i.i.i, label %for.end.i.i.i.i.i.i.i.i.i.i, label %for.body22.i.i.i.i.i.i.i.i.i.i for.end.i.i.i.i.i.i.i.i.i.i: ; preds = %for.inc.i.i.i.i.i.i.i.i.i.i, %if.end.i.i.i.i.i.i.i.i.i.i diff --git a/bench/mold/optimized/relocatable.cc.ARM32.cc.ll b/bench/mold/optimized/relocatable.cc.ARM32.cc.ll index d736359f979..3b8a93b9e56 100644 --- a/bench/mold/optimized/relocatable.cc.ARM32.cc.ll +++ b/bench/mold/optimized/relocatable.cc.ARM32.cc.ll @@ -5094,7 +5094,8 @@ if.end.i.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i. %16 = load ptr, ptr %members12.i.i.i.i.i.i.i.i.i.i, align 8 %_M_extent.i.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__begin0.sroa.0.0131.i.i.i.i.i.i.i.i.i.i, i64 24 %17 = load i64, ptr %_M_extent.i.i.i.i.i.i.i.i.i.i.i.i, align 8 - %add.ptr.i16.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds %"class.mold::LittleEndian", ptr %16, i64 %17 + %add.ptr.i16.idx.i.i.i.i.i.i.i.i.i.i = shl nsw i64 %17, 2 + %add.ptr.i16.ptr.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %16, i64 %add.ptr.i16.idx.i.i.i.i.i.i.i.i.i.i %cmp.i17123.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %17, 0 br i1 %cmp.i17123.i.i.i.i.i.i.i.i.i.i, label %for.end.i.i.i.i.i.i.i.i.i.i, label %for.body22.i.i.i.i.i.i.i.i.i.i @@ -5252,7 +5253,7 @@ for.inc.i.i.i.i.i.i.i.i.i.i: ; preds = %_ZNSt6vectorIPN4mol %members.sroa.8.4.i.i.i.i.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_5ARM32EEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i.i50.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_5ARM32EEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i53.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i28.i.i.i.i.i.i.i.i.i.i, %if.then.i.i27.i.i.i.i.i.i.i.i.i.i ] %members.sroa.0.4.i.i.i.i.i.i.i.i.i.i = phi ptr [ %cond.i10.i.i.i.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_5ARM32EEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i.i.i.i.i.i.i.i.i.i.i ], [ %members.sroa.0.1127.i.i.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i.i.i.i.i ], [ %cond.i10.i.i.i45.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_5ARM32EEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i53.i.i.i.i.i.i.i.i.i.i ], [ %members.sroa.0.1127.i.i.i.i.i.i.i.i.i.i, %if.then.i.i27.i.i.i.i.i.i.i.i.i.i ] %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__begin013.sroa.0.0124.i.i.i.i.i.i.i.i.i.i, i64 4 - %cmp.i17.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i, %add.ptr.i16.i.i.i.i.i.i.i.i.i.i + %cmp.i17.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i, %add.ptr.i16.ptr.i.i.i.i.i.i.i.i.i.i br i1 %cmp.i17.i.i.i.i.i.i.i.i.i.i, label %for.end.i.i.i.i.i.i.i.i.i.i, label %for.body22.i.i.i.i.i.i.i.i.i.i for.end.i.i.i.i.i.i.i.i.i.i: ; preds = %for.inc.i.i.i.i.i.i.i.i.i.i, %if.end.i.i.i.i.i.i.i.i.i.i diff --git a/bench/mold/optimized/relocatable.cc.ARM64.cc.ll b/bench/mold/optimized/relocatable.cc.ARM64.cc.ll index 5218631f535..3556950eb72 100644 --- a/bench/mold/optimized/relocatable.cc.ARM64.cc.ll +++ b/bench/mold/optimized/relocatable.cc.ARM64.cc.ll @@ -5092,7 +5092,8 @@ if.end.i.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i. %16 = load ptr, ptr %members12.i.i.i.i.i.i.i.i.i.i, align 8 %_M_extent.i.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__begin0.sroa.0.0131.i.i.i.i.i.i.i.i.i.i, i64 24 %17 = load i64, ptr %_M_extent.i.i.i.i.i.i.i.i.i.i.i.i, align 8 - %add.ptr.i16.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds %"class.mold::LittleEndian", ptr %16, i64 %17 + %add.ptr.i16.idx.i.i.i.i.i.i.i.i.i.i = shl nsw i64 %17, 2 + %add.ptr.i16.ptr.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %16, i64 %add.ptr.i16.idx.i.i.i.i.i.i.i.i.i.i %cmp.i17123.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %17, 0 br i1 %cmp.i17123.i.i.i.i.i.i.i.i.i.i, label %for.end.i.i.i.i.i.i.i.i.i.i, label %for.body22.i.i.i.i.i.i.i.i.i.i @@ -5250,7 +5251,7 @@ for.inc.i.i.i.i.i.i.i.i.i.i: ; preds = %_ZNSt6vectorIPN4mol %members.sroa.8.4.i.i.i.i.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_5ARM64EEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i.i50.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_5ARM64EEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i53.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i28.i.i.i.i.i.i.i.i.i.i, %if.then.i.i27.i.i.i.i.i.i.i.i.i.i ] %members.sroa.0.4.i.i.i.i.i.i.i.i.i.i = phi ptr [ %cond.i10.i.i.i.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_5ARM64EEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i.i.i.i.i.i.i.i.i.i.i ], [ %members.sroa.0.1127.i.i.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i.i.i.i.i ], [ %cond.i10.i.i.i45.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_5ARM64EEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i53.i.i.i.i.i.i.i.i.i.i ], [ %members.sroa.0.1127.i.i.i.i.i.i.i.i.i.i, %if.then.i.i27.i.i.i.i.i.i.i.i.i.i ] %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__begin013.sroa.0.0124.i.i.i.i.i.i.i.i.i.i, i64 4 - %cmp.i17.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i, %add.ptr.i16.i.i.i.i.i.i.i.i.i.i + %cmp.i17.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i, %add.ptr.i16.ptr.i.i.i.i.i.i.i.i.i.i br i1 %cmp.i17.i.i.i.i.i.i.i.i.i.i, label %for.end.i.i.i.i.i.i.i.i.i.i, label %for.body22.i.i.i.i.i.i.i.i.i.i for.end.i.i.i.i.i.i.i.i.i.i: ; preds = %for.inc.i.i.i.i.i.i.i.i.i.i, %if.end.i.i.i.i.i.i.i.i.i.i diff --git a/bench/mold/optimized/relocatable.cc.I386.cc.ll b/bench/mold/optimized/relocatable.cc.I386.cc.ll index 3563c965f24..4a0888e18ed 100644 --- a/bench/mold/optimized/relocatable.cc.I386.cc.ll +++ b/bench/mold/optimized/relocatable.cc.I386.cc.ll @@ -5094,7 +5094,8 @@ if.end.i.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i. %16 = load ptr, ptr %members12.i.i.i.i.i.i.i.i.i.i, align 8 %_M_extent.i.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__begin0.sroa.0.0131.i.i.i.i.i.i.i.i.i.i, i64 24 %17 = load i64, ptr %_M_extent.i.i.i.i.i.i.i.i.i.i.i.i, align 8 - %add.ptr.i16.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds %"class.mold::LittleEndian", ptr %16, i64 %17 + %add.ptr.i16.idx.i.i.i.i.i.i.i.i.i.i = shl nsw i64 %17, 2 + %add.ptr.i16.ptr.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %16, i64 %add.ptr.i16.idx.i.i.i.i.i.i.i.i.i.i %cmp.i17123.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %17, 0 br i1 %cmp.i17123.i.i.i.i.i.i.i.i.i.i, label %for.end.i.i.i.i.i.i.i.i.i.i, label %for.body22.i.i.i.i.i.i.i.i.i.i @@ -5252,7 +5253,7 @@ for.inc.i.i.i.i.i.i.i.i.i.i: ; preds = %_ZNSt6vectorIPN4mol %members.sroa.8.4.i.i.i.i.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_4I386EEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i.i50.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_4I386EEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i53.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i28.i.i.i.i.i.i.i.i.i.i, %if.then.i.i27.i.i.i.i.i.i.i.i.i.i ] %members.sroa.0.4.i.i.i.i.i.i.i.i.i.i = phi ptr [ %cond.i10.i.i.i.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_4I386EEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i.i.i.i.i.i.i.i.i.i.i ], [ %members.sroa.0.1127.i.i.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i.i.i.i.i ], [ %cond.i10.i.i.i45.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_4I386EEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i53.i.i.i.i.i.i.i.i.i.i ], [ %members.sroa.0.1127.i.i.i.i.i.i.i.i.i.i, %if.then.i.i27.i.i.i.i.i.i.i.i.i.i ] %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__begin013.sroa.0.0124.i.i.i.i.i.i.i.i.i.i, i64 4 - %cmp.i17.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i, %add.ptr.i16.i.i.i.i.i.i.i.i.i.i + %cmp.i17.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i, %add.ptr.i16.ptr.i.i.i.i.i.i.i.i.i.i br i1 %cmp.i17.i.i.i.i.i.i.i.i.i.i, label %for.end.i.i.i.i.i.i.i.i.i.i, label %for.body22.i.i.i.i.i.i.i.i.i.i for.end.i.i.i.i.i.i.i.i.i.i: ; preds = %for.inc.i.i.i.i.i.i.i.i.i.i, %if.end.i.i.i.i.i.i.i.i.i.i diff --git a/bench/mold/optimized/relocatable.cc.LOONGARCH32.cc.ll b/bench/mold/optimized/relocatable.cc.LOONGARCH32.cc.ll index b4b4d7c282d..8e02508ff77 100644 --- a/bench/mold/optimized/relocatable.cc.LOONGARCH32.cc.ll +++ b/bench/mold/optimized/relocatable.cc.LOONGARCH32.cc.ll @@ -5094,7 +5094,8 @@ if.end.i.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i. %16 = load ptr, ptr %members12.i.i.i.i.i.i.i.i.i.i, align 8 %_M_extent.i.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__begin0.sroa.0.0131.i.i.i.i.i.i.i.i.i.i, i64 24 %17 = load i64, ptr %_M_extent.i.i.i.i.i.i.i.i.i.i.i.i, align 8 - %add.ptr.i16.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds %"class.mold::LittleEndian", ptr %16, i64 %17 + %add.ptr.i16.idx.i.i.i.i.i.i.i.i.i.i = shl nsw i64 %17, 2 + %add.ptr.i16.ptr.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %16, i64 %add.ptr.i16.idx.i.i.i.i.i.i.i.i.i.i %cmp.i17123.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %17, 0 br i1 %cmp.i17123.i.i.i.i.i.i.i.i.i.i, label %for.end.i.i.i.i.i.i.i.i.i.i, label %for.body22.i.i.i.i.i.i.i.i.i.i @@ -5252,7 +5253,7 @@ for.inc.i.i.i.i.i.i.i.i.i.i: ; preds = %_ZNSt6vectorIPN4mol %members.sroa.8.4.i.i.i.i.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_11LOONGARCH32EEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i.i50.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_11LOONGARCH32EEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i53.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i28.i.i.i.i.i.i.i.i.i.i, %if.then.i.i27.i.i.i.i.i.i.i.i.i.i ] %members.sroa.0.4.i.i.i.i.i.i.i.i.i.i = phi ptr [ %cond.i10.i.i.i.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_11LOONGARCH32EEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i.i.i.i.i.i.i.i.i.i.i ], [ %members.sroa.0.1127.i.i.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i.i.i.i.i ], [ %cond.i10.i.i.i45.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_11LOONGARCH32EEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i53.i.i.i.i.i.i.i.i.i.i ], [ %members.sroa.0.1127.i.i.i.i.i.i.i.i.i.i, %if.then.i.i27.i.i.i.i.i.i.i.i.i.i ] %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__begin013.sroa.0.0124.i.i.i.i.i.i.i.i.i.i, i64 4 - %cmp.i17.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i, %add.ptr.i16.i.i.i.i.i.i.i.i.i.i + %cmp.i17.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i, %add.ptr.i16.ptr.i.i.i.i.i.i.i.i.i.i br i1 %cmp.i17.i.i.i.i.i.i.i.i.i.i, label %for.end.i.i.i.i.i.i.i.i.i.i, label %for.body22.i.i.i.i.i.i.i.i.i.i for.end.i.i.i.i.i.i.i.i.i.i: ; preds = %for.inc.i.i.i.i.i.i.i.i.i.i, %if.end.i.i.i.i.i.i.i.i.i.i diff --git a/bench/mold/optimized/relocatable.cc.LOONGARCH64.cc.ll b/bench/mold/optimized/relocatable.cc.LOONGARCH64.cc.ll index 39419a6b21c..cb27944e1b0 100644 --- a/bench/mold/optimized/relocatable.cc.LOONGARCH64.cc.ll +++ b/bench/mold/optimized/relocatable.cc.LOONGARCH64.cc.ll @@ -5092,7 +5092,8 @@ if.end.i.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i. %16 = load ptr, ptr %members12.i.i.i.i.i.i.i.i.i.i, align 8 %_M_extent.i.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__begin0.sroa.0.0131.i.i.i.i.i.i.i.i.i.i, i64 24 %17 = load i64, ptr %_M_extent.i.i.i.i.i.i.i.i.i.i.i.i, align 8 - %add.ptr.i16.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds %"class.mold::LittleEndian", ptr %16, i64 %17 + %add.ptr.i16.idx.i.i.i.i.i.i.i.i.i.i = shl nsw i64 %17, 2 + %add.ptr.i16.ptr.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %16, i64 %add.ptr.i16.idx.i.i.i.i.i.i.i.i.i.i %cmp.i17123.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %17, 0 br i1 %cmp.i17123.i.i.i.i.i.i.i.i.i.i, label %for.end.i.i.i.i.i.i.i.i.i.i, label %for.body22.i.i.i.i.i.i.i.i.i.i @@ -5250,7 +5251,7 @@ for.inc.i.i.i.i.i.i.i.i.i.i: ; preds = %_ZNSt6vectorIPN4mol %members.sroa.8.4.i.i.i.i.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_11LOONGARCH64EEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i.i50.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_11LOONGARCH64EEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i53.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i28.i.i.i.i.i.i.i.i.i.i, %if.then.i.i27.i.i.i.i.i.i.i.i.i.i ] %members.sroa.0.4.i.i.i.i.i.i.i.i.i.i = phi ptr [ %cond.i10.i.i.i.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_11LOONGARCH64EEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i.i.i.i.i.i.i.i.i.i.i ], [ %members.sroa.0.1127.i.i.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i.i.i.i.i ], [ %cond.i10.i.i.i45.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_11LOONGARCH64EEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i53.i.i.i.i.i.i.i.i.i.i ], [ %members.sroa.0.1127.i.i.i.i.i.i.i.i.i.i, %if.then.i.i27.i.i.i.i.i.i.i.i.i.i ] %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__begin013.sroa.0.0124.i.i.i.i.i.i.i.i.i.i, i64 4 - %cmp.i17.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i, %add.ptr.i16.i.i.i.i.i.i.i.i.i.i + %cmp.i17.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i, %add.ptr.i16.ptr.i.i.i.i.i.i.i.i.i.i br i1 %cmp.i17.i.i.i.i.i.i.i.i.i.i, label %for.end.i.i.i.i.i.i.i.i.i.i, label %for.body22.i.i.i.i.i.i.i.i.i.i for.end.i.i.i.i.i.i.i.i.i.i: ; preds = %for.inc.i.i.i.i.i.i.i.i.i.i, %if.end.i.i.i.i.i.i.i.i.i.i diff --git a/bench/mold/optimized/relocatable.cc.M68K.cc.ll b/bench/mold/optimized/relocatable.cc.M68K.cc.ll index 4532dcb2d39..f944ce2ca01 100644 --- a/bench/mold/optimized/relocatable.cc.M68K.cc.ll +++ b/bench/mold/optimized/relocatable.cc.M68K.cc.ll @@ -5101,7 +5101,8 @@ if.end.i.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i. %17 = load ptr, ptr %members12.i.i.i.i.i.i.i.i.i.i, align 8 %_M_extent.i.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__begin0.sroa.0.0131.i.i.i.i.i.i.i.i.i.i, i64 24 %18 = load i64, ptr %_M_extent.i.i.i.i.i.i.i.i.i.i.i.i, align 8 - %add.ptr.i16.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds %"class.mold::BigEndian", ptr %17, i64 %18 + %add.ptr.i16.idx.i.i.i.i.i.i.i.i.i.i = shl nsw i64 %18, 2 + %add.ptr.i16.ptr.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %17, i64 %add.ptr.i16.idx.i.i.i.i.i.i.i.i.i.i %cmp.i17123.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %18, 0 br i1 %cmp.i17123.i.i.i.i.i.i.i.i.i.i, label %for.end.i.i.i.i.i.i.i.i.i.i, label %for.body22.i.i.i.i.i.i.i.i.i.i @@ -5261,7 +5262,7 @@ for.inc.i.i.i.i.i.i.i.i.i.i: ; preds = %_ZNSt6vectorIPN4mol %members.sroa.8.4.i.i.i.i.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_4M68KEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i.i50.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_4M68KEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i53.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i28.i.i.i.i.i.i.i.i.i.i, %if.then.i.i27.i.i.i.i.i.i.i.i.i.i ] %members.sroa.0.4.i.i.i.i.i.i.i.i.i.i = phi ptr [ %cond.i10.i.i.i.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_4M68KEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i.i.i.i.i.i.i.i.i.i.i ], [ %members.sroa.0.1127.i.i.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i.i.i.i.i ], [ %cond.i10.i.i.i45.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_4M68KEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i53.i.i.i.i.i.i.i.i.i.i ], [ %members.sroa.0.1127.i.i.i.i.i.i.i.i.i.i, %if.then.i.i27.i.i.i.i.i.i.i.i.i.i ] %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__begin013.sroa.0.0124.i.i.i.i.i.i.i.i.i.i, i64 4 - %cmp.i17.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i, %add.ptr.i16.i.i.i.i.i.i.i.i.i.i + %cmp.i17.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i, %add.ptr.i16.ptr.i.i.i.i.i.i.i.i.i.i br i1 %cmp.i17.i.i.i.i.i.i.i.i.i.i, label %for.end.i.i.i.i.i.i.i.i.i.i, label %for.body22.i.i.i.i.i.i.i.i.i.i for.end.i.i.i.i.i.i.i.i.i.i: ; preds = %for.inc.i.i.i.i.i.i.i.i.i.i, %if.end.i.i.i.i.i.i.i.i.i.i diff --git a/bench/mold/optimized/relocatable.cc.PPC32.cc.ll b/bench/mold/optimized/relocatable.cc.PPC32.cc.ll index 96df770a4ab..71eb14e6ecd 100644 --- a/bench/mold/optimized/relocatable.cc.PPC32.cc.ll +++ b/bench/mold/optimized/relocatable.cc.PPC32.cc.ll @@ -5101,7 +5101,8 @@ if.end.i.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i. %17 = load ptr, ptr %members12.i.i.i.i.i.i.i.i.i.i, align 8 %_M_extent.i.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__begin0.sroa.0.0131.i.i.i.i.i.i.i.i.i.i, i64 24 %18 = load i64, ptr %_M_extent.i.i.i.i.i.i.i.i.i.i.i.i, align 8 - %add.ptr.i16.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds %"class.mold::BigEndian", ptr %17, i64 %18 + %add.ptr.i16.idx.i.i.i.i.i.i.i.i.i.i = shl nsw i64 %18, 2 + %add.ptr.i16.ptr.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %17, i64 %add.ptr.i16.idx.i.i.i.i.i.i.i.i.i.i %cmp.i17123.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %18, 0 br i1 %cmp.i17123.i.i.i.i.i.i.i.i.i.i, label %for.end.i.i.i.i.i.i.i.i.i.i, label %for.body22.i.i.i.i.i.i.i.i.i.i @@ -5261,7 +5262,7 @@ for.inc.i.i.i.i.i.i.i.i.i.i: ; preds = %_ZNSt6vectorIPN4mol %members.sroa.8.4.i.i.i.i.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_5PPC32EEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i.i50.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_5PPC32EEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i53.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i28.i.i.i.i.i.i.i.i.i.i, %if.then.i.i27.i.i.i.i.i.i.i.i.i.i ] %members.sroa.0.4.i.i.i.i.i.i.i.i.i.i = phi ptr [ %cond.i10.i.i.i.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_5PPC32EEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i.i.i.i.i.i.i.i.i.i.i ], [ %members.sroa.0.1127.i.i.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i.i.i.i.i ], [ %cond.i10.i.i.i45.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_5PPC32EEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i53.i.i.i.i.i.i.i.i.i.i ], [ %members.sroa.0.1127.i.i.i.i.i.i.i.i.i.i, %if.then.i.i27.i.i.i.i.i.i.i.i.i.i ] %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__begin013.sroa.0.0124.i.i.i.i.i.i.i.i.i.i, i64 4 - %cmp.i17.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i, %add.ptr.i16.i.i.i.i.i.i.i.i.i.i + %cmp.i17.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i, %add.ptr.i16.ptr.i.i.i.i.i.i.i.i.i.i br i1 %cmp.i17.i.i.i.i.i.i.i.i.i.i, label %for.end.i.i.i.i.i.i.i.i.i.i, label %for.body22.i.i.i.i.i.i.i.i.i.i for.end.i.i.i.i.i.i.i.i.i.i: ; preds = %for.inc.i.i.i.i.i.i.i.i.i.i, %if.end.i.i.i.i.i.i.i.i.i.i diff --git a/bench/mold/optimized/relocatable.cc.PPC64V1.cc.ll b/bench/mold/optimized/relocatable.cc.PPC64V1.cc.ll index 20b85ce92c9..110f96119e0 100644 --- a/bench/mold/optimized/relocatable.cc.PPC64V1.cc.ll +++ b/bench/mold/optimized/relocatable.cc.PPC64V1.cc.ll @@ -5102,7 +5102,8 @@ if.end.i.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i. %17 = load ptr, ptr %members12.i.i.i.i.i.i.i.i.i.i, align 8 %_M_extent.i.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__begin0.sroa.0.0131.i.i.i.i.i.i.i.i.i.i, i64 24 %18 = load i64, ptr %_M_extent.i.i.i.i.i.i.i.i.i.i.i.i, align 8 - %add.ptr.i16.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds %"class.mold::BigEndian", ptr %17, i64 %18 + %add.ptr.i16.idx.i.i.i.i.i.i.i.i.i.i = shl nsw i64 %18, 2 + %add.ptr.i16.ptr.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %17, i64 %add.ptr.i16.idx.i.i.i.i.i.i.i.i.i.i %cmp.i17123.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %18, 0 br i1 %cmp.i17123.i.i.i.i.i.i.i.i.i.i, label %for.end.i.i.i.i.i.i.i.i.i.i, label %for.body22.i.i.i.i.i.i.i.i.i.i @@ -5262,7 +5263,7 @@ for.inc.i.i.i.i.i.i.i.i.i.i: ; preds = %_ZNSt6vectorIPN4mol %members.sroa.8.4.i.i.i.i.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_7PPC64V1EEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i.i50.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_7PPC64V1EEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i53.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i28.i.i.i.i.i.i.i.i.i.i, %if.then.i.i27.i.i.i.i.i.i.i.i.i.i ] %members.sroa.0.4.i.i.i.i.i.i.i.i.i.i = phi ptr [ %cond.i10.i.i.i.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_7PPC64V1EEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i.i.i.i.i.i.i.i.i.i.i ], [ %members.sroa.0.1127.i.i.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i.i.i.i.i ], [ %cond.i10.i.i.i45.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_7PPC64V1EEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i53.i.i.i.i.i.i.i.i.i.i ], [ %members.sroa.0.1127.i.i.i.i.i.i.i.i.i.i, %if.then.i.i27.i.i.i.i.i.i.i.i.i.i ] %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__begin013.sroa.0.0124.i.i.i.i.i.i.i.i.i.i, i64 4 - %cmp.i17.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i, %add.ptr.i16.i.i.i.i.i.i.i.i.i.i + %cmp.i17.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i, %add.ptr.i16.ptr.i.i.i.i.i.i.i.i.i.i br i1 %cmp.i17.i.i.i.i.i.i.i.i.i.i, label %for.end.i.i.i.i.i.i.i.i.i.i, label %for.body22.i.i.i.i.i.i.i.i.i.i for.end.i.i.i.i.i.i.i.i.i.i: ; preds = %for.inc.i.i.i.i.i.i.i.i.i.i, %if.end.i.i.i.i.i.i.i.i.i.i diff --git a/bench/mold/optimized/relocatable.cc.PPC64V2.cc.ll b/bench/mold/optimized/relocatable.cc.PPC64V2.cc.ll index 1b278631f1d..46e87aa093e 100644 --- a/bench/mold/optimized/relocatable.cc.PPC64V2.cc.ll +++ b/bench/mold/optimized/relocatable.cc.PPC64V2.cc.ll @@ -5092,7 +5092,8 @@ if.end.i.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i. %16 = load ptr, ptr %members12.i.i.i.i.i.i.i.i.i.i, align 8 %_M_extent.i.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__begin0.sroa.0.0131.i.i.i.i.i.i.i.i.i.i, i64 24 %17 = load i64, ptr %_M_extent.i.i.i.i.i.i.i.i.i.i.i.i, align 8 - %add.ptr.i16.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds %"class.mold::LittleEndian", ptr %16, i64 %17 + %add.ptr.i16.idx.i.i.i.i.i.i.i.i.i.i = shl nsw i64 %17, 2 + %add.ptr.i16.ptr.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %16, i64 %add.ptr.i16.idx.i.i.i.i.i.i.i.i.i.i %cmp.i17123.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %17, 0 br i1 %cmp.i17123.i.i.i.i.i.i.i.i.i.i, label %for.end.i.i.i.i.i.i.i.i.i.i, label %for.body22.i.i.i.i.i.i.i.i.i.i @@ -5250,7 +5251,7 @@ for.inc.i.i.i.i.i.i.i.i.i.i: ; preds = %_ZNSt6vectorIPN4mol %members.sroa.8.4.i.i.i.i.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_7PPC64V2EEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i.i50.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_7PPC64V2EEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i53.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i28.i.i.i.i.i.i.i.i.i.i, %if.then.i.i27.i.i.i.i.i.i.i.i.i.i ] %members.sroa.0.4.i.i.i.i.i.i.i.i.i.i = phi ptr [ %cond.i10.i.i.i.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_7PPC64V2EEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i.i.i.i.i.i.i.i.i.i.i ], [ %members.sroa.0.1127.i.i.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i.i.i.i.i ], [ %cond.i10.i.i.i45.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_7PPC64V2EEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i53.i.i.i.i.i.i.i.i.i.i ], [ %members.sroa.0.1127.i.i.i.i.i.i.i.i.i.i, %if.then.i.i27.i.i.i.i.i.i.i.i.i.i ] %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__begin013.sroa.0.0124.i.i.i.i.i.i.i.i.i.i, i64 4 - %cmp.i17.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i, %add.ptr.i16.i.i.i.i.i.i.i.i.i.i + %cmp.i17.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i, %add.ptr.i16.ptr.i.i.i.i.i.i.i.i.i.i br i1 %cmp.i17.i.i.i.i.i.i.i.i.i.i, label %for.end.i.i.i.i.i.i.i.i.i.i, label %for.body22.i.i.i.i.i.i.i.i.i.i for.end.i.i.i.i.i.i.i.i.i.i: ; preds = %for.inc.i.i.i.i.i.i.i.i.i.i, %if.end.i.i.i.i.i.i.i.i.i.i diff --git a/bench/mold/optimized/relocatable.cc.RV32BE.cc.ll b/bench/mold/optimized/relocatable.cc.RV32BE.cc.ll index 06d1bd977e3..871ee8f0237 100644 --- a/bench/mold/optimized/relocatable.cc.RV32BE.cc.ll +++ b/bench/mold/optimized/relocatable.cc.RV32BE.cc.ll @@ -5296,7 +5296,8 @@ if.end.i.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i. %17 = load ptr, ptr %members12.i.i.i.i.i.i.i.i.i.i, align 8 %_M_extent.i.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__begin0.sroa.0.0131.i.i.i.i.i.i.i.i.i.i, i64 24 %18 = load i64, ptr %_M_extent.i.i.i.i.i.i.i.i.i.i.i.i, align 8 - %add.ptr.i16.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds %"class.mold::BigEndian", ptr %17, i64 %18 + %add.ptr.i16.idx.i.i.i.i.i.i.i.i.i.i = shl nsw i64 %18, 2 + %add.ptr.i16.ptr.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %17, i64 %add.ptr.i16.idx.i.i.i.i.i.i.i.i.i.i %cmp.i17123.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %18, 0 br i1 %cmp.i17123.i.i.i.i.i.i.i.i.i.i, label %for.end.i.i.i.i.i.i.i.i.i.i, label %for.body22.i.i.i.i.i.i.i.i.i.i @@ -5456,7 +5457,7 @@ for.inc.i.i.i.i.i.i.i.i.i.i: ; preds = %_ZNSt6vectorIPN4mol %members.sroa.8.4.i.i.i.i.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_6RV32BEEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i.i50.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_6RV32BEEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i53.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i28.i.i.i.i.i.i.i.i.i.i, %if.then.i.i27.i.i.i.i.i.i.i.i.i.i ] %members.sroa.0.4.i.i.i.i.i.i.i.i.i.i = phi ptr [ %cond.i10.i.i.i.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_6RV32BEEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i.i.i.i.i.i.i.i.i.i.i ], [ %members.sroa.0.1127.i.i.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i.i.i.i.i ], [ %cond.i10.i.i.i45.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_6RV32BEEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i53.i.i.i.i.i.i.i.i.i.i ], [ %members.sroa.0.1127.i.i.i.i.i.i.i.i.i.i, %if.then.i.i27.i.i.i.i.i.i.i.i.i.i ] %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__begin013.sroa.0.0124.i.i.i.i.i.i.i.i.i.i, i64 4 - %cmp.i17.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i, %add.ptr.i16.i.i.i.i.i.i.i.i.i.i + %cmp.i17.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i, %add.ptr.i16.ptr.i.i.i.i.i.i.i.i.i.i br i1 %cmp.i17.i.i.i.i.i.i.i.i.i.i, label %for.end.i.i.i.i.i.i.i.i.i.i, label %for.body22.i.i.i.i.i.i.i.i.i.i for.end.i.i.i.i.i.i.i.i.i.i: ; preds = %for.inc.i.i.i.i.i.i.i.i.i.i, %if.end.i.i.i.i.i.i.i.i.i.i diff --git a/bench/mold/optimized/relocatable.cc.RV32LE.cc.ll b/bench/mold/optimized/relocatable.cc.RV32LE.cc.ll index e3944d4e4b2..7de9ec82b20 100644 --- a/bench/mold/optimized/relocatable.cc.RV32LE.cc.ll +++ b/bench/mold/optimized/relocatable.cc.RV32LE.cc.ll @@ -5289,7 +5289,8 @@ if.end.i.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i. %16 = load ptr, ptr %members12.i.i.i.i.i.i.i.i.i.i, align 8 %_M_extent.i.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__begin0.sroa.0.0131.i.i.i.i.i.i.i.i.i.i, i64 24 %17 = load i64, ptr %_M_extent.i.i.i.i.i.i.i.i.i.i.i.i, align 8 - %add.ptr.i16.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds %"class.mold::LittleEndian", ptr %16, i64 %17 + %add.ptr.i16.idx.i.i.i.i.i.i.i.i.i.i = shl nsw i64 %17, 2 + %add.ptr.i16.ptr.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %16, i64 %add.ptr.i16.idx.i.i.i.i.i.i.i.i.i.i %cmp.i17123.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %17, 0 br i1 %cmp.i17123.i.i.i.i.i.i.i.i.i.i, label %for.end.i.i.i.i.i.i.i.i.i.i, label %for.body22.i.i.i.i.i.i.i.i.i.i @@ -5447,7 +5448,7 @@ for.inc.i.i.i.i.i.i.i.i.i.i: ; preds = %_ZNSt6vectorIPN4mol %members.sroa.8.4.i.i.i.i.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_6RV32LEEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i.i50.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_6RV32LEEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i53.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i28.i.i.i.i.i.i.i.i.i.i, %if.then.i.i27.i.i.i.i.i.i.i.i.i.i ] %members.sroa.0.4.i.i.i.i.i.i.i.i.i.i = phi ptr [ %cond.i10.i.i.i.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_6RV32LEEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i.i.i.i.i.i.i.i.i.i.i ], [ %members.sroa.0.1127.i.i.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i.i.i.i.i ], [ %cond.i10.i.i.i45.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_6RV32LEEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i53.i.i.i.i.i.i.i.i.i.i ], [ %members.sroa.0.1127.i.i.i.i.i.i.i.i.i.i, %if.then.i.i27.i.i.i.i.i.i.i.i.i.i ] %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__begin013.sroa.0.0124.i.i.i.i.i.i.i.i.i.i, i64 4 - %cmp.i17.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i, %add.ptr.i16.i.i.i.i.i.i.i.i.i.i + %cmp.i17.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i, %add.ptr.i16.ptr.i.i.i.i.i.i.i.i.i.i br i1 %cmp.i17.i.i.i.i.i.i.i.i.i.i, label %for.end.i.i.i.i.i.i.i.i.i.i, label %for.body22.i.i.i.i.i.i.i.i.i.i for.end.i.i.i.i.i.i.i.i.i.i: ; preds = %for.inc.i.i.i.i.i.i.i.i.i.i, %if.end.i.i.i.i.i.i.i.i.i.i diff --git a/bench/mold/optimized/relocatable.cc.RV64BE.cc.ll b/bench/mold/optimized/relocatable.cc.RV64BE.cc.ll index 0b26412904a..76877c8b33f 100644 --- a/bench/mold/optimized/relocatable.cc.RV64BE.cc.ll +++ b/bench/mold/optimized/relocatable.cc.RV64BE.cc.ll @@ -5297,7 +5297,8 @@ if.end.i.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i. %17 = load ptr, ptr %members12.i.i.i.i.i.i.i.i.i.i, align 8 %_M_extent.i.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__begin0.sroa.0.0131.i.i.i.i.i.i.i.i.i.i, i64 24 %18 = load i64, ptr %_M_extent.i.i.i.i.i.i.i.i.i.i.i.i, align 8 - %add.ptr.i16.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds %"class.mold::BigEndian", ptr %17, i64 %18 + %add.ptr.i16.idx.i.i.i.i.i.i.i.i.i.i = shl nsw i64 %18, 2 + %add.ptr.i16.ptr.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %17, i64 %add.ptr.i16.idx.i.i.i.i.i.i.i.i.i.i %cmp.i17123.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %18, 0 br i1 %cmp.i17123.i.i.i.i.i.i.i.i.i.i, label %for.end.i.i.i.i.i.i.i.i.i.i, label %for.body22.i.i.i.i.i.i.i.i.i.i @@ -5457,7 +5458,7 @@ for.inc.i.i.i.i.i.i.i.i.i.i: ; preds = %_ZNSt6vectorIPN4mol %members.sroa.8.4.i.i.i.i.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_6RV64BEEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i.i50.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_6RV64BEEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i53.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i28.i.i.i.i.i.i.i.i.i.i, %if.then.i.i27.i.i.i.i.i.i.i.i.i.i ] %members.sroa.0.4.i.i.i.i.i.i.i.i.i.i = phi ptr [ %cond.i10.i.i.i.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_6RV64BEEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i.i.i.i.i.i.i.i.i.i.i ], [ %members.sroa.0.1127.i.i.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i.i.i.i.i ], [ %cond.i10.i.i.i45.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_6RV64BEEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i53.i.i.i.i.i.i.i.i.i.i ], [ %members.sroa.0.1127.i.i.i.i.i.i.i.i.i.i, %if.then.i.i27.i.i.i.i.i.i.i.i.i.i ] %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__begin013.sroa.0.0124.i.i.i.i.i.i.i.i.i.i, i64 4 - %cmp.i17.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i, %add.ptr.i16.i.i.i.i.i.i.i.i.i.i + %cmp.i17.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i, %add.ptr.i16.ptr.i.i.i.i.i.i.i.i.i.i br i1 %cmp.i17.i.i.i.i.i.i.i.i.i.i, label %for.end.i.i.i.i.i.i.i.i.i.i, label %for.body22.i.i.i.i.i.i.i.i.i.i for.end.i.i.i.i.i.i.i.i.i.i: ; preds = %for.inc.i.i.i.i.i.i.i.i.i.i, %if.end.i.i.i.i.i.i.i.i.i.i diff --git a/bench/mold/optimized/relocatable.cc.RV64LE.cc.ll b/bench/mold/optimized/relocatable.cc.RV64LE.cc.ll index 7859b60a734..79cc029836a 100644 --- a/bench/mold/optimized/relocatable.cc.RV64LE.cc.ll +++ b/bench/mold/optimized/relocatable.cc.RV64LE.cc.ll @@ -5287,7 +5287,8 @@ if.end.i.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i. %16 = load ptr, ptr %members12.i.i.i.i.i.i.i.i.i.i, align 8 %_M_extent.i.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__begin0.sroa.0.0131.i.i.i.i.i.i.i.i.i.i, i64 24 %17 = load i64, ptr %_M_extent.i.i.i.i.i.i.i.i.i.i.i.i, align 8 - %add.ptr.i16.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds %"class.mold::LittleEndian", ptr %16, i64 %17 + %add.ptr.i16.idx.i.i.i.i.i.i.i.i.i.i = shl nsw i64 %17, 2 + %add.ptr.i16.ptr.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %16, i64 %add.ptr.i16.idx.i.i.i.i.i.i.i.i.i.i %cmp.i17123.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %17, 0 br i1 %cmp.i17123.i.i.i.i.i.i.i.i.i.i, label %for.end.i.i.i.i.i.i.i.i.i.i, label %for.body22.i.i.i.i.i.i.i.i.i.i @@ -5445,7 +5446,7 @@ for.inc.i.i.i.i.i.i.i.i.i.i: ; preds = %_ZNSt6vectorIPN4mol %members.sroa.8.4.i.i.i.i.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_6RV64LEEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i.i50.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_6RV64LEEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i53.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i28.i.i.i.i.i.i.i.i.i.i, %if.then.i.i27.i.i.i.i.i.i.i.i.i.i ] %members.sroa.0.4.i.i.i.i.i.i.i.i.i.i = phi ptr [ %cond.i10.i.i.i.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_6RV64LEEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i.i.i.i.i.i.i.i.i.i.i ], [ %members.sroa.0.1127.i.i.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i.i.i.i.i ], [ %cond.i10.i.i.i45.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_6RV64LEEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i53.i.i.i.i.i.i.i.i.i.i ], [ %members.sroa.0.1127.i.i.i.i.i.i.i.i.i.i, %if.then.i.i27.i.i.i.i.i.i.i.i.i.i ] %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__begin013.sroa.0.0124.i.i.i.i.i.i.i.i.i.i, i64 4 - %cmp.i17.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i, %add.ptr.i16.i.i.i.i.i.i.i.i.i.i + %cmp.i17.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i, %add.ptr.i16.ptr.i.i.i.i.i.i.i.i.i.i br i1 %cmp.i17.i.i.i.i.i.i.i.i.i.i, label %for.end.i.i.i.i.i.i.i.i.i.i, label %for.body22.i.i.i.i.i.i.i.i.i.i for.end.i.i.i.i.i.i.i.i.i.i: ; preds = %for.inc.i.i.i.i.i.i.i.i.i.i, %if.end.i.i.i.i.i.i.i.i.i.i diff --git a/bench/mold/optimized/relocatable.cc.S390X.cc.ll b/bench/mold/optimized/relocatable.cc.S390X.cc.ll index 3a82ddd9d76..20949329797 100644 --- a/bench/mold/optimized/relocatable.cc.S390X.cc.ll +++ b/bench/mold/optimized/relocatable.cc.S390X.cc.ll @@ -5102,7 +5102,8 @@ if.end.i.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i. %17 = load ptr, ptr %members12.i.i.i.i.i.i.i.i.i.i, align 8 %_M_extent.i.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__begin0.sroa.0.0131.i.i.i.i.i.i.i.i.i.i, i64 24 %18 = load i64, ptr %_M_extent.i.i.i.i.i.i.i.i.i.i.i.i, align 8 - %add.ptr.i16.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds %"class.mold::BigEndian", ptr %17, i64 %18 + %add.ptr.i16.idx.i.i.i.i.i.i.i.i.i.i = shl nsw i64 %18, 2 + %add.ptr.i16.ptr.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %17, i64 %add.ptr.i16.idx.i.i.i.i.i.i.i.i.i.i %cmp.i17123.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %18, 0 br i1 %cmp.i17123.i.i.i.i.i.i.i.i.i.i, label %for.end.i.i.i.i.i.i.i.i.i.i, label %for.body22.i.i.i.i.i.i.i.i.i.i @@ -5262,7 +5263,7 @@ for.inc.i.i.i.i.i.i.i.i.i.i: ; preds = %_ZNSt6vectorIPN4mol %members.sroa.8.4.i.i.i.i.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_5S390XEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i.i50.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_5S390XEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i53.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i28.i.i.i.i.i.i.i.i.i.i, %if.then.i.i27.i.i.i.i.i.i.i.i.i.i ] %members.sroa.0.4.i.i.i.i.i.i.i.i.i.i = phi ptr [ %cond.i10.i.i.i.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_5S390XEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i.i.i.i.i.i.i.i.i.i.i ], [ %members.sroa.0.1127.i.i.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i.i.i.i.i ], [ %cond.i10.i.i.i45.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_5S390XEEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i53.i.i.i.i.i.i.i.i.i.i ], [ %members.sroa.0.1127.i.i.i.i.i.i.i.i.i.i, %if.then.i.i27.i.i.i.i.i.i.i.i.i.i ] %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__begin013.sroa.0.0124.i.i.i.i.i.i.i.i.i.i, i64 4 - %cmp.i17.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i, %add.ptr.i16.i.i.i.i.i.i.i.i.i.i + %cmp.i17.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i, %add.ptr.i16.ptr.i.i.i.i.i.i.i.i.i.i br i1 %cmp.i17.i.i.i.i.i.i.i.i.i.i, label %for.end.i.i.i.i.i.i.i.i.i.i, label %for.body22.i.i.i.i.i.i.i.i.i.i for.end.i.i.i.i.i.i.i.i.i.i: ; preds = %for.inc.i.i.i.i.i.i.i.i.i.i, %if.end.i.i.i.i.i.i.i.i.i.i diff --git a/bench/mold/optimized/relocatable.cc.SH4.cc.ll b/bench/mold/optimized/relocatable.cc.SH4.cc.ll index d4b3fe19132..8d9559728d3 100644 --- a/bench/mold/optimized/relocatable.cc.SH4.cc.ll +++ b/bench/mold/optimized/relocatable.cc.SH4.cc.ll @@ -5094,7 +5094,8 @@ if.end.i.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i. %16 = load ptr, ptr %members12.i.i.i.i.i.i.i.i.i.i, align 8 %_M_extent.i.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__begin0.sroa.0.0131.i.i.i.i.i.i.i.i.i.i, i64 24 %17 = load i64, ptr %_M_extent.i.i.i.i.i.i.i.i.i.i.i.i, align 8 - %add.ptr.i16.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds %"class.mold::LittleEndian", ptr %16, i64 %17 + %add.ptr.i16.idx.i.i.i.i.i.i.i.i.i.i = shl nsw i64 %17, 2 + %add.ptr.i16.ptr.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %16, i64 %add.ptr.i16.idx.i.i.i.i.i.i.i.i.i.i %cmp.i17123.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %17, 0 br i1 %cmp.i17123.i.i.i.i.i.i.i.i.i.i, label %for.end.i.i.i.i.i.i.i.i.i.i, label %for.body22.i.i.i.i.i.i.i.i.i.i @@ -5252,7 +5253,7 @@ for.inc.i.i.i.i.i.i.i.i.i.i: ; preds = %_ZNSt6vectorIPN4mol %members.sroa.8.4.i.i.i.i.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_3SH4EEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i.i50.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_3SH4EEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i53.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i28.i.i.i.i.i.i.i.i.i.i, %if.then.i.i27.i.i.i.i.i.i.i.i.i.i ] %members.sroa.0.4.i.i.i.i.i.i.i.i.i.i = phi ptr [ %cond.i10.i.i.i.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_3SH4EEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i.i.i.i.i.i.i.i.i.i.i ], [ %members.sroa.0.1127.i.i.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i.i.i.i.i ], [ %cond.i10.i.i.i45.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_3SH4EEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i53.i.i.i.i.i.i.i.i.i.i ], [ %members.sroa.0.1127.i.i.i.i.i.i.i.i.i.i, %if.then.i.i27.i.i.i.i.i.i.i.i.i.i ] %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__begin013.sroa.0.0124.i.i.i.i.i.i.i.i.i.i, i64 4 - %cmp.i17.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i, %add.ptr.i16.i.i.i.i.i.i.i.i.i.i + %cmp.i17.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i, %add.ptr.i16.ptr.i.i.i.i.i.i.i.i.i.i br i1 %cmp.i17.i.i.i.i.i.i.i.i.i.i, label %for.end.i.i.i.i.i.i.i.i.i.i, label %for.body22.i.i.i.i.i.i.i.i.i.i for.end.i.i.i.i.i.i.i.i.i.i: ; preds = %for.inc.i.i.i.i.i.i.i.i.i.i, %if.end.i.i.i.i.i.i.i.i.i.i diff --git a/bench/mold/optimized/relocatable.cc.SPARC64.cc.ll b/bench/mold/optimized/relocatable.cc.SPARC64.cc.ll index 337ca4312fc..2d406c8ef12 100644 --- a/bench/mold/optimized/relocatable.cc.SPARC64.cc.ll +++ b/bench/mold/optimized/relocatable.cc.SPARC64.cc.ll @@ -5102,7 +5102,8 @@ if.end.i.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i. %17 = load ptr, ptr %members12.i.i.i.i.i.i.i.i.i.i, align 8 %_M_extent.i.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__begin0.sroa.0.0131.i.i.i.i.i.i.i.i.i.i, i64 24 %18 = load i64, ptr %_M_extent.i.i.i.i.i.i.i.i.i.i.i.i, align 8 - %add.ptr.i16.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds %"class.mold::BigEndian", ptr %17, i64 %18 + %add.ptr.i16.idx.i.i.i.i.i.i.i.i.i.i = shl nsw i64 %18, 2 + %add.ptr.i16.ptr.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %17, i64 %add.ptr.i16.idx.i.i.i.i.i.i.i.i.i.i %cmp.i17123.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %18, 0 br i1 %cmp.i17123.i.i.i.i.i.i.i.i.i.i, label %for.end.i.i.i.i.i.i.i.i.i.i, label %for.body22.i.i.i.i.i.i.i.i.i.i @@ -5262,7 +5263,7 @@ for.inc.i.i.i.i.i.i.i.i.i.i: ; preds = %_ZNSt6vectorIPN4mol %members.sroa.8.4.i.i.i.i.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_7SPARC64EEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i.i50.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_7SPARC64EEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i53.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i28.i.i.i.i.i.i.i.i.i.i, %if.then.i.i27.i.i.i.i.i.i.i.i.i.i ] %members.sroa.0.4.i.i.i.i.i.i.i.i.i.i = phi ptr [ %cond.i10.i.i.i.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_7SPARC64EEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i.i.i.i.i.i.i.i.i.i.i ], [ %members.sroa.0.1127.i.i.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i.i.i.i.i ], [ %cond.i10.i.i.i45.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_7SPARC64EEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i53.i.i.i.i.i.i.i.i.i.i ], [ %members.sroa.0.1127.i.i.i.i.i.i.i.i.i.i, %if.then.i.i27.i.i.i.i.i.i.i.i.i.i ] %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__begin013.sroa.0.0124.i.i.i.i.i.i.i.i.i.i, i64 4 - %cmp.i17.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i, %add.ptr.i16.i.i.i.i.i.i.i.i.i.i + %cmp.i17.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i, %add.ptr.i16.ptr.i.i.i.i.i.i.i.i.i.i br i1 %cmp.i17.i.i.i.i.i.i.i.i.i.i, label %for.end.i.i.i.i.i.i.i.i.i.i, label %for.body22.i.i.i.i.i.i.i.i.i.i for.end.i.i.i.i.i.i.i.i.i.i: ; preds = %for.inc.i.i.i.i.i.i.i.i.i.i, %if.end.i.i.i.i.i.i.i.i.i.i diff --git a/bench/mold/optimized/relocatable.cc.X86_64.cc.ll b/bench/mold/optimized/relocatable.cc.X86_64.cc.ll index 21024aa0d05..fc979cdb44d 100644 --- a/bench/mold/optimized/relocatable.cc.X86_64.cc.ll +++ b/bench/mold/optimized/relocatable.cc.X86_64.cc.ll @@ -5092,7 +5092,8 @@ if.end.i.i.i.i.i.i.i.i.i.i: ; preds = %for.body.i.i.i.i.i. %16 = load ptr, ptr %members12.i.i.i.i.i.i.i.i.i.i, align 8 %_M_extent.i.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__begin0.sroa.0.0131.i.i.i.i.i.i.i.i.i.i, i64 24 %17 = load i64, ptr %_M_extent.i.i.i.i.i.i.i.i.i.i.i.i, align 8 - %add.ptr.i16.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds %"class.mold::LittleEndian", ptr %16, i64 %17 + %add.ptr.i16.idx.i.i.i.i.i.i.i.i.i.i = shl nsw i64 %17, 2 + %add.ptr.i16.ptr.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %16, i64 %add.ptr.i16.idx.i.i.i.i.i.i.i.i.i.i %cmp.i17123.i.i.i.i.i.i.i.i.i.i = icmp eq i64 %17, 0 br i1 %cmp.i17123.i.i.i.i.i.i.i.i.i.i, label %for.end.i.i.i.i.i.i.i.i.i.i, label %for.body22.i.i.i.i.i.i.i.i.i.i @@ -5250,7 +5251,7 @@ for.inc.i.i.i.i.i.i.i.i.i.i: ; preds = %_ZNSt6vectorIPN4mol %members.sroa.8.4.i.i.i.i.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_6X86_64EEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i.i50.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_6X86_64EEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i53.i.i.i.i.i.i.i.i.i.i ], [ %incdec.ptr.i.i28.i.i.i.i.i.i.i.i.i.i, %if.then.i.i27.i.i.i.i.i.i.i.i.i.i ] %members.sroa.0.4.i.i.i.i.i.i.i.i.i.i = phi ptr [ %cond.i10.i.i.i.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_6X86_64EEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i.i.i.i.i.i.i.i.i.i.i ], [ %members.sroa.0.1127.i.i.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i.i.i.i.i ], [ %cond.i10.i.i.i45.i.i.i.i.i.i.i.i.i.i, %_ZNSt6vectorIPN4mold3elf5ChunkINS1_6X86_64EEESaIS5_EE17_M_realloc_insertIJS5_EEEvN9__gnu_cxx17__normal_iteratorIPS5_S7_EEDpOT_.exit.i.i53.i.i.i.i.i.i.i.i.i.i ], [ %members.sroa.0.1127.i.i.i.i.i.i.i.i.i.i, %if.then.i.i27.i.i.i.i.i.i.i.i.i.i ] %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__begin013.sroa.0.0124.i.i.i.i.i.i.i.i.i.i, i64 4 - %cmp.i17.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i, %add.ptr.i16.i.i.i.i.i.i.i.i.i.i + %cmp.i17.i.i.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i.i.i.i.i.i, %add.ptr.i16.ptr.i.i.i.i.i.i.i.i.i.i br i1 %cmp.i17.i.i.i.i.i.i.i.i.i.i, label %for.end.i.i.i.i.i.i.i.i.i.i, label %for.body22.i.i.i.i.i.i.i.i.i.i for.end.i.i.i.i.i.i.i.i.i.i: ; preds = %for.inc.i.i.i.i.i.i.i.i.i.i, %if.end.i.i.i.i.i.i.i.i.i.i diff --git a/bench/mold/optimized/subprocess.cc.ALPHA.cc.ll b/bench/mold/optimized/subprocess.cc.ALPHA.cc.ll index 86a360ad89f..a8ecc14f1dc 100644 --- a/bench/mold/optimized/subprocess.cc.ALPHA.cc.ll +++ b/bench/mold/optimized/subprocess.cc.ALPHA.cc.ll @@ -1800,17 +1800,17 @@ if.then4: ; preds = %if.then br i1 %cmp10, label %_ZSt22__uninitialized_move_aIPPcS1_SaIS0_EET0_T_S4_S3_RT1_.exit, label %_ZSt7advanceIPPcmEvRT_T0_.exit _ZSt22__uninitialized_move_aIPPcS1_SaIS0_EET0_T_S4_S3_RT1_.exit: ; preds = %if.then4 - %idx.neg = sub nsw i64 0, %sub.ptr.div.i.i - %add.ptr = getelementptr inbounds ptr, ptr %1, i64 %idx.neg - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %add.ptr, i64 %sub.ptr.sub.i.i, i1 false) + %add.ptr.idx = sub i64 0, %sub.ptr.sub.i.i + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr.idx + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %add.ptr.ptr, i64 %sub.ptr.sub.i.i, i1 false) %.pre85 = load ptr, ptr %_M_finish, align 8 %add.ptr22 = getelementptr inbounds i8, ptr %.pre85, i64 %sub.ptr.sub.i.i store ptr %add.ptr22, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce + %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %_ZSt4copyIPPcN9__gnu_cxx17__normal_iteratorIS1_St6vectorIS0_SaIS0_EEEEET0_T_S9_S8_.exit, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPPcS1_SaIS0_EET0_T_S4_S3_RT1_.exit - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i @@ -1823,14 +1823,14 @@ _ZSt4copyIPPcN9__gnu_cxx17__normal_iteratorIS1_St6vectorIS0_SaIS0_EEEEET0_T_S9_S br label %if.end80 _ZSt7advanceIPPcmEvRT_T0_.exit: ; preds = %if.then4 - %incdec.ptr.i.i = getelementptr inbounds i8, ptr %__first, i64 %sub.ptr.sub.i - %tobool.not.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i, %__last + %incdec.ptr4.sink.i.i.ptr = getelementptr inbounds i8, ptr %__first, i64 %sub.ptr.sub.i + %tobool.not.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr4.sink.i.i.ptr, %__last br i1 %tobool.not.i.i.i.i.i.i.i.i, label %_ZSt22__uninitialized_copy_aIPPcS1_S0_ET0_T_S3_S2_RSaIT1_E.exit, label %if.then.i.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i.i: ; preds = %_ZSt7advanceIPPcmEvRT_T0_.exit - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i = ptrtoint ptr %incdec.ptr.i.i to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i = ptrtoint ptr %incdec.ptr4.sink.i.i.ptr to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i, %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %incdec.ptr.i.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %incdec.ptr4.sink.i.i.ptr, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i, i1 false) %.pre = load ptr, ptr %_M_finish, align 8 br label %_ZSt22__uninitialized_copy_aIPPcS1_S0_ET0_T_S3_S2_RSaIT1_E.exit diff --git a/bench/mold/optimized/subprocess.cc.ARM32.cc.ll b/bench/mold/optimized/subprocess.cc.ARM32.cc.ll index 0ec2412df97..1f7ede5d3e0 100644 --- a/bench/mold/optimized/subprocess.cc.ARM32.cc.ll +++ b/bench/mold/optimized/subprocess.cc.ARM32.cc.ll @@ -1800,17 +1800,17 @@ if.then4: ; preds = %if.then br i1 %cmp10, label %_ZSt22__uninitialized_move_aIPPcS1_SaIS0_EET0_T_S4_S3_RT1_.exit, label %_ZSt7advanceIPPcmEvRT_T0_.exit _ZSt22__uninitialized_move_aIPPcS1_SaIS0_EET0_T_S4_S3_RT1_.exit: ; preds = %if.then4 - %idx.neg = sub nsw i64 0, %sub.ptr.div.i.i - %add.ptr = getelementptr inbounds ptr, ptr %1, i64 %idx.neg - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %add.ptr, i64 %sub.ptr.sub.i.i, i1 false) + %add.ptr.idx = sub i64 0, %sub.ptr.sub.i.i + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr.idx + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %add.ptr.ptr, i64 %sub.ptr.sub.i.i, i1 false) %.pre85 = load ptr, ptr %_M_finish, align 8 %add.ptr22 = getelementptr inbounds i8, ptr %.pre85, i64 %sub.ptr.sub.i.i store ptr %add.ptr22, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce + %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %_ZSt4copyIPPcN9__gnu_cxx17__normal_iteratorIS1_St6vectorIS0_SaIS0_EEEEET0_T_S9_S8_.exit, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPPcS1_SaIS0_EET0_T_S4_S3_RT1_.exit - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i @@ -1823,14 +1823,14 @@ _ZSt4copyIPPcN9__gnu_cxx17__normal_iteratorIS1_St6vectorIS0_SaIS0_EEEEET0_T_S9_S br label %if.end80 _ZSt7advanceIPPcmEvRT_T0_.exit: ; preds = %if.then4 - %incdec.ptr.i.i = getelementptr inbounds i8, ptr %__first, i64 %sub.ptr.sub.i - %tobool.not.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i, %__last + %incdec.ptr4.sink.i.i.ptr = getelementptr inbounds i8, ptr %__first, i64 %sub.ptr.sub.i + %tobool.not.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr4.sink.i.i.ptr, %__last br i1 %tobool.not.i.i.i.i.i.i.i.i, label %_ZSt22__uninitialized_copy_aIPPcS1_S0_ET0_T_S3_S2_RSaIT1_E.exit, label %if.then.i.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i.i: ; preds = %_ZSt7advanceIPPcmEvRT_T0_.exit - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i = ptrtoint ptr %incdec.ptr.i.i to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i = ptrtoint ptr %incdec.ptr4.sink.i.i.ptr to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i, %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %incdec.ptr.i.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %incdec.ptr4.sink.i.i.ptr, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i, i1 false) %.pre = load ptr, ptr %_M_finish, align 8 br label %_ZSt22__uninitialized_copy_aIPPcS1_S0_ET0_T_S3_S2_RSaIT1_E.exit diff --git a/bench/mold/optimized/subprocess.cc.ARM64.cc.ll b/bench/mold/optimized/subprocess.cc.ARM64.cc.ll index f694d5aff17..777757bb7f0 100644 --- a/bench/mold/optimized/subprocess.cc.ARM64.cc.ll +++ b/bench/mold/optimized/subprocess.cc.ARM64.cc.ll @@ -1800,17 +1800,17 @@ if.then4: ; preds = %if.then br i1 %cmp10, label %_ZSt22__uninitialized_move_aIPPcS1_SaIS0_EET0_T_S4_S3_RT1_.exit, label %_ZSt7advanceIPPcmEvRT_T0_.exit _ZSt22__uninitialized_move_aIPPcS1_SaIS0_EET0_T_S4_S3_RT1_.exit: ; preds = %if.then4 - %idx.neg = sub nsw i64 0, %sub.ptr.div.i.i - %add.ptr = getelementptr inbounds ptr, ptr %1, i64 %idx.neg - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %add.ptr, i64 %sub.ptr.sub.i.i, i1 false) + %add.ptr.idx = sub i64 0, %sub.ptr.sub.i.i + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr.idx + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %add.ptr.ptr, i64 %sub.ptr.sub.i.i, i1 false) %.pre85 = load ptr, ptr %_M_finish, align 8 %add.ptr22 = getelementptr inbounds i8, ptr %.pre85, i64 %sub.ptr.sub.i.i store ptr %add.ptr22, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce + %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %_ZSt4copyIPPcN9__gnu_cxx17__normal_iteratorIS1_St6vectorIS0_SaIS0_EEEEET0_T_S9_S8_.exit, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPPcS1_SaIS0_EET0_T_S4_S3_RT1_.exit - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i @@ -1823,14 +1823,14 @@ _ZSt4copyIPPcN9__gnu_cxx17__normal_iteratorIS1_St6vectorIS0_SaIS0_EEEEET0_T_S9_S br label %if.end80 _ZSt7advanceIPPcmEvRT_T0_.exit: ; preds = %if.then4 - %incdec.ptr.i.i = getelementptr inbounds i8, ptr %__first, i64 %sub.ptr.sub.i - %tobool.not.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i, %__last + %incdec.ptr4.sink.i.i.ptr = getelementptr inbounds i8, ptr %__first, i64 %sub.ptr.sub.i + %tobool.not.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr4.sink.i.i.ptr, %__last br i1 %tobool.not.i.i.i.i.i.i.i.i, label %_ZSt22__uninitialized_copy_aIPPcS1_S0_ET0_T_S3_S2_RSaIT1_E.exit, label %if.then.i.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i.i: ; preds = %_ZSt7advanceIPPcmEvRT_T0_.exit - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i = ptrtoint ptr %incdec.ptr.i.i to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i = ptrtoint ptr %incdec.ptr4.sink.i.i.ptr to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i, %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %incdec.ptr.i.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %incdec.ptr4.sink.i.i.ptr, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i, i1 false) %.pre = load ptr, ptr %_M_finish, align 8 br label %_ZSt22__uninitialized_copy_aIPPcS1_S0_ET0_T_S3_S2_RSaIT1_E.exit diff --git a/bench/mold/optimized/subprocess.cc.I386.cc.ll b/bench/mold/optimized/subprocess.cc.I386.cc.ll index 8a67147fed2..fa4a83192e1 100644 --- a/bench/mold/optimized/subprocess.cc.I386.cc.ll +++ b/bench/mold/optimized/subprocess.cc.I386.cc.ll @@ -1800,17 +1800,17 @@ if.then4: ; preds = %if.then br i1 %cmp10, label %_ZSt22__uninitialized_move_aIPPcS1_SaIS0_EET0_T_S4_S3_RT1_.exit, label %_ZSt7advanceIPPcmEvRT_T0_.exit _ZSt22__uninitialized_move_aIPPcS1_SaIS0_EET0_T_S4_S3_RT1_.exit: ; preds = %if.then4 - %idx.neg = sub nsw i64 0, %sub.ptr.div.i.i - %add.ptr = getelementptr inbounds ptr, ptr %1, i64 %idx.neg - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %add.ptr, i64 %sub.ptr.sub.i.i, i1 false) + %add.ptr.idx = sub i64 0, %sub.ptr.sub.i.i + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr.idx + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %add.ptr.ptr, i64 %sub.ptr.sub.i.i, i1 false) %.pre85 = load ptr, ptr %_M_finish, align 8 %add.ptr22 = getelementptr inbounds i8, ptr %.pre85, i64 %sub.ptr.sub.i.i store ptr %add.ptr22, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce + %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %_ZSt4copyIPPcN9__gnu_cxx17__normal_iteratorIS1_St6vectorIS0_SaIS0_EEEEET0_T_S9_S8_.exit, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPPcS1_SaIS0_EET0_T_S4_S3_RT1_.exit - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i @@ -1823,14 +1823,14 @@ _ZSt4copyIPPcN9__gnu_cxx17__normal_iteratorIS1_St6vectorIS0_SaIS0_EEEEET0_T_S9_S br label %if.end80 _ZSt7advanceIPPcmEvRT_T0_.exit: ; preds = %if.then4 - %incdec.ptr.i.i = getelementptr inbounds i8, ptr %__first, i64 %sub.ptr.sub.i - %tobool.not.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i, %__last + %incdec.ptr4.sink.i.i.ptr = getelementptr inbounds i8, ptr %__first, i64 %sub.ptr.sub.i + %tobool.not.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr4.sink.i.i.ptr, %__last br i1 %tobool.not.i.i.i.i.i.i.i.i, label %_ZSt22__uninitialized_copy_aIPPcS1_S0_ET0_T_S3_S2_RSaIT1_E.exit, label %if.then.i.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i.i: ; preds = %_ZSt7advanceIPPcmEvRT_T0_.exit - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i = ptrtoint ptr %incdec.ptr.i.i to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i = ptrtoint ptr %incdec.ptr4.sink.i.i.ptr to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i, %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %incdec.ptr.i.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %incdec.ptr4.sink.i.i.ptr, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i, i1 false) %.pre = load ptr, ptr %_M_finish, align 8 br label %_ZSt22__uninitialized_copy_aIPPcS1_S0_ET0_T_S3_S2_RSaIT1_E.exit diff --git a/bench/mold/optimized/subprocess.cc.LOONGARCH32.cc.ll b/bench/mold/optimized/subprocess.cc.LOONGARCH32.cc.ll index 50c06bb8ff3..5afadf0ff06 100644 --- a/bench/mold/optimized/subprocess.cc.LOONGARCH32.cc.ll +++ b/bench/mold/optimized/subprocess.cc.LOONGARCH32.cc.ll @@ -1800,17 +1800,17 @@ if.then4: ; preds = %if.then br i1 %cmp10, label %_ZSt22__uninitialized_move_aIPPcS1_SaIS0_EET0_T_S4_S3_RT1_.exit, label %_ZSt7advanceIPPcmEvRT_T0_.exit _ZSt22__uninitialized_move_aIPPcS1_SaIS0_EET0_T_S4_S3_RT1_.exit: ; preds = %if.then4 - %idx.neg = sub nsw i64 0, %sub.ptr.div.i.i - %add.ptr = getelementptr inbounds ptr, ptr %1, i64 %idx.neg - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %add.ptr, i64 %sub.ptr.sub.i.i, i1 false) + %add.ptr.idx = sub i64 0, %sub.ptr.sub.i.i + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %add.ptr.idx + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %add.ptr.ptr, i64 %sub.ptr.sub.i.i, i1 false) %.pre85 = load ptr, ptr %_M_finish, align 8 %add.ptr22 = getelementptr inbounds i8, ptr %.pre85, i64 %sub.ptr.sub.i.i store ptr %add.ptr22, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce + %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %_ZSt4copyIPPcN9__gnu_cxx17__normal_iteratorIS1_St6vectorIS0_SaIS0_EEEEET0_T_S9_S8_.exit, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPPcS1_SaIS0_EET0_T_S4_S3_RT1_.exit - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i @@ -1823,14 +1823,14 @@ _ZSt4copyIPPcN9__gnu_cxx17__normal_iteratorIS1_St6vectorIS0_SaIS0_EEEEET0_T_S9_S br label %if.end80 _ZSt7advanceIPPcmEvRT_T0_.exit: ; preds = %if.then4 - %incdec.ptr.i.i = getelementptr inbounds i8, ptr %__first, i64 %sub.ptr.sub.i - %tobool.not.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i, %__last + %incdec.ptr4.sink.i.i.ptr = getelementptr inbounds i8, ptr %__first, i64 %sub.ptr.sub.i + %tobool.not.i.i.i.i.i.i.i.i = icmp eq ptr %incdec.ptr4.sink.i.i.ptr, %__last br i1 %tobool.not.i.i.i.i.i.i.i.i, label %_ZSt22__uninitialized_copy_aIPPcS1_S0_ET0_T_S3_S2_RSaIT1_E.exit, label %if.then.i.i.i.i.i.i.i.i if.then.i.i.i.i.i.i.i.i: ; preds = %_ZSt7advanceIPPcmEvRT_T0_.exit - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i = ptrtoint ptr %incdec.ptr.i.i to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i = ptrtoint ptr %incdec.ptr4.sink.i.i.ptr to i64 %sub.ptr.sub.i.i.i.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i, %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %incdec.ptr.i.i, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %incdec.ptr4.sink.i.i.ptr, i64 %sub.ptr.sub.i.i.i.i.i.i.i.i, i1 false) %.pre = load ptr, ptr %_M_finish, align 8 br label %_ZSt22__uninitialized_copy_aIPPcS1_S0_ET0_T_S3_S2_RSaIT1_E.exit diff --git a/bench/msdfgen/optimized/render-sdf.cpp.ll b/bench/msdfgen/optimized/render-sdf.cpp.ll index 75b5eeac730..2a75662530e 100644 --- a/bench/msdfgen/optimized/render-sdf.cpp.ll +++ b/bench/msdfgen/optimized/render-sdf.cpp.ll @@ -1341,7 +1341,8 @@ entry: %2 = load i32, ptr %height, align 4 %mul1 = mul nsw i32 %2, %1 %idx.ext = sext i32 %mul1 to i64 - %add.ptr = getelementptr inbounds float, ptr %0, i64 %idx.ext + %add.ptr.idx = shl nsw i64 %idx.ext, 2 + %add.ptr.ptr = getelementptr inbounds i8, ptr %0, i64 %add.ptr.idx %cmp9 = icmp sgt i32 %mul1, 0 br i1 %cmp9, label %for.body, label %for.end @@ -1361,7 +1362,7 @@ for.body: ; preds = %entry, %for.body %mul.i8 = fmul float %conv.i7, 0x3F70101020000000 store float %mul.i8, ptr %p.010, align 4 %incdec.ptr = getelementptr inbounds i8, ptr %p.010, i64 4 - %cmp = icmp ult ptr %incdec.ptr, %add.ptr + %cmp = icmp ult ptr %incdec.ptr, %add.ptr.ptr br i1 %cmp, label %for.body, label %for.end, !llvm.loop !21 for.end: ; preds = %for.body, %entry @@ -1379,7 +1380,8 @@ entry: %2 = load i32, ptr %height, align 4 %mul1 = mul nsw i32 %mul, %2 %idx.ext = sext i32 %mul1 to i64 - %add.ptr = getelementptr inbounds float, ptr %0, i64 %idx.ext + %add.ptr.idx = shl nsw i64 %idx.ext, 2 + %add.ptr.ptr = getelementptr inbounds i8, ptr %0, i64 %add.ptr.idx %cmp9 = icmp sgt i32 %mul1, 0 br i1 %cmp9, label %for.body, label %for.end @@ -1399,7 +1401,7 @@ for.body: ; preds = %entry, %for.body %mul.i8 = fmul float %conv.i7, 0x3F70101020000000 store float %mul.i8, ptr %p.010, align 4 %incdec.ptr = getelementptr inbounds i8, ptr %p.010, i64 4 - %cmp = icmp ult ptr %incdec.ptr, %add.ptr + %cmp = icmp ult ptr %incdec.ptr, %add.ptr.ptr br i1 %cmp, label %for.body, label %for.end, !llvm.loop !22 for.end: ; preds = %for.body, %entry @@ -1417,7 +1419,8 @@ entry: %2 = load i32, ptr %height, align 4 %mul1 = mul nsw i32 %mul, %2 %idx.ext = sext i32 %mul1 to i64 - %add.ptr = getelementptr inbounds float, ptr %0, i64 %idx.ext + %add.ptr.idx = shl nsw i64 %idx.ext, 2 + %add.ptr.ptr = getelementptr inbounds i8, ptr %0, i64 %add.ptr.idx %cmp9 = icmp sgt i32 %mul1, 0 br i1 %cmp9, label %for.body, label %for.end @@ -1437,7 +1440,7 @@ for.body: ; preds = %entry, %for.body %mul.i8 = fmul float %conv.i7, 0x3F70101020000000 store float %mul.i8, ptr %p.010, align 4 %incdec.ptr = getelementptr inbounds i8, ptr %p.010, i64 4 - %cmp = icmp ult ptr %incdec.ptr, %add.ptr + %cmp = icmp ult ptr %incdec.ptr, %add.ptr.ptr br i1 %cmp, label %for.body, label %for.end, !llvm.loop !23 for.end: ; preds = %for.body, %entry diff --git a/bench/node/optimized/libnode.cleanup_queue.ll b/bench/node/optimized/libnode.cleanup_queue.ll index 279ce7291e0..dff2bdd5a10 100644 --- a/bench/node/optimized/libnode.cleanup_queue.ll +++ b/bench/node/optimized/libnode.cleanup_queue.ll @@ -175,12 +175,13 @@ for.cond.preheader.i19.i.i.i: ; preds = %if.then.i.i br i1 %cmp.i1.not10.i21.i.i.i, label %"_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPN4node12CleanupQueue19CleanupHookCallbackESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_comp_iterIZNKS3_10GetOrderedEvE3$_0EEEvT_SE_T0_.exit50.i.i.i", label %for.body.lr.ph.i22.i.i.i for.body.lr.ph.i22.i.i.i: ; preds = %for.cond.preheader.i19.i.i.i + %__i.sroa.0.09.i20.i.i.i = getelementptr inbounds i8, ptr %call5.i.i.i.i.i, i64 24 %10 = getelementptr i8, ptr %call5.i.i.i.i.i, i64 16 br label %for.body.i24.i.i.i for.body.i24.i.i.i: ; preds = %for.inc.i36.i.i.i, %for.body.lr.ph.i22.i.i.i + %__i.sroa.0.012.i25.i.i.i = phi ptr [ %__i.sroa.0.09.i20.i.i.i, %for.body.lr.ph.i22.i.i.i ], [ %__i.sroa.0.0.i37.i.i.i, %for.inc.i36.i.i.i ] %__first.coerce.pn11.i26.i.i.i = phi ptr [ %call5.i.i.i.i.i, %for.body.lr.ph.i22.i.i.i ], [ %__i.sroa.0.012.i25.i.i.i, %for.inc.i36.i.i.i ] - %__i.sroa.0.012.i25.i.i.i = getelementptr inbounds i8, ptr %__first.coerce.pn11.i26.i.i.i, i64 24 %11 = getelementptr i8, ptr %__first.coerce.pn11.i26.i.i.i, i64 40 %call.val.i.i27.i.i.i = load i64, ptr %11, align 8 %call3.val.i.i28.i.i.i = load i64, ptr %10, align 8 @@ -224,7 +225,8 @@ while.body.i.i39.i.i.i: ; preds = %if.else.i30.i.i.i, br label %for.inc.i36.i.i.i for.inc.i36.i.i.i: ; preds = %"_ZSt25__unguarded_linear_insertIN9__gnu_cxx17__normal_iteratorIPN4node12CleanupQueue19CleanupHookCallbackESt6vectorIS4_SaIS4_EEEENS0_5__ops14_Val_comp_iterIZNKS3_10GetOrderedEvE3$_0EEEvT_T0_.exit.i33.i.i.i", %_ZSt13move_backwardIN9__gnu_cxx17__normal_iteratorIPN4node12CleanupQueue19CleanupHookCallbackESt6vectorIS4_SaIS4_EEEES9_ET0_T_SB_SA_.exit.i44.i.i.i - %cmp.i1.not.i38.i.i.i = icmp eq ptr %__i.sroa.0.012.i25.i.i.i, %__cur.07.i.i.i.i.i.i.ptr + %__i.sroa.0.0.i37.i.i.i = getelementptr inbounds i8, ptr %__i.sroa.0.012.i25.i.i.i, i64 24 + %cmp.i1.not.i38.i.i.i = icmp eq ptr %__i.sroa.0.0.i37.i.i.i, %incdec.ptr.i.i.i.i.i.i.ptr.le br i1 %cmp.i1.not.i38.i.i.i, label %"_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPN4node12CleanupQueue19CleanupHookCallbackESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_comp_iterIZNKS3_10GetOrderedEvE3$_0EEEvT_SE_T0_.exit50.i.i.i", label %for.body.i24.i.i.i, !llvm.loop !10 "_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPN4node12CleanupQueue19CleanupHookCallbackESt6vectorIS4_SaIS4_EEEENS0_5__ops15_Iter_comp_iterIZNKS3_10GetOrderedEvE3$_0EEEvT_SE_T0_.exit50.i.i.i": ; preds = %for.inc.i36.i.i.i, %for.cond.preheader.i19.i.i.i diff --git a/bench/node/optimized/libnode.hooks.ll b/bench/node/optimized/libnode.hooks.ll index f99a2437f7e..6c6102ece9e 100644 --- a/bench/node/optimized/libnode.hooks.ll +++ b/bench/node/optimized/libnode.hooks.ll @@ -176,7 +176,6 @@ if.end: ; preds = %_ZN4node7tracing16T if.then3: ; preds = %if.end call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %arg_convertibles.i.i) call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %arg_convertibles.i.i, i8 0, i64 16, i1 false) - %arrayctor.end.i.i = getelementptr inbounds i8, ptr %arg_convertibles.i.i, i64 16 %call.i.i = tail call noundef ptr @_ZN4node7tracing16TraceEventHelper20GetTracingControllerEv() #12 %cmp13.i.i = icmp eq ptr %call.i.i, null br i1 %cmp13.i.i, label %cleanup.i.i, label %if.end15.i.i @@ -193,9 +192,10 @@ cleanup.i.i: ; preds = %if.end15.i.i, %if.t br label %arraydestroy.body.i.i arraydestroy.body.i.i: ; preds = %_ZNSt10unique_ptrIN2v824ConvertableToTraceFormatESt14default_deleteIS1_EED2Ev.exit.i.i, %cleanup.i.i - %arraydestroy.elementPast.i.i = phi ptr [ %arrayctor.end.i.i, %cleanup.i.i ], [ %arraydestroy.element.i.i, %_ZNSt10unique_ptrIN2v824ConvertableToTraceFormatESt14default_deleteIS1_EED2Ev.exit.i.i ] - %arraydestroy.element.i.i = getelementptr inbounds i8, ptr %arraydestroy.elementPast.i.i, i64 -8 - %7 = load ptr, ptr %arraydestroy.element.i.i, align 8 + %arraydestroy.elementPast.idx.i.i = phi i64 [ 16, %cleanup.i.i ], [ %arraydestroy.elementPast.add.i.i, %_ZNSt10unique_ptrIN2v824ConvertableToTraceFormatESt14default_deleteIS1_EED2Ev.exit.i.i ] + %arraydestroy.elementPast.add.i.i = add nsw i64 %arraydestroy.elementPast.idx.i.i, -8 + %arraydestroy.element.ptr.i.i = getelementptr inbounds i8, ptr %arg_convertibles.i.i, i64 %arraydestroy.elementPast.add.i.i + %7 = load ptr, ptr %arraydestroy.element.ptr.i.i, align 8 %cmp.not.i.i.i = icmp eq ptr %7, null br i1 %cmp.not.i.i.i, label %_ZNSt10unique_ptrIN2v824ConvertableToTraceFormatESt14default_deleteIS1_EED2Ev.exit.i.i, label %_ZNKSt14default_deleteIN2v824ConvertableToTraceFormatEEclEPS1_.exit.i.i.i @@ -207,8 +207,8 @@ _ZNKSt14default_deleteIN2v824ConvertableToTraceFormatEEclEPS1_.exit.i.i.i: ; pre br label %_ZNSt10unique_ptrIN2v824ConvertableToTraceFormatESt14default_deleteIS1_EED2Ev.exit.i.i _ZNSt10unique_ptrIN2v824ConvertableToTraceFormatESt14default_deleteIS1_EED2Ev.exit.i.i: ; preds = %_ZNKSt14default_deleteIN2v824ConvertableToTraceFormatEEclEPS1_.exit.i.i.i, %arraydestroy.body.i.i - store ptr null, ptr %arraydestroy.element.i.i, align 8 - %arraydestroy.done.i.i = icmp eq ptr %arraydestroy.element.i.i, %arg_convertibles.i.i + store ptr null, ptr %arraydestroy.element.ptr.i.i, align 8 + %arraydestroy.done.i.i = icmp eq i64 %arraydestroy.elementPast.add.i.i, 0 br i1 %arraydestroy.done.i.i, label %_ZN4node7tracingL13AddTraceEventEcPKhPKcS4_mmj.exit, label %arraydestroy.body.i.i _ZN4node7tracingL13AddTraceEventEcPKhPKcS4_mmj.exit: ; preds = %_ZNSt10unique_ptrIN2v824ConvertableToTraceFormatESt14default_deleteIS1_EED2Ev.exit.i.i diff --git a/bench/node/optimized/libnode.node_javascript.ll b/bench/node/optimized/libnode.node_javascript.ll index 9282e4b0e69..99c3edd6525 100644 --- a/bench/node/optimized/libnode.node_javascript.ll +++ b/bench/node/optimized/libnode.node_javascript.ll @@ -5582,18 +5582,18 @@ entry: %_M_parent.i.i.i.i = getelementptr inbounds i8, ptr %ref.tmp, i64 16 %0 = load ptr, ptr %_M_parent.i.i.i.i, align 8 call void @_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N4node10UnionBytesEESt10_Select1stISA_ESt4lessIS5_ESaISA_EE8_M_eraseEPSt13_Rb_tree_nodeISA_E(ptr noundef nonnull align 8 dereferenceable(48) %ref.tmp, ptr noundef %0) - %1 = getelementptr inbounds i8, ptr %ref.tmp1, i64 15888 br label %arraydestroy.body arraydestroy.body: ; preds = %arraydestroy.body, %entry - %arraydestroy.elementPast = phi ptr [ %1, %entry ], [ %arraydestroy.element, %arraydestroy.body ] - %arraydestroy.element = getelementptr inbounds i8, ptr %arraydestroy.elementPast, i64 -48 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %arraydestroy.element) #16 - %arraydestroy.done = icmp eq ptr %arraydestroy.element, %ref.tmp1 + %arraydestroy.elementPast.idx = phi i64 [ 15888, %entry ], [ %arraydestroy.elementPast.add, %arraydestroy.body ] + %arraydestroy.elementPast.add = add nsw i64 %arraydestroy.elementPast.idx, -48 + %arraydestroy.element.ptr = getelementptr inbounds i8, ptr %ref.tmp1, i64 %arraydestroy.elementPast.add + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %arraydestroy.element.ptr) #16 + %arraydestroy.done = icmp eq i64 %arraydestroy.elementPast.add, 0 br i1 %arraydestroy.done, label %arraydestroy.done664, label %arraydestroy.body arraydestroy.done664: ; preds = %arraydestroy.body - %2 = call i32 @__cxa_atexit(ptr nonnull @_ZN4node21ThreadsafeCopyOnWriteISt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_10UnionBytesESt4lessIS7_ESaISt4pairIKS7_S8_EEEED2Ev, ptr nonnull @_ZN4node8builtins12_GLOBAL__N_117global_source_mapB5cxx11E, ptr nonnull @__dso_handle) #16 + %1 = call i32 @__cxa_atexit(ptr nonnull @_ZN4node21ThreadsafeCopyOnWriteISt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEENS_10UnionBytesESt4lessIS7_ESaISt4pairIKS7_S8_EEEED2Ev, ptr nonnull @_ZN4node8builtins12_GLOBAL__N_117global_source_mapB5cxx11E, ptr nonnull @__dso_handle) #16 ret void } diff --git a/bench/node/optimized/libnode.node_process_methods.ll b/bench/node/optimized/libnode.node_process_methods.ll index c053565ba67..ef398554a5d 100644 --- a/bench/node/optimized/libnode.node_process_methods.ll +++ b/bench/node/optimized/libnode.node_process_methods.ll @@ -6678,29 +6678,30 @@ if.then4: ; preds = %if.then br i1 %cmp10, label %if.then11, label %if.else if.then11: ; preds = %if.then4 - %idx.neg = sub i64 0, %__n - %add.ptr = getelementptr %"class.v8::Local", ptr %1, i64 %idx.neg + %.neg = mul i64 %__n, -8 br label %for.body.i.i.i.i.i for.body.i.i.i.i.i: ; preds = %if.then11, %for.body.i.i.i.i.i %__cur.07.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i, %for.body.i.i.i.i.i ], [ %1, %if.then11 ] - %__first.sroa.0.06.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i, %for.body.i.i.i.i.i ], [ %add.ptr, %if.then11 ] - %3 = load i64, ptr %__first.sroa.0.06.i.i.i.i.i, align 8 + %__first.sroa.0.06.i.i.i.i.i.idx = phi i64 [ %__first.sroa.0.06.i.i.i.i.i.add, %for.body.i.i.i.i.i ], [ %.neg, %if.then11 ] + %__first.sroa.0.06.i.i.i.i.i.ptr = getelementptr inbounds i8, ptr %1, i64 %__first.sroa.0.06.i.i.i.i.i.idx + %3 = load i64, ptr %__first.sroa.0.06.i.i.i.i.i.ptr, align 8 store i64 %3, ptr %__cur.07.i.i.i.i.i, align 8 - %incdec.ptr.i.i.i.i.i.i = getelementptr inbounds i8, ptr %__first.sroa.0.06.i.i.i.i.i, i64 8 + %__first.sroa.0.06.i.i.i.i.i.add = add nsw i64 %__first.sroa.0.06.i.i.i.i.i.idx, 8 %incdec.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %__cur.07.i.i.i.i.i, i64 8 - %cmp.i.i.not.i.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i.i.i, %1 + %cmp.i.i.not.i.i.i.i.i = icmp eq i64 %__first.sroa.0.06.i.i.i.i.i.add, 0 br i1 %cmp.i.i.not.i.i.i.i.i, label %_ZSt22__uninitialized_move_aIPN2v85LocalINS0_5ValueEEES4_SaIS3_EET0_T_S7_S6_RT1_.exit, label %for.body.i.i.i.i.i, !llvm.loop !55 _ZSt22__uninitialized_move_aIPN2v85LocalINS0_5ValueEEES4_SaIS3_EET0_T_S7_S6_RT1_.exit: ; preds = %for.body.i.i.i.i.i + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %.neg %4 = load ptr, ptr %_M_finish, align 8 %add.ptr16 = getelementptr inbounds %"class.v8::Local", ptr %4, i64 %__n store ptr %add.ptr16, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce + %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %_ZSt13move_backwardIPN2v85LocalINS0_5ValueEEES4_ET0_T_S6_S5_.exit, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %_ZSt22__uninitialized_move_aIPN2v85LocalINS0_5ValueEEES4_SaIS3_EET0_T_S7_S6_RT1_.exit - %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.lhs.cast.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.lhs.cast.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i diff --git a/bench/node/optimized/libnode.node_process_object.ll b/bench/node/optimized/libnode.node_process_object.ll index 9ccae0341b7..d71237834fb 100644 --- a/bench/node/optimized/libnode.node_process_object.ll +++ b/bench/node/optimized/libnode.node_process_object.ll @@ -1370,7 +1370,6 @@ if.then12: ; preds = %if.end store i8 7, ptr %arg_type.i, align 1 store i64 %9, ptr %arg_value.i, align 8 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %arg_convertibles.i, i8 0, i64 16, i1 false) - %arrayctor.end.i = getelementptr inbounds i8, ptr %arg_convertibles.i, i64 16 %call.i28 = call noundef ptr @_ZN4node7tracing16TraceEventHelper8GetAgentEv() #19 %cmp13.i = icmp eq ptr %call.i28, null br i1 %cmp13.i, label %arraydestroy.body.i.preheader, label %if.end15.i @@ -1394,9 +1393,10 @@ arraydestroy.body.i.preheader: ; preds = %if.then12, %_ZN4nod br label %arraydestroy.body.i arraydestroy.body.i: ; preds = %arraydestroy.body.i.preheader, %_ZNSt10unique_ptrIN2v824ConvertableToTraceFormatESt14default_deleteIS1_EED2Ev.exit - %arraydestroy.elementPast.i = phi ptr [ %arraydestroy.element.i, %_ZNSt10unique_ptrIN2v824ConvertableToTraceFormatESt14default_deleteIS1_EED2Ev.exit ], [ %arrayctor.end.i, %arraydestroy.body.i.preheader ] - %arraydestroy.element.i = getelementptr inbounds i8, ptr %arraydestroy.elementPast.i, i64 -8 - %11 = load ptr, ptr %arraydestroy.element.i, align 8 + %arraydestroy.elementPast.i.idx = phi i64 [ %arraydestroy.elementPast.i.add, %_ZNSt10unique_ptrIN2v824ConvertableToTraceFormatESt14default_deleteIS1_EED2Ev.exit ], [ 16, %arraydestroy.body.i.preheader ] + %arraydestroy.elementPast.i.add = add nsw i64 %arraydestroy.elementPast.i.idx, -8 + %arraydestroy.element.i.ptr = getelementptr inbounds i8, ptr %arg_convertibles.i, i64 %arraydestroy.elementPast.i.add + %11 = load ptr, ptr %arraydestroy.element.i.ptr, align 8 %cmp.not.i15 = icmp eq ptr %11, null br i1 %cmp.not.i15, label %_ZNSt10unique_ptrIN2v824ConvertableToTraceFormatESt14default_deleteIS1_EED2Ev.exit, label %_ZNKSt14default_deleteIN2v824ConvertableToTraceFormatEEclEPS1_.exit.i @@ -1408,8 +1408,8 @@ _ZNKSt14default_deleteIN2v824ConvertableToTraceFormatEEclEPS1_.exit.i: ; preds = br label %_ZNSt10unique_ptrIN2v824ConvertableToTraceFormatESt14default_deleteIS1_EED2Ev.exit _ZNSt10unique_ptrIN2v824ConvertableToTraceFormatESt14default_deleteIS1_EED2Ev.exit: ; preds = %arraydestroy.body.i, %_ZNKSt14default_deleteIN2v824ConvertableToTraceFormatEEclEPS1_.exit.i - store ptr null, ptr %arraydestroy.element.i, align 8 - %arraydestroy.done.i = icmp eq ptr %arraydestroy.element.i, %arg_convertibles.i + store ptr null, ptr %arraydestroy.element.i.ptr, align 8 + %arraydestroy.done.i = icmp eq i64 %arraydestroy.elementPast.i.add, 0 br i1 %arraydestroy.done.i, label %do.end, label %arraydestroy.body.i do.end: ; preds = %_ZNSt10unique_ptrIN2v824ConvertableToTraceFormatESt14default_deleteIS1_EED2Ev.exit, %if.end diff --git a/bench/node/optimized/libnode.node_worker.ll b/bench/node/optimized/libnode.node_worker.ll index abf38c8d184..7b6292a4716 100644 --- a/bench/node/optimized/libnode.node_worker.ll +++ b/bench/node/optimized/libnode.node_worker.ll @@ -1451,7 +1451,6 @@ if.then10: ; preds = %if.end store i8 7, ptr %arg_type.i, align 1 store i64 %7, ptr %arg_value.i, align 8 call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %arg_convertibles.i, i8 0, i64 16, i1 false) - %arrayctor.end.i = getelementptr inbounds i8, ptr %arg_convertibles.i, i64 16 %call.i453 = call noundef ptr @_ZN4node7tracing16TraceEventHelper8GetAgentEv() #23 %cmp13.i = icmp eq ptr %call.i453, null br i1 %cmp13.i, label %arraydestroy.body.i.preheader, label %if.end15.i @@ -1475,9 +1474,10 @@ arraydestroy.body.i.preheader: ; preds = %if.then10, %_ZN4nod br label %arraydestroy.body.i arraydestroy.body.i: ; preds = %arraydestroy.body.i.preheader, %_ZNSt10unique_ptrIN2v824ConvertableToTraceFormatESt14default_deleteIS1_EED2Ev.exit - %arraydestroy.elementPast.i = phi ptr [ %arraydestroy.element.i, %_ZNSt10unique_ptrIN2v824ConvertableToTraceFormatESt14default_deleteIS1_EED2Ev.exit ], [ %arrayctor.end.i, %arraydestroy.body.i.preheader ] - %arraydestroy.element.i = getelementptr inbounds i8, ptr %arraydestroy.elementPast.i, i64 -8 - %9 = load ptr, ptr %arraydestroy.element.i, align 8 + %arraydestroy.elementPast.i.idx = phi i64 [ %arraydestroy.elementPast.i.add, %_ZNSt10unique_ptrIN2v824ConvertableToTraceFormatESt14default_deleteIS1_EED2Ev.exit ], [ 16, %arraydestroy.body.i.preheader ] + %arraydestroy.elementPast.i.add = add nsw i64 %arraydestroy.elementPast.i.idx, -8 + %arraydestroy.element.i.ptr = getelementptr inbounds i8, ptr %arg_convertibles.i, i64 %arraydestroy.elementPast.i.add + %9 = load ptr, ptr %arraydestroy.element.i.ptr, align 8 %cmp.not.i66 = icmp eq ptr %9, null br i1 %cmp.not.i66, label %_ZNSt10unique_ptrIN2v824ConvertableToTraceFormatESt14default_deleteIS1_EED2Ev.exit, label %_ZNKSt14default_deleteIN2v824ConvertableToTraceFormatEEclEPS1_.exit.i @@ -1489,8 +1489,8 @@ _ZNKSt14default_deleteIN2v824ConvertableToTraceFormatEEclEPS1_.exit.i: ; preds = br label %_ZNSt10unique_ptrIN2v824ConvertableToTraceFormatESt14default_deleteIS1_EED2Ev.exit _ZNSt10unique_ptrIN2v824ConvertableToTraceFormatESt14default_deleteIS1_EED2Ev.exit: ; preds = %arraydestroy.body.i, %_ZNKSt14default_deleteIN2v824ConvertableToTraceFormatEEclEPS1_.exit.i - store ptr null, ptr %arraydestroy.element.i, align 8 - %arraydestroy.done.i = icmp eq ptr %arraydestroy.element.i, %arg_convertibles.i + store ptr null, ptr %arraydestroy.element.i.ptr, align 8 + %arraydestroy.done.i = icmp eq i64 %arraydestroy.elementPast.i.add, 0 br i1 %arraydestroy.done.i, label %do.body14, label %arraydestroy.body.i do.body14: ; preds = %_ZNSt10unique_ptrIN2v824ConvertableToTraceFormatESt14default_deleteIS1_EED2Ev.exit, %if.end diff --git a/bench/node/optimized/libnode.pipe_wrap.ll b/bench/node/optimized/libnode.pipe_wrap.ll index 348f4105c95..8bd1fbb4b2b 100644 --- a/bench/node/optimized/libnode.pipe_wrap.ll +++ b/bench/node/optimized/libnode.pipe_wrap.ll @@ -1027,7 +1027,6 @@ if.then76: ; preds = %if.end74 store i64 %63, ptr %arg_value.i, align 8 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %arg_convertibles.i.i) call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %arg_convertibles.i.i, i8 0, i64 16, i1 false) - %arrayctor.end.i.i = getelementptr inbounds i8, ptr %arg_convertibles.i.i, i64 16 %call.i.i51 = call noundef ptr @_ZN4node7tracing16TraceEventHelper20GetTracingControllerEv() #14 %cmp13.i.i = icmp eq ptr %call.i.i51, null br i1 %cmp13.i.i, label %arraydestroy.body.i.i.preheader, label %if.end15.i.i @@ -1044,9 +1043,10 @@ arraydestroy.body.i.i.preheader: ; preds = %if.end15.i.i, %if.t br label %arraydestroy.body.i.i arraydestroy.body.i.i: ; preds = %arraydestroy.body.i.i.preheader, %_ZNSt10unique_ptrIN2v824ConvertableToTraceFormatESt14default_deleteIS1_EED2Ev.exit.i.i - %arraydestroy.elementPast.i.i = phi ptr [ %arraydestroy.element.i.i, %_ZNSt10unique_ptrIN2v824ConvertableToTraceFormatESt14default_deleteIS1_EED2Ev.exit.i.i ], [ %arrayctor.end.i.i, %arraydestroy.body.i.i.preheader ] - %arraydestroy.element.i.i = getelementptr inbounds i8, ptr %arraydestroy.elementPast.i.i, i64 -8 - %66 = load ptr, ptr %arraydestroy.element.i.i, align 8 + %arraydestroy.elementPast.idx.i.i = phi i64 [ %arraydestroy.elementPast.add.i.i, %_ZNSt10unique_ptrIN2v824ConvertableToTraceFormatESt14default_deleteIS1_EED2Ev.exit.i.i ], [ 16, %arraydestroy.body.i.i.preheader ] + %arraydestroy.elementPast.add.i.i = add nsw i64 %arraydestroy.elementPast.idx.i.i, -8 + %arraydestroy.element.ptr.i.i = getelementptr inbounds i8, ptr %arg_convertibles.i.i, i64 %arraydestroy.elementPast.add.i.i + %66 = load ptr, ptr %arraydestroy.element.ptr.i.i, align 8 %cmp.not.i.i.i = icmp eq ptr %66, null br i1 %cmp.not.i.i.i, label %_ZNSt10unique_ptrIN2v824ConvertableToTraceFormatESt14default_deleteIS1_EED2Ev.exit.i.i, label %_ZNKSt14default_deleteIN2v824ConvertableToTraceFormatEEclEPS1_.exit.i.i.i @@ -1058,8 +1058,8 @@ _ZNKSt14default_deleteIN2v824ConvertableToTraceFormatEEclEPS1_.exit.i.i.i: ; pre br label %_ZNSt10unique_ptrIN2v824ConvertableToTraceFormatESt14default_deleteIS1_EED2Ev.exit.i.i _ZNSt10unique_ptrIN2v824ConvertableToTraceFormatESt14default_deleteIS1_EED2Ev.exit.i.i: ; preds = %_ZNKSt14default_deleteIN2v824ConvertableToTraceFormatEEclEPS1_.exit.i.i.i, %arraydestroy.body.i.i - store ptr null, ptr %arraydestroy.element.i.i, align 8 - %arraydestroy.done.i.i = icmp eq ptr %arraydestroy.element.i.i, %arg_convertibles.i.i + store ptr null, ptr %arraydestroy.element.ptr.i.i, align 8 + %arraydestroy.done.i.i = icmp eq i64 %arraydestroy.elementPast.add.i.i, 0 br i1 %arraydestroy.done.i.i, label %_ZN4node7tracingL13AddTraceEventINS0_19TraceStringWithCopyEEEmcPKhPKcS6_mmjS6_OT_.exit, label %arraydestroy.body.i.i _ZN4node7tracingL13AddTraceEventINS0_19TraceStringWithCopyEEEmcPKhPKcS6_mmjS6_OT_.exit: ; preds = %_ZNSt10unique_ptrIN2v824ConvertableToTraceFormatESt14default_deleteIS1_EED2Ev.exit.i.i diff --git a/bench/ocio/optimized/AllocationTransform.cpp.ll b/bench/ocio/optimized/AllocationTransform.cpp.ll index ad306e3eec6..d47652c3888 100644 --- a/bench/ocio/optimized/AllocationTransform.cpp.ll +++ b/bench/ocio/optimized/AllocationTransform.cpp.ll @@ -940,9 +940,10 @@ if.end.i.i.i.i.i25.i: ; preds = %call5.i.i.i.i.noexc invoke.cont5: ; preds = %call5.i.i.i.i.noexc, %if.end.i.i.i.i.i25.i store ptr %call5.i.i.i.i35, ptr %vars.i, align 8 - %add.ptr37.i = getelementptr inbounds float, ptr %call5.i.i.i.i35, i64 %conv - store ptr %add.ptr37.i, ptr %_M_finish.i.i5, align 8 - store ptr %add.ptr37.i, ptr %_M_end_of_storage.i, align 8 + %add.ptr37.i.idx = shl nuw nsw i64 %conv, 2 + %add.ptr37.i.ptr = getelementptr inbounds i8, ptr %call5.i.i.i.i35, i64 %add.ptr37.i.idx + store ptr %add.ptr37.i.ptr, ptr %_M_finish.i.i5, align 8 + store ptr %add.ptr37.i.ptr, ptr %_M_end_of_storage.i, align 8 %cmp.i.i.i = icmp eq ptr %4, %3 br i1 %cmp.i.i.i, label %if.end, label %if.then.i13 diff --git a/bench/openssl/optimized/libcrypto-lib-siphash.ll b/bench/openssl/optimized/libcrypto-lib-siphash.ll index a423f4f2b43..b956a68ffe2 100644 --- a/bench/openssl/optimized/libcrypto-lib-siphash.ll +++ b/bench/openssl/optimized/libcrypto-lib-siphash.ll @@ -249,11 +249,10 @@ if.end82: ; preds = %for.end, %entry %in.addr.0 = phi ptr [ %add.ptr, %for.end ], [ %in, %entry ] %15 = trunc i64 %inlen.addr.0 to i32 %conv83 = and i32 %15, 7 - %add.ptr84 = getelementptr inbounds i8, ptr %in.addr.0, i64 %inlen.addr.0 %idx.ext = and i64 %inlen.addr.0, 7 - %idx.neg = sub nsw i64 0, %idx.ext - %add.ptr85 = getelementptr inbounds i8, ptr %add.ptr84, i64 %idx.neg - %cmp87.not139 = icmp eq ptr %in.addr.0, %add.ptr85 + %add.ptr84.add = and i64 %inlen.addr.0, -8 + %add.ptr85.ptr = getelementptr inbounds i8, ptr %in.addr.0, i64 %add.ptr84.add + %cmp87.not139 = icmp ult i64 %inlen.addr.0, 8 br i1 %cmp87.not139, label %for.end160, label %for.body89.lr.ph for.body89.lr.ph: ; preds = %if.end82 @@ -320,7 +319,7 @@ do.body126.us: ; preds = %for.body89.us, %do. for.cond121.for.end156_crit_edge.us: ; preds = %do.body126.us %xor157.us = xor i64 %add140.us, %or119.us %add.ptr159.us = getelementptr inbounds i8, ptr %in.addr.1144.us, i64 8 - %cmp87.not.us = icmp eq ptr %add.ptr159.us, %add.ptr85 + %cmp87.not.us = icmp eq ptr %add.ptr159.us, %add.ptr85.ptr br i1 %cmp87.not.us, label %for.end160, label %for.body89.us, !llvm.loop !7 for.body89: ; preds = %for.body89.lr.ph, %for.body89 @@ -352,7 +351,7 @@ for.body89: ; preds = %for.body89.lr.ph, % %xor120 = xor i64 %or119, %v3.2143 %xor157 = xor i64 %v0.2140, %or119 %add.ptr159 = getelementptr inbounds i8, ptr %in.addr.1144, i64 8 - %cmp87.not = icmp eq ptr %add.ptr159, %add.ptr85 + %cmp87.not = icmp eq ptr %add.ptr159, %add.ptr85.ptr br i1 %cmp87.not, label %for.end160, label %for.body89, !llvm.loop !7 for.end160: ; preds = %for.cond121.for.end156_crit_edge.us, %for.body89, %if.end82 @@ -365,7 +364,7 @@ for.end160: ; preds = %for.cond121.for.end if.then162: ; preds = %for.end160 %leavings163 = getelementptr inbounds i8, ptr %ctx, i64 56 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %leavings163, ptr align 1 %add.ptr85, i64 %idx.ext, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %leavings163, ptr align 1 %add.ptr85.ptr, i64 %idx.ext, i1 false) br label %if.end165 if.end165: ; preds = %if.then162, %for.end160 diff --git a/bench/openssl/optimized/libcrypto-shlib-siphash.ll b/bench/openssl/optimized/libcrypto-shlib-siphash.ll index c452a013caa..c0adf963a67 100644 --- a/bench/openssl/optimized/libcrypto-shlib-siphash.ll +++ b/bench/openssl/optimized/libcrypto-shlib-siphash.ll @@ -249,11 +249,10 @@ if.end82: ; preds = %for.end, %entry %in.addr.0 = phi ptr [ %add.ptr, %for.end ], [ %in, %entry ] %15 = trunc i64 %inlen.addr.0 to i32 %conv83 = and i32 %15, 7 - %add.ptr84 = getelementptr inbounds i8, ptr %in.addr.0, i64 %inlen.addr.0 %idx.ext = and i64 %inlen.addr.0, 7 - %idx.neg = sub nsw i64 0, %idx.ext - %add.ptr85 = getelementptr inbounds i8, ptr %add.ptr84, i64 %idx.neg - %cmp87.not139 = icmp eq ptr %in.addr.0, %add.ptr85 + %add.ptr84.add = and i64 %inlen.addr.0, -8 + %add.ptr85.ptr = getelementptr inbounds i8, ptr %in.addr.0, i64 %add.ptr84.add + %cmp87.not139 = icmp ult i64 %inlen.addr.0, 8 br i1 %cmp87.not139, label %for.end160, label %for.body89.lr.ph for.body89.lr.ph: ; preds = %if.end82 @@ -320,7 +319,7 @@ do.body126.us: ; preds = %for.body89.us, %do. for.cond121.for.end156_crit_edge.us: ; preds = %do.body126.us %xor157.us = xor i64 %add140.us, %or119.us %add.ptr159.us = getelementptr inbounds i8, ptr %in.addr.1144.us, i64 8 - %cmp87.not.us = icmp eq ptr %add.ptr159.us, %add.ptr85 + %cmp87.not.us = icmp eq ptr %add.ptr159.us, %add.ptr85.ptr br i1 %cmp87.not.us, label %for.end160, label %for.body89.us, !llvm.loop !7 for.body89: ; preds = %for.body89.lr.ph, %for.body89 @@ -352,7 +351,7 @@ for.body89: ; preds = %for.body89.lr.ph, % %xor120 = xor i64 %or119, %v3.2143 %xor157 = xor i64 %v0.2140, %or119 %add.ptr159 = getelementptr inbounds i8, ptr %in.addr.1144, i64 8 - %cmp87.not = icmp eq ptr %add.ptr159, %add.ptr85 + %cmp87.not = icmp eq ptr %add.ptr159, %add.ptr85.ptr br i1 %cmp87.not, label %for.end160, label %for.body89, !llvm.loop !7 for.end160: ; preds = %for.cond121.for.end156_crit_edge.us, %for.body89, %if.end82 @@ -365,7 +364,7 @@ for.end160: ; preds = %for.cond121.for.end if.then162: ; preds = %for.end160 %leavings163 = getelementptr inbounds i8, ptr %ctx, i64 56 - tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %leavings163, ptr align 1 %add.ptr85, i64 %idx.ext, i1 false) + tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 %leavings163, ptr align 1 %add.ptr85.ptr, i64 %idx.ext, i1 false) br label %if.end165 if.end165: ; preds = %if.then162, %for.end160 diff --git a/bench/pbrt-v4/optimized/filters.cpp.ll b/bench/pbrt-v4/optimized/filters.cpp.ll index d91b77f6d9a..9bcbbd372e4 100644 --- a/bench/pbrt-v4/optimized/filters.cpp.ll +++ b/bench/pbrt-v4/optimized/filters.cpp.ll @@ -2275,7 +2275,7 @@ terminate.lpad.i9.i.i.i: ; preds = %if.end.i.i.i.i4.i.i unreachable _ZN4pstd3pmr21polymorphic_allocatorIN4pbrt19PiecewiseConstant1DEE7destroyIS3_EEvPT_.exit.i: ; preds = %if.end.i.i.i.i4.i.i.i, %_ZN4pstd6vectorIfNS_3pmr21polymorphic_allocatorIfEEED2Ev.exit.i.i.i - %indvars.iv.next.i = add nuw i64 %indvars.iv.i, 1 + %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %14 = load i64, ptr %nStored.i, align 8 %cmp.i = icmp ugt i64 %14, %indvars.iv.next.i br i1 %cmp.i, label %for.body.i, label %invoke.cont, !llvm.loop !11 @@ -2923,7 +2923,7 @@ terminate.lpad.i9.i.i: ; preds = %if.end.i.i.i.i4.i.i unreachable _ZN4pstd3pmr21polymorphic_allocatorIN4pbrt19PiecewiseConstant1DEE7destroyIS3_EEvPT_.exit: ; preds = %_ZN4pstd6vectorIfNS_3pmr21polymorphic_allocatorIfEEED2Ev.exit.i.i, %if.end.i.i.i.i4.i.i - %indvars.iv.next = add nuw i64 %indvars.iv, 1 + %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %26 = load i64, ptr %nStored, align 8 %cmp2 = icmp ugt i64 %26, %indvars.iv.next br i1 %cmp2, label %for.body, label %for.end, !llvm.loop !15 @@ -3154,7 +3154,8 @@ lpad7: ; preds = %if.then31, %if.then do.end: ; preds = %invoke.cont %22 = load ptr, ptr %ptr.i, align 8 %23 = load i64, ptr %nStored.i, align 8 - %add.ptr.i33 = getelementptr inbounds float, ptr %22, i64 %23 + %add.ptr.i33.idx = shl nsw i64 %23, 2 + %add.ptr.i33.ptr = getelementptr inbounds i8, ptr %22, i64 %add.ptr.i33.idx %cmp13.not55 = icmp eq i64 %23, 0 br i1 %cmp13.not55, label %for.end, label %for.body @@ -3164,7 +3165,7 @@ for.body: ; preds = %do.end, %for.body %25 = tail call noundef float @llvm.fabs.f32(float %24) store float %25, ptr %__begin2.056, align 4 %incdec.ptr = getelementptr inbounds i8, ptr %__begin2.056, i64 4 - %cmp13.not = icmp eq ptr %incdec.ptr, %add.ptr.i33 + %cmp13.not = icmp eq ptr %incdec.ptr, %add.ptr.i33.ptr br i1 %cmp13.not, label %for.end, label %for.body for.end: ; preds = %for.body, %do.end @@ -6412,7 +6413,7 @@ terminate.lpad.i9.i.i.i: ; preds = %if.end.i.i.i.i4.i.i unreachable _ZN4pstd3pmr21polymorphic_allocatorIN4pbrt19PiecewiseConstant1DEE7destroyIS3_EEvPT_.exit.i: ; preds = %if.end.i.i.i.i4.i.i.i, %_ZN4pstd6vectorIfNS_3pmr21polymorphic_allocatorIfEEED2Ev.exit.i.i.i - %indvars.iv.next.i = add nuw i64 %indvars.iv.i, 1 + %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %22 = load i64, ptr %nStored.i, align 8 %cmp.i12 = icmp ugt i64 %22, %indvars.iv.next.i br i1 %cmp.i12, label %for.body.i, label %_ZN4pstd6vectorIN4pbrt19PiecewiseConstant1DENS_3pmr21polymorphic_allocatorIS2_EEE5clearEv.exit, !llvm.loop !11 diff --git a/bench/pbrt-v4/optimized/lightsamplers.cpp.ll b/bench/pbrt-v4/optimized/lightsamplers.cpp.ll index 86d4b3650d5..ff39b33187c 100644 --- a/bench/pbrt-v4/optimized/lightsamplers.cpp.ll +++ b/bench/pbrt-v4/optimized/lightsamplers.cpp.ll @@ -1241,7 +1241,8 @@ lpad20.loopexit.split-lp: ; preds = %if.end64 for.end49: ; preds = %for.inc48 %nStored.i65 = getelementptr inbounds i8, ptr %lightPower, i64 24 - %add.ptr.i66 = getelementptr inbounds float, ptr %35, i64 %inc.i38 + %add.ptr.i66.idx = shl nsw i64 %inc.i38, 2 + %add.ptr.i66.ptr = getelementptr inbounds i8, ptr %35, i64 %add.ptr.i66.idx %cmp.not4.i = icmp eq i64 %inc.i38, 0 br i1 %cmp.not4.i, label %if.end64, label %for.body.i67 @@ -1251,7 +1252,7 @@ for.body.i67: ; preds = %for.end49, %for.bod %39 = load float, ptr %__first.addr.05.i, align 4 %add.i68 = fadd float %__init.addr.06.i, %39 %incdec.ptr.i69 = getelementptr inbounds i8, ptr %__first.addr.05.i, i64 4 - %cmp.not.i70 = icmp eq ptr %incdec.ptr.i69, %add.ptr.i66 + %cmp.not.i70 = icmp eq ptr %incdec.ptr.i69, %add.ptr.i66.ptr br i1 %cmp.not.i70, label %_ZSt10accumulateIPffET0_T_S2_S1_.exit, label %for.body.i67, !llvm.loop !30 _ZSt10accumulateIPffET0_T_S2_S1_.exit: ; preds = %for.body.i67 @@ -1262,7 +1263,7 @@ for.body.i.i.i: ; preds = %_ZSt10accumulateIPf %__first.addr.04.i.i.i = phi ptr [ %incdec.ptr.i.i.i, %for.body.i.i.i ], [ %35, %_ZSt10accumulateIPffET0_T_S2_S1_.exit ] store float 1.000000e+00, ptr %__first.addr.04.i.i.i, align 4 %incdec.ptr.i.i.i = getelementptr inbounds i8, ptr %__first.addr.04.i.i.i, i64 4 - %cmp.not.i.i.i = icmp eq ptr %incdec.ptr.i.i.i, %add.ptr.i66 + %cmp.not.i.i.i = icmp eq ptr %incdec.ptr.i.i.i, %add.ptr.i66.ptr br i1 %cmp.not.i.i.i, label %if.end64.loopexit, label %for.body.i.i.i, !llvm.loop !31 if.end64.loopexit: ; preds = %for.body.i.i.i diff --git a/bench/pbrt-v4/optimized/samplers.cpp.ll b/bench/pbrt-v4/optimized/samplers.cpp.ll index 3ea41b6c9c4..ceb142c38d4 100644 --- a/bench/pbrt-v4/optimized/samplers.cpp.ll +++ b/bench/pbrt-v4/optimized/samplers.cpp.ll @@ -3636,7 +3636,8 @@ entry: %0 = load ptr, ptr %ptr.i, align 8 %nStored.i = getelementptr inbounds i8, ptr %this, i64 64 %1 = load i64, ptr %nStored.i, align 8 - %add.ptr.i = getelementptr inbounds %"struct.pbrt::MLTSampler::PrimarySample", ptr %0, i64 %1 + %add.ptr.i.idx = shl nsw i64 %1, 5 + %add.ptr.i.ptr = getelementptr inbounds i8, ptr %0, i64 %add.ptr.i.idx %cmp.not6 = icmp eq i64 %1, 0 br i1 %cmp.not6, label %for.end, label %for.body.lr.ph @@ -3663,7 +3664,7 @@ if.then: ; preds = %for.body for.inc: ; preds = %for.body, %if.then %incdec.ptr = getelementptr inbounds i8, ptr %__begin1.07, i64 32 - %cmp.not = icmp eq ptr %incdec.ptr, %add.ptr.i + %cmp.not = icmp eq ptr %incdec.ptr, %add.ptr.i.ptr br i1 %cmp.not, label %for.end, label %for.body for.end: ; preds = %for.inc, %entry @@ -3693,7 +3694,8 @@ entry: %0 = load ptr, ptr %ptr.i, align 8 %nStored.i = getelementptr inbounds i8, ptr %this, i64 64 %1 = load i64, ptr %nStored.i, align 8 - %add.ptr.i = getelementptr inbounds %"struct.pbrt::MLTSampler::PrimarySample", ptr %0, i64 %1 + %add.ptr.i.idx = shl nsw i64 %1, 5 + %add.ptr.i.ptr = getelementptr inbounds i8, ptr %0, i64 %add.ptr.i.idx %cmp.not6 = icmp eq i64 %1, 0 br i1 %cmp.not6, label %for.end, label %for.body @@ -3716,7 +3718,7 @@ invoke.cont4: ; preds = %for.body invoke.cont6: ; preds = %invoke.cont4 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) #23 %incdec.ptr = getelementptr inbounds i8, ptr %__begin1.07, i64 32 - %cmp.not = icmp eq ptr %incdec.ptr, %add.ptr.i + %cmp.not = icmp eq ptr %incdec.ptr, %add.ptr.i.ptr br i1 %cmp.not, label %for.end, label %for.body lpad: ; preds = %for.end diff --git a/bench/pbrt-v4/optimized/shapes.cpp.ll b/bench/pbrt-v4/optimized/shapes.cpp.ll index 3a4cfc3567b..83b83e7a842 100644 --- a/bench/pbrt-v4/optimized/shapes.cpp.ll +++ b/bench/pbrt-v4/optimized/shapes.cpp.ll @@ -20943,7 +20943,7 @@ for.body.i.i: ; preds = %for.body.i.i, %for. %19 = load ptr, ptr %ptr.i.i, align 8 %arrayidx.i.i = getelementptr inbounds %"class.std::__cxx11::basic_string", ptr %19, i64 %indvars.iv.i.i tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %arrayidx.i.i) #25 - %indvars.iv.next.i.i = add nuw i64 %indvars.iv.i.i, 1 + %indvars.iv.next.i.i = add nuw nsw i64 %indvars.iv.i.i, 1 %20 = load i64, ptr %nStored.i.i, align 8 %cmp.i.i = icmp ugt i64 %20, %indvars.iv.next.i.i br i1 %cmp.i.i, label %for.body.i.i, label %invoke.cont.i, !llvm.loop !120 @@ -31573,7 +31573,7 @@ terminate.lpad.i9.i.i: ; preds = %if.end.i.i.i.i4.i.i unreachable _ZN4pstd3pmr21polymorphic_allocatorIN4pbrt19PiecewiseConstant1DEE7destroyIS3_EEvPT_.exit: ; preds = %_ZN4pstd6vectorIfNS_3pmr21polymorphic_allocatorIfEEED2Ev.exit.i.i, %if.end.i.i.i.i4.i.i - %indvars.iv.next = add nuw i64 %indvars.iv, 1 + %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %26 = load i64, ptr %nStored, align 8 %cmp2 = icmp ugt i64 %26, %indvars.iv.next br i1 %cmp2, label %for.body, label %for.end, !llvm.loop !160 @@ -31804,7 +31804,8 @@ lpad7: ; preds = %if.then31, %if.then do.end: ; preds = %invoke.cont %22 = load ptr, ptr %ptr.i, align 8 %23 = load i64, ptr %nStored.i, align 8 - %add.ptr.i33 = getelementptr inbounds float, ptr %22, i64 %23 + %add.ptr.i33.idx = shl nsw i64 %23, 2 + %add.ptr.i33.ptr = getelementptr inbounds i8, ptr %22, i64 %add.ptr.i33.idx %cmp13.not55 = icmp eq i64 %23, 0 br i1 %cmp13.not55, label %for.end, label %for.body @@ -31814,7 +31815,7 @@ for.body: ; preds = %do.end, %for.body %25 = tail call noundef float @llvm.fabs.f32(float %24) store float %25, ptr %__begin2.056, align 4 %incdec.ptr = getelementptr inbounds i8, ptr %__begin2.056, i64 4 - %cmp13.not = icmp eq ptr %incdec.ptr, %add.ptr.i33 + %cmp13.not = icmp eq ptr %incdec.ptr, %add.ptr.i33.ptr br i1 %cmp13.not, label %for.end, label %for.body for.end: ; preds = %for.body, %do.end @@ -32044,7 +32045,7 @@ terminate.lpad.i9.i.i.i: ; preds = %if.end.i.i.i.i4.i.i unreachable _ZN4pstd3pmr21polymorphic_allocatorIN4pbrt19PiecewiseConstant1DEE7destroyIS3_EEvPT_.exit.i: ; preds = %if.end.i.i.i.i4.i.i.i, %_ZN4pstd6vectorIfNS_3pmr21polymorphic_allocatorIfEEED2Ev.exit.i.i.i - %indvars.iv.next.i = add nuw i64 %indvars.iv.i, 1 + %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i, 1 %14 = load i64, ptr %nStored.i, align 8 %cmp.i = icmp ugt i64 %14, %indvars.iv.next.i br i1 %cmp.i, label %for.body.i, label %_ZN4pstd6vectorIN4pbrt19PiecewiseConstant1DENS_3pmr21polymorphic_allocatorIS2_EEE5clearEv.exit, !llvm.loop !166 diff --git a/bench/protobuf/optimized/lexer.cc.ll b/bench/protobuf/optimized/lexer.cc.ll index f0224a031e5..567ab648dd5 100644 --- a/bench/protobuf/optimized/lexer.cc.ll +++ b/bench/protobuf/optimized/lexer.cc.ll @@ -332,7 +332,7 @@ invoke.cont14: ; preds = %invoke.cont10 %add2.i = add i64 %12, add (i64 ptrtoint (ptr @_ZZN6google8protobuf13json_internal12_GLOBAL__N_122HardenAgainstHyrumsLawESt17basic_string_viewIcSt11char_traitsIcEERNSt7__cxx1112basic_stringIcS5_SaIcEEEE9kAslrSeed to i64), i64 1442695040888963407) %mul.i.i = mul i64 %add2.i, 6364136223846793005 %add.i.i = add i64 %mul.i.i, 1442695040888963407 - %add.ptr.i.i.i.i.i = getelementptr inbounds i8, ptr %11, i64 %10 + %add.ptr.i.i.i.ptr.i.i = getelementptr inbounds i8, ptr %11, i64 %10 %cmp.not4.i.i.i.i = icmp eq i64 %10, 0 br i1 %cmp.not4.i.i.i.i, label %_ZN4absl12lts_202308027c_countISt17basic_string_viewIcSt11char_traitsIcEEcEEDTclsr3stdE8distanceclsr3stdE7declvalIDTcl5beginclsr3stdE7declvalIRKT_EEEEEEclsr3stdE7declvalIS9_EEEES8_OT0_.exit.thread.i, label %for.body.i.i.i.i @@ -348,7 +348,7 @@ for.body.i.i.i.i: ; preds = %invoke.cont14, %for %inc.i.i.i.i = zext i1 %cmp.i.i.i.i.i to i64 %spec.select.i.i.i.i = add nuw nsw i64 %__n.06.i.i.i.i, %inc.i.i.i.i %incdec.ptr.i.i.i.i = getelementptr inbounds i8, ptr %__first.addr.05.i.i.i.i, i64 1 - %cmp.not.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i, %add.ptr.i.i.i.i.i + %cmp.not.i.i.i.i = icmp eq ptr %incdec.ptr.i.i.i.i, %add.ptr.i.i.i.ptr.i.i br i1 %cmp.not.i.i.i.i, label %_ZN4absl12lts_202308027c_countISt17basic_string_viewIcSt11char_traitsIcEEcEEDTclsr3stdE8distanceclsr3stdE7declvalIDTcl5beginclsr3stdE7declvalIRKT_EEEEEEclsr3stdE7declvalIS9_EEEES8_OT0_.exit.i, label %for.body.i.i.i.i, !llvm.loop !4 _ZN4absl12lts_202308027c_countISt17basic_string_viewIcSt11char_traitsIcEEcEEDTclsr3stdE8distanceclsr3stdE7declvalIDTcl5beginclsr3stdE7declvalIRKT_EEEEEEclsr3stdE7declvalIS9_EEEES8_OT0_.exit.i: ; preds = %for.body.i.i.i.i @@ -409,7 +409,7 @@ for.body18.i: ; preds = %.noexc7, %if.end.i for.inc19.i: ; preds = %.noexc7, %lor.lhs.false.i, %.noexc6 %state.1.i = phi i64 [ %add.i14.i, %lor.lhs.false.i ], [ %state.043.i, %.noexc6 ], [ %add.i21.i, %.noexc7 ] %incdec.ptr.i = getelementptr inbounds i8, ptr %__begin3.044.i, i64 1 - %cmp.not.i = icmp eq ptr %incdec.ptr.i, %add.ptr.i.i.i.i.i + %cmp.not.i = icmp eq ptr %incdec.ptr.i, %add.ptr.i.i.i.ptr.i.i br i1 %cmp.not.i, label %invoke.cont16, label %for.body.i invoke.cont16: ; preds = %for.inc19.i, %_ZN4absl12lts_202308027c_countISt17basic_string_viewIcSt11char_traitsIcEEcEEDTclsr3stdE8distanceclsr3stdE7declvalIDTcl5beginclsr3stdE7declvalIRKT_EEEEEEclsr3stdE7declvalIS9_EEEES8_OT0_.exit.thread.i @@ -3665,7 +3665,7 @@ invoke.cont7: ; preds = %do.end invoke.cont9: ; preds = %invoke.cont7 %11 = extractvalue { i64, ptr } %call10, 0 %12 = extractvalue { i64, ptr } %call10, 1 - %add.ptr.i = getelementptr inbounds i8, ptr %12, i64 %11 + %add.ptr.i.ptr = getelementptr inbounds i8, ptr %12, i64 %11 %cmp.not42 = icmp eq i64 %11, 0 br i1 %cmp.not42, label %for.end, label %for.body @@ -3741,7 +3741,7 @@ if.end48: ; preds = %for.body, %if.then2 %21 = zext nneg i8 %c.0 to i16 %22 = or i16 %shl, %21 %incdec.ptr = getelementptr inbounds i8, ptr %__begin2.044, i64 1 - %cmp.not = icmp eq ptr %incdec.ptr, %add.ptr.i + %cmp.not = icmp eq ptr %incdec.ptr, %add.ptr.i.ptr br i1 %cmp.not, label %for.end, label %for.body for.end: ; preds = %if.end48, %invoke.cont9 diff --git a/bench/protobuf/optimized/map_field.cc.ll b/bench/protobuf/optimized/map_field.cc.ll index 62c54436375..68d59cf0bbe 100644 --- a/bench/protobuf/optimized/map_field.cc.ll +++ b/bench/protobuf/optimized/map_field.cc.ll @@ -3735,7 +3735,8 @@ if.end: ; preds = %_ZNK6google8protobu %cond.i.i.i = select i1 %cmp.i.i.i.i, ptr %cond-lvalue.i, ptr %elements.i.i.i %16 = load i32, ptr %current_size_.i.i, align 8 %idx.ext.i = sext i32 %16 to i64 - %add.ptr.i = getelementptr inbounds ptr, ptr %cond.i.i.i, i64 %idx.ext.i + %add.ptr.i.idx = shl nsw i64 %idx.ext.i, 3 + %add.ptr.i.ptr = getelementptr inbounds i8, ptr %cond.i.i.i, i64 %add.ptr.i.idx %cmp.i.not134 = icmp eq i32 %16, 0 br i1 %cmp.i.not134, label %for.end, label %for.body.lr.ph @@ -4153,7 +4154,7 @@ if.then.i: ; preds = %sw.epilog88 _ZN6google8protobuf6MapKeyD2Ev.exit: ; preds = %sw.epilog88, %if.then.i %incdec.ptr.i = getelementptr inbounds i8, ptr %__begin2.sroa.0.0135, i64 8 - %cmp.i.not = icmp eq ptr %incdec.ptr.i, %add.ptr.i + %cmp.i.not = icmp eq ptr %incdec.ptr.i, %add.ptr.i.ptr br i1 %cmp.i.not, label %for.end, label %for.body ehcleanup: ; preds = %lpad76, %lpad diff --git a/bench/protobuf/optimized/plugin.pb.cc.ll b/bench/protobuf/optimized/plugin.pb.cc.ll index 95d65fd0f49..2db97246b02 100644 --- a/bench/protobuf/optimized/plugin.pb.cc.ll +++ b/bench/protobuf/optimized/plugin.pb.cc.ll @@ -1790,7 +1790,8 @@ for.end: ; preds = %for.body, %entry %9 = inttoptr i64 %sub.i.i.i.i.i18 to ptr %elements.i.i.i = getelementptr inbounds i8, ptr %9, i64 8 %cond.i.i.i = select i1 %cmp.i.i.i.i, ptr %proto_file_.i, ptr %elements.i.i.i - %add.ptr.i = getelementptr inbounds ptr, ptr %cond.i.i.i, i64 %conv + %add.ptr.i.idx = shl nsw i64 %conv, 3 + %add.ptr.i.ptr = getelementptr inbounds i8, ptr %cond.i.i.i, i64 %add.ptr.i.idx %cmp.i.not84 = icmp eq i32 %6, 0 br i1 %cmp.i.not84, label %for.end25, label %for.body19 @@ -1810,7 +1811,7 @@ for.body19: ; preds = %for.end, %for.body1 %add.i.i33 = add i64 %call.i25, %total_size.186 %add22 = add i64 %add.i.i33, %conv.i.i.i32 %incdec.ptr.i = getelementptr inbounds i8, ptr %__begin2.sroa.0.085, i64 8 - %cmp.i.not = icmp eq ptr %incdec.ptr.i, %add.ptr.i + %cmp.i.not = icmp eq ptr %incdec.ptr.i, %add.ptr.i.ptr br i1 %cmp.i.not, label %for.end25, label %for.body19 for.end25: ; preds = %for.body19, %for.end @@ -1829,7 +1830,8 @@ for.end25: ; preds = %for.body19, %for.en %15 = inttoptr i64 %sub.i.i.i.i.i37 to ptr %elements.i.i.i38 = getelementptr inbounds i8, ptr %15, i64 8 %cond.i.i.i39 = select i1 %cmp.i.i.i.i36, ptr %source_file_descriptors_.i, ptr %elements.i.i.i38 - %add.ptr.i47 = getelementptr inbounds ptr, ptr %cond.i.i.i39, i64 %conv27 + %add.ptr.i47.idx = shl nsw i64 %conv27, 3 + %add.ptr.i47.ptr = getelementptr inbounds i8, ptr %cond.i.i.i39, i64 %add.ptr.i47.idx %cmp.i48.not88 = icmp eq i32 %12, 0 br i1 %cmp.i48.not88, label %for.end47, label %for.body40 @@ -1849,7 +1851,7 @@ for.body40: ; preds = %for.end25, %for.bod %add.i.i57 = add i64 %call.i49, %total_size.290 %add44 = add i64 %add.i.i57, %conv.i.i.i56 %incdec.ptr.i58 = getelementptr inbounds i8, ptr %__begin232.sroa.0.089, i64 8 - %cmp.i48.not = icmp eq ptr %incdec.ptr.i58, %add.ptr.i47 + %cmp.i48.not = icmp eq ptr %incdec.ptr.i58, %add.ptr.i47.ptr br i1 %cmp.i48.not, label %for.end47, label %for.body40 for.end47: ; preds = %for.body40, %for.end25 @@ -3458,7 +3460,8 @@ entry: %3 = inttoptr i64 %sub.i.i.i.i.i to ptr %elements.i.i.i = getelementptr inbounds i8, ptr %3, i64 8 %cond.i.i.i = select i1 %cmp.i.i.i.i, ptr %file_.i, ptr %elements.i.i.i - %add.ptr.i = getelementptr inbounds ptr, ptr %cond.i.i.i, i64 %conv + %add.ptr.i.idx = shl nsw i64 %conv, 3 + %add.ptr.i.ptr = getelementptr inbounds i8, ptr %cond.i.i.i, i64 %add.ptr.i.idx %cmp.i.not38 = icmp eq i32 %0, 0 br i1 %cmp.i.not38, label %for.end, label %for.body @@ -3478,7 +3481,7 @@ for.body: ; preds = %entry, %for.body %add.i.i = add i64 %call.i, %total_size.040 %add9 = add i64 %add.i.i, %conv.i.i.i %incdec.ptr.i = getelementptr inbounds i8, ptr %__begin2.sroa.0.039, i64 8 - %cmp.i.not = icmp eq ptr %incdec.ptr.i, %add.ptr.i + %cmp.i.not = icmp eq ptr %incdec.ptr.i, %add.ptr.i.ptr br i1 %cmp.i.not, label %for.end, label %for.body for.end: ; preds = %for.body, %entry diff --git a/bench/protobuf/optimized/reflection_ops.cc.ll b/bench/protobuf/optimized/reflection_ops.cc.ll index aff69540441..e71b7efd3a5 100644 --- a/bench/protobuf/optimized/reflection_ops.cc.ll +++ b/bench/protobuf/optimized/reflection_ops.cc.ll @@ -1073,7 +1073,8 @@ if.then: ; preds = %entry %fields_.i = getelementptr inbounds i8, ptr %1, i64 56 %3 = load ptr, ptr %fields_.i, align 8 %idx.ext = sext i32 %2 to i64 - %add.ptr = getelementptr inbounds %"class.google::protobuf::FieldDescriptor", ptr %3, i64 %idx.ext + %add.ptr.idx = mul nsw i64 %idx.ext, 88 + %add.ptr.ptr.ptr = getelementptr inbounds i8, ptr %3, i64 %add.ptr.idx br i1 %check_fields, label %for.body, label %if.end11 for.body: ; preds = %if.then, %for.inc @@ -1087,7 +1088,7 @@ land.lhs.true: ; preds = %for.body for.inc: ; preds = %for.body, %land.lhs.true %incdec.ptr = getelementptr inbounds i8, ptr %field.086, i64 88 - %cmp.not = icmp eq ptr %incdec.ptr, %add.ptr + %cmp.not = icmp eq ptr %incdec.ptr, %add.ptr.ptr.ptr br i1 %cmp.not, label %if.end11, label %for.body, !llvm.loop !6 if.end11: ; preds = %for.inc, %if.then @@ -1340,7 +1341,7 @@ if.then70: ; preds = %if.else68 for.inc81: ; preds = %for.cond57, %if.then55, %_ZN6google8protobuf11MapIteratorD2Ev.exit76, %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit, %if.then70, %if.else68, %_ZNK6google8protobuf15FieldDescriptor8cpp_typeEv.exit61, %if.then28 %incdec.ptr82 = getelementptr inbounds i8, ptr %field14.090, i64 88 - %cmp16.not = icmp eq ptr %incdec.ptr82, %add.ptr + %cmp16.not = icmp eq ptr %incdec.ptr82, %add.ptr.ptr.ptr br i1 %cmp16.not, label %if.end85, label %for.body17, !llvm.loop !8 if.end85: ; preds = %for.inc81, %entry diff --git a/bench/protobuf/optimized/repeated_ptr_field.cc.ll b/bench/protobuf/optimized/repeated_ptr_field.cc.ll index 40159b1961f..46d1a28cefe 100644 --- a/bench/protobuf/optimized/repeated_ptr_field.cc.ll +++ b/bench/protobuf/optimized/repeated_ptr_field.cc.ll @@ -645,7 +645,8 @@ _ZNK6google8protobuf8internal20RepeatedPtrFieldBase12ClearedCountEv.exit: ; pred %sub.i29 = sub nsw i32 %cond3.i.i, %13 %.sroa.speculated = tail call i32 @llvm.smin.i32(i32 %7, i32 %sub.i29) %idx.ext10 = sext i32 %.sroa.speculated to i64 - %add.ptr11 = getelementptr inbounds ptr, ptr %cond.i27, i64 %idx.ext10 + %add.ptr11.idx = shl nsw i64 %idx.ext10, 3 + %add.ptr11.ptr = getelementptr inbounds i8, ptr %cond.i27, i64 %add.ptr11.idx %cmp40 = icmp sgt i32 %.sroa.speculated, 0 br i1 %cmp40, label %for.body, label %for.end @@ -657,7 +658,7 @@ for.body: ; preds = %_ZNK6google8protobu %call12 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull align 8 dereferenceable(32) %15) %incdec.ptr = getelementptr inbounds i8, ptr %dst.042, i64 8 %incdec.ptr13 = getelementptr inbounds i8, ptr %src.041, i64 8 - %cmp = icmp ult ptr %incdec.ptr13, %add.ptr11 + %cmp = icmp ult ptr %incdec.ptr13, %add.ptr11.ptr br i1 %cmp, label %for.body, label %for.end, !llvm.loop !9 for.end: ; preds = %for.body, %_ZNK6google8protobuf8internal20RepeatedPtrFieldBase12ClearedCountEv.exit diff --git a/bench/proxygen/optimized/CodecUtil.cpp.ll b/bench/proxygen/optimized/CodecUtil.cpp.ll index a07f77caeaa..370f961c610 100644 --- a/bench/proxygen/optimized/CodecUtil.cpp.ll +++ b/bench/proxygen/optimized/CodecUtil.cpp.ll @@ -18,8 +18,6 @@ target triple = "x86_64-unknown-linux-gnu" %"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string::_Alloc_hider", i64, %union.anon } %"struct.std::__cxx11::basic_string::_Alloc_hider" = type { ptr } %union.anon = type { i64, [8 x i8] } -%"struct.std::pair" = type { %"class.folly::Range", double } -%"class.folly::Range" = type { ptr, ptr } %"struct.proxygen::compress::Header" = type { i8, ptr, ptr } %struct.Initializer.7 = type { i8 } %struct.Initializer.6 = type { i8 } @@ -103,7 +101,8 @@ invoke.cont2: ; preds = %invoke.cont %cond.i.i = select i1 %tobool.not1.i.i, ptr %1, ptr %u.i %2 = and i16 %0, 16383 %conv2.i.i.i = zext nneg i16 %2 to i64 - %add.ptr.i14 = getelementptr inbounds %"struct.std::pair", ptr %cond.i.i, i64 %conv2.i.i.i + %add.ptr.i14.idx = mul nuw nsw i64 %conv2.i.i.i, 24 + %add.ptr.i14.ptr = getelementptr inbounds i8, ptr %cond.i.i, i64 %add.ptr.i14.idx %cmp.not25 = icmp eq i16 %2, 0 br i1 %cmp.not25, label %for.end, label %for.body @@ -178,7 +177,7 @@ if.end19.sink.split: ; preds = %land.lhs.true15, %l if.end19: ; preds = %if.end19.sink.split, %if.else, %land.lhs.true15 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %lower) #19 %incdec.ptr = getelementptr inbounds i8, ptr %__begin1.026, i64 24 - %cmp.not = icmp eq ptr %incdec.ptr, %add.ptr.i14 + %cmp.not = icmp eq ptr %incdec.ptr, %add.ptr.i14.ptr br i1 %cmp.not, label %for.end.loopexit, label %for.body for.end.loopexit: ; preds = %if.end19 diff --git a/bench/rocksdb/optimized/cache_entry_roles.cc.ll b/bench/rocksdb/optimized/cache_entry_roles.cc.ll index 4f2c51779f6..b825e4dc0fd 100644 --- a/bench/rocksdb/optimized/cache_entry_roles.cc.ll +++ b/bench/rocksdb/optimized/cache_entry_roles.cc.ll @@ -120,14 +120,14 @@ declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noun ; Function Attrs: mustprogress nounwind uwtable define linkonce_odr void @_ZNSt5arrayINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm14EED2Ev(ptr noundef nonnull align 8 dereferenceable(448) %this) unnamed_addr #2 comdat align 2 { entry: - %0 = getelementptr inbounds i8, ptr %this, i64 448 br label %arraydestroy.body arraydestroy.body: ; preds = %arraydestroy.body, %entry - %arraydestroy.elementPast = phi ptr [ %0, %entry ], [ %arraydestroy.element, %arraydestroy.body ] - %arraydestroy.element = getelementptr inbounds i8, ptr %arraydestroy.elementPast, i64 -32 - tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %arraydestroy.element) #12 - %arraydestroy.done = icmp eq ptr %arraydestroy.element, %this + %arraydestroy.elementPast.idx = phi i64 [ 448, %entry ], [ %arraydestroy.elementPast.add, %arraydestroy.body ] + %arraydestroy.elementPast.add = add nsw i64 %arraydestroy.elementPast.idx, -32 + %arraydestroy.element.ptr = getelementptr inbounds i8, ptr %this, i64 %arraydestroy.elementPast.add + tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %arraydestroy.element.ptr) #12 + %arraydestroy.done = icmp eq i64 %arraydestroy.elementPast.add, 0 br i1 %arraydestroy.done, label %arraydestroy.done2, label %arraydestroy.body arraydestroy.done2: ; preds = %arraydestroy.body diff --git a/bench/rocksdb/optimized/clock_cache.cc.ll b/bench/rocksdb/optimized/clock_cache.cc.ll index 240369bb0a7..eeaf921f020 100644 --- a/bench/rocksdb/optimized/clock_cache.cc.ll +++ b/bench/rocksdb/optimized/clock_cache.cc.ll @@ -1713,11 +1713,10 @@ entry: %length_bits_.i = getelementptr inbounds i8, ptr %this, i64 224 %1 = load i32, ptr %length_bits_.i, align 32 %sh_prom.i = zext nneg i32 %1 to i64 - %shl.i = shl nuw i64 1, %sh_prom.i - %arrayidx.i.i = getelementptr inbounds %"struct.rocksdb::clock_cache::FixedHyperClockTable::HandleImpl", ptr %0, i64 %shl.i %arrayidx.i.i.idx = shl i64 64, %sh_prom.i - %cmp10.i = icmp sgt i64 %arrayidx.i.i.idx, 0 - br i1 %cmp10.i, label %for.body.i.preheader, label %_ZN7rocksdb11clock_cache12_GLOBAL__N_124ConstApplyToEntriesRangeINS0_20FixedHyperClockTable10HandleImplEZNKS0_15ClockCacheShardIS3_E14GetPinnedUsageEvEUlRKS4_E_EEvRKT0_PKT_SF_b.exit + %arrayidx.i.i.ptr = getelementptr inbounds i8, ptr %0, i64 %arrayidx.i.i.idx + %cmp10.i.not = icmp eq i32 %1, 63 + br i1 %cmp10.i.not, label %_ZN7rocksdb11clock_cache12_GLOBAL__N_124ConstApplyToEntriesRangeINS0_20FixedHyperClockTable10HandleImplEZNKS0_15ClockCacheShardIS3_E14GetPinnedUsageEvEUlRKS4_E_EEvRKT0_PKT_SF_b.exit, label %for.body.i.preheader for.body.i.preheader: ; preds = %entry %2 = load i32, ptr %this, align 64 @@ -1763,7 +1762,7 @@ _ZZNK7rocksdb11clock_cache15ClockCacheShardINS0_20FixedHyperClockTableEE14GetPin for.inc.i.us: ; preds = %_ZZNK7rocksdb11clock_cache15ClockCacheShardINS0_20FixedHyperClockTableEE14GetPinnedUsageEvENKUlRKNS2_10HandleImplEE_clES6_.exit.i.us, %if.then2.i.us, %for.body.i.us %table_pinned_usage.2.us = phi i64 [ %table_pinned_usage.0.us, %for.body.i.us ], [ %table_pinned_usage.0.us, %if.then2.i.us ], [ %table_pinned_usage.1.us, %_ZZNK7rocksdb11clock_cache15ClockCacheShardINS0_20FixedHyperClockTableEE14GetPinnedUsageEvENKUlRKNS2_10HandleImplEE_clES6_.exit.i.us ] %incdec.ptr.i.us = getelementptr inbounds i8, ptr %h.011.i.us, i64 64 - %cmp.i.us = icmp ult ptr %incdec.ptr.i.us, %arrayidx.i.i + %cmp.i.us = icmp ult ptr %incdec.ptr.i.us, %arrayidx.i.i.ptr br i1 %cmp.i.us, label %for.body.i.us, label %_ZN7rocksdb11clock_cache12_GLOBAL__N_124ConstApplyToEntriesRangeINS0_20FixedHyperClockTable10HandleImplEZNKS0_15ClockCacheShardIS3_E14GetPinnedUsageEvEUlRKS4_E_EEvRKT0_PKT_SF_b.exit, !llvm.loop !22 for.body.i: ; preds = %for.body.i.preheader, %for.inc.i @@ -1803,7 +1802,7 @@ _ZZNK7rocksdb11clock_cache15ClockCacheShardINS0_20FixedHyperClockTableEE14GetPin for.inc.i: ; preds = %_ZZNK7rocksdb11clock_cache15ClockCacheShardINS0_20FixedHyperClockTableEE14GetPinnedUsageEvENKUlRKNS2_10HandleImplEE_clES6_.exit.i, %if.then2.i, %for.body.i %table_pinned_usage.2 = phi i64 [ %table_pinned_usage.0, %for.body.i ], [ %table_pinned_usage.0, %if.then2.i ], [ %table_pinned_usage.1, %_ZZNK7rocksdb11clock_cache15ClockCacheShardINS0_20FixedHyperClockTableEE14GetPinnedUsageEvENKUlRKNS2_10HandleImplEE_clES6_.exit.i ] %incdec.ptr.i = getelementptr inbounds i8, ptr %h.011.i, i64 64 - %cmp.i = icmp ult ptr %incdec.ptr.i, %arrayidx.i.i + %cmp.i = icmp ult ptr %incdec.ptr.i, %arrayidx.i.i.ptr br i1 %cmp.i, label %for.body.i, label %_ZN7rocksdb11clock_cache12_GLOBAL__N_124ConstApplyToEntriesRangeINS0_20FixedHyperClockTable10HandleImplEZNKS0_15ClockCacheShardIS3_E14GetPinnedUsageEvEUlRKS4_E_EEvRKT0_PKT_SF_b.exit, !llvm.loop !22 _ZN7rocksdb11clock_cache12_GLOBAL__N_124ConstApplyToEntriesRangeINS0_20FixedHyperClockTable10HandleImplEZNKS0_15ClockCacheShardIS3_E14GetPinnedUsageEvEUlRKS4_E_EEvRKT0_PKT_SF_b.exit: ; preds = %for.inc.i, %for.inc.i.us, %entry diff --git a/bench/rocksdb/optimized/db_impl_write.cc.ll b/bench/rocksdb/optimized/db_impl_write.cc.ll index ff7d2c8caa3..118616648c0 100644 --- a/bench/rocksdb/optimized/db_impl_write.cc.ll +++ b/bench/rocksdb/optimized/db_impl_write.cc.ll @@ -22628,8 +22628,7 @@ if.then.i.i.i: ; preds = %invoke.cont.i101 br label %_ZNSt6vectorISt8functionIFvRKN7rocksdb6StatusEEESaIS6_EED2Ev.exit _ZNSt6vectorISt8functionIFvRKN7rocksdb6StatusEEESaIS6_EED2Ev.exit: ; preds = %invoke.cont.i101, %if.then.i.i.i - %_M_manager.i.i104 = getelementptr inbounds i8, ptr %ref.tmp12, i64 16 - %15 = load ptr, ptr %_M_manager.i.i104, align 8 + %15 = load ptr, ptr %_M_manager.i.i, align 8 %tobool.not.i.i105 = icmp eq ptr %15, null br i1 %tobool.not.i.i105, label %_ZNSt8functionIFvRKN7rocksdb6StatusEEED2Ev.exit, label %if.then.i.i106 @@ -22745,8 +22744,7 @@ lpad19: ; preds = %invoke.cont18 ehcleanup: ; preds = %if.then.i.i4.i, %lpad.i95, %lpad19 %.pn = phi { ptr, i32 } [ %25, %lpad19 ], [ %6, %if.then.i.i4.i ], [ %6, %lpad.i95 ] - %_M_manager.i.i132 = getelementptr inbounds i8, ptr %ref.tmp12, i64 16 - %26 = load ptr, ptr %_M_manager.i.i132, align 8 + %26 = load ptr, ptr %_M_manager.i.i, align 8 %tobool.not.i.i133 = icmp eq ptr %26, null br i1 %tobool.not.i.i133, label %ehcleanup33, label %if.then.i.i134 diff --git a/bench/rocksdb/optimized/experimental.cc.ll b/bench/rocksdb/optimized/experimental.cc.ll index a0f1e64631b..e8a84e1c996 100644 --- a/bench/rocksdb/optimized/experimental.cc.ll +++ b/bench/rocksdb/optimized/experimental.cc.ll @@ -4930,8 +4930,7 @@ if.then.i.i.i: ; preds = %invoke.cont.i101 br label %_ZNSt6vectorISt8functionIFvRKN7rocksdb6StatusEEESaIS6_EED2Ev.exit _ZNSt6vectorISt8functionIFvRKN7rocksdb6StatusEEESaIS6_EED2Ev.exit: ; preds = %invoke.cont.i101, %if.then.i.i.i - %_M_manager.i.i104 = getelementptr inbounds i8, ptr %ref.tmp12, i64 16 - %15 = load ptr, ptr %_M_manager.i.i104, align 8 + %15 = load ptr, ptr %_M_manager.i.i, align 8 %tobool.not.i.i105 = icmp eq ptr %15, null br i1 %tobool.not.i.i105, label %_ZNSt8functionIFvRKN7rocksdb6StatusEEED2Ev.exit, label %if.then.i.i106 @@ -5047,8 +5046,7 @@ lpad19: ; preds = %invoke.cont18 ehcleanup: ; preds = %if.then.i.i4.i, %lpad.i95, %lpad19 %.pn = phi { ptr, i32 } [ %25, %lpad19 ], [ %6, %if.then.i.i4.i ], [ %6, %lpad.i95 ] - %_M_manager.i.i132 = getelementptr inbounds i8, ptr %ref.tmp12, i64 16 - %26 = load ptr, ptr %_M_manager.i.i132, align 8 + %26 = load ptr, ptr %_M_manager.i.i, align 8 %tobool.not.i.i133 = icmp eq ptr %26, null br i1 %tobool.not.i.i133, label %ehcleanup33, label %if.then.i.i134 diff --git a/bench/rocksdb/optimized/memtable_list.cc.ll b/bench/rocksdb/optimized/memtable_list.cc.ll index 59aff478226..ff729c36f6d 100644 --- a/bench/rocksdb/optimized/memtable_list.cc.ll +++ b/bench/rocksdb/optimized/memtable_list.cc.ll @@ -3481,8 +3481,7 @@ if.then.i.i.i: ; preds = %invoke.cont.i60 br label %_ZNSt6vectorISt8functionIFvRKN7rocksdb6StatusEEESaIS6_EED2Ev.exit _ZNSt6vectorISt8functionIFvRKN7rocksdb6StatusEEESaIS6_EED2Ev.exit: ; preds = %invoke.cont.i60, %if.then.i.i.i - %_M_manager.i.i63 = getelementptr inbounds i8, ptr %ref.tmp9, i64 16 - %15 = load ptr, ptr %_M_manager.i.i63, align 8 + %15 = load ptr, ptr %_M_manager.i.i, align 8 %tobool.not.i.i64 = icmp eq ptr %15, null br i1 %tobool.not.i.i64, label %_ZNSt8functionIFvRKN7rocksdb6StatusEEED2Ev.exit, label %if.then.i.i65 @@ -3570,8 +3569,7 @@ lpad16: ; preds = %invoke.cont15 ehcleanup: ; preds = %if.then.i.i4.i, %lpad.i54, %lpad16 %.pn = phi { ptr, i32 } [ %23, %lpad16 ], [ %6, %if.then.i.i4.i ], [ %6, %lpad.i54 ] - %_M_manager.i.i81 = getelementptr inbounds i8, ptr %ref.tmp9, i64 16 - %24 = load ptr, ptr %_M_manager.i.i81, align 8 + %24 = load ptr, ptr %_M_manager.i.i, align 8 %tobool.not.i.i82 = icmp eq ptr %24, null br i1 %tobool.not.i.i82, label %ehcleanup31, label %if.then.i.i83 diff --git a/bench/rocksdb/optimized/sst_file_writer.cc.ll b/bench/rocksdb/optimized/sst_file_writer.cc.ll index 19c9b23ca48..79916e5c728 100644 --- a/bench/rocksdb/optimized/sst_file_writer.cc.ll +++ b/bench/rocksdb/optimized/sst_file_writer.cc.ll @@ -6253,8 +6253,7 @@ invoke.cont: ; preds = %entry call3.i.noexc.i: ; preds = %invoke.cont call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %__an.i.i) - %second.i2 = getelementptr inbounds i8, ptr %ref.tmp, i64 32 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %second.i2) #21 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %second.i) #21 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) #21 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp2) #21 ret void @@ -6263,8 +6262,7 @@ lpad4.i: ; preds = %invoke.cont %2 = landingpad { ptr, i32 } cleanup call void @_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_S5_ESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %agg.result) #21 - %second.i3 = getelementptr inbounds i8, ptr %ref.tmp, i64 32 - call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %second.i3) #21 + call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %second.i) #21 call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %ref.tmp) #21 br label %ehcleanup diff --git a/bench/rocksdb/optimized/wal_manager.cc.ll b/bench/rocksdb/optimized/wal_manager.cc.ll index 79ab00cfaa7..aff666989ae 100644 --- a/bench/rocksdb/optimized/wal_manager.cc.ll +++ b/bench/rocksdb/optimized/wal_manager.cc.ll @@ -2215,14 +2215,15 @@ while.end: ; preds = %if.else, %_ZNSt6vec %end.2.ph = phi i64 [ %end.1, %if.else ], [ %add, %_ZNSt6vectorISt10unique_ptrIN7rocksdb7LogFileESt14default_deleteIS2_EESaIS5_EE2atEm.exit ] %.pre = load ptr, ptr %all_logs, align 8 %.sroa.speculated = tail call i64 @llvm.smax.i64(i64 %end.2.ph, i64 0) - %add.ptr.i = getelementptr inbounds %"class.std::unique_ptr.49", ptr %.pre, i64 %.sroa.speculated - %sub.ptr.lhs.cast.i1.i = ptrtoint ptr %add.ptr.i to i64 + %add.ptr.i.idx = shl nsw i64 %.sroa.speculated, 3 + %add.ptr.i.ptr = getelementptr inbounds i8, ptr %.pre, i64 %add.ptr.i.idx + %sub.ptr.lhs.cast.i1.i = ptrtoint ptr %add.ptr.i.ptr to i64 %cmp.i.not.i.i = icmp slt i64 %end.2.ph, 1 br i1 %cmp.i.not.i.i, label %_ZNSt6vectorISt10unique_ptrIN7rocksdb7LogFileESt14default_deleteIS2_EESaIS5_EE5eraseEN9__gnu_cxx17__normal_iteratorIPKS5_S7_EESC_.exit, label %if.then.i.i13 if.then.i.i13: ; preds = %while.end %6 = load ptr, ptr %_M_finish.i, align 8 - %cmp.i1.not.i.i = icmp eq ptr %6, %add.ptr.i + %cmp.i1.not.i.i = icmp eq ptr %6, %add.ptr.i.ptr br i1 %cmp.i1.not.i.i, label %if.end.i.i, label %if.then6.i.i if.then6.i.i: ; preds = %if.then.i.i13 @@ -2235,7 +2236,7 @@ if.then6.i.i: ; preds = %if.then.i.i13 for.body.i.i.i.i.i.i.i: ; preds = %if.then6.i.i, %_ZNSt10unique_ptrIN7rocksdb7LogFileESt14default_deleteIS1_EEaSEOS4_.exit.i.i.i.i.i.i.i %__n.09.i.i.i.i.i.i.i = phi i64 [ %dec.i.i.i.i.i.i.i, %_ZNSt10unique_ptrIN7rocksdb7LogFileESt14default_deleteIS1_EEaSEOS4_.exit.i.i.i.i.i.i.i ], [ %sub.ptr.div.i.i.i.i.i.i.i, %if.then6.i.i ] %__result.addr.08.i.i.i.i.i.i.i = phi ptr [ %incdec.ptr1.i.i.i.i.i.i.i, %_ZNSt10unique_ptrIN7rocksdb7LogFileESt14default_deleteIS1_EEaSEOS4_.exit.i.i.i.i.i.i.i ], [ %.pre, %if.then6.i.i ] - %__first.addr.07.i.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i.i, %_ZNSt10unique_ptrIN7rocksdb7LogFileESt14default_deleteIS1_EEaSEOS4_.exit.i.i.i.i.i.i.i ], [ %add.ptr.i, %if.then6.i.i ] + %__first.addr.07.i.i.i.i.i.i.i = phi ptr [ %incdec.ptr.i.i.i.i.i.i.i, %_ZNSt10unique_ptrIN7rocksdb7LogFileESt14default_deleteIS1_EEaSEOS4_.exit.i.i.i.i.i.i.i ], [ %add.ptr.i.ptr, %if.then6.i.i ] %7 = load ptr, ptr %__first.addr.07.i.i.i.i.i.i.i, align 8 store ptr null, ptr %__first.addr.07.i.i.i.i.i.i.i, align 8 %8 = load ptr, ptr %__result.addr.08.i.i.i.i.i.i.i, align 8 @@ -2264,7 +2265,7 @@ if.end.loopexit.i.i: ; preds = %_ZNSt10unique_ptrIN if.end.i.i: ; preds = %if.end.loopexit.i.i, %if.then6.i.i, %if.then.i.i13 %sub.ptr.lhs.cast.i.pre-phi.i.i = phi i64 [ %.pre9.i.i, %if.end.loopexit.i.i ], [ %sub.ptr.lhs.cast.i.i.i.i.i.i.i, %if.then6.i.i ], [ %sub.ptr.lhs.cast.i1.i, %if.then.i.i13 ] - %10 = phi ptr [ %.pre.i.i, %if.end.loopexit.i.i ], [ %6, %if.then6.i.i ], [ %add.ptr.i, %if.then.i.i13 ] + %10 = phi ptr [ %.pre.i.i, %if.end.loopexit.i.i ], [ %6, %if.then6.i.i ], [ %add.ptr.i.ptr, %if.then.i.i13 ] %sub.ptr.sub.i.i.i15 = sub i64 %sub.ptr.lhs.cast.i.pre-phi.i.i, %sub.ptr.lhs.cast.i1.i %add.ptr.i6.i = getelementptr inbounds i8, ptr %.pre, i64 %sub.ptr.sub.i.i.i15 %tobool.not.i.i.i = icmp eq ptr %10, %add.ptr.i6.i @@ -3671,7 +3672,7 @@ if.then24: ; preds = %for.cond.i.i.i.i, % br label %cleanup cleanup: ; preds = %if.end3.i.i.i.i, %lor.lhs.false.i.i.i.i, %for.cond.i.i, %if.end15.i.i, %if.then24 - %cmp.i108 = phi i1 [ false, %if.then24 ], [ true, %if.end15.i.i ], [ true, %for.cond.i.i ], [ true, %lor.lhs.false.i.i.i.i ], [ true, %if.end3.i.i.i.i ] + %switch = phi i1 [ false, %if.then24 ], [ true, %if.end15.i.i ], [ true, %for.cond.i.i ], [ true, %lor.lhs.false.i.i.i.i ], [ true, %if.end3.i.i.i.i ] invoke void @_ZN7rocksdb4port5Mutex6UnlockEv(ptr noundef nonnull align 8 dereferenceable(40) %read_first_record_cache_mutex_) to label %_ZN7rocksdb9MutexLockD2Ev.exit23 unwind label %terminate.lpad.i22 @@ -3683,7 +3684,7 @@ terminate.lpad.i22: ; preds = %cleanup unreachable _ZN7rocksdb9MutexLockD2Ev.exit23: ; preds = %cleanup - br i1 %cmp.i108, label %cleanup.cont, label %return + br i1 %switch, label %cleanup.cont, label %return cleanup.cont: ; preds = %_ZN7rocksdb9MutexLockD2Ev.exit23 %trunc.not.not = icmp eq i32 %type, 0 diff --git a/bench/rocksdb/optimized/write_batch_with_index.cc.ll b/bench/rocksdb/optimized/write_batch_with_index.cc.ll index 5d3fdd9dbfc..77fb8e462fb 100644 --- a/bench/rocksdb/optimized/write_batch_with_index.cc.ll +++ b/bench/rocksdb/optimized/write_batch_with_index.cc.ll @@ -6187,18 +6187,18 @@ if.then4: ; preds = %if.then br i1 %cmp10, label %if.then11, label %if.else if.then11: ; preds = %if.then4 - %idx.neg = sub i64 0, %__n - %add.ptr = getelementptr inbounds ptr, ptr %1, i64 %idx.neg + %.neg = mul i64 %__n, -8 + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %.neg %add.ptr.idx.neg = shl i64 %__n, 3 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr nonnull align 8 %add.ptr, i64 %add.ptr.idx.neg, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %add.ptr.ptr, i64 %add.ptr.idx.neg, i1 false) %3 = load ptr, ptr %_M_finish, align 8 %add.ptr16 = getelementptr inbounds ptr, ptr %3, i64 %__n store ptr %add.ptr16, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce + %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %invoke.cont20, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %if.then11 - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i diff --git a/bench/spdlog/optimized/stdout_sinks.cpp.ll b/bench/spdlog/optimized/stdout_sinks.cpp.ll index df48f724a71..364b89a0b04 100644 --- a/bench/spdlog/optimized/stdout_sinks.cpp.ll +++ b/bench/spdlog/optimized/stdout_sinks.cpp.ll @@ -5602,9 +5602,11 @@ if.then.i.i.i.i.i.i.i.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i if.else.i.i.i.i.i.i.i.i.i.i.i.i.i: ; preds = %if.then.i.i.i.i.i.i.i.i.i.i.i %4 = atomicrmw volatile add ptr %_M_use_count.i.i.i.i.i.i.i.i.i.i.i.i, i32 1 acq_rel, align 4 + %.pre = load ptr, ptr %_M_refcount.i.i, align 8 br label %_ZSt10_ConstructISt10shared_ptrIN6spdlog5sinks4sinkEEJRKS4_EEvPT_DpOT0_.exit.i.i.i.i.i.i.i _ZSt10_ConstructISt10shared_ptrIN6spdlog5sinks4sinkEEJRKS4_EEvPT_DpOT0_.exit.i.i.i.i.i.i.i: ; preds = %if.else.i.i.i.i.i.i.i.i.i.i.i.i.i, %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i, %call5.i.i.i.i.noexc.i.i + %5 = phi ptr [ %.pre, %if.else.i.i.i.i.i.i.i.i.i.i.i.i.i ], [ %1, %if.then.i.i.i.i.i.i.i.i.i.i.i.i.i ], [ null, %call5.i.i.i.i.noexc.i.i ] %_M_finish.i.i.i = getelementptr inbounds i8, ptr %this, i64 48 store ptr %add.ptr.i.i.i, ptr %_M_finish.i.i.i, align 8 %level_.i = getelementptr inbounds i8, ptr %this, i64 64 @@ -5617,8 +5619,6 @@ _ZSt10_ConstructISt10shared_ptrIN6spdlog5sinks4sinkEEJRKS4_EEvPT_DpOT0_.exit.i.i call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(73) %custom_err_handler_.i, i8 0, i64 73, i1 false) call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(32) %agg.tmp.i) #16 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %agg.tmp.i) - %_M_refcount.i.i1 = getelementptr inbounds i8, ptr %ref.tmp, i64 8 - %5 = load ptr, ptr %_M_refcount.i.i1, align 8 %cmp.not.i.i.i = icmp eq ptr %5, null br i1 %cmp.not.i.i.i, label %_ZNSt10shared_ptrIN6spdlog5sinks4sinkEED2Ev.exit, label %if.then.i.i.i diff --git a/bench/velox/optimized/ArrayDistinct.cpp.ll b/bench/velox/optimized/ArrayDistinct.cpp.ll index dc2b9c064b0..6d314a9b375 100644 --- a/bench/velox/optimized/ArrayDistinct.cpp.ll +++ b/bench/velox/optimized/ArrayDistinct.cpp.ll @@ -6329,7 +6329,7 @@ if.end: ; preds = %if.end9.i.i.i, %if. ret void } -; Function Attrs: nofree nounwind memory(read) +; Function Attrs: mustprogress nofree nounwind willreturn memory(read) declare ptr @__dynamic_cast(ptr, ptr, ptr, i64) local_unnamed_addr #13 ; Function Attrs: mustprogress uwtable @@ -6695,18 +6695,18 @@ if.then4: ; preds = %if.then br i1 %cmp10, label %if.then11, label %if.else if.then11: ; preds = %if.then4 - %idx.neg = sub i64 0, %__n - %add.ptr = getelementptr inbounds i64, ptr %1, i64 %idx.neg + %.neg = mul i64 %__n, -8 + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %.neg %add.ptr.idx.neg = shl i64 %__n, 3 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr nonnull align 8 %add.ptr, i64 %add.ptr.idx.neg, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %add.ptr.ptr, i64 %add.ptr.idx.neg, i1 false) %3 = load ptr, ptr %_M_finish, align 8 %add.ptr16 = getelementptr inbounds i64, ptr %3, i64 %__n store ptr %add.ptr16, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce + %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %invoke.cont20, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %if.then11 - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i @@ -41187,7 +41187,7 @@ attributes #9 = { mustprogress nocallback nofree nounwind willreturn memory(argm attributes #10 = { cold noreturn nounwind memory(inaccessiblemem: write) } attributes #11 = { mustprogress nofree norecurse nosync nounwind willreturn memory(none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+avx,+avx2,+bmi2,+cmov,+crc32,+cx8,+f16c,+fma,+fxsr,+lzcnt,+mmx,+popcnt,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87,+xsave" "tune-cpu"="generic" } attributes #12 = { mustprogress nofree nounwind willreturn memory(read, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+avx,+avx2,+bmi2,+cmov,+crc32,+cx8,+f16c,+fma,+fxsr,+lzcnt,+mmx,+popcnt,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87,+xsave" "tune-cpu"="generic" } -attributes #13 = { nofree nounwind memory(read) } +attributes #13 = { mustprogress nofree nounwind willreturn memory(read) } attributes #14 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } attributes #15 = { mustprogress noreturn uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+avx,+avx2,+bmi2,+cmov,+crc32,+cx8,+f16c,+fma,+fxsr,+lzcnt,+mmx,+popcnt,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87,+xsave" "tune-cpu"="generic" } attributes #16 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } diff --git a/bench/velox/optimized/ArrayIntersectExcept.cpp.ll b/bench/velox/optimized/ArrayIntersectExcept.cpp.ll index a96397c45ba..ab3d1f5edf5 100644 --- a/bench/velox/optimized/ArrayIntersectExcept.cpp.ll +++ b/bench/velox/optimized/ArrayIntersectExcept.cpp.ll @@ -10809,18 +10809,18 @@ if.then4: ; preds = %if.then br i1 %cmp10, label %if.then11, label %if.else if.then11: ; preds = %if.then4 - %idx.neg = sub i64 0, %__n - %add.ptr = getelementptr inbounds i64, ptr %1, i64 %idx.neg + %.neg = mul i64 %__n, -8 + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %.neg %add.ptr.idx.neg = shl i64 %__n, 3 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr nonnull align 8 %add.ptr, i64 %add.ptr.idx.neg, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %add.ptr.ptr, i64 %add.ptr.idx.neg, i1 false) %3 = load ptr, ptr %_M_finish, align 8 %add.ptr16 = getelementptr inbounds i64, ptr %3, i64 %__n store ptr %add.ptr16, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce + %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %invoke.cont20, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %if.then11 - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i @@ -11668,7 +11668,7 @@ declare i64 @llvm.ctlz.i64(i64, i1 immarg) #15 declare void @_ZN8facebook5velox13DecodedVector13fillInIndicesEv(ptr noundef nonnull align 8 dereferenceable(120)) local_unnamed_addr #1 -; Function Attrs: nofree nounwind memory(read) +; Function Attrs: mustprogress nofree nounwind willreturn memory(read) declare ptr @__dynamic_cast(ptr, ptr, ptr, i64) local_unnamed_addr #16 declare void @_ZN8facebook5velox10BaseVector14ensureWritableERKNS0_17SelectivityVectorERKSt10shared_ptrIKNS0_4TypeEEPNS0_6memory10MemoryPoolERS5_IS1_EPNS0_10VectorPoolE(ptr noundef nonnull align 8 dereferenceable(38), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef, ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) local_unnamed_addr #1 @@ -109793,7 +109793,7 @@ attributes #12 = { mustprogress nofree norecurse nosync nounwind willreturn memo attributes #13 = { mustprogress nofree nounwind willreturn memory(read, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+avx,+avx2,+bmi2,+cmov,+crc32,+cx8,+f16c,+fma,+fxsr,+lzcnt,+mmx,+popcnt,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87,+xsave" "tune-cpu"="generic" } attributes #14 = { mustprogress noreturn uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+avx,+avx2,+bmi2,+cmov,+crc32,+cx8,+f16c,+fma,+fxsr,+lzcnt,+mmx,+popcnt,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87,+xsave" "tune-cpu"="generic" } attributes #15 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } -attributes #16 = { nofree nounwind memory(read) } +attributes #16 = { mustprogress nofree nounwind willreturn memory(read) } attributes #17 = { mustprogress uwtable "frame-pointer"="all" "min-legal-vector-width"="128" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+avx,+avx2,+bmi2,+cmov,+crc32,+cx8,+f16c,+fma,+fxsr,+lzcnt,+mmx,+popcnt,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87,+xsave" "tune-cpu"="generic" } attributes #18 = { alwaysinline 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"="+avx,+avx2,+bmi2,+cmov,+crc32,+cx8,+f16c,+fma,+fxsr,+lzcnt,+mmx,+popcnt,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87,+xsave" "tune-cpu"="generic" } attributes #19 = { mustprogress nocallback nofree nosync nounwind willreturn memory(none) } diff --git a/bench/velox/optimized/ConstantExpr.cpp.ll b/bench/velox/optimized/ConstantExpr.cpp.ll index 38902699065..665dfe5309b 100644 --- a/bench/velox/optimized/ConstantExpr.cpp.ll +++ b/bench/velox/optimized/ConstantExpr.cpp.ll @@ -2591,7 +2591,7 @@ _ZNK8facebook5velox9RowVector7childAtEj.exit: ; preds = %if.end163 %add.ptr.i.i = getelementptr inbounds %"class.std::shared_ptr.29", ptr %60, i64 %indvars.iv %61 = load ptr, ptr %add.ptr.i.i, align 8 tail call fastcc void @_ZN8facebook5velox4exec12_GLOBAL__N_116appendSqlLiteralERKNS0_10BaseVectorEiRSo(ptr noundef nonnull align 8 dereferenceable(99) %61, i32 noundef %call158, ptr noundef nonnull align 8 dereferenceable(8) %out) - %indvars.iv.next = add nuw i64 %indvars.iv, 1 + %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %62 = load i64, ptr %childrenSize_.i, align 8 %cmp = icmp ugt i64 %62, %indvars.iv.next br i1 %cmp, label %for.body, label %for.end, !llvm.loop !37 @@ -3219,18 +3219,18 @@ if.then4: ; preds = %if.then br i1 %cmp10, label %if.then11, label %if.else if.then11: ; preds = %if.then4 - %idx.neg = sub i64 0, %__n - %add.ptr = getelementptr inbounds i64, ptr %1, i64 %idx.neg + %.neg = mul i64 %__n, -8 + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %.neg %add.ptr.idx.neg = shl i64 %__n, 3 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr nonnull align 8 %add.ptr, i64 %add.ptr.idx.neg, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %add.ptr.ptr, i64 %add.ptr.idx.neg, i1 false) %3 = load ptr, ptr %_M_finish, align 8 %add.ptr16 = getelementptr inbounds i64, ptr %3, i64 %__n store ptr %add.ptr16, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce + %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %invoke.cont20, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %if.then11 - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i @@ -4025,7 +4025,7 @@ declare noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4size ; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read) declare i64 @strlen(ptr nocapture noundef) local_unnamed_addr #11 -; Function Attrs: nofree nounwind memory(read) +; Function Attrs: mustprogress nofree nounwind willreturn memory(read) declare ptr @__dynamic_cast(ptr, ptr, ptr, i64) local_unnamed_addr #12 declare void @__cxa_bad_cast() local_unnamed_addr @@ -7168,7 +7168,7 @@ attributes #8 = { mustprogress nocallback nofree nounwind willreturn memory(argm attributes #9 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+avx,+avx2,+bmi2,+cmov,+crc32,+cx8,+f16c,+fma,+fxsr,+lzcnt,+mmx,+popcnt,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87,+xsave" "tune-cpu"="generic" } attributes #10 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) } attributes #11 = { 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"="+avx,+avx2,+bmi2,+cmov,+crc32,+cx8,+f16c,+fma,+fxsr,+lzcnt,+mmx,+popcnt,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87,+xsave" "tune-cpu"="generic" } -attributes #12 = { nofree nounwind memory(read) } +attributes #12 = { mustprogress nofree nounwind willreturn memory(read) } attributes #13 = { nofree nounwind } attributes #14 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } attributes #15 = { uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+avx,+avx2,+bmi2,+cmov,+crc32,+cx8,+f16c,+fma,+fxsr,+lzcnt,+mmx,+popcnt,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87,+xsave" "tune-cpu"="generic" } diff --git a/bench/velox/optimized/DecodedVector.cpp.ll b/bench/velox/optimized/DecodedVector.cpp.ll index a34f7cf3f71..bd592e5381d 100644 --- a/bench/velox/optimized/DecodedVector.cpp.ll +++ b/bench/velox/optimized/DecodedVector.cpp.ll @@ -4981,18 +4981,18 @@ if.then4: ; preds = %if.then br i1 %cmp10, label %if.then11, label %if.else if.then11: ; preds = %if.then4 - %idx.neg = sub i64 0, %__n - %add.ptr = getelementptr inbounds i64, ptr %1, i64 %idx.neg + %.neg = mul i64 %__n, -8 + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %.neg %add.ptr.idx.neg = shl i64 %__n, 3 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr nonnull align 8 %add.ptr, i64 %add.ptr.idx.neg, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %add.ptr.ptr, i64 %add.ptr.idx.neg, i1 false) %3 = load ptr, ptr %_M_finish, align 8 %add.ptr16 = getelementptr inbounds i64, ptr %3, i64 %__n store ptr %add.ptr16, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce + %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %invoke.cont20, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %if.then11 - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i diff --git a/bench/velox/optimized/EvalCtx.cpp.ll b/bench/velox/optimized/EvalCtx.cpp.ll index ba9cf339fd1..c5130d95c33 100644 --- a/bench/velox/optimized/EvalCtx.cpp.ll +++ b/bench/velox/optimized/EvalCtx.cpp.ll @@ -7562,7 +7562,8 @@ invoke.cont: ; preds = %call.i.noexc %data_.i = getelementptr inbounds i8, ptr %14, i64 16 %16 = load ptr, ptr %data_.i, align 8 %idx.ext = sext i32 %1 to i64 - %add.ptr = getelementptr inbounds i32, ptr %16, i64 %idx.ext + %add.ptr.idx = shl nsw i64 %idx.ext, 2 + %add.ptr.ptr = getelementptr inbounds i8, ptr %16, i64 %add.ptr.idx %cmp.not4.i = icmp eq i32 %1, 0 br i1 %cmp.not4.i, label %invoke.cont7, label %for.body.i @@ -7572,7 +7573,7 @@ for.body.i: ; preds = %invoke.cont, %for.b store i32 %__value.addr.06.i, ptr %__first.addr.05.i, align 4 %inc.i = add nuw nsw i32 %__value.addr.06.i, 1 %incdec.ptr.i = getelementptr inbounds i8, ptr %__first.addr.05.i, i64 4 - %cmp.not.i = icmp eq ptr %incdec.ptr.i, %add.ptr + %cmp.not.i = icmp eq ptr %incdec.ptr.i, %add.ptr.ptr br i1 %cmp.not.i, label %invoke.cont7, label %for.body.i, !llvm.loop !81 invoke.cont7: ; preds = %for.body.i, %invoke.cont @@ -10054,18 +10055,18 @@ if.then4: ; preds = %if.then br i1 %cmp10, label %if.then11, label %if.else if.then11: ; preds = %if.then4 - %idx.neg = sub i64 0, %__n - %add.ptr = getelementptr inbounds i64, ptr %1, i64 %idx.neg + %.neg = mul i64 %__n, -8 + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %.neg %add.ptr.idx.neg = shl i64 %__n, 3 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr nonnull align 8 %add.ptr, i64 %add.ptr.idx.neg, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %add.ptr.ptr, i64 %add.ptr.idx.neg, i1 false) %3 = load ptr, ptr %_M_finish, align 8 %add.ptr16 = getelementptr inbounds i64, ptr %3, i64 %__n store ptr %add.ptr16, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce + %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %invoke.cont20, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %if.then11 - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i diff --git a/bench/velox/optimized/FlatVector.cpp.ll b/bench/velox/optimized/FlatVector.cpp.ll index 5f760ce3c3a..3cb15485d94 100644 --- a/bench/velox/optimized/FlatVector.cpp.ll +++ b/bench/velox/optimized/FlatVector.cpp.ll @@ -6911,7 +6911,7 @@ if.end24: ; preds = %delete.notnull.i.i. ret ptr %37 } -; Function Attrs: nofree nounwind memory(read) +; Function Attrs: mustprogress nofree nounwind willreturn memory(read) declare ptr @__dynamic_cast(ptr, ptr, ptr, i64) local_unnamed_addr #21 ; Function Attrs: mustprogress uwtable @@ -12641,18 +12641,18 @@ if.then4: ; preds = %if.then br i1 %cmp10, label %if.then11, label %if.else if.then11: ; preds = %if.then4 - %idx.neg = sub i64 0, %__n - %add.ptr = getelementptr inbounds i64, ptr %1, i64 %idx.neg + %.neg = mul i64 %__n, -8 + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %.neg %add.ptr.idx.neg = shl i64 %__n, 3 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr nonnull align 8 %add.ptr, i64 %add.ptr.idx.neg, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %add.ptr.ptr, i64 %add.ptr.idx.neg, i1 false) %3 = load ptr, ptr %_M_finish, align 8 %add.ptr16 = getelementptr inbounds i64, ptr %3, i64 %__n store ptr %add.ptr16, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce + %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %invoke.cont20, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %if.then11 - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i @@ -12983,7 +12983,7 @@ attributes #17 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "sta attributes #18 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+avx,+avx2,+bmi2,+cmov,+crc32,+cx8,+f16c,+fma,+fxsr,+lzcnt,+mmx,+popcnt,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87,+xsave" "tune-cpu"="generic" } attributes #19 = { nobuiltin allocsize(0) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+avx,+avx2,+bmi2,+cmov,+crc32,+cx8,+f16c,+fma,+fxsr,+lzcnt,+mmx,+popcnt,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87,+xsave" "tune-cpu"="generic" } attributes #20 = { cold noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+avx,+avx2,+bmi2,+cmov,+crc32,+cx8,+f16c,+fma,+fxsr,+lzcnt,+mmx,+popcnt,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87,+xsave" "tune-cpu"="generic" } -attributes #21 = { nofree nounwind memory(read) } +attributes #21 = { mustprogress nofree nounwind willreturn memory(read) } attributes #22 = { mustprogress nofree norecurse nosync nounwind willreturn memory(readwrite, inaccessiblemem: none) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+avx,+avx2,+bmi2,+cmov,+crc32,+cx8,+f16c,+fma,+fxsr,+lzcnt,+mmx,+popcnt,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87,+xsave" "tune-cpu"="generic" } attributes #23 = { mustprogress nounwind memory(readwrite, inaccessiblemem: write) uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+avx,+avx2,+bmi2,+cmov,+crc32,+cx8,+f16c,+fma,+fxsr,+lzcnt,+mmx,+popcnt,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87,+xsave" "tune-cpu"="generic" } attributes #24 = { 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"="+avx,+avx2,+bmi2,+cmov,+crc32,+cx8,+f16c,+fma,+fxsr,+lzcnt,+mmx,+popcnt,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87,+xsave" "tune-cpu"="generic" } diff --git a/bench/velox/optimized/RawVector.cpp.ll b/bench/velox/optimized/RawVector.cpp.ll index 1358c6d9a0e..6dfffccf1bb 100644 --- a/bench/velox/optimized/RawVector.cpp.ll +++ b/bench/velox/optimized/RawVector.cpp.ll @@ -117,7 +117,8 @@ _ZN8facebook5velox10raw_vectorIiE6resizeEi.exit: ; preds = %if.then._ZN8faceboo %13 = phi ptr [ %.pre, %if.then._ZN8facebook5velox10raw_vectorIiE6resizeEi.exit_crit_edge ], [ %7, %_ZN8facebook5velox10raw_vectorIiE7reserveEi.exit.i ] %size_2.i = getelementptr inbounds i8, ptr %storage, i64 8 store i32 %size, ptr %size_2.i, align 8 - %arrayidx.i = getelementptr inbounds i32, ptr %13, i64 %conv + %arrayidx.i.idx = shl nsw i64 %conv, 2 + %arrayidx.i.ptr = getelementptr inbounds i8, ptr %13, i64 %arrayidx.i.idx br label %for.body.i for.body.i: ; preds = %_ZN8facebook5velox10raw_vectorIiE6resizeEi.exit, %for.body.i @@ -126,7 +127,7 @@ for.body.i: ; preds = %_ZN8facebook5velox1 store i32 %__value.addr.06.i, ptr %__first.addr.05.i, align 4 %inc.i = add nuw nsw i32 %__value.addr.06.i, 1 %incdec.ptr.i = getelementptr inbounds i8, ptr %__first.addr.05.i, i64 4 - %cmp.not.i6 = icmp eq ptr %incdec.ptr.i, %arrayidx.i + %cmp.not.i6 = icmp eq ptr %incdec.ptr.i, %arrayidx.i.ptr br i1 %cmp.not.i6, label %_ZSt4iotaIPiiEvT_S1_T0_.exit, label %for.body.i, !llvm.loop !5 _ZSt4iotaIPiiEvT_S1_T0_.exit: ; preds = %for.body.i diff --git a/bench/velox/optimized/SelectivityVector.cpp.ll b/bench/velox/optimized/SelectivityVector.cpp.ll index 523f44edb64..027191626dc 100644 --- a/bench/velox/optimized/SelectivityVector.cpp.ll +++ b/bench/velox/optimized/SelectivityVector.cpp.ll @@ -1391,18 +1391,18 @@ if.then4: ; preds = %if.then br i1 %cmp10, label %if.then11, label %if.else if.then11: ; preds = %if.then4 - %idx.neg = sub i64 0, %__n - %add.ptr = getelementptr inbounds i64, ptr %1, i64 %idx.neg + %.neg = mul i64 %__n, -8 + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %.neg %add.ptr.idx.neg = shl i64 %__n, 3 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr nonnull align 8 %add.ptr, i64 %add.ptr.idx.neg, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %add.ptr.ptr, i64 %add.ptr.idx.neg, i1 false) %3 = load ptr, ptr %_M_finish, align 8 %add.ptr16 = getelementptr inbounds i64, ptr %3, i64 %__n store ptr %add.ptr16, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce + %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %invoke.cont20, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %if.then11 - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i diff --git a/bench/velox/optimized/SequenceVector.cpp.ll b/bench/velox/optimized/SequenceVector.cpp.ll index 3d538074f44..6a6abe85761 100644 --- a/bench/velox/optimized/SequenceVector.cpp.ll +++ b/bench/velox/optimized/SequenceVector.cpp.ll @@ -22056,18 +22056,18 @@ if.then4: ; preds = %if.then br i1 %cmp10, label %if.then11, label %if.else if.then11: ; preds = %if.then4 - %idx.neg = sub i64 0, %__n - %add.ptr = getelementptr inbounds i64, ptr %1, i64 %idx.neg + %.neg = mul i64 %__n, -8 + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %.neg %add.ptr.idx.neg = shl i64 %__n, 3 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr nonnull align 8 %add.ptr, i64 %add.ptr.idx.neg, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %add.ptr.ptr, i64 %add.ptr.idx.neg, i1 false) %3 = load ptr, ptr %_M_finish, align 8 %add.ptr16 = getelementptr inbounds i64, ptr %3, i64 %__n store ptr %add.ptr16, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce + %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %invoke.cont20, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %if.then11 - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i diff --git a/bench/velox/optimized/Split.cpp.ll b/bench/velox/optimized/Split.cpp.ll index bd51a749d93..38565ae0b15 100644 --- a/bench/velox/optimized/Split.cpp.ll +++ b/bench/velox/optimized/Split.cpp.ll @@ -10662,18 +10662,18 @@ if.then4: ; preds = %if.then br i1 %cmp10, label %if.then11, label %if.else if.then11: ; preds = %if.then4 - %idx.neg = sub i64 0, %__n - %add.ptr = getelementptr inbounds i64, ptr %1, i64 %idx.neg + %.neg = mul i64 %__n, -8 + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %.neg %add.ptr.idx.neg = shl i64 %__n, 3 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr nonnull align 8 %add.ptr, i64 %add.ptr.idx.neg, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %add.ptr.ptr, i64 %add.ptr.idx.neg, i1 false) %3 = load ptr, ptr %_M_finish, align 8 %add.ptr16 = getelementptr inbounds i64, ptr %3, i64 %__n store ptr %add.ptr16, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce + %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %invoke.cont20, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %if.then11 - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i @@ -12279,7 +12279,7 @@ return: ; preds = %_ZN5folly3f146detai ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) declare void @llvm.prefetch.p0(ptr nocapture readonly, i32 immarg, i32 immarg, i32 immarg) #22 -; Function Attrs: nofree nounwind memory(read) +; Function Attrs: mustprogress nofree nounwind willreturn memory(read) declare ptr @__dynamic_cast(ptr, ptr, ptr, i64) local_unnamed_addr #23 ; Function Attrs: mustprogress uwtable @@ -14049,7 +14049,7 @@ _ZN8facebook5velox10StringViewC2EPKci.exit: ; preds = %if.then2.i, %if.end %add = add i64 %spec.select, %conv.i26 %add.ptr = getelementptr inbounds i8, ptr %sinput.sroa.6.0, i64 %add %sub = sub i64 %sinput.sroa.0.0, %add - %indvars.iv.next = add nuw i64 %indvars.iv, 1 + %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %54 = add nuw nsw i64 %indvars.iv, 2 %cmp24 = icmp eq i64 %54, %limit br i1 %cmp24, label %while.end, label %while.body, !llvm.loop !164 @@ -14551,7 +14551,7 @@ attributes #19 = { mustprogress uwtable "frame-pointer"="all" "min-legal-vector- attributes #20 = { mustprogress nocallback nofree nosync nounwind willreturn memory(none) } attributes #21 = { cold noreturn nounwind "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+avx,+avx2,+bmi2,+cmov,+crc32,+cx8,+f16c,+fma,+fxsr,+lzcnt,+mmx,+popcnt,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87,+xsave" "tune-cpu"="generic" } attributes #22 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite, inaccessiblemem: readwrite) } -attributes #23 = { nofree nounwind memory(read) } +attributes #23 = { mustprogress nofree nounwind willreturn memory(read) } attributes #24 = { mustprogress nofree nounwind willreturn memory(write) "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+avx,+avx2,+bmi2,+cmov,+crc32,+cx8,+f16c,+fma,+fxsr,+lzcnt,+mmx,+popcnt,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87,+xsave" "tune-cpu"="generic" } attributes #25 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } attributes #26 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) } diff --git a/bench/velox/optimized/SubscriptUtil.cpp.ll b/bench/velox/optimized/SubscriptUtil.cpp.ll index a6364870343..2c3828d3e24 100644 --- a/bench/velox/optimized/SubscriptUtil.cpp.ll +++ b/bench/velox/optimized/SubscriptUtil.cpp.ll @@ -25983,7 +25983,7 @@ if.end: ; preds = %_ZNKSt14default_del declare void @_ZN8facebook5velox13DecodedVector6decodeERKNS0_10BaseVectorEPKNS0_17SelectivityVectorEb(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(99), ptr noundef, i1 noundef zeroext) local_unnamed_addr #5 -; Function Attrs: nofree nounwind memory(read) +; Function Attrs: mustprogress nofree nounwind willreturn memory(read) declare ptr @__dynamic_cast(ptr, ptr, ptr, i64) local_unnamed_addr #15 declare void @_ZN8facebook5velox13DecodedVector13fillInIndicesEv(ptr noundef nonnull align 8 dereferenceable(120)) local_unnamed_addr #5 @@ -26351,18 +26351,18 @@ if.then4: ; preds = %if.then br i1 %cmp10, label %if.then11, label %if.else if.then11: ; preds = %if.then4 - %idx.neg = sub i64 0, %__n - %add.ptr = getelementptr inbounds i64, ptr %1, i64 %idx.neg + %.neg = mul i64 %__n, -8 + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %.neg %add.ptr.idx.neg = shl i64 %__n, 3 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr nonnull align 8 %add.ptr, i64 %add.ptr.idx.neg, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %add.ptr.ptr, i64 %add.ptr.idx.neg, i1 false) %3 = load ptr, ptr %_M_finish, align 8 %add.ptr16 = getelementptr inbounds i64, ptr %3, i64 %__n store ptr %add.ptr16, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce + %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %invoke.cont20, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %if.then11 - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i @@ -51318,7 +51318,7 @@ attributes #11 = { nounwind "frame-pointer"="all" "no-trapping-math"="true" "sta attributes #12 = { mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: write) } attributes #13 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) } attributes #14 = { 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"="+avx,+avx2,+bmi2,+cmov,+crc32,+cx8,+f16c,+fma,+fxsr,+lzcnt,+mmx,+popcnt,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87,+xsave" "tune-cpu"="generic" } -attributes #15 = { nofree nounwind memory(read) } +attributes #15 = { mustprogress nofree nounwind willreturn memory(read) } attributes #16 = { noreturn "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+avx,+avx2,+bmi2,+cmov,+crc32,+cx8,+f16c,+fma,+fxsr,+lzcnt,+mmx,+popcnt,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87,+xsave" "tune-cpu"="generic" } attributes #17 = { mustprogress noreturn uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+avx,+avx2,+bmi2,+cmov,+crc32,+cx8,+f16c,+fma,+fxsr,+lzcnt,+mmx,+popcnt,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87,+xsave" "tune-cpu"="generic" } attributes #18 = { mustprogress uwtable "frame-pointer"="all" "min-legal-vector-width"="128" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+avx,+avx2,+bmi2,+cmov,+crc32,+cx8,+f16c,+fma,+fxsr,+lzcnt,+mmx,+popcnt,+sse,+sse2,+sse3,+sse4.1,+sse4.2,+ssse3,+x87,+xsave" "tune-cpu"="generic" } diff --git a/bench/velox/optimized/TryExpr.cpp.ll b/bench/velox/optimized/TryExpr.cpp.ll index ffef9e862e3..b1a25d6790c 100644 --- a/bench/velox/optimized/TryExpr.cpp.ll +++ b/bench/velox/optimized/TryExpr.cpp.ll @@ -5411,18 +5411,18 @@ if.then4: ; preds = %if.then br i1 %cmp10, label %if.then11, label %if.else if.then11: ; preds = %if.then4 - %idx.neg = sub i64 0, %__n - %add.ptr = getelementptr inbounds i64, ptr %1, i64 %idx.neg + %.neg = mul i64 %__n, -8 + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %.neg %add.ptr.idx.neg = shl i64 %__n, 3 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr nonnull align 8 %add.ptr, i64 %add.ptr.idx.neg, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %add.ptr.ptr, i64 %add.ptr.idx.neg, i1 false) %3 = load ptr, ptr %_M_finish, align 8 %add.ptr16 = getelementptr inbounds i64, ptr %3, i64 %__n store ptr %add.ptr16, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce + %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %invoke.cont20, label %if.then.i.i.i.i.i if.then.i.i.i.i.i: ; preds = %if.then11 - %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr to i64 + %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i = ptrtoint ptr %add.ptr.ptr to i64 %sub.ptr.sub.i.i.i.i.i = sub i64 %sub.ptr.rhs.cast.i.i.i.i.i.i.i.i.i, %sub.ptr.rhs.cast.i %sub.ptr.div.i.i.i.i.i = ashr exact i64 %sub.ptr.sub.i.i.i.i.i, 3 %.pre.i.i.i.i.i = sub nsw i64 0, %sub.ptr.div.i.i.i.i.i @@ -7519,8 +7519,7 @@ if.then.i.i.i: ; preds = %invoke.cont.i br label %_ZNSt6vectorISt10shared_ptrIN8facebook5velox4exec4ExprEESaIS5_EED2Ev.exit _ZNSt6vectorISt10shared_ptrIN8facebook5velox4exec4ExprEESaIS5_EED2Ev.exit: ; preds = %invoke.cont.i, %if.then.i.i.i - %_M_refcount.i.i14 = getelementptr inbounds i8, ptr %ref.tmp, i64 8 - %22 = load ptr, ptr %_M_refcount.i.i14, align 8 + %22 = load ptr, ptr %_M_refcount.i.i3, align 8 %cmp.not.i.i.i = icmp eq ptr %22, null br i1 %cmp.not.i.i.i, label %_ZNSt10shared_ptrIN8facebook5velox4exec4ExprEED2Ev.exit, label %if.then.i.i.i15 diff --git a/bench/velox/optimized/UnsafeRowSerializer.cpp.ll b/bench/velox/optimized/UnsafeRowSerializer.cpp.ll index f32098b68a8..436cd08c4aa 100644 --- a/bench/velox/optimized/UnsafeRowSerializer.cpp.ll +++ b/bench/velox/optimized/UnsafeRowSerializer.cpp.ll @@ -2369,7 +2369,7 @@ _ZSt20dynamic_pointer_castIN8facebook5velox3row12_GLOBAL__N_122PrimitiveBatchIte br i1 %cmp6.not.i.i, label %for.end.i.i178, label %for.body.i.i171 for.cond.i.i: ; preds = %invoke.cont4.i.i - %indvars.iv.next.i.i177 = add nuw i64 %indvars.iv.i.i172, 1 + %indvars.iv.next.i.i177 = add nuw nsw i64 %indvars.iv.i.i172, 1 %12 = load i64, ptr %size.i.i, align 8, !noalias !34 %cmp.i6.i = icmp ugt i64 %12, %indvars.iv.next.i.i177 br i1 %cmp.i6.i, label %for.body.i.i171, label %for.end.i.i178, !llvm.loop !39 @@ -9673,7 +9673,7 @@ invoke.cont84.i: ; preds = %for.body78.i %234 = load ptr, ptr %numElements_.i, align 8 %add.ptr.i442.i = getelementptr inbounds i64, ptr %234, i64 %indvars.iv200 store i64 %call85.i, ptr %add.ptr.i442.i, align 8 - %indvars.iv.next201 = add nuw i64 %indvars.iv200, 1 + %indvars.iv.next201 = add nuw nsw i64 %indvars.iv200, 1 %235 = load i64, ptr %numRows_.i.i, align 8 %cmp77.i = icmp ugt i64 %235, %indvars.iv.next201 br i1 %cmp77.i, label %for.body78.i, label %_ZNSt10shared_ptrIN8facebook5velox3row12_GLOBAL__N_116MapBatchIteratorEED2Ev.exit, !llvm.loop !251 @@ -33527,18 +33527,18 @@ if.then4: ; preds = %if.then br i1 %cmp10, label %if.then11, label %if.else if.then11: ; preds = %if.then4 - %idx.neg = sub i64 0, %__n - %add.ptr = getelementptr inbounds i64, ptr %1, i64 %idx.neg + %.neg = mul i64 %__n, -8 + %add.ptr.ptr = getelementptr inbounds i8, ptr %1, i64 %.neg %add.ptr.idx.neg = shl i64 %__n, 3 - tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr nonnull align 8 %add.ptr, i64 %add.ptr.idx.neg, i1 false) + tail call void @llvm.memmove.p0.p0.i64(ptr align 8 %1, ptr align 8 %add.ptr.ptr, i64 %add.ptr.idx.neg, i1 false) %3 = load ptr, ptr %_M_finish, align 8 %add.ptr16 = getelementptr inbounds i64, ptr %3, i64 %__n store ptr %add.ptr16, ptr %_M_finish, align 8 - %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr, %__position.coerce + %tobool.not.i.i.i.i.i = icmp eq ptr %add.ptr.ptr, %__position.coerce br i1 %tobool.not.i.i.i.i.i, label %invoke.cont20, label %if.then.i.i.i.i.i if.then.i.i.i.i{"code":"internal","msg":"git-diff-tree: context deadline exceeded","meta":{"cause":"*fmt.wrapError"}}