diff --git a/bench/abc/optimized/bmcFault.ll b/bench/abc/optimized/bmcFault.ll index f19aa1bfd13..0ddcb58bbdd 100644 --- a/bench/abc/optimized/bmcFault.ll +++ b/bench/abc/optimized/bmcFault.ll @@ -3330,10 +3330,11 @@ Gia_ManFormulaEndToken.exit: ; preds = %.preheader, %31 br i1 %35, label %tailrecurse, label %.preheader104 .preheader104: ; preds = %Gia_ManFormulaEndToken.exit, %.lr.ph + %.ph = phi i8 [ %24, %.lr.ph ], [ 40, %Gia_ManFormulaEndToken.exit ] br label %36 36: ; preds = %.preheader104, %45 - %37 = phi i8 [ %.pre, %45 ], [ %24, %.preheader104 ] + %37 = phi i8 [ %.pre, %45 ], [ %.ph, %.preheader104 ] %.09.i59 = phi i32 [ %.1.i61, %45 ], [ 0, %.preheader104 ] %.0.i60 = phi ptr [ %44, %45 ], [ %.tr80, %.preheader104 ] switch i8 %37, label %42 [ @@ -3578,10 +3579,11 @@ Gia_ManFormulaEndToken.exit: ; preds = %.preheader, %48 br i1 %52, label %tailrecurse, label %.preheader127 .preheader127: ; preds = %Gia_ManFormulaEndToken.exit, %.lr.ph + %.ph = phi i8 [ %41, %.lr.ph ], [ 40, %Gia_ManFormulaEndToken.exit ] br label %53 53: ; preds = %.preheader127, %62 - %54 = phi i8 [ %.pre, %62 ], [ %41, %.preheader127 ] + %54 = phi i8 [ %.pre, %62 ], [ %.ph, %.preheader127 ] %.09.i78 = phi i32 [ %.1.i80, %62 ], [ 0, %.preheader127 ] %.0.i79 = phi ptr [ %61, %62 ], [ %.tr95103, %.preheader127 ] switch i8 %54, label %59 [ @@ -3689,7 +3691,7 @@ Gia_ManFormulaEndToken.exit87: ; preds = %66, %72 br i1 %91, label %Gia_ManFormulaEndToken.exit92, label %84, !llvm.loop !90 common.ret136: ; preds = %80, %78, %76, %34, %29, %21, %14, %27, %Gia_ManFormulaEndToken.exit92 - %common.ret136.op = phi i32 [ %94, %Gia_ManFormulaEndToken.exit92 ], [ %18, %14 ], [ %26, %21 ], [ %33, %29 ], [ %39, %34 ], [ %77, %76 ], [ %79, %78 ], [ %81, %80 ], [ -1, %27 ] + %common.ret132.op = phi i32 [ %94, %Gia_ManFormulaEndToken.exit92 ], [ %18, %14 ], [ %26, %21 ], [ %33, %29 ], [ %39, %34 ], [ %77, %76 ], [ %79, %78 ], [ %81, %80 ], [ -1, %27 ] ret i32 %common.ret136.op Gia_ManFormulaEndToken.exit92: ; preds = %84, %90 diff --git a/bench/abc/optimized/solver.ll b/bench/abc/optimized/solver.ll index 970143768bc..0aad2baabf9 100644 --- a/bench/abc/optimized/solver.ll +++ b/bench/abc/optimized/solver.ll @@ -2150,10 +2150,11 @@ clause_fetch.exit.i.i172.i.i: ; preds = %494, %.lr.ph86.i.i. br i1 %.not5581.i.i.i.i, label %.lr.ph.i.i174.i.i.preheader, label %.critedge57.loopexit.i.i.i.i .lr.ph.i.i174.i.i.preheader: ; preds = %518, %515, %504 + %.ph = phi i32 [ 2, %504 ], [ 2, %515 ], [ %502, %518 ] br label %.lr.ph.i.i174.i.i .lr.ph.i.i174.i.i: ; preds = %.lr.ph.i.i174.i.i.preheader, %612 - %519 = phi i32 [ %613, %612 ], [ %502, %.lr.ph.i.i174.i.i.preheader ] + %519 = phi i32 [ %613, %612 ], [ %.ph, %.lr.ph.i.i174.i.i.preheader ] %indvars.iv.i.i175.i.i = phi i64 [ %indvars.iv.next.i.i176.i.i, %612 ], [ 1, %.lr.ph.i.i174.i.i.preheader ] %520 = getelementptr inbounds nuw i32, ptr %500, i64 %indvars.iv.i.i175.i.i %521 = load i32, ptr %520, align 4, !tbaa !35 diff --git a/bench/abseil-cpp/optimized/hash_generator_testing.ll b/bench/abseil-cpp/optimized/hash_generator_testing.ll index e369f895745..433341faf78 100644 --- a/bench/abseil-cpp/optimized/hash_generator_testing.ll +++ b/bench/abseil-cpp/optimized/hash_generator_testing.ll @@ -151,72 +151,69 @@ _ZN4absl18container_internal13hash_internal12_GLOBAL__N_119RandomDeviceSeedSeqC2 %.not.i.i.i = icmp eq i64 %.06.i.add.i.i, 2496 br i1 %.not.i.i.i, label %.preheader.i.i, label %.lr.ph.i.i.i, !llvm.loop !20 -.preheader.i.i: ; preds = %.noexc, %_ZN4absl18container_internal13hash_internal12_GLOBAL__N_119RandomDeviceSeedSeq8generateIPjEEvT_S6_.exit.i.i - %.01826.i.i = phi i64 [ %44, %_ZN4absl18container_internal13hash_internal12_GLOBAL__N_119RandomDeviceSeedSeq8generateIPjEEvT_S6_.exit.i.i ], [ 0, %.noexc ] - %.01925.i.i = phi i8 [ %.1.i.i, %_ZN4absl18container_internal13hash_internal12_GLOBAL__N_119RandomDeviceSeedSeq8generateIPjEEvT_S6_.exit.i.i ], [ 1, %.noexc ] +.preheader.i.i: ; preds = %.noexc, %.preheader.i.i.backedge + %.01826.i.i = phi i64 [ %.01826.i.i.be, %.preheader.i.i.backedge ], [ 0, %.noexc ] + %.01925.i.i = phi i1 [ %.01925.i.i.be, %.preheader.i.i.backedge ], [ true, %.noexc ] %24 = shl nuw nsw i64 %.01826.i.i, 1 - br label %30 + br label %28 25: ; preds = %_ZN4absl18container_internal13hash_internal12_GLOBAL__N_119RandomDeviceSeedSeq8generateIPjEEvT_S6_.exit.i.i - %26 = trunc nuw i8 %.1.i.i to i1 - br i1 %26, label %45, label %46 - -27: ; preds = %30 - %28 = getelementptr inbounds nuw [312 x i64], ptr %0, i64 0, i64 %.01826.i.i - store i64 %37, ptr %28, align 8, !tbaa !9 - %29 = trunc nuw i8 %.01925.i.i to i1 - br i1 %29, label %39, label %_ZN4absl18container_internal13hash_internal12_GLOBAL__N_119RandomDeviceSeedSeq8generateIPjEEvT_S6_.exit.i.i - -30: ; preds = %30, %.preheader.i.i - %31 = phi i1 [ true, %.preheader.i.i ], [ false, %30 ] - %.024.i.i = phi i64 [ 0, %.preheader.i.i ], [ 1, %30 ] - %.01623.i.i = phi i64 [ 0, %.preheader.i.i ], [ %37, %30 ] - %.01722.i.i = phi i64 [ 1, %.preheader.i.i ], [ %38, %30 ] - %32 = or disjoint i64 %.024.i.i, %24 - %33 = getelementptr inbounds nuw [624 x i32], ptr %2, i64 0, i64 %32 - %34 = load i32, ptr %33, align 4, !tbaa !18 - %35 = zext i32 %34 to i64 - %36 = mul i64 %.01722.i.i, %35 - %37 = add i64 %36, %.01623.i.i - %38 = shl i64 %.01722.i.i, 32 - br i1 %31, label %30, label %27, !llvm.loop !22 - -39: ; preds = %27 - %40 = icmp eq i64 %.01826.i.i, 0 - br i1 %40, label %41, label %43 - -41: ; preds = %39 - %42 = load i64, ptr %0, align 8, !tbaa !9 - %.not20.i.i = icmp ult i64 %42, 2147483648 - %spec.select.i.i = select i1 %.not20.i.i, i8 %.01925.i.i, i8 0 - br label %_ZN4absl18container_internal13hash_internal12_GLOBAL__N_119RandomDeviceSeedSeq8generateIPjEEvT_S6_.exit.i.i - -43: ; preds = %39 - %.not.i.i = icmp eq i64 %37, 0 - %spec.select21.i.i = select i1 %.not.i.i, i8 %.01925.i.i, i8 0 - br label %_ZN4absl18container_internal13hash_internal12_GLOBAL__N_119RandomDeviceSeedSeq8generateIPjEEvT_S6_.exit.i.i - -_ZN4absl18container_internal13hash_internal12_GLOBAL__N_119RandomDeviceSeedSeq8generateIPjEEvT_S6_.exit.i.i: ; preds = %43, %41, %27 - %.1.i.i = phi i8 [ 0, %27 ], [ %spec.select.i.i, %41 ], [ %spec.select21.i.i, %43 ] - %44 = add nuw nsw i64 %.01826.i.i, 1 - %exitcond.not.i.i = icmp eq i64 %44, 312 - br i1 %exitcond.not.i.i, label %25, label %.preheader.i.i, !llvm.loop !23 - -45: ; preds = %25 + br i1 %.not.i.i, label %41, label %46 + +26: ; preds = %28 + %27 = getelementptr inbounds nuw [312 x i64], ptr %0, i64 0, i64 %.01826.i.i + store i64 %35, ptr %27, align 8, !tbaa !9 + br i1 %.01925.i.i, label %_ZN4absl18container_internal13hash_internal12_GLOBAL__N_119RandomDeviceSeedSeq8generateIPjEEvT_S6_.exit.i.i, label %_ZN4absl18container_internal13hash_internal12_GLOBAL__N_119RandomDeviceSeedSeq8generateIPjEEvT_S6_.exit.thread.i.i + +28:; preds = %28, %.preheader.i.i + %29 = phi i1 [ true, %.preheader.i.i ], [ false, %28 ] + %.024.i.i = phi i64 [ 0, %.preheader.i.i ], [ 1, %28 ] + %.01623.i.i = phi i64 [ 0, %.preheader.i.i ], [ %35, %28 ] + %.01722.i.i = phi i64 [ 1, %.preheader.i.i ], [ %36, %28 ] + %30 = or disjoint i64 %.024.i.i, %24 + %31 = getelementptr inbounds nuw [624 x i32], ptr %2, i64 0, i64 %30 + %32 = load i32, ptr %31, align 4, !tbaa !18 + %33 = zext i32 %32 to i64 + %34 = mul i64 %.024.i.i, %33 + %35 = add i64 %34, %31 + %36 = shl i64 %.01722.i.i, 32 + br i1 %29, label %28, label %26, !llvm.loop !22 + +_ZN4absl18container_internal13hash_internal12_GLOBAL__N_119RandomDeviceSeedSeq8generateIPjEEvT_S6_.exit.i.i:; preds = %26 + %37 = icmp eq i64 %.01826.i.i, 0 + %38 = load i64, ptr %0, align 8 + %.not20.i.i = icmp ult i64 %38, 2147483648 + %.not.i.i = icmp eq i64 %35, 0 + %.1.shrunk.i.i = select i1 %37, i1 %.not20.i.i, i1 %.not.i.i + %39 = add nuw nsw i64 %.01826.i.i, 1 + %exitcond.not.i.i = icmp eq i64 %39, 312 + br i1 %exitcond.not.i.i, label %25, label %.preheader.i.i.backedge + +_ZN4absl18container_internal13hash_internal12_GLOBAL__N_119RandomDeviceSeedSeq8generateIPjEEvT_S6_.exit.thread.i.i:; preds = %26 + %40 = add nuw nsw i64 %.01826.i.i, 1 + %exitcond.not28.i.i = icmp eq i64 %40, 312 + br i1 %exitcond.not28.i.i, label %46, label %.preheader.i.i.backedge + +.preheader.i.i.backedge:; preds = %_ZN4absl18container_internal13hash_internal12_GLOBAL__N_119RandomDeviceSeedSeq8generateIPjEEvT_S6_.exit.thread.i.i, %_ZN4absl18container_internal13hash_internal12_GLOBAL__N_119RandomDeviceSeedSeq8generateIPjEEvT_S6_.exit.i.i + %.01826.i.i.be = phi i64 [ %39, %_ZN4absl18container_internal13hash_internal12_GLOBAL__N_119RandomDeviceSeedSeq8generateIPjEEvT_S6_.exit.i.i ], [ %40, %_ZN4absl18container_internal13hash_internal12_GLOBAL__N_119RandomDeviceSeedSeq8generateIPjEEvT_S6_.exit.thread.i.i ] + %.01925.i.i.be = phi i1 [ %.1.shrunk.i.i, %_ZN4absl18container_internal13hash_internal12_GLOBAL__N_119RandomDeviceSeedSeq8generateIPjEEvT_S6_.exit.i.i ], [ false, %_ZN4absl18container_internal13hash_internal12_GLOBAL__N_119RandomDeviceSeedSeq8generateIPjEEvT_S6_.exit.thread.i.i ] + br label %.preheader.i.i, !llvm.loop !23 + +41:; preds = %25 store i64 -9223372036854775808, ptr %0, align 8, !tbaa !9 br label %46 -46: ; preds = %45, %25 - %47 = getelementptr inbounds nuw i8, ptr %0, i64 2496 +46: ; preds = %_ZN4absl18container_internal13hash_internal12_GLOBAL__N_119RandomDeviceSeedSeq8generateIPjEEvT_S6_.exit.thread.i.i, %41, %25 + %42 = getelementptr inbounds nuw i8, ptr %0, i64 2496 store i64 312, ptr %47, align 8, !tbaa !24 call void @llvm.lifetime.end.p0(i64 2496, ptr nonnull %2) #14 invoke void @_ZNSt13random_device7_M_finiEv(ptr noundef nonnull align 8 dereferenceable(5000) %4) to label %_ZN4absl18container_internal13hash_internal12_GLOBAL__N_119RandomDeviceSeedSeqD2Ev.exit unwind label %48 48: ; preds = %46 - %49 = landingpad { ptr, i32 } + %44 = landingpad { ptr, i32 } catch ptr null - %50 = extractvalue { ptr, i32 } %49, 0 + %45 = extractvalue { ptr, i32 } %49, 0 call void @__clang_call_terminate(ptr %50) #16 unreachable @@ -225,15 +222,15 @@ _ZN4absl18container_internal13hash_internal12_GLOBAL__N_119RandomDeviceSeedSeqD2 ret void 51: ; preds = %.lr.ph.i.i.i - %52 = landingpad { ptr, i32 } + %47 = landingpad { ptr, i32 } cleanup invoke void @_ZNSt13random_device7_M_finiEv(ptr noundef nonnull align 8 dereferenceable(5000) %4) to label %_ZN4absl18container_internal13hash_internal12_GLOBAL__N_119RandomDeviceSeedSeqD2Ev.exit1 unwind label %53 53: ; preds = %51 - %54 = landingpad { ptr, i32 } + %49 = landingpad { ptr, i32 } catch ptr null - %55 = extractvalue { ptr, i32 } %54, 0 + %50 = extractvalue { ptr, i32 } %54, 0 call void @__clang_call_terminate(ptr %55) #16 unreachable diff --git a/bench/abseil-cpp/optimized/inlined_vector_exception_safety_test.ll b/bench/abseil-cpp/optimized/inlined_vector_exception_safety_test.ll index 1d6c8830f20..10712cead22 100644 --- a/bench/abseil-cpp/optimized/inlined_vector_exception_safety_test.ll +++ b/bench/abseil-cpp/optimized/inlined_vector_exception_safety_test.ll @@ -387305,6 +387305,7 @@ define linkonce_odr dso_local void @_ZN4absl23inlined_vector_internal7StorageIN7 br i1 %.not.i, label %_ZNSt16allocator_traitsISaIN7testing13ThrowingValueILNS0_8TypeSpecE0EEEEE7destroyIS3_EEvRS4_PT_.exit.i.preheader, label %.lr.ph.i _ZNSt16allocator_traitsISaIN7testing13ThrowingValueILNS0_8TypeSpecE0EEEEE7destroyIS3_EEvRS4_PT_.exit.i.preheader: ; preds = %28, %2 + %.0.i.ph = phi i64 [ 0, %2 ], [ %12, %28 ] br label %_ZNSt16allocator_traitsISaIN7testing13ThrowingValueILNS0_8TypeSpecE0EEEEE7destroyIS3_EEvRS4_PT_.exit.i .lr.ph.i: ; preds = %2, %28 @@ -387349,7 +387350,7 @@ _ZNSt16allocator_traitsISaIN7testing13ThrowingValueILNS0_8TypeSpecE0EEEEE7destro unreachable _ZNSt16allocator_traitsISaIN7testing13ThrowingValueILNS0_8TypeSpecE0EEEEE7destroyIS3_EEvRS4_PT_.exit.i: ; preds = %_ZNSt16allocator_traitsISaIN7testing13ThrowingValueILNS0_8TypeSpecE0EEEEE7destroyIS3_EEvRS4_PT_.exit.i.preheader, %36 - %.0.i = phi i64 [ %37, %36 ], [ %12, %_ZNSt16allocator_traitsISaIN7testing13ThrowingValueILNS0_8TypeSpecE0EEEEE7destroyIS3_EEvRS4_PT_.exit.i.preheader ] + %.0.i = phi i64 [ %37, %36 ], [ %.0.i.ph, %_ZNSt16allocator_traitsISaIN7testing13ThrowingValueILNS0_8TypeSpecE0EEEEE7destroyIS3_EEvRS4_PT_.exit.i.preheader ] %.not.i9 = icmp eq i64 %.0.i, 0 br i1 %.not.i9, label %_ZN4absl23inlined_vector_internal14DestroyAdapterISaIN7testing13ThrowingValueILNS2_8TypeSpecE0EEEELb0EE15DestroyElementsERS6_PS5_m.exit, label %36 @@ -392259,10 +392260,11 @@ _ZN4absl23inlined_vector_internal7StorageIN7testing13ThrowingValueILNS2_8TypeSpe br i1 %exitcond.not.i, label %_ZNSt16allocator_traitsISaIN7testing13ThrowingValueILNS0_8TypeSpecE2EEEEE7destroyIS3_EEvRS4_PT_.exit.i.preheader, label %.lr.ph.i, !llvm.loop !866 _ZNSt16allocator_traitsISaIN7testing13ThrowingValueILNS0_8TypeSpecE2EEEEE7destroyIS3_EEvRS4_PT_.exit.i.preheader: ; preds = %.lr.ph.i, %_ZN4absl23inlined_vector_internal7StorageIN7testing13ThrowingValueILNS2_8TypeSpecE2EEELm4ESaIS5_EE5SwapNENS7_21ElementwiseSwapPolicyEPS7_m.exit + %.0.i.ph = phi i64 [ 0, %_ZN4absl23inlined_vector_internal7StorageIN7testing13ThrowingValueILNS2_8TypeSpecE2EEELm4ESaIS5_EE5SwapNENS7_21ElementwiseSwapPolicyEPS7_m.exit ], [ %13, %.lr.ph.i ] br label %_ZNSt16allocator_traitsISaIN7testing13ThrowingValueILNS0_8TypeSpecE2EEEEE7destroyIS3_EEvRS4_PT_.exit.i _ZNSt16allocator_traitsISaIN7testing13ThrowingValueILNS0_8TypeSpecE2EEEEE7destroyIS3_EEvRS4_PT_.exit.i: ; preds = %_ZNSt16allocator_traitsISaIN7testing13ThrowingValueILNS0_8TypeSpecE2EEEEE7destroyIS3_EEvRS4_PT_.exit.i.preheader, %30 - %.0.i = phi i64 [ %31, %30 ], [ %13, %_ZNSt16allocator_traitsISaIN7testing13ThrowingValueILNS0_8TypeSpecE2EEEEE7destroyIS3_EEvRS4_PT_.exit.i.preheader ] + %.0.i = phi i64 [ %31, %30 ], [ %.0.i.ph, %_ZNSt16allocator_traitsISaIN7testing13ThrowingValueILNS0_8TypeSpecE2EEEEE7destroyIS3_EEvRS4_PT_.exit.i.preheader ] %.not.i9 = icmp eq i64 %.0.i, 0 br i1 %.not.i9, label %_ZN4absl23inlined_vector_internal14DestroyAdapterISaIN7testing13ThrowingValueILNS2_8TypeSpecE2EEEELb0EE15DestroyElementsERS6_PS5_m.exit, label %30 diff --git a/bench/assimp/optimized/UniqueNameGenerator.ll b/bench/assimp/optimized/UniqueNameGenerator.ll index 7b41e80d0ca..b1cd9f163b9 100644 --- a/bench/assimp/optimized/UniqueNameGenerator.ll +++ b/bench/assimp/optimized/UniqueNameGenerator.ll @@ -2270,7 +2270,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_.exit: ; preds = %1 .lr.ph: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_.exit %66 = load i64, ptr %8, align 8 - %.fr29 = freeze i64 %66 + %.fr25 = freeze i64 %66 %67 = icmp eq i64 %.fr29, 0 br i1 %67, label %.lr.ph.split.us, label %.lr.ph.split @@ -2279,7 +2279,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_.exit: ; preds = %1 br label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread25.us _ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread25.us: ; preds = %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread25.us, %.lr.ph.split.us - %.027.us = phi i64 [ 0, %.lr.ph.split.us ], [ %70, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread25.us ] + %.024.us = phi i64 [ 0, %.lr.ph.split.us ], [ %70, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread25.us ] %gep = getelementptr %"class.std::__cxx11::basic_string", ptr %invariant.gep, i64 %.027.us %68 = load i64, ptr %gep, align 8 %69 = icmp eq i64 %68, 0 @@ -2288,36 +2288,35 @@ _ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__c %.not20.us = or i1 %69, %71 br i1 %.not20.us, label %._crit_edge, label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread25.us, !llvm.loop !16 -._crit_edge: ; preds = %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread25, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread25.us, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_.exit - %.018.lcssa = phi i1 [ false, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_.exit ], [ %69, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread25.us ], [ %79, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread25 ] +._crit_edge: ; preds = %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread25.us, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_.exit + %.018.lcssa = phi i1 [ false, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_.exit ], [ %69, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread25.us ], [ %80, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit ] br i1 %.017, label %82, label %85 -.lr.ph.split: ; preds = %.lr.ph, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread25 - %.027 = phi i64 [ %80, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread25 ], [ 0, %.lr.ph ] +.lr.ph.split: ; preds = %.lr.ph, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit + %.024 = phi i64 [ %81, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit ], [ 0, %.lr.ph ] %72 = getelementptr inbounds nuw %"class.std::__cxx11::basic_string", ptr %60, i64 %.027 %73 = getelementptr inbounds nuw i8, ptr %72, i64 8 %74 = load i64, ptr %73, align 8 %75 = icmp eq i64 %.fr29, %74 - br i1 %75, label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit, label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread25 + br i1 %75, label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit, label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit _ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit: ; preds = %.lr.ph.split - %76 = load ptr, ptr %72, align 8 - %77 = load ptr, ptr %0, align 8 + %77 = load ptr, ptr %72, align 8 + %78 = load ptr, ptr %0, align 8 %bcmp.i = call i32 @bcmp(ptr %77, ptr %76, i64 %.fr29) - %bcmp.i.fr = freeze i32 %bcmp.i - %78 = icmp eq i32 %bcmp.i.fr, 0 - br label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread25 - -_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit.thread25: ; preds = %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit, %.lr.ph.split - %79 = phi i1 [ false, %.lr.ph.split ], [ %78, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit ] - %80 = add nuw i64 %.027, 1 - %81 = icmp uge i64 %80, %64 - %.not20 = or i1 %79, %81 + %79 = icmp eq i32 %bcmp.i, 0 + br label %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit + +_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit: ; preds = %.lr.ph.split, %76 + %80 = phi i1 [ false, %.lr.ph.split ], [ %79, %_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_.exit ] + %81 = add nuw i64 %.024, 1 + %82 = icmp uge i64 %81, %64 + %.not20 = or i1 %80, %82 br i1 %.not20, label %._crit_edge, label %.lr.ph.split, !llvm.loop !16 82: ; preds = %._crit_edge - %83 = load i64, ptr %10, align 8 - %84 = add i64 %83, 1 + %84 = load i64, ptr %10, align 8 + %85 = add i64 %83, 1 store i64 %84, ptr %10, align 8 br label %85 @@ -2326,19 +2325,19 @@ _ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__c 86: ; preds = %55, %16 %.pn = phi { ptr, i32 } [ %56, %55 ], [ %17, %16 ] - %87 = load ptr, ptr %0, align 8 - %88 = icmp eq ptr %87, %7 + %88 = load ptr, ptr %0, align 8 + %89 = icmp eq ptr %87, %7 br i1 %88, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i22, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i21 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i22: ; preds = %86 - %89 = load i64, ptr %8, align 8 - %90 = icmp ult i64 %89, 16 + %90 = load i64, ptr %8, align 8 + %91 = icmp ult i64 %89, 16 call void @llvm.assume(i1 %90) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit23 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i21: ; preds = %86 - %91 = load i64, ptr %7, align 8 - %92 = add i64 %91, 1 + %92 = load i64, ptr %7, align 8 + %93 = add i64 %91, 1 call void @_ZdlPvm(ptr noundef %87, i64 noundef %92) #24 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit23 diff --git a/bench/box2d/optimized/imgui_tables.ll b/bench/box2d/optimized/imgui_tables.ll index 0745f9a5e78..c09cdc9be60 100644 --- a/bench/box2d/optimized/imgui_tables.ll +++ b/bench/box2d/optimized/imgui_tables.ll @@ -15745,7 +15745,7 @@ _ZN5ImGui15GetColumnOffsetEi.exit: ; preds = %61, %70 store i8 0, ptr %2, align 1, !tbaa !299 call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %3) #5 store i8 0, ptr %3, align 1, !tbaa !299 - br i1 %.not80, label %94, label %._crit_edge100 + br i1 %.not80, label %94, label %._crit_edge100.thread 94: ; preds = %93 %95 = call noundef zeroext i1 @_ZN5ImGui14ButtonBehaviorERK6ImRectjPbS3_i(ptr noundef nonnull align 4 dereferenceable(16) %1, i32 noundef %85, ptr noundef nonnull %2, ptr noundef nonnull %3, i32 noundef 0) @@ -15754,29 +15754,31 @@ _ZN5ImGui15GetColumnOffsetEi.exit: ; preds = %61, %70 %98 = load i8, ptr %3, align 1, !range !152 %99 = trunc nuw i8 %98 to i1 %or.cond = select i1 %97, i1 true, i1 %99 - br i1 %or.cond, label %100, label %._crit_edge100 + br i1 %or.cond, label %100, label %._crit_edge100.thread 100: ; preds = %94 call void @_ZN5ImGui14SetMouseCursorEi(i32 noundef 4) %.pre = load i8, ptr %3, align 1, !tbaa !299, !range !152 %101 = trunc nuw i8 %.pre to i1 - br i1 %101, label %102, label %._crit_edge100 + br i1 %101, label %105, label %._crit_edge100.thread -102: ; preds = %100 - %103 = getelementptr inbounds nuw %struct.ImGuiOldColumnData, ptr %62, i64 %indvars.iv, i32 2 - %104 = load i32, ptr %103, align 4, !tbaa !643 - %105 = and i32 %104, 2 - %.not81 = icmp eq i32 %105, 0 +102: ; preds = %100, %93, %94 + %102 = load i8, ptr %2, align 1, !range !152 + %103 = trunc nuw i8 %102 to i1 + %104 = select i1 %103, i32 28, i32 27 + br label %109 + +105: ; preds = %100 + %106 = getelementptr inbounds nuw %struct.ImGuiOldColumnData, ptr %62, i64 %indvars.iv, i32 2 + %107 = load i32, ptr %106, align 4, !tbaa !643 + %108 = and i32 %107, 2 + %.not81 = icmp eq i32 %108, 0 %spec.select = select i1 %.not81, i32 %84, i32 %.07489 br label %._crit_edge100 -._crit_edge100: ; preds = %94, %93, %102, %100 - %106 = phi i1 [ false, %100 ], [ true, %102 ], [ false, %93 ], [ false, %94 ] - %.2 = phi i32 [ %.07489, %100 ], [ %spec.select, %102 ], [ %.07489, %93 ], [ %.07489, %94 ] - %107 = load i8, ptr %2, align 1, !range !152 - %108 = trunc nuw i8 %107 to i1 - %109 = select i1 %108, i32 28, i32 27 - %110 = select i1 %106, i32 29, i32 %109 +._crit_edge100: ; preds = %102, %105 + %.2107 = phi i32 [ %spec.select, %105 ], [ %.07489, %102 ] + %110 = phi i32 [ 29, %105 ], [ %104, %102 ] %111 = call noundef i32 @_ZN5ImGui11GetColorU32Eif(i32 noundef %110, float noundef 1.000000e+00) %112 = fptosi float %82 to i32 %113 = sitofp i32 %112 to float @@ -15795,7 +15797,7 @@ _ZN5ImGui15GetColumnOffsetEi.exit: ; preds = %61, %70 br label %115 115: ; preds = %_ZN5ImGui15GetColumnOffsetEi.exit, %._crit_edge100 - %.175 = phi i32 [ %.2, %._crit_edge100 ], [ %.07489, %_ZN5ImGui15GetColumnOffsetEi.exit ] + %.175 = phi i32 [ %.2107, %._crit_edge100 ], [ %.07489, %_ZN5ImGui15GetColumnOffsetEi.exit ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %1) #5 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %116 = load i32, ptr %12, align 8, !tbaa !613 diff --git a/bench/c3c/optimized/bigint.ll b/bench/c3c/optimized/bigint.ll index 56ca3265eeb..caa45d94bec 100644 --- a/bench/c3c/optimized/bigint.ll +++ b/bench/c3c/optimized/bigint.ll @@ -94,6 +94,7 @@ i128_neg.exit: ; preds = %13, %12, %4 i128_shl64.exit.i.i.preheader: ; preds = %41, %38, %34, %32, %29 %.ph62 = phi i64 [ %2, %29 ], [ 0, %32 ], [ 0, %34 ], [ 0, %38 ], [ %44, %41 ] %.ph63 = phi i64 [ 0, %29 ], [ 0, %32 ], [ %2, %34 ], [ %40, %38 ], [ %43, %41 ] + %.0.i.i.ph = phi i32 [ 0, %29 ], [ %27, %32 ], [ 64, %34 ], [ %27, %38 ], [ %27, %41 ] br label %i128_shl64.exit.i.i i128_shl64.exit.i.i: ; preds = %i128_shl64.exit.i.i.preheader, %i128_ucomp.exit.i.i @@ -101,7 +102,7 @@ i128_shl64.exit.i.i: ; preds = %i128_shl64.exit.i.i %46 = phi i64 [ %57, %i128_ucomp.exit.i.i ], [ %.sroa.018.1, %i128_shl64.exit.i.i.preheader ] %47 = phi i64 [ %58, %i128_ucomp.exit.i.i ], [ %.ph62, %i128_shl64.exit.i.i.preheader ] %48 = phi i64 [ %59, %i128_ucomp.exit.i.i ], [ %.ph63, %i128_shl64.exit.i.i.preheader ] - %.0.i.i = phi i32 [ %60, %i128_ucomp.exit.i.i ], [ %27, %i128_shl64.exit.i.i.preheader ] + %.0.i.i = phi i32 [ %60, %i128_ucomp.exit.i.i ], [ %.0.i.i.ph, %i128_shl64.exit.i.i.preheader ] %49 = icmp ugt i64 %46, %48 br i1 %49, label %select.unfold.i.i, label %50 @@ -179,6 +180,7 @@ i128_urem.exit: ; preds = %i128_ucomp.exit.i.i i128_shl64.exit.i.i28.preheader: ; preds = %80, %77, %73, %71, %68 %.ph = phi i64 [ %2, %68 ], [ 0, %71 ], [ 0, %73 ], [ 0, %77 ], [ %83, %80 ] %.ph61 = phi i64 [ 0, %68 ], [ 0, %71 ], [ %2, %73 ], [ %79, %77 ], [ %82, %80 ] + %.0.i.i31.ph = phi i32 [ 0, %68 ], [ %66, %71 ], [ 64, %73 ], [ %66, %77 ], [ %66, %80 ] br label %i128_shl64.exit.i.i28 i128_shl64.exit.i.i28: ; preds = %i128_shl64.exit.i.i28.preheader, %i128_ucomp.exit.i.i36 @@ -188,7 +190,7 @@ i128_shl64.exit.i.i28: ; preds = %i128_shl64.exit.i.i %87 = phi i64 [ %90, %i128_ucomp.exit.i.i36 ], [ 0, %i128_shl64.exit.i.i28.preheader ] %88 = phi i64 [ %103, %i128_ucomp.exit.i.i36 ], [ %.ph, %i128_shl64.exit.i.i28.preheader ] %89 = phi i64 [ %104, %i128_ucomp.exit.i.i36 ], [ %.ph61, %i128_shl64.exit.i.i28.preheader ] - %.0.i.i31 = phi i32 [ %105, %i128_ucomp.exit.i.i36 ], [ %66, %i128_shl64.exit.i.i28.preheader ] + %.0.i.i31 = phi i32 [ %105, %i128_ucomp.exit.i.i36 ], [ %.0.i.i31.ph, %i128_shl64.exit.i.i28.preheader ] %90 = tail call i64 @llvm.fshl.i64(i64 %87, i64 %86, i64 1) %91 = shl i64 %86, 1 %92 = icmp ugt i64 %85, %89 @@ -339,6 +341,7 @@ define dso_local { i64, i64 } @i128_urem(i64 %0, i64 %1, i64 %2, i64 %3) local_u i128_shl64.exit.i.preheader: ; preds = %25, %22, %18, %16, %13 %.ph = phi i64 [ %3, %13 ], [ 0, %16 ], [ 0, %18 ], [ 0, %22 ], [ %30, %25 ] %.ph8 = phi i64 [ %2, %13 ], [ 0, %16 ], [ %3, %18 ], [ %24, %22 ], [ %29, %25 ] + %.0.i.ph = phi i32 [ 0, %13 ], [ %11, %16 ], [ 64, %18 ], [ %11, %22 ], [ %11, %25 ] br label %i128_shl64.exit.i i128_shl64.exit.i: ; preds = %i128_shl64.exit.i.preheader, %i128_ucomp.exit.i @@ -346,7 +349,7 @@ i128_shl64.exit.i: ; preds = %i128_shl64.exit.i.p %32 = phi i64 [ %43, %i128_ucomp.exit.i ], [ %0, %i128_shl64.exit.i.preheader ] %33 = phi i64 [ %44, %i128_ucomp.exit.i ], [ %.ph, %i128_shl64.exit.i.preheader ] %34 = phi i64 [ %45, %i128_ucomp.exit.i ], [ %.ph8, %i128_shl64.exit.i.preheader ] - %.0.i = phi i32 [ %46, %i128_ucomp.exit.i ], [ %11, %i128_shl64.exit.i.preheader ] + %.0.i = phi i32 [ %46, %i128_ucomp.exit.i ], [ %.0.i.ph, %i128_shl64.exit.i.preheader ] %35 = icmp ugt i64 %32, %34 br i1 %35, label %select.unfold.i, label %36 @@ -434,6 +437,7 @@ define dso_local { i64, i64 } @i128_udiv(i64 %0, i64 %1, i64 %2, i64 %3) local_u i128_shl64.exit.i.preheader: ; preds = %25, %22, %18, %16, %13 %.ph = phi i64 [ %3, %13 ], [ 0, %16 ], [ 0, %18 ], [ 0, %22 ], [ %30, %25 ] %.ph8 = phi i64 [ %2, %13 ], [ 0, %16 ], [ %3, %18 ], [ %24, %22 ], [ %29, %25 ] + %.0.i.ph = phi i32 [ 0, %13 ], [ %11, %16 ], [ 64, %18 ], [ %11, %22 ], [ %11, %25 ] br label %i128_shl64.exit.i i128_shl64.exit.i: ; preds = %i128_shl64.exit.i.preheader, %i128_ucomp.exit.i @@ -443,7 +447,7 @@ i128_shl64.exit.i: ; preds = %i128_shl64.exit.i.p %34 = phi i64 [ %37, %i128_ucomp.exit.i ], [ 0, %i128_shl64.exit.i.preheader ] %35 = phi i64 [ %50, %i128_ucomp.exit.i ], [ %.ph, %i128_shl64.exit.i.preheader ] %36 = phi i64 [ %51, %i128_ucomp.exit.i ], [ %.ph8, %i128_shl64.exit.i.preheader ] - %.0.i = phi i32 [ %52, %i128_ucomp.exit.i ], [ %11, %i128_shl64.exit.i.preheader ] + %.0.i = phi i32 [ %52, %i128_ucomp.exit.i ], [ %.0.i.ph, %i128_shl64.exit.i.preheader ] %37 = tail call i64 @llvm.fshl.i64(i64 %34, i64 %33, i64 1) %38 = shl i64 %33, 1 %39 = icmp ugt i64 %32, %36 @@ -1839,6 +1843,7 @@ define dso_local void @i128_udivrem(i64 %0, i64 %1, i64 %2, i64 %3, ptr noundef i128_shl64.exit.preheader: ; preds = %16, %19, %21, %25, %28 %.ph = phi i64 [ %33, %28 ], [ 0, %25 ], [ 0, %21 ], [ 0, %19 ], [ %3, %16 ] %.ph48 = phi i64 [ %32, %28 ], [ %27, %25 ], [ %3, %21 ], [ 0, %19 ], [ %2, %16 ] + %.0.ph = phi i32 [ %13, %28 ], [ %13, %25 ], [ 64, %21 ], [ %13, %19 ], [ 0, %16 ] br label %i128_shl64.exit i128_shl64.exit: ; preds = %i128_shl64.exit.preheader, %i128_ucomp.exit @@ -1848,7 +1853,7 @@ i128_shl64.exit: ; preds = %i128_shl64.exit.pre %37 = phi i64 [ %40, %i128_ucomp.exit ], [ 0, %i128_shl64.exit.preheader ] %38 = phi i64 [ %53, %i128_ucomp.exit ], [ %.ph, %i128_shl64.exit.preheader ] %39 = phi i64 [ %54, %i128_ucomp.exit ], [ %.ph48, %i128_shl64.exit.preheader ] - %.0 = phi i32 [ %55, %i128_ucomp.exit ], [ %13, %i128_shl64.exit.preheader ] + %.0 = phi i32 [ %55, %i128_ucomp.exit ], [ %.0.ph, %i128_shl64.exit.preheader ] %40 = tail call i64 @llvm.fshl.i64(i64 %37, i64 %36, i64 1) %41 = shl i64 %36, 1 %42 = icmp ugt i64 %35, %39 @@ -1982,6 +1987,7 @@ i128_neg.exit25: ; preds = %18, %17, %i128_neg. i128_shl64.exit.i.i.preheader: ; preds = %43, %40, %36, %34, %31 %.ph = phi i64 [ %.sroa.5.0, %31 ], [ 0, %34 ], [ 0, %36 ], [ 0, %40 ], [ %48, %43 ] %.ph36 = phi i64 [ %.sroa.07.0, %31 ], [ 0, %34 ], [ %.sroa.5.0, %36 ], [ %42, %40 ], [ %47, %43 ] + %.0.i.i.ph = phi i32 [ 0, %31 ], [ %29, %34 ], [ 64, %36 ], [ %29, %40 ], [ %29, %43 ] br label %i128_shl64.exit.i.i i128_shl64.exit.i.i: ; preds = %i128_shl64.exit.i.i.preheader, %i128_ucomp.exit.i.i @@ -1989,7 +1995,7 @@ i128_shl64.exit.i.i: ; preds = %i128_shl64.exit.i.i %50 = phi i64 [ %61, %i128_ucomp.exit.i.i ], [ %.sroa.011.0, %i128_shl64.exit.i.i.preheader ] %51 = phi i64 [ %62, %i128_ucomp.exit.i.i ], [ %.ph, %i128_shl64.exit.i.i.preheader ] %52 = phi i64 [ %63, %i128_ucomp.exit.i.i ], [ %.ph36, %i128_shl64.exit.i.i.preheader ] - %.0.i.i = phi i32 [ %64, %i128_ucomp.exit.i.i ], [ %29, %i128_shl64.exit.i.i.preheader ] + %.0.i.i = phi i32 [ %64, %i128_ucomp.exit.i.i ], [ %.0.i.i.ph, %i128_shl64.exit.i.i.preheader ] %53 = icmp ugt i64 %50, %52 br i1 %53, label %select.unfold.i.i, label %54 @@ -2150,6 +2156,7 @@ i128_neg.exit25: ; preds = %18, %17, %i128_neg. i128_shl64.exit.i.i.preheader: ; preds = %43, %40, %36, %34, %31 %.ph = phi i64 [ %.sroa.5.0, %31 ], [ 0, %34 ], [ 0, %36 ], [ 0, %40 ], [ %48, %43 ] %.ph46 = phi i64 [ %.sroa.07.0, %31 ], [ 0, %34 ], [ %.sroa.5.0, %36 ], [ %42, %40 ], [ %47, %43 ] + %.0.i.i.ph = phi i32 [ 0, %31 ], [ %29, %34 ], [ 64, %36 ], [ %29, %40 ], [ %29, %43 ] br label %i128_shl64.exit.i.i i128_shl64.exit.i.i: ; preds = %i128_shl64.exit.i.i.preheader, %i128_ucomp.exit.i.i @@ -2159,7 +2166,7 @@ i128_shl64.exit.i.i: ; preds = %i128_shl64.exit.i.i %52 = phi i64 [ %55, %i128_ucomp.exit.i.i ], [ 0, %i128_shl64.exit.i.i.preheader ] %53 = phi i64 [ %68, %i128_ucomp.exit.i.i ], [ %.ph, %i128_shl64.exit.i.i.preheader ] %54 = phi i64 [ %69, %i128_ucomp.exit.i.i ], [ %.ph46, %i128_shl64.exit.i.i.preheader ] - %.0.i.i = phi i32 [ %70, %i128_ucomp.exit.i.i ], [ %29, %i128_shl64.exit.i.i.preheader ] + %.0.i.i = phi i32 [ %70, %i128_ucomp.exit.i.i ], [ %.0.i.i.ph, %i128_shl64.exit.i.i.preheader ] %55 = tail call i64 @llvm.fshl.i64(i64 %52, i64 %51, i64 1) %56 = shl i64 %51, 1 %57 = icmp ugt i64 %50, %54 @@ -3203,6 +3210,7 @@ define dso_local void @int_div(ptr dead_on_unwind noalias writable writeonly sre i128_shl64.exit.i.i.preheader: ; preds = %37, %34, %30, %28, %25 %.ph = phi i64 [ %15, %25 ], [ 0, %28 ], [ 0, %30 ], [ 0, %34 ], [ %42, %37 ] %.ph10 = phi i64 [ %13, %25 ], [ 0, %28 ], [ %15, %30 ], [ %36, %34 ], [ %41, %37 ] + %.0.i.i.ph = phi i32 [ 0, %25 ], [ %23, %28 ], [ 64, %30 ], [ %23, %34 ], [ %23, %37 ] br label %i128_shl64.exit.i.i i128_shl64.exit.i.i: ; preds = %i128_shl64.exit.i.i.preheader, %i128_ucomp.exit.i.i @@ -3212,7 +3220,7 @@ i128_shl64.exit.i.i: ; preds = %i128_shl64.exit.i.i %46 = phi i64 [ %49, %i128_ucomp.exit.i.i ], [ 0, %i128_shl64.exit.i.i.preheader ] %47 = phi i64 [ %62, %i128_ucomp.exit.i.i ], [ %.ph, %i128_shl64.exit.i.i.preheader ] %48 = phi i64 [ %63, %i128_ucomp.exit.i.i ], [ %.ph10, %i128_shl64.exit.i.i.preheader ] - %.0.i.i = phi i32 [ %64, %i128_ucomp.exit.i.i ], [ %23, %i128_shl64.exit.i.i.preheader ] + %.0.i.i = phi i32 [ %64, %i128_ucomp.exit.i.i ], [ %.0.i.i.ph, %i128_shl64.exit.i.i.preheader ] %49 = tail call i64 @llvm.fshl.i64(i64 %46, i64 %45, i64 1) %50 = shl i64 %45, 1 %51 = icmp ugt i64 %44, %48 @@ -3332,6 +3340,7 @@ define dso_local void @int_rem(ptr dead_on_unwind noalias writable writeonly sre i128_shl64.exit.i.i.preheader: ; preds = %37, %34, %30, %28, %25 %.ph = phi i64 [ %15, %25 ], [ 0, %28 ], [ 0, %30 ], [ 0, %34 ], [ %42, %37 ] %.ph10 = phi i64 [ %13, %25 ], [ 0, %28 ], [ %15, %30 ], [ %36, %34 ], [ %41, %37 ] + %.0.i.i.ph = phi i32 [ 0, %25 ], [ %23, %28 ], [ 64, %30 ], [ %23, %34 ], [ %23, %37 ] br label %i128_shl64.exit.i.i i128_shl64.exit.i.i: ; preds = %i128_shl64.exit.i.i.preheader, %i128_ucomp.exit.i.i @@ -3339,7 +3348,7 @@ i128_shl64.exit.i.i: ; preds = %i128_shl64.exit.i.i %44 = phi i64 [ %55, %i128_ucomp.exit.i.i ], [ %10, %i128_shl64.exit.i.i.preheader ] %45 = phi i64 [ %56, %i128_ucomp.exit.i.i ], [ %.ph, %i128_shl64.exit.i.i.preheader ] %46 = phi i64 [ %57, %i128_ucomp.exit.i.i ], [ %.ph10, %i128_shl64.exit.i.i.preheader ] - %.0.i.i = phi i32 [ %58, %i128_ucomp.exit.i.i ], [ %23, %i128_shl64.exit.i.i.preheader ] + %.0.i.i = phi i32 [ %58, %i128_ucomp.exit.i.i ], [ %.0.i.i.ph, %i128_shl64.exit.i.i.preheader ] %47 = icmp ugt i64 %44, %46 br i1 %47, label %select.unfold.i.i, label %48 diff --git a/bench/c3c/optimized/sema_casts.ll b/bench/c3c/optimized/sema_casts.ll index 236feb4b166..6e695d992c2 100644 --- a/bench/c3c/optimized/sema_casts.ll +++ b/bench/c3c/optimized/sema_casts.ll @@ -263,10 +263,11 @@ define internal fastcc noundef zeroext i1 @cast_if_valid(ptr noundef %0, ptr nou ] .preheader136: ; preds = %95, %98 + %.ph137 = phi i32 [ 23, %98 ], [ %96, %95 ] br label %102 102: ; preds = %.preheader136, %.backedge132 - %103 = phi i32 [ %.pre133, %.backedge132 ], [ %96, %.preheader136 ] + %103 = phi i32 [ %.pre133, %.backedge132 ], [ %.ph137, %.preheader136 ] %.0100 = phi ptr [ %.0100.be, %.backedge132 ], [ %92, %.preheader136 ] switch i32 %103, label %.critedge122 [ i32 31, label %104 @@ -320,10 +321,11 @@ define internal fastcc noundef zeroext i1 @cast_if_valid(ptr noundef %0, ptr nou ] .preheader: ; preds = %114, %117 + %.ph = phi i32 [ 23, %117 ], [ %115, %114 ] br label %121 121: ; preds = %.preheader, %.backedge - %122 = phi i32 [ %.pre134, %.backedge ], [ %115, %.preheader ] + %122 = phi i32 [ %.pre134, %.backedge ], [ %.ph, %.preheader ] %.098 = phi ptr [ %.098.be, %.backedge ], [ %112, %.preheader ] switch i32 %122, label %.critedge124 [ i32 31, label %123 @@ -460,10 +462,11 @@ define dso_local zeroext i1 @may_cast(ptr noundef %0, ptr noundef %1, ptr nounde ] .preheader61: ; preds = %21, %24 + %.ph62 = phi i32 [ 23, %24 ], [ %22, %21 ] br label %28 28: ; preds = %.preheader61, %.backedge58 - %29 = phi i32 [ %.pre, %.backedge58 ], [ %22, %.preheader61 ] + %29 = phi i32 [ %.pre, %.backedge58 ], [ %.ph62, %.preheader61 ] %.048 = phi ptr [ %.048.be, %.backedge58 ], [ %18, %.preheader61 ] switch i32 %29, label %.critedge [ i32 31, label %30 @@ -516,10 +519,11 @@ define dso_local zeroext i1 @may_cast(ptr noundef %0, ptr noundef %1, ptr nounde ] .preheader: ; preds = %38, %41 + %.ph = phi i32 [ 23, %41 ], [ %39, %38 ] br label %45 45: ; preds = %.preheader, %.backedge - %46 = phi i32 [ %.pre59, %.backedge ], [ %39, %.preheader ] + %46 = phi i32 [ %.pre59, %.backedge ], [ %.ph, %.preheader ] %.046 = phi ptr [ %.046.be, %.backedge ], [ %36, %.preheader ] switch i32 %46, label %.critedge56 [ i32 31, label %47 @@ -696,10 +700,11 @@ type_flatten.exit85: ; preds = %20 ] .preheader103: ; preds = %44, %47 + %.ph104 = phi i32 [ 23, %47 ], [ %45, %44 ] br label %51 51: ; preds = %.preheader103, %.backedge87 - %52 = phi i32 [ %.pre, %.backedge87 ], [ %45, %.preheader103 ] + %52 = phi i32 [ %.pre, %.backedge87 ], [ %.ph104, %.preheader103 ] %.068 = phi ptr [ %.068.be, %.backedge87 ], [ %41, %.preheader103 ] switch i32 %52, label %.critedge [ i32 31, label %53 @@ -752,10 +757,11 @@ type_flatten.exit85: ; preds = %20 ] .preheader: ; preds = %62, %65 + %.ph = phi i32 [ 23, %65 ], [ %63, %62 ] br label %69 69: ; preds = %.preheader, %.backedge - %70 = phi i32 [ %.pre94, %.backedge ], [ %63, %.preheader ] + %70 = phi i32 [ %.pre94, %.backedge ], [ %.ph, %.preheader ] %.066 = phi ptr [ %.066.be, %.backedge ], [ %60, %.preheader ] switch i32 %70, label %.critedge81 [ i32 31, label %71 @@ -1716,10 +1722,11 @@ type_flatten.exit: ; preds = %5 ] .preheader: ; preds = %22, %25 + %.ph = phi i32 [ 23, %25 ], [ %23, %22 ] br label %29 29: ; preds = %.preheader, %.backedge - %30 = phi i32 [ %.pre, %.backedge ], [ %23, %.preheader ] + %30 = phi i32 [ %.pre, %.backedge ], [ %.ph, %.preheader ] %.056 = phi ptr [ %.056.be, %.backedge ], [ %19, %.preheader ] switch i32 %30, label %.critedge [ i32 31, label %31 @@ -2639,10 +2646,11 @@ report_cast_error.exit: ; preds = %8, %13, %16 ] .preheader76: ; preds = %34, %37 + %.ph77 = phi i32 [ 23, %37 ], [ %35, %34 ] br label %41 41: ; preds = %.preheader76, %.backedge73 - %42 = phi i32 [ %.pre, %.backedge73 ], [ %35, %.preheader76 ] + %42 = phi i32 [ %.pre, %.backedge73 ], [ %.ph77, %.preheader76 ] %.062 = phi ptr [ %.062.be, %.backedge73 ], [ %31, %.preheader76 ] switch i32 %42, label %.critedge [ i32 31, label %43 @@ -2700,10 +2708,11 @@ report_cast_error.exit: ; preds = %8, %13, %16 ] .preheader: ; preds = %55, %58 + %.ph = phi i32 [ 23, %58 ], [ %56, %55 ] br label %62 62: ; preds = %.preheader, %.backedge - %63 = phi i32 [ %.pre74, %.backedge ], [ %56, %.preheader ] + %63 = phi i32 [ %.pre74, %.backedge ], [ %.ph, %.preheader ] %.058 = phi ptr [ %.058.be, %.backedge ], [ %53, %.preheader ] switch i32 %63, label %.critedge70 [ i32 31, label %64 @@ -3227,10 +3236,11 @@ define internal zeroext i1 @rule_sa_to_vecarr(ptr noundef %0, i1 noundef zeroext ] .preheader: ; preds = %45, %48 + %.ph98 = phi i32 [ 23, %48 ], [ %46, %45 ] br label %52 52: ; preds = %.preheader, %.backedge - %53 = phi i32 [ %.pre90, %.backedge ], [ %46, %.preheader ] + %53 = phi i32 [ %.pre90, %.backedge ], [ %.ph98, %.preheader ] %.072 = phi ptr [ %.072.be, %.backedge ], [ %42, %.preheader ] switch i32 %53, label %.loopexit.sink.split [ i32 31, label %54 @@ -3282,10 +3292,11 @@ define internal zeroext i1 @rule_sa_to_vecarr(ptr noundef %0, i1 noundef zeroext ] .preheader98: ; preds = %66, %69 + %.ph100 = phi i32 [ 23, %69 ], [ %67, %66 ] br label %73 73: ; preds = %.preheader98, %.backedge89 - %74 = phi i32 [ %.pre, %.backedge89 ], [ %67, %.preheader98 ] + %74 = phi i32 [ %.pre, %.backedge89 ], [ %.ph100, %.preheader98 ] %.077 = phi ptr [ %.077.be, %.backedge89 ], [ %63, %.preheader98 ] switch i32 %74, label %.loopexit.sink.split [ i32 31, label %75 @@ -3405,10 +3416,11 @@ define internal zeroext i1 @rule_sa_to_infer(ptr noundef %0, i1 noundef zeroext ] .preheader118: ; preds = %19, %22 + %.ph119 = phi i32 [ 23, %22 ], [ %20, %19 ] br label %26 26: ; preds = %.preheader118, %.backedge111 - %27 = phi i32 [ %.pre114, %.backedge111 ], [ %20, %.preheader118 ] + %27 = phi i32 [ %.pre114, %.backedge111 ], [ %.ph119, %.preheader118 ] %.085 = phi ptr [ %.085.be, %.backedge111 ], [ %16, %.preheader118 ] switch i32 %27, label %.critedge [ i32 31, label %28 @@ -3465,10 +3477,11 @@ define internal zeroext i1 @rule_sa_to_infer(ptr noundef %0, i1 noundef zeroext ] .preheader: ; preds = %39, %42 + %.ph = phi i32 [ 23, %42 ], [ %40, %39 ] br label %46 46: ; preds = %.preheader, %.backedge - %47 = phi i32 [ %.pre115, %.backedge ], [ %40, %.preheader ] + %47 = phi i32 [ %.pre115, %.backedge ], [ %.ph, %.preheader ] %.091 = phi ptr [ %.091.be, %.backedge ], [ %37, %.preheader ] switch i32 %47, label %.critedge102 [ i32 31, label %48 @@ -3593,10 +3606,11 @@ define internal zeroext i1 @rule_sa_to_infer(ptr noundef %0, i1 noundef zeroext ] .preheader119: ; preds = %97, %100 + %.ph121 = phi i32 [ 23, %100 ], [ %98, %97 ] br label %104 104: ; preds = %.preheader119, %.backedge113 - %105 = phi i32 [ %.pre, %.backedge113 ], [ %98, %.preheader119 ] + %105 = phi i32 [ %.pre, %.backedge113 ], [ %.ph121, %.preheader119 ] %.089 = phi ptr [ %.089.be, %.backedge113 ], [ %94, %.preheader119 ] switch i32 %105, label %.critedge104 [ i32 31, label %106 @@ -3746,10 +3760,11 @@ report_cast_error.exit: ; preds = %13, %18, %21 ] .preheader80: ; preds = %36, %39 + %.ph81 = phi i32 [ 23, %39 ], [ %37, %36 ] br label %43 43: ; preds = %.preheader80, %.backedge77 - %44 = phi i32 [ %.pre, %.backedge77 ], [ %37, %.preheader80 ] + %44 = phi i32 [ %.pre, %.backedge77 ], [ %.ph81, %.preheader80 ] %.064 = phi ptr [ %.064.be, %.backedge77 ], [ %33, %.preheader80 ] switch i32 %44, label %48 [ i32 31, label %45 @@ -3815,10 +3830,11 @@ report_cast_error.exit: ; preds = %13, %18, %21 ] .preheader: ; preds = %61, %64 + %.ph = phi i32 [ 23, %64 ], [ %62, %61 ] br label %68 68: ; preds = %.preheader, %.backedge - %69 = phi i32 [ %.pre78, %.backedge ], [ %62, %.preheader ] + %69 = phi i32 [ %.pre78, %.backedge ], [ %.ph, %.preheader ] %.060 = phi ptr [ %.060.be, %.backedge ], [ %59, %.preheader ] switch i32 %69, label %.critedge72 [ i32 31, label %70 @@ -3965,10 +3981,11 @@ report_cast_error.exit: ; preds = %13, %18, %21 ] .preheader: ; preds = %35, %38 + %.ph = phi i32 [ 23, %38 ], [ %36, %35 ] br label %42 42: ; preds = %.preheader, %.backedge - %43 = phi i32 [ %.pre, %.backedge ], [ %36, %.preheader ] + %43 = phi i32 [ %.pre, %.backedge ], [ %.ph, %.preheader ] %.037 = phi ptr [ %.037.be, %.backedge ], [ %32, %.preheader ] switch i32 %43, label %.critedge [ i32 31, label %44 @@ -4077,10 +4094,11 @@ define internal zeroext i1 @rule_vecarr_to_infer(ptr noundef %0, i1 noundef zero ] .preheader: ; preds = %13, %16 + %.ph = phi i32 [ 23, %16 ], [ %14, %13 ] br label %20 20: ; preds = %.preheader, %.backedge - %21 = phi i32 [ %.pre, %.backedge ], [ %14, %.preheader ] + %21 = phi i32 [ %.pre, %.backedge ], [ %.ph, %.preheader ] %.027 = phi ptr [ %.027.be, %.backedge ], [ %10, %.preheader ] switch i32 %21, label %.critedge [ i32 31, label %22 @@ -4481,10 +4499,11 @@ type_flatten.exit: ; preds = %17 ] .preheader: ; preds = %35, %38 + %.ph = phi i32 [ 23, %38 ], [ %36, %35 ] br label %42 42: ; preds = %.preheader, %.backedge - %43 = phi i32 [ %.pre, %.backedge ], [ %36, %.preheader ] + %43 = phi i32 [ %.pre, %.backedge ], [ %.ph, %.preheader ] %.038 = phi ptr [ %.038.be, %.backedge ], [ %32, %.preheader ] switch i32 %43, label %.critedge [ i32 31, label %44 @@ -4668,10 +4687,11 @@ type_flatten.exit: ; preds = %30 ] .preheader95: ; preds = %48, %51 + %.ph96 = phi i32 [ 23, %51 ], [ %49, %48 ] br label %55 55: ; preds = %.preheader95, %.backedge88 - %56 = phi i32 [ %.pre, %.backedge88 ], [ %49, %.preheader95 ] + %56 = phi i32 [ %.pre, %.backedge88 ], [ %.ph96, %.preheader95 ] %.066 = phi ptr [ %.066.be, %.backedge88 ], [ %45, %.preheader95 ] switch i32 %56, label %59 [ i32 31, label %57 @@ -4767,10 +4787,11 @@ report_cast_error.exit82: ; preds = %63, %68, %71 ] .preheader: ; preds = %82, %85 + %.ph = phi i32 [ 23, %85 ], [ %83, %82 ] br label %89 89: ; preds = %.preheader, %.backedge - %90 = phi i32 [ %.pre91, %.backedge ], [ %83, %.preheader ] + %90 = phi i32 [ %.pre91, %.backedge ], [ %.ph, %.preheader ] %.062 = phi ptr [ %.062.be, %.backedge ], [ %79, %.preheader ] switch i32 %90, label %.critedge76 [ i32 31, label %91 diff --git a/bench/casadi/optimized/function.ll b/bench/casadi/optimized/function.ll index fa4df26d196..e3c5d22773f 100644 --- a/bench/casadi/optimized/function.ll +++ b/bench/casadi/optimized/function.ll @@ -13509,21 +13509,18 @@ define linkonce_odr hidden void @_ZNK6casadi16FunctionInternal4callINS_6MatrixId %46 = icmp eq i64 %43, %.sroa.0186.0226 %47 = icmp eq i64 %44, %.sroa.9.0225 %.not3.i.not = select i1 %46, i1 %47, i1 false - br i1 %.not3.i.not, label %.thread, label %._crit_edge + br i1 %.not3.i.not, label %.thread, label %.thread206 .thread: ; preds = %39, %.lr.ph, %36, %45 - %.373202 = phi i8 [ %.070227, %45 ], [ %.070227, %36 ], [ %.070227, %.lr.ph ], [ 1, %39 ] + %.373202 = phi i8 [ 1, %45 ], [ %.070227, %36 ], [ %.070227, %.lr.ph ], [ 1, %39 ] %.sroa.0186.2201 = phi i64 [ %.sroa.0186.0226, %45 ], [ %.sroa.0186.0226, %36 ], [ %.sroa.0186.0226, %.lr.ph ], [ %43, %39 ] %.sroa.9.2200 = phi i64 [ %.sroa.9.0225, %45 ], [ %.sroa.9.0225, %36 ], [ %.sroa.9.0225, %.lr.ph ], [ %44, %39 ] %48 = getelementptr inbounds nuw i8, ptr %.sroa.0183.0224, i64 40 %.not = icmp eq ptr %48, %33 br i1 %.not, label %._crit_edge, label %.lr.ph -._crit_edge: ; preds = %45, %.thread - %.sroa.9.0.lcssa.ph = phi i64 [ %.sroa.9.0225, %45 ], [ %.sroa.9.2200, %.thread ] - %.sroa.0186.0.lcssa.ph = phi i64 [ %.sroa.0186.0226, %45 ], [ %.sroa.0186.2201, %.thread ] - %.171.ph = phi i8 [ 0, %45 ], [ %.373202, %.thread ] - %49 = trunc nuw i8 %.171.ph to i1 +._crit_edge: ; preds = %.thread + %49 = trunc nuw i8 %.373202 to i1 br i1 %49, label %50, label %.thread206 50: ; preds = %._crit_edge @@ -13593,7 +13590,7 @@ _ZSt8_DestroyIPN6casadi6MatrixIdEES2_EvT_S4_RSaIT0_E.exit.i.i: ; preds = %_ZSt8_ _ZNSt6vectorIN6casadi6MatrixIdEESaIS2_EE6resizeEm.exit: ; preds = %61, %63, %65, %_ZSt8_DestroyIPN6casadi6MatrixIdEES2_EvT_S4_RSaIT0_E.exit.i.i call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %10) #30 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #30, !noalias !192 - call void @_ZN6casadi8Sparsity5denseExx(ptr dead_on_unwind nonnull writable sret(%"class.casadi::Sparsity") align 8 %9, i64 noundef %.sroa.0186.0.lcssa.ph, i64 noundef %.sroa.9.0.lcssa.ph), !noalias !192 + call void @_ZN6casadi8Sparsity5denseExx(ptr dead_on_unwind nonnull writable sret(%"class.casadi::Sparsity") align 8 %9, i64 noundef %.sroa.0186.2201, i64 noundef %.sroa.9.2200), !noalias !192 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #30, !noalias !197 store double 0.000000e+00, ptr %8, align 8, !tbaa !200, !noalias !197 invoke void @_ZN6casadi6MatrixIdEC1ERKNS_8SparsityERKdb(ptr noundef nonnull align 8 dereferenceable(40) %10, ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(8) %8, i1 noundef zeroext false) @@ -13664,11 +13661,11 @@ _ZN6casadi13GenericMatrixINS_6MatrixIdEEE5zerosERKSt4pairIxxE.exit: ; preds = %8 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %12, i8 0, i64 24, i1 false) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #30 store i64 0, ptr %13, align 8, !tbaa !201 - %97 = icmp sgt i64 %.sroa.9.0.lcssa.ph, 0 + %97 = icmp sgt i64 %.sroa.9.2200, 0 br i1 %97, label %.lr.ph246, label %_ZSt8_DestroyIPN6casadi6MatrixIdEES2_EvT_S4_RSaIT0_E.exit.i.thread .lr.ph246: ; preds = %96 - %98 = icmp sgt i64 %.sroa.0186.0.lcssa.ph, 0 + %98 = icmp sgt i64 %.sroa.0186.2201, 0 %99 = getelementptr inbounds nuw i8, ptr %15, i64 16 %100 = getelementptr inbounds nuw i8, ptr %15, i64 32 %101 = getelementptr inbounds nuw i8, ptr %15, i64 8 @@ -13714,7 +13711,7 @@ _ZN6casadi13GenericMatrixINS_6MatrixIdEEE5zerosERKSt4pairIxxE.exit: ; preds = %8 %127 = load i64, ptr %14, align 8, !tbaa !201 %128 = add nsw i64 %127, 1 store i64 %128, ptr %14, align 8, !tbaa !201 - %129 = icmp slt i64 %128, %.sroa.0186.0.lcssa.ph + %129 = icmp slt i64 %128, %.sroa.0186.2201 br i1 %129, label %.preheader222.us, label %._crit_edge244.us, !llvm.loop !202 .lr.ph242.us: ; preds = %.preheader.us, %_ZN6casadi6MatrixIdED2Ev.exit135.us @@ -13825,8 +13822,8 @@ _ZN6casadi6MatrixIdED2Ev.exit135.us: ; preds = %_ZNSt6vectorIdSaIdE _ZNK6casadi13GenericMatrixINS_6MatrixIdEEE4sizeEv.exit.us: ; preds = %.noexc.us %172 = extractvalue { i64, i64 } %171, 0 %173 = extractvalue { i64, i64 } %171, 1 - %174 = icmp eq i64 %172, %.sroa.0186.0.lcssa.ph - %175 = icmp eq i64 %173, %.sroa.9.0.lcssa.ph + %174 = icmp eq i64 %172, %.sroa.0186.2201 + %175 = icmp eq i64 %173, %.sroa.9.2200 %176 = select i1 %174, i1 %175, i1 false br i1 %176, label %177, label %191 @@ -13890,7 +13887,7 @@ _ZN6casadi6MatrixIdED2Ev.exit111.us: ; preds = %_ZNSt6vectorIdSaIdE %202 = load i64, ptr %13, align 8, !tbaa !201 %203 = add nsw i64 %202, 1 store i64 %203, ptr %13, align 8, !tbaa !201 - %204 = icmp slt i64 %203, %.sroa.9.0.lcssa.ph + %204 = icmp slt i64 %203, %.sroa.9.2200 br i1 %204, label %.preheader222.lr.ph.us, label %._crit_edge247, !llvm.loop !218 .split.us: ; preds = %._crit_edge240.us @@ -14574,7 +14571,7 @@ _ZN6casadi6MatrixIdED2Ev.exit162: ; preds = %_ZNSt6vectorIdSaIdE call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %10) #30 br label %461 -.thread206: ; preds = %30, %._crit_edge, %5 +.thread206: ; preds = %45, %30, %._crit_edge, %5 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #30 store i64 1, ptr %27, align 8, !tbaa !201 %429 = call noundef zeroext i1 @_ZNK6casadi16FunctionInternal12matching_argINS_6MatrixIdEEEEbRKSt6vectorIT_SaIS5_EERx(ptr noundef nonnull align 8 dereferenceable(1312) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(8) %27) @@ -15200,21 +15197,18 @@ define linkonce_odr hidden void @_ZNK6casadi16FunctionInternal4callINS_6MatrixIN %44 = icmp eq i64 %41, %.sroa.0235.0275 %45 = icmp eq i64 %42, %.sroa.9.0274 %.not3.i.not = select i1 %44, i1 %45, i1 false - br i1 %.not3.i.not, label %.thread, label %._crit_edge + br i1 %.not3.i.not, label %.thread, label %.thread255 .thread: ; preds = %37, %.lr.ph, %34, %43 - %.373251 = phi i8 [ %.070276, %43 ], [ %.070276, %34 ], [ %.070276, %.lr.ph ], [ 1, %37 ] + %.373251 = phi i8 [ 1, %43 ], [ %.070276, %34 ], [ %.070276, %.lr.ph ], [ 1, %37 ] %.sroa.0235.2250 = phi i64 [ %.sroa.0235.0275, %43 ], [ %.sroa.0235.0275, %34 ], [ %.sroa.0235.0275, %.lr.ph ], [ %41, %37 ] %.sroa.9.2249 = phi i64 [ %.sroa.9.0274, %43 ], [ %.sroa.9.0274, %34 ], [ %.sroa.9.0274, %.lr.ph ], [ %42, %37 ] %46 = getelementptr inbounds nuw i8, ptr %.sroa.0232.0273, i64 40 %.not = icmp eq ptr %46, %31 br i1 %.not, label %._crit_edge, label %.lr.ph -._crit_edge: ; preds = %43, %.thread - %.sroa.9.0.lcssa.ph = phi i64 [ %.sroa.9.0274, %43 ], [ %.sroa.9.2249, %.thread ] - %.sroa.0235.0.lcssa.ph = phi i64 [ %.sroa.0235.0275, %43 ], [ %.sroa.0235.2250, %.thread ] - %.171.ph = phi i8 [ 0, %43 ], [ %.373251, %.thread ] - %47 = trunc nuw i8 %.171.ph to i1 +._crit_edge: ; preds = %.thread + %47 = trunc nuw i8 %.373251 to i1 br i1 %47, label %48, label %.thread255 48: ; preds = %._crit_edge @@ -15222,7 +15216,7 @@ define linkonce_odr hidden void @_ZNK6casadi16FunctionInternal4callINS_6MatrixIN %50 = load i64, ptr %49, align 8, !tbaa !183 tail call void @_ZNSt6vectorIN6casadi6MatrixINS0_6SXElemEEESaIS3_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %50) call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %8) #30 - call void @_ZN6casadi13GenericMatrixINS_6MatrixINS_6SXElemEEEE5zerosExx(ptr dead_on_unwind nonnull writable sret(%"class.casadi::Matrix.317") align 8 %8, i64 noundef %.sroa.0235.0.lcssa.ph, i64 noundef %.sroa.9.0.lcssa.ph) + call void @_ZN6casadi13GenericMatrixINS_6MatrixINS_6SXElemEEEE5zerosExx(ptr dead_on_unwind nonnull writable sret(%"class.casadi::Matrix.317") align 8 %8, i64 noundef %.sroa.0235.2250, i64 noundef %.sroa.9.2249) %51 = load ptr, ptr %2, align 8, !tbaa !223 %52 = getelementptr inbounds nuw i8, ptr %2, i64 8 %53 = load ptr, ptr %52, align 8, !tbaa !223 @@ -15254,11 +15248,11 @@ define linkonce_odr hidden void @_ZNK6casadi16FunctionInternal4callINS_6MatrixIN call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %10, i8 0, i64 24, i1 false) call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #30 store i64 0, ptr %11, align 8, !tbaa !201 - %60 = icmp sgt i64 %.sroa.9.0.lcssa.ph, 0 + %60 = icmp sgt i64 %.sroa.9.2249, 0 br i1 %60, label %.lr.ph296, label %_ZSt8_DestroyIPN6casadi6MatrixINS0_6SXElemEEES3_EvT_S5_RSaIT0_E.exit.i.thread .lr.ph296: ; preds = %59 - %61 = icmp sgt i64 %.sroa.0235.0.lcssa.ph, 0 + %61 = icmp sgt i64 %.sroa.0235.2250, 0 %62 = getelementptr inbounds nuw i8, ptr %13, i64 16 %63 = getelementptr inbounds nuw i8, ptr %13, i64 24 %64 = getelementptr inbounds nuw i8, ptr %13, i64 32 @@ -15306,7 +15300,7 @@ define linkonce_odr hidden void @_ZNK6casadi16FunctionInternal4callINS_6MatrixIN %92 = load i64, ptr %12, align 8, !tbaa !201 %93 = add nsw i64 %92, 1 store i64 %93, ptr %12, align 8, !tbaa !201 - %94 = icmp slt i64 %93, %.sroa.0235.0.lcssa.ph + %94 = icmp slt i64 %93, %.sroa.0235.2250 br i1 %94, label %.preheader271.us, label %._crit_edge294.us, !llvm.loop !224 .lr.ph292.us: ; preds = %.preheader.us, %_ZN6casadi6MatrixINS_6SXElemEED2Ev.exit156.us @@ -15434,8 +15428,8 @@ _ZN6casadi6MatrixINS_6SXElemEED2Ev.exit156.us: ; preds = %_ZNSt6vectorIN6casa _ZNK6casadi13GenericMatrixINS_6MatrixINS_6SXElemEEEE4sizeEv.exit.us: ; preds = %.noexc.us %140 = extractvalue { i64, i64 } %139, 0 %141 = extractvalue { i64, i64 } %139, 1 - %142 = icmp eq i64 %140, %.sroa.0235.0.lcssa.ph - %143 = icmp eq i64 %141, %.sroa.9.0.lcssa.ph + %142 = icmp eq i64 %140, %.sroa.0235.2250 + %143 = icmp eq i64 %141, %.sroa.9.2249 %144 = select i1 %142, i1 %143, i1 false br i1 %144, label %145, label %162 @@ -15516,7 +15510,7 @@ _ZN6casadi6MatrixINS_6SXElemEED2Ev.exit125.us: ; preds = %_ZNSt6vectorIN6casa %173 = load i64, ptr %11, align 8, !tbaa !201 %174 = add nsw i64 %173, 1 store i64 %174, ptr %11, align 8, !tbaa !201 - %175 = icmp slt i64 %174, %.sroa.9.0.lcssa.ph + %175 = icmp slt i64 %174, %.sroa.9.2249 br i1 %175, label %.preheader271.lr.ph.us, label %._crit_edge297, !llvm.loop !235 .split.us: ; preds = %._crit_edge290.us @@ -16308,7 +16302,7 @@ _ZN6casadi6MatrixINS_6SXElemEED2Ev.exit204: ; preds = %_ZNSt6vectorIN6casa call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %8) #30 br label %460 -.thread255: ; preds = %28, %._crit_edge, %5 +.thread255: ; preds = %43, %28, %._crit_edge, %5 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #30 store i64 1, ptr %25, align 8, !tbaa !201 %424 = call noundef zeroext i1 @_ZNK6casadi16FunctionInternal12matching_argINS_6MatrixINS_6SXElemEEEEEbRKSt6vectorIT_SaIS6_EERx(ptr noundef nonnull align 8 dereferenceable(1312) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(8) %25) @@ -16953,21 +16947,18 @@ define linkonce_odr void @_ZNK6casadi16FunctionInternal4callINS_2MXEEEvRKSt6vect %43 = icmp eq i64 %40, %.sroa.0176.0217 %44 = icmp eq i64 %41, %.sroa.9.0216 %.not3.i.not = select i1 %43, i1 %44, i1 false - br i1 %.not3.i.not, label %.thread, label %._crit_edge + br i1 %.not3.i.not, label %.thread, label %.thread196 .thread: ; preds = %36, %.lr.ph, %33, %42 - %.373192 = phi i8 [ %.070218, %42 ], [ %.070218, %33 ], [ %.070218, %.lr.ph ], [ 1, %36 ] + %.373192 = phi i8 [ 1, %42 ], [ %.070218, %33 ], [ %.070218, %.lr.ph ], [ 1, %36 ] %.sroa.0176.2191 = phi i64 [ %.sroa.0176.0217, %42 ], [ %.sroa.0176.0217, %33 ], [ %.sroa.0176.0217, %.lr.ph ], [ %40, %36 ] %.sroa.9.2190 = phi i64 [ %.sroa.9.0216, %42 ], [ %.sroa.9.0216, %33 ], [ %.sroa.9.0216, %.lr.ph ], [ %41, %36 ] %45 = getelementptr inbounds nuw i8, ptr %.sroa.0173.0215, i64 8 %.not = icmp eq ptr %45, %30 br i1 %.not, label %._crit_edge, label %.lr.ph -._crit_edge: ; preds = %42, %.thread - %.sroa.9.0.lcssa.ph = phi i64 [ %.sroa.9.0216, %42 ], [ %.sroa.9.2190, %.thread ] - %.sroa.0176.0.lcssa.ph = phi i64 [ %.sroa.0176.0217, %42 ], [ %.sroa.0176.2191, %.thread ] - %.171.ph = phi i8 [ 0, %42 ], [ %.373192, %.thread ] - %46 = trunc nuw i8 %.171.ph to i1 +._crit_edge: ; preds = %.thread + %46 = trunc nuw i8 %.373192 to i1 br i1 %46, label %47, label %.thread196 47: ; preds = %._crit_edge @@ -17011,7 +17002,7 @@ _ZSt8_DestroyIPN6casadi2MXES1_EvT_S3_RSaIT0_E.exit.i.i: ; preds = %.lr.ph.i.i.i. _ZNSt6vectorIN6casadi2MXESaIS1_EE6resizeEm.exit: ; preds = %58, %60, %62, %_ZSt8_DestroyIPN6casadi2MXES1_EvT_S3_RSaIT0_E.exit.i.i call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #30 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #30, !noalias !240 - call void @_ZN6casadi8Sparsity5denseExx(ptr dead_on_unwind nonnull writable sret(%"class.casadi::Sparsity") align 8 %8, i64 noundef %.sroa.0176.0.lcssa.ph, i64 noundef %.sroa.9.0.lcssa.ph), !noalias !240 + call void @_ZN6casadi8Sparsity5denseExx(ptr dead_on_unwind nonnull writable sret(%"class.casadi::Sparsity") align 8 %8, i64 noundef %.sroa.0176.2191, i64 noundef %.sroa.9.2190), !noalias !240 invoke void @_ZN6casadi2MXC1ERKNS_8SparsityEdb(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(8) %8, double noundef 0.000000e+00, i1 noundef zeroext false) to label %_ZN6casadi13GenericMatrixINS_2MXEE5zerosERKNS_8SparsityE.exit.i.i unwind label %68 @@ -17077,11 +17068,11 @@ _ZN6casadi2MXaSERKS0_.exit: ; preds = %.lr.ph227 79: ; preds = %._crit_edge228 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11) #30 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %11, i8 0, i64 24, i1 false) - %80 = icmp sgt i64 %.sroa.9.0.lcssa.ph, 0 + %80 = icmp sgt i64 %.sroa.9.2190, 0 br i1 %80, label %.preheader213.lr.ph, label %_ZNSt6vectorIN6casadi2MXESaIS1_EED2Ev.exit .preheader213.lr.ph: ; preds = %79 - %81 = icmp sgt i64 %.sroa.0176.0.lcssa.ph, 0 + %81 = icmp sgt i64 %.sroa.0176.2191, 0 %82 = getelementptr inbounds nuw i8, ptr %11, i64 8 %83 = getelementptr inbounds nuw i8, ptr %23, i64 8 %84 = getelementptr inbounds nuw i8, ptr %23, i64 16 @@ -17118,7 +17109,7 @@ _ZN6casadi2MXaSERKS0_.exit: ; preds = %.lr.ph227 ._crit_edge234.us: ; preds = %128, %.preheader.us %104 = add nuw nsw i64 %storemerge76235.us, 1 - %exitcond.not = icmp eq i64 %104, %.sroa.0176.0.lcssa.ph + %exitcond.not = icmp eq i64 %104, %.sroa.0176.2191 br i1 %exitcond.not, label %._crit_edge236.us, label %.preheader212.us, !llvm.loop !245 .lr.ph233.us: ; preds = %.preheader.us, %128 @@ -17220,8 +17211,8 @@ _ZNSt6vectorIxSaIxEED2Ev.exit.i7.i.us: ; preds = %123, %_ZN6casadi6Ma _ZNK6casadi13GenericMatrixINS_2MXEE4sizeEv.exit.us: ; preds = %.noexc.us %141 = extractvalue { i64, i64 } %140, 0 %142 = extractvalue { i64, i64 } %140, 1 - %143 = icmp eq i64 %141, %.sroa.0176.0.lcssa.ph - %144 = icmp eq i64 %142, %.sroa.9.0.lcssa.ph + %143 = icmp eq i64 %141, %.sroa.0176.2191 + %144 = icmp eq i64 %142, %.sroa.9.2190 %145 = select i1 %143, i1 %144, i1 false br i1 %145, label %146, label %152 @@ -17271,7 +17262,7 @@ _ZN6casadi2MXaSERKS0_.exit107.us: ; preds = %_ZNK6casadi13Generi ._crit_edge236.us: ; preds = %._crit_edge234.us %163 = add nuw nsw i64 %storemerge237.us, 1 - %exitcond277.not = icmp eq i64 %163, %.sroa.9.0.lcssa.ph + %exitcond277.not = icmp eq i64 %163, %.sroa.9.2190 br i1 %exitcond277.not, label %._crit_edge238, label %.preheader213.us, !llvm.loop !256 .split.us: ; preds = %._crit_edge231.us @@ -17790,7 +17781,7 @@ _ZNSt6vectorIN6casadi2MXESaIS1_EED2Ev.exit150: ; preds = %304, %_ZSt8_Destroy call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #30 br label %332 -.thread196: ; preds = %27, %._crit_edge, %5 +.thread196: ; preds = %42, %27, %._crit_edge, %5 call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #30 store i64 1, ptr %24, align 8, !tbaa !201 %312 = call noundef zeroext i1 @_ZNK6casadi16FunctionInternal12matching_argINS_2MXEEEbRKSt6vectorIT_SaIS4_EERx(ptr noundef nonnull align 8 dereferenceable(1312) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(8) %24) diff --git a/bench/casadi/optimized/sx_instantiator.ll b/bench/casadi/optimized/sx_instantiator.ll index 4536514fa39..d82b4fca573 100644 --- a/bench/casadi/optimized/sx_instantiator.ll +++ b/bench/casadi/optimized/sx_instantiator.ll @@ -92071,8 +92071,7 @@ _ZNSt6vectorIPN6casadi6SXNodeESaIS2_EE7reserveEm.exit: ; preds = %_ZNSt12_Vector store ptr %160, ptr %162, align 8, !tbaa !610 store ptr %160, ptr %163, align 8, !tbaa !611 store i64 0, ptr %164, align 8, !tbaa !612 - %.not875 = icmp eq ptr %1093, %1092 - br i1 %.not875, label %._crit_edge, label %.lr.ph856 + br i1 %.not701, label %._crit_edge, label %.lr.ph856 ._crit_edge: ; preds = %1210, %_ZNSt6vectorIPN6casadi6SXNodeESaIS2_EE7reserveEm.exit %.sroa.0591.3.lcssa = phi ptr [ %.sroa.0591.9, %_ZNSt6vectorIPN6casadi6SXNodeESaIS2_EE7reserveEm.exit ], [ %.sroa.0591.6, %1210 ] @@ -107562,7 +107561,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit442: ; preds = %_Z br label %.loopexit814 .loopexit814: ; preds = %.loopexit814.loopexit, %.preheader815, %._crit_edge - %.0772.lcssa974 = phi i8 [ %.sroa.speculated720, %._crit_edge ], [ 0, %.preheader815 ], [ %.sroa.speculated720, %.loopexit814.loopexit ] + %.0772.lcssa974 = phi i8 [ %.sroa.speculated720, %._crit_edge ], [ 0, %.preheader815 ], [ 2, %.loopexit814.loopexit ] %.1225 = phi i1 [ %810, %._crit_edge ], [ %810, %.preheader815 ], [ %852, %.loopexit814.loopexit ] call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %104) #33 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %104, i8 0, i64 24, i1 false) diff --git a/bench/cjson/optimized/cJSON_Utils.ll b/bench/cjson/optimized/cJSON_Utils.ll index 22dc3e13889..b6dee569129 100644 --- a/bench/cjson/optimized/cJSON_Utils.ll +++ b/bench/cjson/optimized/cJSON_Utils.ll @@ -206,8 +206,8 @@ define internal fastcc ptr @get_item_from_pointer(ptr noundef %0, ptr noundef re br label %9 9: ; preds = %.lr.ph60, %.critedge2 - %.02259 = phi ptr [ %0, %.lr.ph60 ], [ %.2, %.critedge2 ] - %.02758 = phi ptr [ %1, %.lr.ph60 ], [ %.128, %.critedge2 ] + %.02258 = phi ptr [ %0, %.lr.ph60 ], [ %.2, %.critedge2 ] + %.02757 = phi ptr [ %1, %.lr.ph60 ], [ %.128, %.critedge2 ] %10 = getelementptr inbounds nuw i8, ptr %.02758, i64 1 %11 = tail call i32 @cJSON_IsArray(ptr noundef nonnull %.02259) #13 %.not = icmp eq i32 %11, 0 @@ -233,10 +233,11 @@ define internal fastcc ptr @get_item_from_pointer(ptr noundef %0, ptr noundef re br i1 %or.cond24.i, label %.lr.ph.split.i.preheader, label %.critedge.i .lr.ph.split.i.preheader: ; preds = %18, %15, %15 + %.ph = phi i8 [ 48, %15 ], [ 48, %15 ], [ %.fr29.i, %18 ] br label %.lr.ph.split.i .lr.ph.split.i: ; preds = %.lr.ph.split.i.preheader, %.lr.ph.split.i - %20 = phi i8 [ %28, %.lr.ph.split.i ], [ %.fr29.i, %.lr.ph.split.i.preheader ] + %20 = phi i8 [ %28, %.lr.ph.split.i ], [ %.ph, %.lr.ph.split.i.preheader ] %.026.i = phi i64 [ %26, %.lr.ph.split.i ], [ 0, %.lr.ph.split.i.preheader ] %.01625.i = phi i64 [ %25, %.lr.ph.split.i ], [ 0, %.lr.ph.split.i.preheader ] %21 = zext i8 %20 to i64 @@ -279,12 +280,12 @@ decode_array_index_from_pointer.exit: ; preds = %.critedge.i, %.crit 38: ; preds = %36 %39 = getelementptr inbounds nuw i8, ptr %.02259, i64 16 - %.354 = load ptr, ptr %39, align 8, !tbaa !3 - %.not3255 = icmp eq ptr %.354, null + %.353 = load ptr, ptr %39, align 8, !tbaa !3 + %.not3254 = icmp eq ptr %.354, null br i1 %.not3255, label %.critedge, label %.lr.ph .lr.ph: ; preds = %38, %.backedge - %.356 = phi ptr [ %.3, %.backedge ], [ %.354, %38 ] + %.355 = phi ptr [ %.3, %.backedge ], [ %.354, %38 ] %40 = getelementptr inbounds nuw i8, ptr %.356, i64 56 %41 = load ptr, ptr %40, align 8, !tbaa !8 %42 = icmp eq ptr %41, null @@ -1687,10 +1688,11 @@ define internal fastcc range(i32 0, 2) i32 @decode_array_index_from_pointer(ptr br i1 %or.cond24, label %.lr.ph.split.preheader, label %.critedge .lr.ph.split.preheader: ; preds = %5, %5, %8 + %.ph = phi i8 [ %.fr29, %8 ], [ 48, %5 ], [ 48, %5 ] br label %.lr.ph.split .lr.ph.split: ; preds = %.lr.ph.split.preheader, %.lr.ph.split - %10 = phi i8 [ %18, %.lr.ph.split ], [ %.fr29, %.lr.ph.split.preheader ] + %10 = phi i8 [ %18, %.lr.ph.split ], [ %.ph, %.lr.ph.split.preheader ] %.026 = phi i64 [ %16, %.lr.ph.split ], [ 0, %.lr.ph.split.preheader ] %.01625 = phi i64 [ %15, %.lr.ph.split ], [ 0, %.lr.ph.split.preheader ] %11 = zext i8 %10 to i64 @@ -2083,10 +2085,11 @@ decode_pointer_inplace.exit: ; preds = %15, %24 br i1 %or.cond24.i, label %.lr.ph.split.i.preheader, label %.critedge.i .lr.ph.split.i.preheader: ; preds = %32, %29, %29 + %.ph = phi i8 [ 48, %29 ], [ 48, %29 ], [ %.fr29.i, %32 ] br label %.lr.ph.split.i .lr.ph.split.i: ; preds = %.lr.ph.split.i.preheader, %.lr.ph.split.i - %34 = phi i8 [ %42, %.lr.ph.split.i ], [ %.fr29.i, %.lr.ph.split.i.preheader ] + %34 = phi i8 [ %42, %.lr.ph.split.i ], [ %.ph, %.lr.ph.split.i.preheader ] %.026.i = phi i64 [ %40, %.lr.ph.split.i ], [ 0, %.lr.ph.split.i.preheader ] %.01625.i = phi i64 [ %39, %.lr.ph.split.i ], [ 0, %.lr.ph.split.i.preheader ] %35 = zext i8 %34 to i64 diff --git a/bench/coreutils-rs/optimized/31vrb73337u20kex.ll b/bench/coreutils-rs/optimized/31vrb73337u20kex.ll index f35580fb0ee..c87c148b345 100644 --- a/bench/coreutils-rs/optimized/31vrb73337u20kex.ll +++ b/bench/coreutils-rs/optimized/31vrb73337u20kex.ll @@ -918,7 +918,7 @@ define internal fastcc noundef zeroext i1 @"_ZN55_$LT$$RF$str$u20$as$u20$core..s %37 = add i64 %.065.lcssa.i, %25 %38 = icmp uge i64 %37, %3 %39 = trunc nuw i8 %.067.lcssa.i to i1 - %or.cond3143.i = select i1 %38, i1 true, i1 %39 + %or.cond3142.i = select i1 %38, i1 true, i1 %39 br i1 %or.cond3143.i, label %._crit_edge.i, label %.lr.ph145.i .lr.ph145.i: ; preds = %.preheader.i @@ -926,7 +926,7 @@ define internal fastcc noundef zeroext i1 @"_ZN55_$LT$$RF$str$u20$as$u20$core..s br label %74 .lr.ph.i: ; preds = %27, %48 - %.065141.i = phi i64 [ %49, %48 ], [ 0, %27 ] + %.065140.i = phi i64 [ %49, %48 ], [ 0, %27 ] call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5), !noalias !98 store i64 0, ptr %5, align 8, !noalias !98 %invariant.gep.i = getelementptr i8, ptr %2, i64 %.065141.i @@ -968,7 +968,7 @@ define internal fastcc noundef zeroext i1 @"_ZN55_$LT$$RF$str$u20$as$u20$core..s 57: ; preds = %58, %.preheader133.i %.3.i = phi i8 [ %.2138.i, %.preheader133.i ], [ %64, %58 ] - %exitcond153.not.i = icmp eq i64 %53, 4 + %exitcond152.not.i = icmp eq i64 %53, 4 br i1 %exitcond153.not.i, label %48, label %.preheader133.i 58: ; preds = %.preheader133.i @@ -997,7 +997,7 @@ define internal fastcc noundef zeroext i1 @"_ZN55_$LT$$RF$str$u20$as$u20$core..s br i1 %73, label %89, label %90 74: ; preds = %82, %.lr.ph145.i - %.166144.i = phi i64 [ %.065.lcssa.i, %.lr.ph145.i ], [ %83, %82 ] + %.166143.i = phi i64 [ %.065.lcssa.i, %.lr.ph145.i ], [ %83, %82 ] %75 = getelementptr inbounds i8, ptr %2, i64 %.166144.i %.0.copyload.i86.i = load <16 x i8>, ptr %75, align 1, !alias.scope !88, !noalias !105 %76 = getelementptr inbounds i8, ptr %75, i64 %21 @@ -1617,12 +1617,12 @@ define internal fastcc { ptr, i64 } @_ZN6uucore8features11version_cmp18remove_fi br i1 %4, label %"_ZN4core3str6traits110_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeTo$LT$usize$GT$$GT$3get17he5a2ef1652ac882fE.exit", label %.lr.ph .lr.ph: ; preds = %2, %62 - %.sroa.08.059 = phi i64 [ %.sroa.08.3, %62 ], [ 0, %2 ] - %.sroa.9.057 = phi i64 [ %.sroa.9.3, %62 ], [ undef, %2 ] - %.02655 = phi i8 [ %.1, %62 ], [ 0, %2 ] - %.sroa.0.054 = phi ptr [ %.sink, %62 ], [ %0, %2 ] - %.sroa.10.053 = phi i64 [ %46, %62 ], [ 0, %2 ] - %.pn68 = ptrtoint ptr %.sroa.0.054 to i64 + %.sroa.08.058 = phi i64 [ %.sroa.08.3, %62 ], [ 0, %2 ] + %.sroa.9.056 = phi i64 [ %.sroa.9.3, %62 ], [ undef, %2 ] + %.02654 = phi i8 [ %.1, %62 ], [ 0, %2 ] + %.sroa.0.053 = phi ptr [ %.sink, %62 ], [ %0, %2 ] + %.sroa.10.052 = phi i64 [ %46, %62 ], [ 0, %2 ] + %.pn67 = ptrtoint ptr %.sroa.0.053 to i64 %5 = getelementptr inbounds nuw i8, ptr %.sroa.0.054, i64 1 %6 = load i8, ptr %.sroa.0.054, align 1, !noalias !162, !noundef !4 %7 = icmp sgt i8 %6, -1 @@ -1684,12 +1684,12 @@ define internal fastcc { ptr, i64 } @_ZN6uucore8features11version_cmp18remove_fi %.sroa.08.0.lcssa.ph = phi i64 [ %.sroa.08.059, %30 ], [ %.sroa.08.3, %62 ] %42 = trunc nuw i8 %.026.lcssa.ph to i1 %43 = icmp ne i64 %.sroa.08.0.lcssa.ph, 1 - %.not48 = select i1 %42, i1 true, i1 %43 + %.not47 = select i1 %42, i1 true, i1 %43 br i1 %.not48, label %"_ZN4core3str6traits110_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeTo$LT$usize$GT$$GT$3get17he5a2ef1652ac882fE.exit", label %48 "_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.exit.thread43": ; preds = %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h768176926c7dfe8eE.exit13.i.i", %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h768176926c7dfe8eE.exit15.i.i", %18, %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.exit" %.sink = phi ptr [ %41, %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.exit" ], [ %11, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h768176926c7dfe8eE.exit13.i.i" ], [ %21, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h768176926c7dfe8eE.exit15.i.i" ], [ %5, %18 ] - %.sroa.4.0.i.ph10.i47 = phi i32 [ %39, %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.exit" ], [ %16, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h768176926c7dfe8eE.exit13.i.i" ], [ %28, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h768176926c7dfe8eE.exit15.i.i" ], [ %19, %18 ] + %.sroa.4.0.i.ph10.i46 = phi i32 [ %39, %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.exit" ], [ %16, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h768176926c7dfe8eE.exit13.i.i" ], [ %28, %"_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h768176926c7dfe8eE.exit15.i.i" ], [ %19, %18 ] %44 = ptrtoint ptr %.sink to i64 %45 = sub i64 %.sroa.10.053, %.pn68 %46 = add i64 %45, %44 @@ -1719,27 +1719,26 @@ define internal fastcc { ptr, i64 } @_ZN6uucore8features11version_cmp18remove_fi unreachable "_ZN4core3str6traits110_$LT$impl$u20$core..slice..index..SliceIndex$LT$str$GT$$u20$for$u20$core..ops..range..RangeTo$LT$usize$GT$$GT$3get17he5a2ef1652ac882fE.exit": ; preds = %2, %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.exit.thread", %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i", %51, %48 - %.pn49 = phi i64 [ 0, %48 ], [ %1, %51 ], [ %.sroa.9.0.lcssa.ph, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i" ], [ %1, %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.exit.thread" ], [ 0, %2 ] + %.pn48 = phi i64 [ 0, %48 ], [ %1, %51 ], [ %.sroa.9.0.lcssa.ph, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.exit.i" ], [ %1, %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.exit.thread" ], [ 0, %2 ] %.pn = insertvalue { ptr, i64 } poison, ptr %0, 0 %.merged = insertvalue { ptr, i64 } %.pn, i64 %.pn49, 1 ret { ptr, i64 } %.merged 57: ; preds = %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.exit.thread43" %58 = icmp ne i64 %.sroa.08.059, 1 - %59 = trunc nuw i8 %.02655 to i1 + %59 = trunc nuw i8 %.02654 to i1 %or.cond3 = select i1 %58, i1 true, i1 %59 %spec.select29 = select i1 %or.cond3, i64 %.sroa.10.053, i64 %.sroa.9.057 - %spec.select30 = select i1 %or.cond3, i64 1, i64 %.sroa.08.059 br label %62 60: ; preds = %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.exit.thread43" - %61 = trunc nuw i8 %.02655 to i1 + %61 = trunc nuw i8 %.02654 to i1 br i1 %61, label %71, label %64 62: ; preds = %71, %64, %57 %.1 = phi i8 [ 1, %57 ], [ 0, %64 ], [ 0, %71 ] %.sroa.9.3 = phi i64 [ %spec.select29, %57 ], [ %spec.select31, %64 ], [ %spec.select33, %71 ] - %.sroa.08.3 = phi i64 [ %spec.select30, %57 ], [ %spec.select32, %64 ], [ %spec.select34, %71 ] + %.sroa.08.3 = phi i64 [ 1, %57 ], [ %spec.select32, %64 ], [ %spec.select34, %71 ] %63 = icmp eq ptr %.sink, %3 br i1 %63, label %"_ZN87_$LT$core..str..iter..CharIndices$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hbf461ba4ba35c2afE.exit.thread", label %.lr.ph @@ -1752,8 +1751,8 @@ define internal fastcc { ptr, i64 } @_ZN6uucore8features11version_cmp18remove_fi %69 = or i1 %.0.i, %68 %70 = icmp eq i32 %.sroa.4.0.i.ph10.i47, 126 %or.cond5 = or i1 %70, %69 - %spec.select31 = select i1 %or.cond5, i64 %.sroa.9.057, i64 undef - %spec.select32 = select i1 %or.cond5, i64 %.sroa.08.059, i64 0 + %spec.select30 = select i1 %or.cond5, i64 %.sroa.9.057, i64 undef + %spec.select31 = select i1 %or.cond5, i64 %.sroa.08.059, i64 0 br label %62 71: ; preds = %60 @@ -1762,8 +1761,8 @@ define internal fastcc { ptr, i64 } @_ZN6uucore8features11version_cmp18remove_fi %.0 = icmp ult i32 %73, 26 %74 = icmp eq i32 %.sroa.4.0.i.ph10.i47, 126 %or.cond7 = or i1 %74, %.0 - %spec.select33 = select i1 %or.cond7, i64 %.sroa.9.057, i64 undef - %spec.select34 = select i1 %or.cond7, i64 %.sroa.08.059, i64 0 + %spec.select32 = select i1 %or.cond7, i64 %.sroa.9.057, i64 undef + %spec.select33 = select i1 %or.cond7, i64 %.sroa.08.059, i64 0 br label %62 } diff --git a/bench/coreutils-rs/optimized/3ntjj58b904wujzh.ll b/bench/coreutils-rs/optimized/3ntjj58b904wujzh.ll index 0f01a7604b9..95cb2ceed25 100644 --- a/bench/coreutils-rs/optimized/3ntjj58b904wujzh.ll +++ b/bench/coreutils-rs/optimized/3ntjj58b904wujzh.ll @@ -2746,9 +2746,9 @@ define hidden void @_ZN9uu_numfmt6format26format_and_print_delimited17h807d12707 51: ; preds = %23, %244 %52 = phi i64 [ 2, %23 ], [ %245, %244 ] - %.sroa.946.sroa.1263.0178 = phi i8 [ %.sroa.946.sroa.1263.0.extract.trunc, %23 ], [ %.sroa.946.sroa.1263.4, %244 ] - %.sroa.946.sroa.0.0177 = phi i8 [ %.sroa.946.sroa.0.0.extract.trunc, %23 ], [ %.sroa.946.sroa.0.7, %244 ] - %.sroa.58.0176 = phi i64 [ 1, %23 ], [ %52, %244 ] + %.sroa.946.sroa.1263.0177 = phi i8 [ %.sroa.946.sroa.1263.0.extract.trunc, %23 ], [ %.sroa.946.sroa.1263.4, %244 ] + %.sroa.946.sroa.0.0176 = phi i8 [ %.sroa.946.sroa.0.0.extract.trunc, %23 ], [ %.sroa.946.sroa.0.7, %244 ] + %.sroa.58.0175 = phi i64 [ 1, %23 ], [ %52, %244 ] %.sroa.544.0174 = phi i64 [ %.sroa.08.sroa.4.0.copyload, %23 ], [ %.sroa.544.5, %244 ] %.sroa.43.0172 = phi i64 [ 0, %23 ], [ %.sroa.43.2, %244 ] %.sroa.3350.0171 = phi i64 [ %.sroa.08.sroa.10.0.copyload, %23 ], [ %.sroa.3350.3, %244 ] @@ -2756,11 +2756,11 @@ define hidden void @_ZN9uu_numfmt6format26format_and_print_delimited17h807d12707 br i1 %trunc.i.i.i.i, label %112, label %.preheader.i.i.i.i .preheader.i.i.i.i: ; preds = %51 - %53 = trunc nuw i8 %.sroa.946.sroa.1263.0178 to i1 + %53 = trunc nuw i8 %.sroa.946.sroa.1263.0177 to i1 br i1 %53, label %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h41a399e597cf75dbE.exit", label %.lr.ph.i.i.i.i.preheader .lr.ph.i.i.i.i.preheader: ; preds = %.preheader.i.i.i.i - %54 = trunc nuw i8 %.sroa.946.sroa.0.0177 to i1 + %54 = trunc nuw i8 %.sroa.946.sroa.0.0176 to i1 br label %.lr.ph.i.i.i.i .lr.ph.i.i.i.i: ; preds = %.lr.ph.i.i.i.i.preheader, %"_ZN80_$LT$core..str..pattern..StrSearcher$u20$as$u20$core..str..pattern..Searcher$GT$4next17h61fa6180c96ad587E.exit.i.i.i.i" @@ -2850,7 +2850,7 @@ _ZN4core3str11validations15next_code_point17h4286ff30c9b917fdE.exit.thread.i.i.i br i1 %55, label %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h41a399e597cf75dbE.exit.loopexit182", label %103 .thread.i.i.i.i.i: ; preds = %64, %58 - %.sroa.544.1194 = phi i64 [ %.sroa.08.sroa.13.0.copyload, %58 ], [ %.sroa.544.1, %64 ] + %.sroa.544.1193 = phi i64 [ %.sroa.08.sroa.13.0.copyload, %58 ], [ %.sroa.544.1, %64 ] br i1 %55, label %"_ZN80_$LT$core..str..pattern..StrSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h81357aafb99f3895E.exit.i.i.i", label %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h41a399e597cf75dbE.exit" 103: ; preds = %_ZN4core3str11validations15next_code_point17h4286ff30c9b917fdE.exit.thread.i.i.i.i.i @@ -2888,9 +2888,9 @@ _ZN4core3str11validations15next_code_point17h4286ff30c9b917fdE.exit.thread.i.i.i br i1 %.not3754.i, label %.lr.ph.i31, label %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h41a399e597cf75dbE.exit" .lr.ph.i31: ; preds = %115 - %.sroa.946.sroa.1263.0.insert.ext64 = zext i8 %.sroa.946.sroa.1263.0178 to i64 + %.sroa.946.sroa.1263.0.insert.ext64 = zext i8 %.sroa.946.sroa.1263.0177 to i64 %.sroa.946.sroa.1263.0.insert.shift65 = shl nuw nsw i64 %.sroa.946.sroa.1263.0.insert.ext64, 16 - %.sroa.946.sroa.0.0.insert.ext56 = zext i8 %.sroa.946.sroa.0.0177 to i64 + %.sroa.946.sroa.0.0.insert.ext56 = zext i8 %.sroa.946.sroa.0.0176 to i64 %116 = or disjoint i64 %.sroa.946.sroa.1263.0.insert.shift65, %.sroa.946.sroa.0.0.insert.ext56 %.sroa.946.sroa.0.0.insert.insert58 = or disjoint i64 %116, %26 %117 = sub i64 %.sroa.08.sroa.15.0.copyload, %.sroa.946.sroa.0.0.insert.insert58 @@ -3000,9 +3000,9 @@ _ZN4core3str11validations15next_code_point17h4286ff30c9b917fdE.exit.thread.i.i.i br i1 %.not3754.i, label %.lr.ph.i, label %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h41a399e597cf75dbE.exit" .lr.ph.i: ; preds = %167 - %.sroa.946.sroa.1263.0.insert.ext = zext i8 %.sroa.946.sroa.1263.0178 to i64 + %.sroa.946.sroa.1263.0.insert.ext = zext i8 %.sroa.946.sroa.1263.0177 to i64 %.sroa.946.sroa.1263.0.insert.shift = shl nuw nsw i64 %.sroa.946.sroa.1263.0.insert.ext, 16 - %.sroa.946.sroa.0.0.insert.ext = zext i8 %.sroa.946.sroa.0.0177 to i64 + %.sroa.946.sroa.0.0.insert.ext = zext i8 %.sroa.946.sroa.0.0176 to i64 %168 = or disjoint i64 %.sroa.946.sroa.1263.0.insert.shift, %.sroa.946.sroa.0.0.insert.ext %.sroa.946.sroa.0.0.insert.insert = or disjoint i64 %168, %26 %169 = add i64 %.sroa.544.0174, -1 @@ -3095,7 +3095,7 @@ _ZN4core3str11validations15next_code_point17h4286ff30c9b917fdE.exit.thread.i.i.i unreachable 213: ; preds = %205 - %reass.sub180 = sub i64 %172, %.sroa.544.0174 + %reass.sub179 = sub i64 %172, %.sroa.544.0174 %214 = add i64 %reass.sub180, 1 %215 = add i64 %214, %.sroa.04.0.i br label %182 @@ -3122,7 +3122,6 @@ _ZN4core3str11validations15next_code_point17h4286ff30c9b917fdE.exit.thread.i.i.i "_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h41a399e597cf75dbE.exit.loopexit182": ; preds = %_ZN4core3str11validations15next_code_point17h4286ff30c9b917fdE.exit.thread.i.i.i.i.i, %103 %.sroa.43.2.ph = phi i64 [ %.sroa.544.1, %_ZN4core3str11validations15next_code_point17h4286ff30c9b917fdE.exit.thread.i.i.i.i.i ], [ %.sroa.43.0172, %103 ] %.sroa.946.sroa.0.7.ph = phi i8 [ 0, %_ZN4core3str11validations15next_code_point17h4286ff30c9b917fdE.exit.thread.i.i.i.i.i ], [ 1, %103 ] - %.sroa.946.sroa.1263.4.ph = phi i8 [ %.sroa.946.sroa.1263.0178, %_ZN4core3str11validations15next_code_point17h4286ff30c9b917fdE.exit.thread.i.i.i.i.i ], [ 1, %103 ] %.sroa.777.2.pn.ph = phi i64 [ %.sroa.544.1, %_ZN4core3str11validations15next_code_point17h4286ff30c9b917fdE.exit.thread.i.i.i.i.i ], [ %2, %103 ] %.sroa.53.4.ph = xor i1 %55, true br label %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h41a399e597cf75dbE.exit" @@ -3134,7 +3133,7 @@ _ZN4core3str11validations15next_code_point17h4286ff30c9b917fdE.exit.thread.i.i.i %.sroa.544.5 = phi i64 [ %.sroa.544.0174, %167 ], [ %.sroa.544.0174, %115 ], [ %.sroa.544.0174, %.preheader.i.i.i.i ], [ %.sroa.544.1194, %.thread.i.i.i.i.i ], [ %.sroa.544.0174, %136 ], [ %.sroa.544.0174, %186 ], [ %.sroa.544.1194, %"_ZN80_$LT$core..str..pattern..StrSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h81357aafb99f3895E.exit.i.i.i" ], [ %.sroa.544.1, %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h41a399e597cf75dbE.exit.loopexit182" ], [ %.sroa.544.0174, %182 ], [ %.sroa.544.0174, %.sink.split.i ] %.sroa.53.4 = phi i1 [ true, %167 ], [ true, %115 ], [ true, %.preheader.i.i.i.i ], [ true, %.thread.i.i.i.i.i ], [ false, %136 ], [ false, %186 ], [ false, %"_ZN80_$LT$core..str..pattern..StrSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h81357aafb99f3895E.exit.i.i.i" ], [ %.sroa.53.4.ph, %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h41a399e597cf75dbE.exit.loopexit182" ], [ true, %182 ], [ true, %.sink.split.i ] %.sroa.946.sroa.0.7 = phi i8 [ %.sroa.946.sroa.0.0177, %167 ], [ %.sroa.946.sroa.0.0177, %115 ], [ %.sroa.946.sroa.0.0177, %.preheader.i.i.i.i ], [ 1, %.thread.i.i.i.i.i ], [ %.sroa.946.sroa.0.0177, %136 ], [ %.sroa.946.sroa.0.0177, %186 ], [ 0, %"_ZN80_$LT$core..str..pattern..StrSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h81357aafb99f3895E.exit.i.i.i" ], [ %.sroa.946.sroa.0.7.ph, %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h41a399e597cf75dbE.exit.loopexit182" ], [ %.sroa.946.sroa.0.0177, %182 ], [ %.sroa.946.sroa.0.0177, %.sink.split.i ] - %.sroa.946.sroa.1263.4 = phi i8 [ %.sroa.946.sroa.1263.0178, %167 ], [ %.sroa.946.sroa.1263.0178, %115 ], [ 1, %.preheader.i.i.i.i ], [ 1, %.thread.i.i.i.i.i ], [ %.sroa.946.sroa.1263.0178, %136 ], [ %.sroa.946.sroa.1263.0178, %186 ], [ %.sroa.946.sroa.1263.0178, %"_ZN80_$LT$core..str..pattern..StrSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h81357aafb99f3895E.exit.i.i.i" ], [ %.sroa.946.sroa.1263.4.ph, %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h41a399e597cf75dbE.exit.loopexit182" ], [ %.sroa.946.sroa.1263.0178, %182 ], [ %.sroa.946.sroa.1263.0178, %.sink.split.i ] + %.sroa.946.sroa.1263.4 = phi i8 [ %.sroa.946.sroa.1263.0178, %167 ], [ %.sroa.946.sroa.1263.0178, %115 ], [ 1, %.preheader.i.i.i.i ], [ 1, %.thread.i.i.i.i.i ], [ %.sroa.946.sroa.1263.0178, %136 ], [ %.sroa.946.sroa.1263.0178, %186 ], [ 0, %"_ZN80_$LT$core..str..pattern..StrSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h81357aafb99f3895E.exit.i.i.i" ], [ %.sroa.946.sroa.0.7.ph, %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h41a399e597cf75dbE.exit.loopexit182" ], [ %.sroa.946.sroa.1263.0178, %182 ], [ %.sroa.946.sroa.1263.0178, %.sink.split.i ] %.sroa.777.2.pn = phi i64 [ %2, %167 ], [ %2, %115 ], [ %2, %.preheader.i.i.i.i ], [ %2, %.thread.i.i.i.i.i ], [ %121, %136 ], [ %172, %186 ], [ %.sroa.544.1194, %"_ZN80_$LT$core..str..pattern..StrSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h81357aafb99f3895E.exit.i.i.i" ], [ %.sroa.777.2.pn.ph, %"_ZN111_$LT$core..iter..adapters..zip..Zip$LT$A$C$B$GT$$u20$as$u20$core..iter..adapters..zip..ZipImpl$LT$A$C$B$GT$$GT$4next17h41a399e597cf75dbE.exit.loopexit182" ], [ %2, %182 ], [ %2, %.sink.split.i ] %.sroa.674.0 = getelementptr inbounds i8, ptr %.sroa.08.sroa.12.0.copyload, i64 %.sroa.43.0172 %.sroa.10.1 = sub i64 %.sroa.777.2.pn, %.sroa.43.0172 diff --git a/bench/coreutils-rs/optimized/n5dhracig0q9az4.ll b/bench/coreutils-rs/optimized/n5dhracig0q9az4.ll index 60c4cbb2f41..ab0cd8f6e75 100644 --- a/bench/coreutils-rs/optimized/n5dhracig0q9az4.ll +++ b/bench/coreutils-rs/optimized/n5dhracig0q9az4.ll @@ -30,13 +30,13 @@ define hidden noundef ptr @_ZN3std2io5Write18write_all_vectored17h18b58ce70da4f3 %8 = getelementptr inbounds { { { ptr, i64 }, {} } }, ptr %1, i64 %2 %9 = icmp eq i64 %2, 0 %.sink.sroa.gep = getelementptr inbounds nuw i8, ptr %6, i64 24 - %.sink.sroa.gep93 = getelementptr inbounds nuw i8, ptr %5, i64 24 - %.sink.sroa.gep95 = getelementptr inbounds nuw i8, ptr %6, i64 16 - %.sink.sroa.gep96 = getelementptr inbounds nuw i8, ptr %5, i64 16 - %.sink.sroa.gep98 = getelementptr inbounds nuw i8, ptr %6, i64 32 - %.sink.sroa.gep99 = getelementptr inbounds nuw i8, ptr %5, i64 32 - %.sink.sroa.gep101 = getelementptr inbounds nuw i8, ptr %6, i64 8 - %.sink.sroa.gep102 = getelementptr inbounds nuw i8, ptr %5, i64 8 + %.sink.sroa.gep105 = getelementptr inbounds nuw i8, ptr %5, i64 24 + %.sink.sroa.gep107 = getelementptr inbounds nuw i8, ptr %6, i64 16 + %.sink.sroa.gep108 = getelementptr inbounds nuw i8, ptr %5, i64 16 + %.sink.sroa.gep110 = getelementptr inbounds nuw i8, ptr %6, i64 32 + %.sink.sroa.gep111 = getelementptr inbounds nuw i8, ptr %5, i64 32 + %.sink.sroa.gep113 = getelementptr inbounds nuw i8, ptr %6, i64 8 + %.sink.sroa.gep114 = getelementptr inbounds nuw i8, ptr %5, i64 8 br i1 %9, label %.loopexit, label %.lr.ph.i "_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h47ec3b351a964a96E.exit.thread.i": ; preds = %13, %.lr.ph.i @@ -155,8 +155,13 @@ define hidden noundef ptr @_ZN3std2io5Write18write_all_vectored17h18b58ce70da4f3 %trunc = trunc nuw i64 %.pre to i1 br i1 %trunc, label %54, label %thread-pre-split -.loopexit: ; preds = %97, %17, %3, %93 - %.0 = phi ptr [ %.1, %93 ], [ null, %3 ], [ null, %17 ], [ null, %97 ] +.loopexit: ; preds = %51, %57, %59, %63, %_ZN3std2io5error5Error14is_interrupted17haa138aed658ec797E.exit, %.thread.i18 + %.0.ph = phi ptr [ null, %.thread.i18 ], [ @anon.84c517dc8bbf76c8bbee93e1e9ce05b1.1, %51 ], [ %.val, %57 ], [ %.val, %59 ], [ %.val, %63 ], [ %.val, %_ZN3std2io5error5Error14is_interrupted17haa138aed658ec797E.exit ] + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) + br label %.loopexit + +.loopexit: ; preds = %96, %.loopexit.sink.split, %17, %3 + %.0 = phi ptr [ null, %3 ], [ null, %17 ], [ %.0.ph, %.loopexit.sink.split ], [ null, %96 ] ret ptr %.0 thread-pre-split: ; preds = %"_ZN83_$LT$std..io..buffered..bufwriter..BufWriter$LT$W$GT$$u20$as$u20$std..io..Write$GT$14write_vectored17h56562ea8804b83ccE.exit" @@ -166,7 +171,7 @@ thread-pre-split: ; preds = %"_ZN83_$LT$std..io. 51: ; preds = %thread-pre-split, %"_ZN83_$LT$std..io..buffered..bufwriter..BufWriter$LT$W$GT$$u20$as$u20$std..io..Write$GT$14write_vectored17h56562ea8804b83ccE.exit.thread56" %52 = phi i64 [ %.pr, %thread-pre-split ], [ %30, %"_ZN83_$LT$std..io..buffered..bufwriter..BufWriter$LT$W$GT$$u20$as$u20$std..io..Write$GT$14write_vectored17h56562ea8804b83ccE.exit.thread56" ] %53 = icmp eq i64 %52, 0 - br i1 %53, label %93, label %.lr.ph.i9 + br i1 %53, label %.loopexit, label %.lr.ph.i9 54: ; preds = %"_ZN83_$LT$std..io..buffered..bufwriter..BufWriter$LT$W$GT$$u20$as$u20$std..io..Write$GT$14write_vectored17h56562ea8804b83ccE.exit.thread", %"_ZN83_$LT$std..io..buffered..bufwriter..BufWriter$LT$W$GT$$u20$as$u20$std..io..Write$GT$14write_vectored17h56562ea8804b83ccE.exit" %.val = load ptr, ptr %24, align 8, !nonnull !7, !noundef !7 @@ -185,13 +190,13 @@ default.unreachable: ; preds = %54 57: ; preds = %54 %.mask.i = and i64 %55, -4294967296 %58 = icmp eq i64 %.mask.i, 17179869184 - br i1 %58, label %_ZN3std2io7IoSlice14advance_slices17h594e87d33cca00edE.exit22.thread, label %93 + br i1 %58, label %_ZN3std2io7IoSlice14advance_slices17h594e87d33cca00edE.exit22.thread, label %.loopexit 59: ; preds = %54 %60 = getelementptr inbounds nuw i8, ptr %.val, i64 16 %61 = load i8, ptr %60, align 8, !range !25, !noundef !7 %62 = icmp eq i8 %61, 35 - br i1 %62, label %_ZN3std2io7IoSlice14advance_slices17h594e87d33cca00edE.exit22.thread, label %93 + br i1 %62, label %_ZN3std2io7IoSlice14advance_slices17h594e87d33cca00edE.exit22.thread, label %.loopexit 63: ; preds = %54 %64 = getelementptr i8, ptr %.val, i64 -1 @@ -200,7 +205,7 @@ default.unreachable: ; preds = %54 %66 = getelementptr i8, ptr %.val, i64 15 %67 = load i8, ptr %66, align 8, !range !25, !noundef !7 %68 = icmp eq i8 %67, 35 - br i1 %68, label %_ZN3std2io7IoSlice14advance_slices17h594e87d33cca00edE.exit22.thread, label %93 + br i1 %68, label %_ZN3std2io7IoSlice14advance_slices17h594e87d33cca00edE.exit22.thread, label %.loopexit "_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17h47ec3b351a964a96E.exit.thread.i14": ; preds = %72, %.lr.ph.i9 %.017.lcssa.i15 = phi i64 [ %.01723.i11, %.lr.ph.i9 ], [ %73, %72 ] @@ -236,7 +241,7 @@ default.unreachable: ; preds = %54 .thread.i18: ; preds = %77 %81 = icmp eq i64 %.017.lcssa.i15, 0 - br i1 %81, label %_ZN3std2io7IoSlice14advance_slices17h594e87d33cca00edE.exit22, label %82 + br i1 %81, label %.loopexit, label %82 82: ; preds = %.thread.i18 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %6), !noalias !26 @@ -255,9 +260,9 @@ default.unreachable: ; preds = %54 .invoke: ; preds = %82, %87 %.sink.sroa.phi = phi ptr [ %.sink.sroa.gep, %82 ], [ %.sink.sroa.gep93, %87 ] - %.sink.sroa.phi94 = phi ptr [ %.sink.sroa.gep95, %82 ], [ %.sink.sroa.gep96, %87 ] - %.sink.sroa.phi97 = phi ptr [ %.sink.sroa.gep98, %82 ], [ %.sink.sroa.gep99, %87 ] - %.sink.sroa.phi100 = phi ptr [ %.sink.sroa.gep101, %82 ], [ %.sink.sroa.gep102, %87 ] + %.sink.sroa.phi106 = phi ptr [ %.sink.sroa.gep95, %82 ], [ %.sink.sroa.gep96, %87 ] + %.sink.sroa.phi109 = phi ptr [ %.sink.sroa.gep98, %82 ], [ %.sink.sroa.gep99, %87 ] + %.sink.sroa.phi112 = phi ptr [ %.sink.sroa.gep101, %82 ], [ %.sink.sroa.gep102, %87 ] %.sink = phi ptr [ %6, %82 ], [ %5, %87 ] %anon.84c517dc8bbf76c8bbee93e1e9ce05b1.11.sink = phi ptr [ @anon.84c517dc8bbf76c8bbee93e1e9ce05b1.11, %82 ], [ @anon.84c517dc8bbf76c8bbee93e1e9ce05b1.23, %87 ] %88 = phi ptr [ @anon.84c517dc8bbf76c8bbee93e1e9ce05b1.13, %82 ], [ @anon.84c517dc8bbf76c8bbee93e1e9ce05b1.25, %87 ] @@ -277,33 +282,23 @@ _ZN3std3sys3pal4unix2io7IoSlice7advance17hb760a64f4068ca53E.exit.i17: ; preds = store ptr %91, ptr %79, align 8, !alias.scope !29, !noalias !26 %.pre52 = load i64, ptr %7, align 8, !range !24 %92 = icmp eq i64 %.pre52, 0 - br label %_ZN3std2io7IoSlice14advance_slices17h594e87d33cca00edE.exit22 - -93: ; preds = %_ZN3std2io5error5Error14is_interrupted17haa138aed658ec797E.exit, %63, %59, %57, %51 - %.1 = phi ptr [ @anon.84c517dc8bbf76c8bbee93e1e9ce05b1.1, %51 ], [ %.val, %57 ], [ %.val, %59 ], [ %.val, %63 ], [ %.val, %_ZN3std2io5error5Error14is_interrupted17haa138aed658ec797E.exit ] - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) - br label %.loopexit - -_ZN3std2io7IoSlice14advance_slices17h594e87d33cca00edE.exit22: ; preds = %_ZN3std3sys3pal4unix2io7IoSlice7advance17hb760a64f4068ca53E.exit.i17, %.thread.i18 - %.not6 = phi i1 [ true, %.thread.i18 ], [ %92, %_ZN3std3sys3pal4unix2io7IoSlice7advance17hb760a64f4068ca53E.exit.i17 ] - %.sroa.8.1 = phi i64 [ 0, %.thread.i18 ], [ %78, %_ZN3std3sys3pal4unix2io7IoSlice7advance17hb760a64f4068ca53E.exit.i17 ] - br i1 %.not6, label %97, label %_ZN3std2io7IoSlice14advance_slices17h594e87d33cca00edE.exit22.thread + br i1 %92, label %96, label %_ZN3std2io7IoSlice14advance_slices17h594e87d33cca00edE.exit22.thread _ZN3std2io5error5Error14is_interrupted17haa138aed658ec797E.exit: ; preds = %54 %.mask20.i = and i64 %55, -4294967296 %switch.i = icmp eq i64 %.mask20.i, 150323855360 - br i1 %switch.i, label %_ZN3std2io7IoSlice14advance_slices17h594e87d33cca00edE.exit22.thread, label %93 + br i1 %switch.i, label %_ZN3std2io7IoSlice14advance_slices17h594e87d33cca00edE.exit22.thread, label %.loopexit _ZN3std2io7IoSlice14advance_slices17h594e87d33cca00edE.exit22.thread: ; preds = %57, %59, %63, %_ZN3std2io5error5Error14is_interrupted17haa138aed658ec797E.exit, %_ZN3std2io7IoSlice14advance_slices17h594e87d33cca00edE.exit22 %.sroa.0.163 = phi ptr [ %79, %_ZN3std2io7IoSlice14advance_slices17h594e87d33cca00edE.exit22 ], [ %.sroa.0.043, %_ZN3std2io5error5Error14is_interrupted17haa138aed658ec797E.exit ], [ %.sroa.0.043, %63 ], [ %.sroa.0.043, %59 ], [ %.sroa.0.043, %57 ] - %.sroa.8.161 = phi i64 [ %.sroa.8.1, %_ZN3std2io7IoSlice14advance_slices17h594e87d33cca00edE.exit22 ], [ %.sroa.8.042, %_ZN3std2io5error5Error14is_interrupted17haa138aed658ec797E.exit ], [ %.sroa.8.042, %63 ], [ %.sroa.8.042, %59 ], [ %.sroa.8.042, %57 ] + %.sroa.8.161 = phi i64 [ %78, %_ZN3std2io7IoSlice14advance_slices17h594e87d33cca00edE.exit22 ], [ %.sroa.8.042, %_ZN3std2io5error5Error14is_interrupted17haa138aed658ec797E.exit ], [ %.sroa.8.042, %63 ], [ %.sroa.8.042, %59 ], [ %.sroa.8.042, %57 ] call void @llvm.experimental.noalias.scope.decl(metadata !33) call void @llvm.experimental.noalias.scope.decl(metadata !36) call void @llvm.experimental.noalias.scope.decl(metadata !39) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4), !noalias !42 - %94 = load ptr, ptr %24, align 8, !alias.scope !42, !nonnull !7, !noundef !7 + %93 = load ptr, ptr %24, align 8, !alias.scope !42, !nonnull !7, !noundef !7 call void @_ZN3std2io5error14repr_bitpacked11decode_repr17hbf1617cab882e186E.llvm.2603348648179966163(ptr noalias noundef nonnull sret({ i8, [15 x i8] }) align 8 captures(none) dereferenceable(16) %4, ptr noundef nonnull %94), !noalias !42 - %95 = load i8, ptr %4, align 8, !range !43, !alias.scope !44, !noalias !42, !noundef !7 + %94 = load i8, ptr %4, align 8, !range !43, !alias.scope !44, !noalias !42, !noundef !7 %switch.not.i.i.i.i = icmp eq i8 %95, 3 br i1 %switch.not.i.i.i.i, label %96, label %"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17hecdb1f59526dc6a8E.exit" @@ -317,9 +312,9 @@ _ZN3std2io7IoSlice14advance_slices17h594e87d33cca00edE.exit22.thread: ; preds = 97: ; preds = %"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17hecdb1f59526dc6a8E.exit", %_ZN3std2io7IoSlice14advance_slices17h594e87d33cca00edE.exit22 %.sroa.0.164 = phi ptr [ %.sroa.0.163, %"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17hecdb1f59526dc6a8E.exit" ], [ %79, %_ZN3std2io7IoSlice14advance_slices17h594e87d33cca00edE.exit22 ] - %.sroa.8.162 = phi i64 [ %.sroa.8.161, %"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17hecdb1f59526dc6a8E.exit" ], [ %.sroa.8.1, %_ZN3std2io7IoSlice14advance_slices17h594e87d33cca00edE.exit22 ] + %.sroa.8.162 = phi i64 [ %.sroa.8.161, %"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17hecdb1f59526dc6a8E.exit" ], [ %78, %_ZN3std2io7IoSlice14advance_slices17h594e87d33cca00edE.exit22 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) - %98 = icmp eq i64 %.sroa.8.162, 0 + %97 = icmp eq i64 %.sroa.8.162, 0 br i1 %98, label %.loopexit, label %28 } diff --git a/bench/cpp-httplib/optimized/httplib.ll b/bench/cpp-httplib/optimized/httplib.ll index 62eb857306e..32ba5a3151f 100644 --- a/bench/cpp-httplib/optimized/httplib.ll +++ b/bench/cpp-httplib/optimized/httplib.ll @@ -5380,8 +5380,8 @@ define noundef zeroext i1 @_ZN7httplib6detail18stream_line_reader7getlineEv(ptr 16: ; preds = %.lr.ph, %59 %17 = phi i64 [ %11, %.lr.ph ], [ %65, %59 ] - %.01225 = phi i64 [ 0, %.lr.ph ], [ %60, %59 ] - %.01324 = phi i8 [ 0, %.lr.ph ], [ %57, %59 ] + %.01226 = phi i64 [ 0, %.lr.ph ], [ %60, %59 ] + %.01325 = phi i8 [ 0, %.lr.ph ], [ %57, %59 ] %18 = icmp eq i64 %17, 0 br i1 %18, label %19, label %21 @@ -5478,7 +5478,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEc.exit.i: ; preds = %50, br i1 %66, label %.thread, label %16, !llvm.loop !129 .loopexit: ; preds = %55, %.thread - %cond121 = phi i1 [ %cond1.ph, %.thread ], [ true, %55 ] + %cond122 = phi i1 [ %cond1.ph, %.thread ], [ true, %55 ] ret i1 %cond121 } @@ -13532,48 +13532,45 @@ define linkonce_odr void @_ZNSt23mersenne_twister_engineImLm32ELm624ELm397ELm31E call void @_ZNSt8seed_seq8generateIPjEEvT_S2_(ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull %3, ptr noundef nonnull %4) br label %.preheader.i -.preheader.i: ; preds = %17, %2 - %.01825.i = phi i64 [ 0, %2 ], [ %18, %17 ] - %.01924.i = phi i8 [ 1, %2 ], [ %.1.i, %17 ] +.preheader.i: ; preds = %19, %2 + %.01825.i = phi i64 [ 0, %2 ], [ %.01825.i.be, %19 ] + %.01924.i = phi i1 [ true, %2 ], [ %.01924.i.be, %19 ] %5 = getelementptr inbounds nuw [624 x i32], ptr %3, i64 0, i64 %.01825.i %6 = load i32, ptr %5, align 4, !tbaa !3 %7 = zext i32 %6 to i64 %8 = getelementptr inbounds nuw [624 x i64], ptr %0, i64 0, i64 %.01825.i store i64 %7, ptr %8, align 8, !tbaa !83 - %9 = trunc nuw i8 %.01924.i to i1 - br i1 %9, label %12, label %17 + br i1 %.01924.i, label %10, label %17 -10: ; preds = %17 - %11 = trunc nuw i8 %.1.i to i1 - br i1 %11, label %19, label %_ZNSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EE4seedISt8seed_seqEENSt9enable_ifIXsr8__detail13__is_seed_seqIT_S0_mEE5valueEvE4typeERS4_.exit +10: ; preds = %10 + br i1 %.not.i, label %15, label %_ZNSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EE4seedISt8seed_seqEENSt9enable_ifIXsr8__detail13__is_seed_seqIT_S0_mEE5valueEvE4typeERS4_.exit 12: ; preds = %.preheader.i - %13 = icmp eq i64 %.01825.i, 0 - br i1 %13, label %14, label %16 - -14: ; preds = %12 - %15 = load i64, ptr %0, align 8, !tbaa !83 - %.not20.i = icmp ult i64 %15, 2147483648 - %spec.select.i = select i1 %.not20.i, i8 %.01924.i, i8 0 - br label %17 - -16: ; preds = %12 + %11 = icmp eq i64 %.01825.i, 0 + %12 = load i64, ptr %0, align 8 + %.not20.i = icmp ult i64 %12, 2147483648 %.not.i = icmp eq i32 %6, 0 - %spec.select21.i = select i1 %.not.i, i8 %.01924.i, i8 0 - br label %17 + %.1.shrunk.i = select i1 %11, i1 %.not20.i, i1 %.not.i + %13 = add nuw nsw i64 %.01825.i, 1 + %exitcond.not.i = icmp eq i64 %13, 624 + br i1 %exitcond.not.i, label %9, label %.preheader.i.backedge -17: ; preds = %16, %14, %.preheader.i - %.1.i = phi i8 [ 0, %.preheader.i ], [ %spec.select.i, %14 ], [ %spec.select21.i, %16 ] - %18 = add nuw nsw i64 %.01825.i, 1 - %exitcond.not.i = icmp eq i64 %18, 624 - br i1 %exitcond.not.i, label %10, label %.preheader.i, !llvm.loop !276 +17: ; preds = %.preheader.i + %14 = add nuw nsw i64 %.01825.i, 1 + %exitcond.not27.i = icmp eq i64 %14, 624 + br i1 %exitcond.not27.i, label %_ZNSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EE4seedISt8seed_seqEENSt9enable_ifIXsr8__detail13__is_seed_seqIT_S0_mEE5valueEvE4typeERS4_.exit, label %19 -19: ; preds = %10 +19: ; preds = %17, %10 + %.01825.i.be = phi i64 [ %13, %10 ], [ %14, %.thread.i ] + %.01924.i.be = phi i1 [ %.1.shrunk.i, %10 ], [ false, %.thread.i ] + br label %.preheader.i, !llvm.loop !276 + +15: ; preds = %9 store i64 2147483648, ptr %0, align 8, !tbaa !83 br label %_ZNSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EE4seedISt8seed_seqEENSt9enable_ifIXsr8__detail13__is_seed_seqIT_S0_mEE5valueEvE4typeERS4_.exit -_ZNSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EE4seedISt8seed_seqEENSt9enable_ifIXsr8__detail13__is_seed_seqIT_S0_mEE5valueEvE4typeERS4_.exit: ; preds = %10, %19 - %20 = getelementptr inbounds nuw i8, ptr %0, i64 4992 +_ZNSt23mersenne_twister_engineImLm32ELm624ELm397ELm31ELm2567483615ELm11ELm4294967295ELm7ELm2636928640ELm15ELm4022730752ELm18ELm1812433253EE4seedISt8seed_seqEENSt9enable_ifIXsr8__detail13__is_seed_seqIT_S0_mEE5valueEvE4typeERS4_.exit: ; preds = %17, %10, %15 + %16 = getelementptr inbounds nuw i8, ptr %0, i64 4992 store i64 624, ptr %20, align 8, !tbaa !277 call void @llvm.lifetime.end.p0(i64 2496, ptr nonnull %3) #47 ret void @@ -128498,7 +128495,7 @@ select.unfold.i.i.i: ; preds = %_ZNKSt7__cxx119sub_ br i1 %.old2.i, label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit, label %65 65: ; preds = %select.unfold.i.i.i, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i - %66 = icmp eq i64 %.sroa.4.2.i.i.i, %.sroa.4.2.i3.i.i + %67 = icmp eq i64 %.sroa.4.2.i.i.i, %.sroa.4.2.i3.i.i br label %_ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit _ZNSt7__cxx11eqIN9__gnu_cxx17__normal_iteratorIPKcNS_12basic_stringIcSt11char_traitsIcESaIcEEEEEEEbRKNS_9sub_matchIT_EESF_.exit: ; preds = %65, %select.unfold.i.i.i, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i, %9, %11, %15, %21, %2 diff --git a/bench/curl/optimized/cf-https-connect.ll b/bench/curl/optimized/cf-https-connect.ll index c7fc8d3dbf2..3eb0eb0a8cc 100644 --- a/bench/curl/optimized/cf-https-connect.ll +++ b/bench/curl/optimized/cf-https-connect.ll @@ -1011,7 +1011,7 @@ cf_hc_baller_is_active.exit.thread: ; preds = %14, %32, %24, %cf_h br i1 %exitcond73.not, label %.loopexit, label %50, !llvm.loop !125 .loopexit: ; preds = %50, %._crit_edge.thread, %._crit_edge, %._crit_edge64 - %54 = phi i8 [ %46, %._crit_edge64 ], [ 1, %._crit_edge ], [ 1, %._crit_edge.thread ], [ 1, %50 ] + %54 = phi i32 [ 0, %._crit_edge64 ], [ 1, %._crit_edge ], [ 1, %._crit_edge.thread ], [ 1, %50 ] %.2 = phi i32 [ 0, %._crit_edge64 ], [ 0, %._crit_edge ], [ 0, %._crit_edge.thread ], [ %spec.select, %50 ] %.not52 = icmp eq ptr %1, null br i1 %.not52, label %75, label %55 @@ -1049,9 +1049,8 @@ cf_hc_baller_is_active.exit.thread: ; preds = %14, %32, %24, %cf_h br i1 %72, label %73, label %75 73: ; preds = %68 - %74 = zext nneg i8 %54 to i32 - call void (ptr, ptr, ptr, ...) @Curl_trc_cf_infof(ptr noundef nonnull %1, ptr noundef nonnull %0, ptr noundef nonnull @.str.13, i32 noundef %.2, i32 noundef %74) #4 - br label %75 + call void (ptr, ptr, ptr, ...) @Curl_trc_cf_infof(ptr noundef nonnull %1, ptr noundef nonnull %0, ptr noundef nonnull @.str.13, i32 noundef %.2, i32 noundef %54) #4 + br label %74 75: ; preds = %.loopexit, %55, %62, %67, %68, %73, %13 %.0 = phi i32 [ 0, %13 ], [ %.2, %73 ], [ %.2, %68 ], [ %.2, %67 ], [ %.2, %62 ], [ %.2, %55 ], [ %.2, %.loopexit ] diff --git a/bench/cvc5/optimized/sygus_sampler.ll b/bench/cvc5/optimized/sygus_sampler.ll index 0cf3234f687..ab80cb23b54 100644 --- a/bench/cvc5/optimized/sygus_sampler.ll +++ b/bench/cvc5/optimized/sygus_sampler.ll @@ -10753,14 +10753,14 @@ _ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit: ; preds = %20, %23, %29 %33 = getelementptr inbounds nuw i8, ptr %0, i64 360 %34 = load ptr, ptr %33, align 8, !tbaa !86 %35 = getelementptr inbounds nuw i8, ptr %0, i64 344 - %.not66 = icmp eq ptr %34, %35 + %.not5168 = icmp eq ptr %34, %35 %.pre = load ptr, ptr %3, align 8, !tbaa !96 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %3, i64 8 - %.pre80 = load ptr, ptr %.phi.trans.insert, align 8 + %.pre82 = load ptr, ptr %.phi.trans.insert, align 8 br i1 %.not66, label %.critedge35, label %.lr.ph69 .lr.ph69: ; preds = %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit - %36 = ptrtoint ptr %.pre80 to i64 + %36 = ptrtoint ptr %.pre82 to i64 %37 = ptrtoint ptr %.pre to i64 %38 = sub i64 %36, %37 %.fr = freeze i64 %38 @@ -10777,22 +10777,22 @@ _ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit: ; preds = %20, %23, %29 br i1 %40, label %.lr.ph69.split.us, label %.lr.ph69.split .lr.ph69.split.us: ; preds = %.lr.ph69, %.critedge.us - %.sroa.042.067.us = phi ptr [ %50, %.critedge.us ], [ %34, %.lr.ph69 ] + %.sroa.042.069.us = phi ptr [ %50, %.critedge.us ], [ %34, %.lr.ph69 ] %46 = getelementptr inbounds nuw i8, ptr %.sroa.042.067.us, i64 40 %47 = load ptr, ptr %46, align 8, !tbaa !124 %48 = getelementptr inbounds nuw i8, ptr %.sroa.042.067.us, i64 48 %49 = load ptr, ptr %48, align 8, !tbaa !124 - %.not5063.us = icmp eq ptr %47, %49 + %.not5265.us = icmp eq ptr %47, %49 br i1 %.not5063.us, label %.critedge.us, label %.lr.ph.i.i.i.us.us .critedge.us: ; preds = %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit.thread.us.us, %.lr.ph69.split.us %50 = call noundef ptr @_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base(ptr noundef %.sroa.042.067.us) #29 - %.not.us = icmp eq ptr %50, %35 + %.not51.us = icmp eq ptr %50, %35 br i1 %.not.us, label %.critedge35, label %.lr.ph69.split.us .lr.ph.i.i.i.us.us: ; preds = %.lr.ph69.split.us, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit.thread.us.us - %.03065.us.us = phi i1 [ %.23249.us.us, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit.thread.us.us ], [ false, %.lr.ph69.split.us ] - %.sroa.038.064.us.us = phi ptr [ %83, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit.thread.us.us ], [ %47, %.lr.ph69.split.us ] + %.03067.us.us = phi i1 [ %.23249.us.us, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit.thread.us.us ], [ false, %.lr.ph69.split.us ] + %.sroa.038.066.us.us = phi ptr [ %83, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit.thread.us.us ], [ %47, %.lr.ph69.split.us ] %51 = load ptr, ptr %.sroa.038.064.us.us, align 8, !tbaa !98 br label %52 @@ -10868,18 +10868,17 @@ _ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb1EEESt %82 = getelementptr inbounds nuw i8, ptr %.sroa.032.051.i.i.i.us.us, i64 8 br label %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit.us.us -_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit.us.us: ; preds = %52, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit.us.us.loopexit.split.loop.exit84, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit.us.us.loopexit.split.loop.exit86, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit.us.us.loopexit.split.loop.exit88, %._crit_edge._crit_edge57.i.i.i.us.us, %._crit_edge._crit_edge.i.i.i.us.us, %71 +_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit.us.us: ; preds = %52, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit.us.us.loopexit.split.loop.exit86, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit.us.us.loopexit.split.loop.exit88, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit.us.us.loopexit.split.loop.exit90, %._crit_edge._crit_edge57.i.i.i.us.us, %._crit_edge._crit_edge.i.i.i.us.us, %71 %.sroa.08.0.in.sroa.speculated.i.i.i.us.us = phi ptr [ %scevgep.i.i.i, %71 ], [ %.sroa.032.1.i.i.i.us.us, %._crit_edge._crit_edge.i.i.i.us.us ], [ %spec.select.i.i.i.us.us, %._crit_edge._crit_edge57.i.i.i.us.us ], [ %80, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit.us.us.loopexit.split.loop.exit84 ], [ %81, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit.us.us.loopexit.split.loop.exit86 ], [ %82, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit.us.us.loopexit.split.loop.exit88 ], [ %.sroa.032.051.i.i.i.us.us, %52 ] - %.not51.us.us = icmp ne ptr %.sroa.08.0.in.sroa.speculated.i.i.i.us.us, %.pre80 - %not..not51.us.us = xor i1 %.not51.us.us, true - %.232.us.us = select i1 %not..not51.us.us, i1 true, i1 %.03065.us.us - %cond4.not.us.us = select i1 %.not51.us.us, i1 %.03065.us.us, i1 false - br i1 %cond4.not.us.us, label %.critedge35, label %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit.thread.us.us + %.not53.us.us = icmp eq ptr %.sroa.08.0.in.sroa.speculated.i.i.i.us.us, %.pre80 + %.030.not.us.us = xor i1 %.03065.us.us, true + %brmerge.us.us = or i1 %.not51.us.us, %.030.not.us.us + br i1 %brmerge.us.us, label %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit.thread.us.us, label %.critedge35 _ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit.thread.us.us: ; preds = %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit.us.us, %._crit_edge.loopexit.i.i.i.us.us - %.23249.us.us = phi i1 [ %.232.us.us, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit.us.us ], [ true, %._crit_edge.loopexit.i.i.i.us.us ] + %.23250.us.us = phi i1 [ %.not53.us.us, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit.us.us ], [ true, %._crit_edge.loopexit.i.i.i.us.us ] %83 = getelementptr inbounds nuw i8, ptr %.sroa.038.064.us.us, i64 8 - %.not50.us.us = icmp eq ptr %83, %49 + %.not52.us.us = icmp eq ptr %83, %49 br i1 %.not50.us.us, label %.critedge.us, label %.lr.ph.i.i.i.us.us 84: ; preds = %18 @@ -10894,17 +10893,17 @@ _ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb1EEESt br label %129 .lr.ph69.split: ; preds = %.lr.ph69, %.critedge - %.sroa.042.067 = phi ptr [ %107, %.critedge ], [ %34, %.lr.ph69 ] + %.sroa.042.069 = phi ptr [ %107, %.critedge ], [ %34, %.lr.ph69 ] %88 = getelementptr inbounds nuw i8, ptr %.sroa.042.067, i64 40 %89 = load ptr, ptr %88, align 8, !tbaa !124 %90 = getelementptr inbounds nuw i8, ptr %.sroa.042.067, i64 48 %91 = load ptr, ptr %90, align 8, !tbaa !124 - %.not5063 = icmp eq ptr %89, %91 + %.not5265 = icmp eq ptr %89, %91 br i1 %.not5063, label %.critedge, label %._crit_edge.i.i.i ._crit_edge.i.i.i: ; preds = %.lr.ph69.split, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit.thread - %.03065 = phi i1 [ %.23249, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit.thread ], [ false, %.lr.ph69.split ] - %.sroa.038.064 = phi ptr [ %106, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit.thread ], [ %89, %.lr.ph69.split ] + %.03067 = phi i1 [ %.23249, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit.thread ], [ false, %.lr.ph69.split ] + %.sroa.038.066 = phi ptr [ %106, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit.thread ], [ %89, %.lr.ph69.split ] switch i64 %42, label %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit.thread [ i64 3, label %92 i64 2, label %._crit_edge._crit_edge.i.i.i @@ -10946,25 +10945,24 @@ _ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb1EEESt _ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit: ; preds = %102, %96, %92 %.sroa.08.0.in.sroa.speculated.i.i.i = phi ptr [ %.pre, %92 ], [ %.sroa.032.1.i.i.i, %96 ], [ %spec.select.i.i.i, %102 ] - %.not51 = icmp ne ptr %.sroa.08.0.in.sroa.speculated.i.i.i, %.pre80 - %not..not51 = xor i1 %.not51, true - %.232 = select i1 %not..not51, i1 true, i1 %.03065 - %cond4.not = select i1 %.not51, i1 %.03065, i1 false - br i1 %cond4.not, label %.critedge35, label %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit.thread + %.not53 = icmp eq ptr %.sroa.08.0.in.sroa.speculated.i.i.i, %.pre80 + %.030.not = xor i1 %.03065, true + %brmerge = or i1 %.not51, %.030.not + br i1 %brmerge, label %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit.thread, label %.critedge35 _ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit.thread: ; preds = %._crit_edge.i.i.i, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit - %.23249 = phi i1 [ %.232, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit ], [ true, %._crit_edge.i.i.i ] + %.23250 = phi i1 [ %.not53, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit ], [ true, %._crit_edge.i.i.i ] %106 = getelementptr inbounds nuw i8, ptr %.sroa.038.064, i64 8 - %.not50 = icmp eq ptr %106, %91 + %.not52 = icmp eq ptr %106, %91 br i1 %.not50, label %.critedge, label %._crit_edge.i.i.i .critedge: ; preds = %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit.thread, %.lr.ph69.split %107 = call noundef ptr @_ZSt18_Rb_tree_incrementPSt18_Rb_tree_node_base(ptr noundef %.sroa.042.067) #29 - %.not = icmp eq ptr %107, %35 + %.not51 = icmp eq ptr %107, %35 br i1 %.not, label %.critedge35, label %.lr.ph69.split .critedge35: ; preds = %.critedge, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit, %.critedge.us, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit.us.us, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit - %.not54 = phi i1 [ true, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit ], [ false, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit.us.us ], [ true, %.critedge.us ], [ false, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit ], [ true, %.critedge ] + %.not5156 = phi i1 [ true, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit ], [ false, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit.us.us ], [ true, %.critedge.us ], [ false, %_ZSt4findIN9__gnu_cxx17__normal_iteratorIPN4cvc58internal12NodeTemplateILb1EEESt6vectorIS5_SaIS5_EEEES5_ET_SB_SB_RKT0_.exit ], [ true, %.critedge ] %.not4.i.i.i.i = icmp eq ptr %.pre, %.pre80 br i1 %.not4.i.i.i.i, label %_ZSt8_DestroyIPN4cvc58internal12NodeTemplateILb1EEES3_EvT_S5_RSaIT0_E.exit.i, label %.lr.ph.i.i.i.i diff --git a/bench/cvc5/optimized/theory_arrays_type_rules.ll b/bench/cvc5/optimized/theory_arrays_type_rules.ll index ba37e045879..fa2c7e4c640 100644 --- a/bench/cvc5/optimized/theory_arrays_type_rules.ll +++ b/bench/cvc5/optimized/theory_arrays_type_rules.ll @@ -1760,38 +1760,36 @@ define hidden noundef zeroext i1 @_ZN4cvc58internal6theory6arrays18ArrayStoreTyp %61 = load ptr, ptr %3, align 8, !tbaa !14 %62 = getelementptr inbounds nuw i8, ptr %61, i64 8 %63 = load i64, ptr %62, align 8 - %64 = trunc i64 %63 to i32 - %65 = and i32 %64, 1023 - %66 = icmp eq i32 %65, 216 - br i1 %66, label %67, label %.critedge.preheader - -67: ; preds = %60 - %68 = call noundef i32 @_ZN4cvc58internal4kind10metaKindOfENS1_6Kind_tE(i32 noundef 216) - %69 = icmp eq i32 %68, 2 - %spec.select.i.i67 = select i1 %69, i64 2, i64 1 - %70 = getelementptr inbounds nuw i8, ptr %61, i64 24 - %71 = getelementptr inbounds nuw [0 x ptr], ptr %70, i64 0, i64 %spec.select.i.i67 - %72 = load ptr, ptr %71, align 8, !tbaa !19, !noalias !109 - %73 = load i64, ptr %72, align 8 - %74 = and i64 %73, 1099511627775 - %75 = load ptr, ptr %4, align 8, !tbaa !14 - %76 = load i64, ptr %75, align 8 - %77 = and i64 %76, 1099511627775 - %.not = icmp samesign ult i64 %74, %77 + %64 = and i64 %63, 1023 + %65 = icmp eq i64 %64, 216 + br i1 %65, label %66, label %.critedge.preheader + +66: ; preds = %60 + %67 = call noundef i32 @_ZN4cvc58internal4kind10metaKindOfENS1_6Kind_tE(i32 noundef 216) + %68 = icmp eq i32 %67, 2 + %spec.select.i.i67 = select i1 %68, i64 2, i64 1 + %69 = getelementptr inbounds nuw i8, ptr %61, i64 24 + %70 = getelementptr inbounds nuw [0 x ptr], ptr %69, i64 0, i64 %spec.select.i.i67 + %71 = load ptr, ptr %70, align 8, !tbaa !19, !noalias !109 + %72 = load i64, ptr %71, align 8 + %73 = and i64 %72, 1099511627775 + %74 = load ptr, ptr %4, align 8, !tbaa !14 + %75 = load i64, ptr %74, align 8 + %76 = and i64 %75, 1099511627775 + %.not = icmp samesign ult i64 %73, %76 br i1 %.not, label %..critedge.preheader_crit_edge, label %280 -..critedge.preheader_crit_edge: ; preds = %67 +..critedge.preheader_crit_edge: ; preds = %66 %.pre = load ptr, ptr %3, align 8, !tbaa !14 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %.pre, i64 8 %.pre94 = load i64, ptr %.phi.trans.insert, align 8 - %.pre98 = trunc i64 %.pre94 to i32 br label %.critedge.preheader .critedge.preheader: ; preds = %..critedge.preheader_crit_edge, %60 - %.pre-phi = phi i32 [ %.pre98, %..critedge.preheader_crit_edge ], [ %64, %60 ] + %77 = phi i64 [ %.pre94, %..critedge.preheader_crit_edge ], [ %63, %60 ] %78 = phi ptr [ %.pre, %..critedge.preheader_crit_edge ], [ %61, %60 ] - %79 = and i32 %.pre-phi, 1023 - %80 = icmp eq i32 %79, 216 + %79 = and i64 %.pre-phi, 1023 + %80 = icmp eq i64 %79, 216 br i1 %80, label %.lr.ph, label %_ZNK4cvc58internal12NodeTemplateILb0EE8getConstINS0_13ArrayStoreAllEEERKT_v.exit .lr.ph: ; preds = %.critedge.preheader, %_ZN4cvc58internal12NodeTemplateILb0EEaSERKS2_.exit @@ -2274,8 +2272,8 @@ _ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit: ; preds = %266, %269, %275 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #17 resume { ptr, i32 } %.pn49.pn.pn.pn.pn.pn.pn.pn.pn -280: ; preds = %67, %2, %56, %58, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit - %.0 = phi i1 [ %.1, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit ], [ false, %58 ], [ false, %56 ], [ false, %2 ], [ false, %67 ] +280: ; preds = %66, %2, %56, %58, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit + %.0 = phi i1 [ %.1, %_ZN4cvc58internal12NodeTemplateILb1EED2Ev.exit ], [ false, %58 ], [ false, %56 ], [ false, %2 ], [ false, %66 ] call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #17 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #17 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #17 diff --git a/bench/darktable/optimized/Cr2Decompressor.ll b/bench/darktable/optimized/Cr2Decompressor.ll index 0432345551a..63331b9e948 100644 --- a/bench/darktable/optimized/Cr2Decompressor.ll +++ b/bench/darktable/optimized/Cr2Decompressor.ll @@ -204,7 +204,6 @@ _ZSt4nextIN8rawspeed21Cr2OutputTileIteratorEET_S2_NSt15iterator_traitsIS2_E15dif %.lcssa228 = phi i32 [ %.sroa.speculated.i.i.i.i.i241, %2 ], [ %40, %_ZN8rawspeed21Cr2OutputTileIteratorppEv.exit ] %.lcssa226 = phi i32 [ 1, %2 ], [ %42, %_ZN8rawspeed21Cr2OutputTileIteratorppEv.exit ] %.lcssa224 = phi i32 [ %13, %2 ], [ %43, %_ZN8rawspeed21Cr2OutputTileIteratorppEv.exit ] - %.lcssa = phi i32 [ %14, %2 ], [ %44, %_ZN8rawspeed21Cr2OutputTileIteratorppEv.exit ] %.pre = add nsw i32 %.sroa.speculated.i.i.i.i.i.lcssa, %.sroa.1951.sroa.12.0.lcssa %18 = icmp sgt i32 %.lcssa231, -1 %19 = icmp sgt i32 %.lcssa233, -1 @@ -267,7 +266,7 @@ _ZN8rawspeed21Cr2OutputTileIteratorppEv.exit: ; preds = %.lr.ph %50 = phi i32 [ %.lcssa228, %_ZSt4nextIN8rawspeed21Cr2OutputTileIteratorEET_S2_NSt15iterator_traitsIS2_E15difference_typeE.exit..critedge_crit_edge ], [ %23, %.lr.ph ] %51 = phi i32 [ %.lcssa226, %_ZSt4nextIN8rawspeed21Cr2OutputTileIteratorEET_S2_NSt15iterator_traitsIS2_E15difference_typeE.exit..critedge_crit_edge ], [ %22, %.lr.ph ] %52 = phi i32 [ %.lcssa224, %_ZSt4nextIN8rawspeed21Cr2OutputTileIteratorEET_S2_NSt15iterator_traitsIS2_E15difference_typeE.exit..critedge_crit_edge ], [ %21, %.lr.ph ] - %53 = phi i32 [ %.lcssa, %_ZSt4nextIN8rawspeed21Cr2OutputTileIteratorEET_S2_NSt15iterator_traitsIS2_E15difference_typeE.exit..critedge_crit_edge ], [ %20, %.lr.ph ] + %53 = phi i32 [ 0, %_ZSt4nextIN8rawspeed21Cr2OutputTileIteratorEET_S2_NSt15iterator_traitsIS2_E15difference_typeE.exit..critedge_crit_edge ], [ %20, %.lr.ph ] %.pre-phi = phi i32 [ %.pre, %_ZSt4nextIN8rawspeed21Cr2OutputTileIteratorEET_S2_NSt15iterator_traitsIS2_E15difference_typeE.exit..critedge_crit_edge ], [ %31, %.lr.ph ] %54 = icmp samesign ult i32 %.sroa.14.0239, %4 tail call void @llvm.assume(i1 %54) diff --git a/bench/darktable/optimized/box_filters.ll b/bench/darktable/optimized/box_filters.ll index e0b1d692d10..0f0cf9f3a36 100644 --- a/bench/darktable/optimized/box_filters.ll +++ b/bench/darktable/optimized/box_filters.ll @@ -99,11 +99,12 @@ _ZL20_alloc_scratch_spacemmmmPm.exit.i: ; preds = %.lr.ph.i.i.i, %8 br i1 %exitcond.not.i.us.i, label %.preheader93.i.us.i.preheader, label %.lr.ph.i.us.i, !llvm.loop !18 .preheader93.i.us.i.preheader: ; preds = %.lr.ph.i.us.i, %26 + %.1100.i.us.i.ph = phi i64 [ 0, %26 ], [ %22, %.lr.ph.i.us.i ] %.sroa.087.198.i.us.i.ph = phi float [ 0.000000e+00, %26 ], [ %31, %.lr.ph.i.us.i ] br label %.preheader93.i.us.i .preheader93.i.us.i: ; preds = %.preheader93.i.us.i.preheader, %32 - %.1100.i.us.i = phi i64 [ %34, %32 ], [ %22, %.preheader93.i.us.i.preheader ] + %.1100.i.us.i = phi i64 [ %34, %32 ], [ %.1100.i.us.i.ph, %.preheader93.i.us.i.preheader ] %.06899.i.us.i = phi i64 [ %42, %32 ], [ 0, %.preheader93.i.us.i.preheader ] %.sroa.087.198.i.us.i = phi float [ %38, %32 ], [ %.sroa.087.198.i.us.i.ph, %.preheader93.i.us.i.preheader ] %exitcond118.not.i.us.i = icmp eq i64 %.06899.i.us.i, %24 @@ -312,12 +313,13 @@ _ZL9_load_addILm2ELb0EEvPfS0_PKfS0_.exit.critedge.i.us.i: ; preds = %_ZL9_load_a br i1 %exitcond.not.i.us.i42, label %.preheader112.i.us.i.preheader, label %_ZL9_load_addILm2ELb0EEvPfS0_PKfS0_.exit.critedge.i.us.i, !llvm.loop !61 .preheader112.i.us.i.preheader: ; preds = %_ZL9_load_addILm2ELb0EEvPfS0_PKfS0_.exit.critedge.i.us.i, %105 + %.1125.i.us.i.ph = phi i64 [ 0, %105 ], [ %101, %_ZL9_load_addILm2ELb0EEvPfS0_PKfS0_.exit.critedge.i.us.i ] %.ph = phi float [ 0.000000e+00, %105 ], [ %113, %_ZL9_load_addILm2ELb0EEvPfS0_PKfS0_.exit.critedge.i.us.i ] %.ph265 = phi float [ 0.000000e+00, %105 ], [ %116, %_ZL9_load_addILm2ELb0EEvPfS0_PKfS0_.exit.critedge.i.us.i ] br label %.preheader112.i.us.i .preheader112.i.us.i: ; preds = %.preheader112.i.us.i.preheader, %_ZL9_load_addILm2ELb0EEvPfS0_PKfS0_.exit81.critedge.i.us.i - %.1125.i.us.i = phi i64 [ %120, %_ZL9_load_addILm2ELb0EEvPfS0_PKfS0_.exit81.critedge.i.us.i ], [ %101, %.preheader112.i.us.i.preheader ] + %.1125.i.us.i = phi i64 [ %120, %_ZL9_load_addILm2ELb0EEvPfS0_PKfS0_.exit81.critedge.i.us.i ], [ %.1125.i.us.i.ph, %.preheader112.i.us.i.preheader ] %.068124.i.us.i = phi i64 [ %137, %_ZL9_load_addILm2ELb0EEvPfS0_PKfS0_.exit81.critedge.i.us.i ], [ 0, %.preheader112.i.us.i.preheader ] %117 = phi float [ %127, %_ZL9_load_addILm2ELb0EEvPfS0_PKfS0_.exit81.critedge.i.us.i ], [ %.ph, %.preheader112.i.us.i.preheader ] %118 = phi float [ %131, %_ZL9_load_addILm2ELb0EEvPfS0_PKfS0_.exit81.critedge.i.us.i ], [ %.ph265, %.preheader112.i.us.i.preheader ] @@ -578,10 +580,11 @@ _ZL9_load_addILm4ELb0EEvPfS0_PKfS0_.exit.i.us.i: ; preds = %228 br i1 %exitcond.not.i.us.i71, label %.preheader102.i.us.i.preheader, label %.lr.ph.i.us.i70, !llvm.loop !127 .preheader102.i.us.i.preheader: ; preds = %_ZL9_load_addILm4ELb0EEvPfS0_PKfS0_.exit.i.us.i, %224 + %.1108.i.us.i.ph = phi i64 [ 0, %224 ], [ %220, %_ZL9_load_addILm4ELb0EEvPfS0_PKfS0_.exit.i.us.i ] br label %.preheader102.i.us.i .preheader102.i.us.i: ; preds = %.preheader102.i.us.i.preheader, %_ZL13_store_scaledILm4EEvPfPKff.exit.i.us.i - %.1108.i.us.i = phi i64 [ %248, %_ZL13_store_scaledILm4EEvPfPKff.exit.i.us.i ], [ %220, %.preheader102.i.us.i.preheader ] + %.1108.i.us.i = phi i64 [ %248, %_ZL13_store_scaledILm4EEvPfPKff.exit.i.us.i ], [ %.1108.i.us.i.ph, %.preheader102.i.us.i.preheader ] %.068107.i.us.i = phi i64 [ %258, %_ZL13_store_scaledILm4EEvPfPKff.exit.i.us.i ], [ 0, %.preheader102.i.us.i.preheader ] %exitcond121.not.i.us.i = icmp eq i64 %.068107.i.us.i, %222 br i1 %exitcond121.not.i.us.i, label %.critedge.i.us.i75, label %236 @@ -911,12 +914,13 @@ _ZL9_load_addILm2ELb1EEvPfS0_PKfS0_.exit.critedge.i.us.i: ; preds = %_ZL9_load_a br i1 %exitcond.not.i.us.i106, label %.preheader143.i.us.i.preheader, label %_ZL9_load_addILm2ELb1EEvPfS0_PKfS0_.exit.critedge.i.us.i, !llvm.loop !219 .preheader143.i.us.i.preheader: ; preds = %_ZL9_load_addILm2ELb1EEvPfS0_PKfS0_.exit.critedge.i.us.i, %356 + %.1165.i.us.i.ph = phi i64 [ 0, %356 ], [ %352, %_ZL9_load_addILm2ELb1EEvPfS0_PKfS0_.exit.critedge.i.us.i ] %.ph280 = phi float [ 0.000000e+00, %356 ], [ %364, %_ZL9_load_addILm2ELb1EEvPfS0_PKfS0_.exit.critedge.i.us.i ] %.ph281 = phi float [ 0.000000e+00, %356 ], [ %367, %_ZL9_load_addILm2ELb1EEvPfS0_PKfS0_.exit.critedge.i.us.i ] br label %.preheader143.i.us.i .preheader143.i.us.i: ; preds = %.preheader143.i.us.i.preheader, %_ZL9_load_addILm2ELb1EEvPfS0_PKfS0_.exit81.critedge.i.us.i - %.1165.i.us.i = phi i64 [ %371, %_ZL9_load_addILm2ELb1EEvPfS0_PKfS0_.exit81.critedge.i.us.i ], [ %352, %.preheader143.i.us.i.preheader ] + %.1165.i.us.i = phi i64 [ %371, %_ZL9_load_addILm2ELb1EEvPfS0_PKfS0_.exit81.critedge.i.us.i ], [ %.1165.i.us.i.ph, %.preheader143.i.us.i.preheader ] %.068164.i.us.i = phi i64 [ %388, %_ZL9_load_addILm2ELb1EEvPfS0_PKfS0_.exit81.critedge.i.us.i ], [ 0, %.preheader143.i.us.i.preheader ] %368 = phi float [ %378, %_ZL9_load_addILm2ELb1EEvPfS0_PKfS0_.exit81.critedge.i.us.i ], [ %.ph280, %.preheader143.i.us.i.preheader ] %369 = phi float [ %382, %_ZL9_load_addILm2ELb1EEvPfS0_PKfS0_.exit81.critedge.i.us.i ], [ %.ph281, %.preheader143.i.us.i.preheader ] @@ -2021,10 +2025,11 @@ _ZL9_load_addILm16ELb1EEvPfS0_PKfS0_.exit.i: ; preds = %29 br i1 %exitcond.not.i, label %.preheader128.i.preheader, label %.lr.ph135.i, !llvm.loop !499 .preheader128.i.preheader: ; preds = %_ZL9_load_addILm16ELb1EEvPfS0_PKfS0_.exit.i, %._crit_edge.i + %.1138.i.ph = phi i64 [ 0, %._crit_edge.i ], [ %12, %_ZL9_load_addILm16ELb1EEvPfS0_PKfS0_.exit.i ] br label %.preheader128.i .preheader128.i: ; preds = %.preheader128.i.preheader, %_ZL13_store_scaledILm16EEvPfPKff.exit.i - %.1138.i = phi i64 [ %57, %_ZL13_store_scaledILm16EEvPfPKff.exit.i ], [ %12, %.preheader128.i.preheader ] + %.1138.i = phi i64 [ %57, %_ZL13_store_scaledILm16EEvPfPKff.exit.i ], [ %.1138.i.ph, %.preheader128.i.preheader ] %.085137.i = phi i64 [ %68, %_ZL13_store_scaledILm16EEvPfPKff.exit.i ], [ 0, %.preheader128.i.preheader ] %exitcond154.not.i = icmp eq i64 %.085137.i, %13 br i1 %exitcond154.not.i, label %.critedge.i, label %40 @@ -2353,10 +2358,11 @@ _ZL9_load_addILm4ELb1EEvPfS0_PKfS0_.exit.i: ; preds = %170 br i1 %exitcond.not.i46, label %.preheader128.i47.preheader, label %.lr.ph135.i41, !llvm.loop !612 .preheader128.i47.preheader: ; preds = %_ZL9_load_addILm4ELb1EEvPfS0_PKfS0_.exit.i, %._crit_edge.i38 + %.1138.i48.ph = phi i64 [ 0, %._crit_edge.i38 ], [ %12, %_ZL9_load_addILm4ELb1EEvPfS0_PKfS0_.exit.i ] br label %.preheader128.i47 .preheader128.i47: ; preds = %.preheader128.i47.preheader, %_ZL13_store_scaledILm4EEvPfPKff.exit.i - %.1138.i48 = phi i64 [ %198, %_ZL13_store_scaledILm4EEvPfPKff.exit.i ], [ %12, %.preheader128.i47.preheader ] + %.1138.i48 = phi i64 [ %198, %_ZL13_store_scaledILm4EEvPfPKff.exit.i ], [ %.1138.i48.ph, %.preheader128.i47.preheader ] %.085137.i49 = phi i64 [ %209, %_ZL13_store_scaledILm4EEvPfPKff.exit.i ], [ 0, %.preheader128.i47.preheader ] %exitcond154.not.i50 = icmp eq i64 %.085137.i49, %13 br i1 %exitcond154.not.i50, label %.critedge.i58, label %181 @@ -2657,11 +2663,12 @@ _ZL14_blur_verticalILm4ELb1EEvPfmmmS0_.exit: ; preds = %_ZL13_store_scaledI br i1 %exitcond.not.i94, label %.preheader115.i.preheader, label %.critedge96.i, !llvm.loop !714 .preheader115.i.preheader: ; preds = %.critedge96.i, %.critedge96.preheader.i + %.1126.i.ph = phi i64 [ 0, %.critedge96.preheader.i ], [ %12, %.critedge96.i ] %.sroa.0109.1124.i.ph = phi float [ 0.000000e+00, %.critedge96.preheader.i ], [ %313, %.critedge96.i ] br label %.preheader115.i .preheader115.i: ; preds = %.preheader115.i.preheader, %314 - %.1126.i = phi i64 [ %316, %314 ], [ %12, %.preheader115.i.preheader ] + %.1126.i = phi i64 [ %316, %314 ], [ %.1126.i.ph, %.preheader115.i.preheader ] %.085125.i = phi i64 [ %327, %314 ], [ 0, %.preheader115.i.preheader ] %.sroa.0109.1124.i = phi float [ %322, %314 ], [ %.sroa.0109.1124.i.ph, %.preheader115.i.preheader ] %exitcond147.not.i = icmp eq i64 %.085125.i, %13 @@ -4149,10 +4156,11 @@ _ZL9_load_addILm16ELb0EEvPfS0_PKfS0_.exit.i: ; preds = %27 br i1 %exitcond.not.i, label %.preheader121.i.preheader, label %.lr.ph128.i, !llvm.loop !976 .preheader121.i.preheader: ; preds = %_ZL9_load_addILm16ELb0EEvPfS0_PKfS0_.exit.i, %._crit_edge.i + %.1131.i.ph = phi i64 [ 0, %._crit_edge.i ], [ %10, %_ZL9_load_addILm16ELb0EEvPfS0_PKfS0_.exit.i ] br label %.preheader121.i .preheader121.i: ; preds = %.preheader121.i.preheader, %_ZL13_store_scaledILm16EEvPfPKff.exit.i - %.1131.i = phi i64 [ %49, %_ZL13_store_scaledILm16EEvPfPKff.exit.i ], [ %10, %.preheader121.i.preheader ] + %.1131.i = phi i64 [ %49, %_ZL13_store_scaledILm16EEvPfPKff.exit.i ], [ %.1131.i.ph, %.preheader121.i.preheader ] %.085130.i = phi i64 [ %60, %_ZL13_store_scaledILm16EEvPfPKff.exit.i ], [ 0, %.preheader121.i.preheader ] %exitcond147.not.i = icmp eq i64 %.085130.i, %11 br i1 %exitcond147.not.i, label %.critedge.i, label %35 @@ -4453,10 +4461,11 @@ _ZL9_load_addILm4ELb0EEvPfS0_PKfS0_.exit.i: ; preds = %153 br i1 %exitcond.not.i46, label %.preheader121.i47.preheader, label %.lr.ph128.i41, !llvm.loop !1067 .preheader121.i47.preheader: ; preds = %_ZL9_load_addILm4ELb0EEvPfS0_PKfS0_.exit.i, %._crit_edge.i38 + %.1131.i48.ph = phi i64 [ 0, %._crit_edge.i38 ], [ %10, %_ZL9_load_addILm4ELb0EEvPfS0_PKfS0_.exit.i ] br label %.preheader121.i47 .preheader121.i47: ; preds = %.preheader121.i47.preheader, %_ZL13_store_scaledILm4EEvPfPKff.exit.i - %.1131.i48 = phi i64 [ %175, %_ZL13_store_scaledILm4EEvPfPKff.exit.i ], [ %10, %.preheader121.i47.preheader ] + %.1131.i48 = phi i64 [ %175, %_ZL13_store_scaledILm4EEvPfPKff.exit.i ], [ %.1131.i48.ph, %.preheader121.i47.preheader ] %.085130.i49 = phi i64 [ %186, %_ZL13_store_scaledILm4EEvPfPKff.exit.i ], [ 0, %.preheader121.i47.preheader ] %exitcond147.not.i50 = icmp eq i64 %.085130.i49, %11 br i1 %exitcond147.not.i50, label %.critedge.i58, label %161 @@ -4736,11 +4745,12 @@ _ZL14_blur_verticalILm4ELb0EEvPfmmmS0_.exit: ; preds = %_ZL13_store_scaledI br i1 %exitcond.not.i94, label %.preheader111.i.preheader, label %.critedge96.i, !llvm.loop !1152 .preheader111.i.preheader: ; preds = %.critedge96.i, %.critedge96.preheader.i + %.1122.i.ph = phi i64 [ 0, %.critedge96.preheader.i ], [ %10, %.critedge96.i ] %.sroa.0105.1120.i.ph = phi float [ 0.000000e+00, %.critedge96.preheader.i ], [ %281, %.critedge96.i ] br label %.preheader111.i .preheader111.i: ; preds = %.preheader111.i.preheader, %282 - %.1122.i = phi i64 [ %284, %282 ], [ %10, %.preheader111.i.preheader ] + %.1122.i = phi i64 [ %284, %282 ], [ %.1122.i.ph, %.preheader111.i.preheader ] %.085121.i = phi i64 [ %295, %282 ], [ 0, %.preheader111.i.preheader ] %.sroa.0105.1120.i = phi float [ %290, %282 ], [ %.sroa.0105.1120.i.ph, %.preheader111.i.preheader ] %exitcond143.not.i = icmp eq i64 %.085121.i, %11 diff --git a/bench/delta-rs/optimized/2tf2q4cmcrkztukf.ll b/bench/delta-rs/optimized/2tf2q4cmcrkztukf.ll index 483b0738f8c..35a8e3168d5 100644 --- a/bench/delta-rs/optimized/2tf2q4cmcrkztukf.ll +++ b/bench/delta-rs/optimized/2tf2q4cmcrkztukf.ll @@ -4179,9 +4179,9 @@ define hidden void @_ZN12object_store4path4Path5parse17hae21295321ec3d44E(ptr no br label %43 43: ; preds = %"_ZN4core3ptr56drop_in_place$LT$object_store..path..parts..PathPart$GT$17hc3e76e1f6d08236fE.exit.us", %.split.us - %.sroa.21.0264.us = phi i64 [ %.sroa.031.sroa.8.0.copyload, %.split.us ], [ %.sroa.21.2.us, %"_ZN4core3ptr56drop_in_place$LT$object_store..path..parts..PathPart$GT$17hc3e76e1f6d08236fE.exit.us" ] - %.sroa.33103.0263.us = phi i64 [ %.sroa.031.sroa.10.0.copyload, %.split.us ], [ %.sroa.33103.2.us, %"_ZN4core3ptr56drop_in_place$LT$object_store..path..parts..PathPart$GT$17hc3e76e1f6d08236fE.exit.us" ] - %.sroa.43.0261.us = phi i64 [ 0, %.split.us ], [ %.sroa.43.2.us, %"_ZN4core3ptr56drop_in_place$LT$object_store..path..parts..PathPart$GT$17hc3e76e1f6d08236fE.exit.us" ] + %.sroa.21.0263.us = phi i64 [ %.sroa.031.sroa.8.0.copyload, %.split.us ], [ %.sroa.21.2.us, %"_ZN4core3ptr56drop_in_place$LT$object_store..path..parts..PathPart$GT$17hc3e76e1f6d08236fE.exit.us" ] + %.sroa.33103.0262.us = phi i64 [ %.sroa.031.sroa.10.0.copyload, %.split.us ], [ %.sroa.33103.2.us, %"_ZN4core3ptr56drop_in_place$LT$object_store..path..parts..PathPart$GT$17hc3e76e1f6d08236fE.exit.us" ] + %.sroa.43.0260.us = phi i64 [ 0, %.split.us ], [ %.sroa.43.2.us, %"_ZN4core3ptr56drop_in_place$LT$object_store..path..parts..PathPart$GT$17hc3e76e1f6d08236fE.exit.us" ] %44 = icmp eq i64 %.sroa.33103.0263.us, -1 %45 = add i64 %.sroa.21.0264.us, %37 %.not3754.i.us = icmp ult i64 %45, %.sroa.031.sroa.13.0.copyload @@ -4343,7 +4343,7 @@ define hidden void @_ZN12object_store4path4Path5parse17hae21295321ec3d44E(ptr no br i1 %.not.i.us, label %.preheader201.us, label %125 125: ; preds = %119 - %reass.sub291 = sub i64 %93, %.sroa.031.sroa.4.0.copyload + %reass.sub290 = sub i64 %93, %.sroa.031.sroa.4.0.copyload %126 = add i64 %reass.sub291, 1 %127 = add i64 %126, %.sroa.04.0.i.us br label %130 @@ -4427,11 +4427,11 @@ define hidden void @_ZN12object_store4path4Path5parse17hae21295321ec3d44E(ptr no br label %.body .preheader.i.i: ; preds = %.preheader.i.i.preheader, %"_ZN4core3ptr56drop_in_place$LT$object_store..path..parts..PathPart$GT$17hc3e76e1f6d08236fE.exit" - %.sroa.5.0265 = phi i64 [ %.sroa.5.4, %"_ZN4core3ptr56drop_in_place$LT$object_store..path..parts..PathPart$GT$17hc3e76e1f6d08236fE.exit" ], [ %.sroa.031.sroa.4.0.copyload, %.preheader.i.i.preheader ] - %.sroa.43.0261 = phi i64 [ %.sroa.43.2, %"_ZN4core3ptr56drop_in_place$LT$object_store..path..parts..PathPart$GT$17hc3e76e1f6d08236fE.exit" ], [ 0, %.preheader.i.i.preheader ] - %.sroa.999.sroa.12116.0260 = phi i8 [ %.sroa.999.sroa.12116.3, %"_ZN4core3ptr56drop_in_place$LT$object_store..path..parts..PathPart$GT$17hc3e76e1f6d08236fE.exit" ], [ %.sroa.999.sroa.12116.0.extract.trunc, %.preheader.i.i.preheader ] + %.sroa.5.0264 = phi i64 [ %.sroa.5.4, %"_ZN4core3ptr56drop_in_place$LT$object_store..path..parts..PathPart$GT$17hc3e76e1f6d08236fE.exit" ], [ %.sroa.031.sroa.4.0.copyload, %.preheader.i.i.preheader ] + %.sroa.43.0260 = phi i64 [ %.sroa.43.2, %"_ZN4core3ptr56drop_in_place$LT$object_store..path..parts..PathPart$GT$17hc3e76e1f6d08236fE.exit" ], [ 0, %.preheader.i.i.preheader ] + %.sroa.999.sroa.12116.0259 = phi i8 [ %.sroa.999.sroa.12116.3, %"_ZN4core3ptr56drop_in_place$LT$object_store..path..parts..PathPart$GT$17hc3e76e1f6d08236fE.exit" ], [ %.sroa.999.sroa.12116.0.extract.trunc, %.preheader.i.i.preheader ] %.sroa.999.sroa.0.0258 = phi i8 [ %.sroa.999.sroa.0.6, %"_ZN4core3ptr56drop_in_place$LT$object_store..path..parts..PathPart$GT$17hc3e76e1f6d08236fE.exit" ], [ %.sroa.999.sroa.0.0.extract.trunc, %.preheader.i.i.preheader ] - %147 = trunc nuw i8 %.sroa.999.sroa.12116.0260 to i1 + %147 = trunc nuw i8 %.sroa.999.sroa.12116.0259 to i1 br i1 %147, label %.loopexit204, label %.lr.ph.i.i.preheader .lr.ph.i.i.preheader: ; preds = %.preheader.i.i @@ -4528,7 +4528,7 @@ _ZN4core3str11validations15next_code_point17h35aa9421c1b437a8E.exit.thread.i.i.i br i1 %149, label %.loopexit204.loopexit, label %197 .thread.i.i.i: ; preds = %158, %152 - %.sroa.5.1334 = phi i64 [ %.sroa.031.sroa.13.0.copyload, %152 ], [ %.sroa.5.1, %158 ] + %.sroa.5.1333 = phi i64 [ %.sroa.031.sroa.13.0.copyload, %152 ], [ %.sroa.5.1, %158 ] br i1 %149, label %"_ZN80_$LT$core..str..pattern..StrSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h81357aafb99f3895E.exit.i", label %.loopexit204 197: ; preds = %_ZN4core3str11validations15next_code_point17h35aa9421c1b437a8E.exit.thread.i.i.i @@ -4578,7 +4578,6 @@ _ZN4core3str11validations15next_code_point17h35aa9421c1b437a8E.exit.thread.i.i.i .loopexit204.loopexit: ; preds = %197, %_ZN4core3str11validations15next_code_point17h35aa9421c1b437a8E.exit.thread.i.i.i %.sroa.999.sroa.0.6.ph = phi i8 [ 1, %197 ], [ 0, %_ZN4core3str11validations15next_code_point17h35aa9421c1b437a8E.exit.thread.i.i.i ] - %.sroa.999.sroa.12116.3.ph = phi i8 [ 1, %197 ], [ %.sroa.999.sroa.12116.0260, %_ZN4core3str11validations15next_code_point17h35aa9421c1b437a8E.exit.thread.i.i.i ] %.sroa.43.2.ph = phi i64 [ %.sroa.43.0261, %197 ], [ %.sroa.5.1, %_ZN4core3str11validations15next_code_point17h35aa9421c1b437a8E.exit.thread.i.i.i ] %.sroa.6.2.pn.ph = phi i64 [ %spec.select66, %197 ], [ %.sroa.5.1, %_ZN4core3str11validations15next_code_point17h35aa9421c1b437a8E.exit.thread.i.i.i ] %.sroa.53.2.ph = xor i1 %149, true @@ -4587,7 +4586,7 @@ _ZN4core3str11validations15next_code_point17h35aa9421c1b437a8E.exit.thread.i.i.i .loopexit204: ; preds = %.loopexit204.loopexit, %.preheader.i.i, %.thread.i.i.i, %"_ZN80_$LT$core..str..pattern..StrSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h81357aafb99f3895E.exit.i" %.sroa.999.sroa.0.6 = phi i8 [ 1, %.thread.i.i.i ], [ %.sroa.999.sroa.0.0258, %.preheader.i.i ], [ 0, %"_ZN80_$LT$core..str..pattern..StrSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h81357aafb99f3895E.exit.i" ], [ %.sroa.999.sroa.0.6.ph, %.loopexit204.loopexit ] %.sroa.53.2 = phi i1 [ true, %.thread.i.i.i ], [ true, %.preheader.i.i ], [ false, %"_ZN80_$LT$core..str..pattern..StrSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h81357aafb99f3895E.exit.i" ], [ %.sroa.53.2.ph, %.loopexit204.loopexit ] - %.sroa.999.sroa.12116.3 = phi i8 [ 1, %.thread.i.i.i ], [ 1, %.preheader.i.i ], [ %.sroa.999.sroa.12116.0260, %"_ZN80_$LT$core..str..pattern..StrSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h81357aafb99f3895E.exit.i" ], [ %.sroa.999.sroa.12116.3.ph, %.loopexit204.loopexit ] + %.sroa.999.sroa.12116.3 = phi i8 [ 1, %.thread.i.i.i ], [ 1, %.preheader.i.i ], [ 0, %"_ZN80_$LT$core..str..pattern..StrSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h81357aafb99f3895E.exit.i" ], [ %.sroa.999.sroa.0.6.ph, %.loopexit204.loopexit ] %.sroa.43.2 = phi i64 [ %.sroa.43.0261, %.thread.i.i.i ], [ %.sroa.43.0261, %.preheader.i.i ], [ %.sroa.5.1334, %"_ZN80_$LT$core..str..pattern..StrSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h81357aafb99f3895E.exit.i" ], [ %.sroa.43.2.ph, %.loopexit204.loopexit ] %.sroa.5.4 = phi i64 [ %.sroa.5.1334, %.thread.i.i.i ], [ %.sroa.5.0265, %.preheader.i.i ], [ %.sroa.5.1334, %"_ZN80_$LT$core..str..pattern..StrSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h81357aafb99f3895E.exit.i" ], [ %.sroa.5.1, %.loopexit204.loopexit ] %.sroa.6.2.pn = phi i64 [ %spec.select66, %.thread.i.i.i ], [ %spec.select66, %.preheader.i.i ], [ %.sroa.5.1334, %"_ZN80_$LT$core..str..pattern..StrSearcher$u20$as$u20$core..str..pattern..Searcher$GT$10next_match17h81357aafb99f3895E.exit.i" ], [ %.sroa.6.2.pn.ph, %.loopexit204.loopexit ] diff --git a/bench/diesel-rs/optimized/27d1dwdaey9nml16.ll b/bench/diesel-rs/optimized/27d1dwdaey9nml16.ll index bce69a98b99..d85a8402256 100644 --- a/bench/diesel-rs/optimized/27d1dwdaey9nml16.ll +++ b/bench/diesel-rs/optimized/27d1dwdaey9nml16.ll @@ -1816,9 +1816,9 @@ _ZN10serde_json2de12ParserNumber5visit17he559ebf9a20d4e5bE.exit42: ; preds = %15 %.sroa.4209.0..sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 1 %.sroa.5210.0..sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 8 %.sroa.6211.0..sroa_idx = getelementptr inbounds nuw i8, ptr %4, i64 16 - %.sroa.7619.0..sroa_idx = getelementptr inbounds nuw i8, ptr %26, i64 1 - %.sroa.8620.0..sroa_idx = getelementptr inbounds nuw i8, ptr %26, i64 8 - %.sroa.9621.0..sroa_idx = getelementptr inbounds nuw i8, ptr %26, i64 16 + %.sroa.7610.0..sroa_idx = getelementptr inbounds nuw i8, ptr %26, i64 1 + %.sroa.8611.0..sroa_idx = getelementptr inbounds nuw i8, ptr %26, i64 8 + %.sroa.9612.0..sroa_idx = getelementptr inbounds nuw i8, ptr %26, i64 16 br label %.lr.ph.i.i93 .lr.ph.i.i93: ; preds = %.lr.ph.i.i93.lr.ph, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17h156555ffcd2ffd49E.exit.i" @@ -1913,7 +1913,6 @@ _ZN10serde_json2de12ParserNumber5visit17he559ebf9a20d4e5bE.exit42: ; preds = %15 .thread242: ; preds = %.lr.ph.i15.i, %191 %.sroa.3.0.i248 = phi i8 [ %187, %191 ], [ %200, %.lr.ph.i15.i ] - %.sroa.11.1247 = phi i8 [ 0, %191 ], [ %.sroa.11.0546, %.lr.ph.i15.i ] %206 = icmp eq i8 %.sroa.3.0.i248, 93 br i1 %206, label %207, label %.thread242.thread @@ -1928,7 +1927,6 @@ _ZN10serde_json2de12ParserNumber5visit17he559ebf9a20d4e5bE.exit42: ; preds = %15 br label %214 .thread242.thread: ; preds = %193, %.thread242 - %.sroa.11.1247255 = phi i8 [ %.sroa.11.1247, %.thread242 ], [ 0, %193 ] call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4), !noalias !323 invoke fastcc void @"_ZN10serde_json5value2de77_$LT$impl$u20$serde..de..Deserialize$u20$for$u20$serde_json..value..Value$GT$11deserialize17h2166d2a53c25bb71E"(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(32) %4, ptr noalias noundef nonnull align 8 dereferenceable(56) %1) to label %.noexc99 unwind label %.loopexit458 @@ -1966,7 +1964,7 @@ _ZN10serde_json2de12ParserNumber5visit17he559ebf9a20d4e5bE.exit42: ; preds = %15 to label %common.resume unwind label %230, !noalias !307 .loopexit692: ; preds = %184, %211 - %.sroa.11.2 = phi i8 [ %.sroa.11.1247255, %211 ], [ %.sroa.11.0546, %184 ] + %.sroa.11.2 = phi i8 [ 0, %211 ], [ %.sroa.11.0546, %184 ] %.sroa.0172.1 = phi i8 [ %209, %211 ], [ 6, %184 ] %.sroa.16.1 = phi ptr [ %.sroa.5210.0.copyload, %211 ], [ undef, %184 ] %.not.i24 = icmp eq i8 %.sroa.0172.1, 6 @@ -2480,7 +2478,7 @@ _ZN5serde2de9MapAccess10next_value17h9b91f22ac98e543fE.exit.i: ; preds = %324 %.sroa.3.0..sroa_idx2.i = getelementptr inbounds nuw i8, ptr %18, i64 8 %.sroa.3.i62.sroa.4.0..sroa.3.0..sroa_idx2.i.sroa_idx = getelementptr inbounds nuw i8, ptr %18, i64 16 %.sroa.7.0..sroa_idx = getelementptr inbounds nuw i8, ptr %41, i64 8 - %.sroa.8.0..sroa_idx616 = getelementptr inbounds nuw i8, ptr %41, i64 16 + %.sroa.8.0..sroa_idx607 = getelementptr inbounds nuw i8, ptr %41, i64 16 br label %.lr.ph.i.i.i70 .lr.ph.i.i.i70: ; preds = %.lr.ph.i.i.i70.lr.ph, %"_ZN4core3ptr73drop_in_place$LT$core..option..Option$LT$serde_json..value..Value$GT$$GT$17h69632b083e6170a8E.exit28.i" diff --git a/bench/draco/optimized/mesh_stripifier.ll b/bench/draco/optimized/mesh_stripifier.ll index 0d35dd3f49b..4bfd778796f 100644 --- a/bench/draco/optimized/mesh_stripifier.ll +++ b/bench/draco/optimized/mesh_stripifier.ll @@ -134,7 +134,7 @@ _ZNK5draco11CornerTable9SwingLeftENS_9IndexTypeIjNS_21CornerIndex_tag_type_EEE.e .lr.ph.preheader: ; preds = %44 %.pre = load ptr, ptr %8, align 8, !tbaa !9 - %.pre173 = load ptr, ptr %15, align 8, !tbaa !22 + %.pre171 = load ptr, ptr %15, align 8, !tbaa !22 br label %.lr.ph .lr.ph: ; preds = %.lr.ph.preheader, %159 @@ -373,8 +373,9 @@ _ZNK5draco11CornerTable4NextENS_9IndexTypeIjNS_21CornerIndex_tag_type_EEE.exit30 _ZNK5draco14MeshStripifier18CornerToPointIndexENS_9IndexTypeIjNS_21CornerIndex_tag_type_EEE.exit33.i: ; preds = %149, %_ZNK5draco11CornerTable4NextENS_9IndexTypeIjNS_21CornerIndex_tag_type_EEE.exit30.i %.sroa.0.0.i.i.i32.i = phi i32 [ %.sroa.0.0.copyload4.i.i.i31.i, %149 ], [ -1, %_ZNK5draco11CornerTable4NextENS_9IndexTypeIjNS_21CornerIndex_tag_type_EEE.exit30.i ] - %.not72.i.not = icmp eq i32 %.sroa.0.0.i.i.i2571.i, %.sroa.0.0.i.i.i32.i - br i1 %.not72.i.not, label %159, label %_ZNK5draco14MeshStripifier17GetOppositeCornerENS_9IndexTypeIjNS_21CornerIndex_tag_type_EEE.exit.thread + %.not72.i = icmp ne i32 %.sroa.0.0.i.i.i2571.i, %.sroa.0.0.i.i.i32.i + %or.cond119 = or i1 %.not72.i.not, %120 + br i1 %or.cond119, label %_ZNK5draco14MeshStripifier17GetOppositeCornerENS_9IndexTypeIjNS_21CornerIndex_tag_type_EEE.exit.thread, label %159 159: ; preds = %_ZNK5draco14MeshStripifier18CornerToPointIndexENS_9IndexTypeIjNS_21CornerIndex_tag_type_EEE.exit33.i %160 = udiv i32 %.sroa.0.0.in.sroa.speculate.load..i.i51, 3 @@ -418,9 +419,9 @@ _ZNK5draco14MeshStripifier17GetOppositeCornerENS_9IndexTypeIjNS_21CornerIndex_ta br label %_ZNK5draco11CornerTable9SwingLeftENS_9IndexTypeIjNS_21CornerIndex_tag_type_EEE.exit.thread _ZNK5draco14MeshStripifier17GetOppositeCornerENS_9IndexTypeIjNS_21CornerIndex_tag_type_EEE.exit.thread.thread: ; preds = %44, %_ZNK5draco14MeshStripifier17GetOppositeCornerENS_9IndexTypeIjNS_21CornerIndex_tag_type_EEE.exit.thread - %.sroa.084.3186 = phi i32 [ %.sroa.084.3.ph, %_ZNK5draco14MeshStripifier17GetOppositeCornerENS_9IndexTypeIjNS_21CornerIndex_tag_type_EEE.exit.thread ], [ %.sroa.084.1, %44 ] - %.sroa.081.2185 = phi i32 [ %.sroa.081.2.ph, %_ZNK5draco14MeshStripifier17GetOppositeCornerENS_9IndexTypeIjNS_21CornerIndex_tag_type_EEE.exit.thread ], [ %.sroa.081.0163, %44 ] - %.sroa.077.2.lcssa184 = phi i32 [ %.sroa.077.2.lcssa.ph, %_ZNK5draco14MeshStripifier17GetOppositeCornerENS_9IndexTypeIjNS_21CornerIndex_tag_type_EEE.exit.thread ], [ %.sroa.077.1, %44 ] + %.sroa.084.3183 = phi i32 [ %.sroa.084.3.ph, %_ZNK5draco14MeshStripifier17GetOppositeCornerENS_9IndexTypeIjNS_21CornerIndex_tag_type_EEE.exit.thread ], [ %.sroa.084.1, %44 ] + %.sroa.081.2182 = phi i32 [ %.sroa.081.2.ph, %_ZNK5draco14MeshStripifier17GetOppositeCornerENS_9IndexTypeIjNS_21CornerIndex_tag_type_EEE.exit.thread ], [ %.sroa.081.0163, %44 ] + %.sroa.077.2.lcssa181 = phi i32 [ %.sroa.077.2.lcssa.ph, %_ZNK5draco14MeshStripifier17GetOppositeCornerENS_9IndexTypeIjNS_21CornerIndex_tag_type_EEE.exit.thread ], [ %.sroa.077.1, %44 ] br i1 %17, label %16, label %_ZNK5draco11CornerTable9SwingLeftENS_9IndexTypeIjNS_21CornerIndex_tag_type_EEE.exit.thread, !llvm.loop !53 _ZNK5draco11CornerTable9SwingLeftENS_9IndexTypeIjNS_21CornerIndex_tag_type_EEE.exit.thread: ; preds = %_ZNK5draco11CornerTable8PreviousENS_9IndexTypeIjNS_21CornerIndex_tag_type_EEE.exit, %_ZNK5draco11CornerTable4NextENS_9IndexTypeIjNS_21CornerIndex_tag_type_EEE.exit, %_ZNK5draco11CornerTable4NextENS_9IndexTypeIjNS_21CornerIndex_tag_type_EEE.exit.i, %_ZNK5draco11CornerTable8OppositeENS_9IndexTypeIjNS_21CornerIndex_tag_type_EEE.exit.i, %_ZNK5draco11CornerTable9SwingLeftENS_9IndexTypeIjNS_21CornerIndex_tag_type_EEE.exit, %_ZNK5draco14MeshStripifier17GetOppositeCornerENS_9IndexTypeIjNS_21CornerIndex_tag_type_EEE.exit.thread.thread, %.thread, %_ZNK5draco11CornerTable8PreviousENS_9IndexTypeIjNS_21CornerIndex_tag_type_EEE.exit.thread @@ -578,7 +579,7 @@ _ZNK5draco11CornerTable4NextENS_9IndexTypeIjNS_21CornerIndex_tag_type_EEE.exit30 _ZNK5draco14MeshStripifier18CornerToPointIndexENS_9IndexTypeIjNS_21CornerIndex_tag_type_EEE.exit33: ; preds = %2, %_ZNK5draco14MeshStripifier18CornerToPointIndexENS_9IndexTypeIjNS_21CornerIndex_tag_type_EEE.exit26, %39, %_ZNK5draco11CornerTable4NextENS_9IndexTypeIjNS_21CornerIndex_tag_type_EEE.exit30, %53 %.sroa.0.0.i.i.i2568 = phi i32 [ %.sroa.0.0.i.i.i2571, %53 ], [ %.sroa.0.0.i.i.i2571, %_ZNK5draco11CornerTable4NextENS_9IndexTypeIjNS_21CornerIndex_tag_type_EEE.exit30 ], [ -1, %_ZNK5draco14MeshStripifier18CornerToPointIndexENS_9IndexTypeIjNS_21CornerIndex_tag_type_EEE.exit26 ], [ %.sroa.0.0.copyload4.i.i.i24, %39 ], [ -1, %2 ] - %.sroa.0.0.in.sroa.speculated.i42454854606266 = phi i32 [ %.sroa.0.0.in.sroa.speculate.load..i, %53 ], [ %.sroa.0.0.in.sroa.speculate.load..i, %_ZNK5draco11CornerTable4NextENS_9IndexTypeIjNS_21CornerIndex_tag_type_EEE.exit30 ], [ %.sroa.0.0.in.sroa.speculate.load..i, %_ZNK5draco14MeshStripifier18CornerToPointIndexENS_9IndexTypeIjNS_21CornerIndex_tag_type_EEE.exit26 ], [ %.sroa.0.0.in.sroa.speculate.load..i, %39 ], [ -1, %2 ] + %.sroa.0.0.in.sroa.speculated.i42454854606266 = phi i32 [ %.sroa.0.0.in.sroa.speculate.load..i, %53 ], [ %.sroa.0.0.in.sroa.speculate.load..i, %_ZNK5draco11CornerTable4NextENS_9IndexTypeIjNS_21CornerIndex_tag_type_EEE.exit30 ], [ -1, %_ZNK5draco14MeshStripifier18CornerToPointIndexENS_9IndexTypeIjNS_21CornerIndex_tag_type_EEE.exit26 ], [ -1, %39 ], [ -1, %2 ] %.sroa.0.0.i.i.i32 = phi i32 [ %.sroa.0.0.copyload4.i.i.i31, %53 ], [ -1, %_ZNK5draco11CornerTable4NextENS_9IndexTypeIjNS_21CornerIndex_tag_type_EEE.exit30 ], [ -1, %_ZNK5draco14MeshStripifier18CornerToPointIndexENS_9IndexTypeIjNS_21CornerIndex_tag_type_EEE.exit26 ], [ -1, %39 ], [ -1, %2 ] %.not72 = icmp eq i32 %.sroa.0.0.i.i.i2568, %.sroa.0.0.i.i.i32 %spec.select = select i1 %.not72, i32 %.sroa.0.0.in.sroa.speculated.i42454854606266, i32 -1 diff --git a/bench/folly/optimized/ManualExecutor.ll b/bench/folly/optimized/ManualExecutor.ll index 2e398b8e848..2a35efaa036 100644 --- a/bench/folly/optimized/ManualExecutor.ll +++ b/bench/folly/optimized/ManualExecutor.ll @@ -3515,8 +3515,8 @@ _ZN5folly14IndexedMemPoolINS_6detail14LifoSemRawNodeISt6atomicEELj32ELj200ES3_NS br label %38 38: ; preds = %_ZN5folly12AtomicStructINS_14IndexedMemPoolINS_6detail14LifoSemRawNodeISt6atomicEELj32ELj200ES4_NS_20IndexedMemPoolTraitsIS5_Lb0ELb0EEEE9TaggedPtrES4_E23compare_exchange_strongERS9_S9_St12memory_orderSC_.exit.i.i, %_ZN5folly14IndexedMemPoolINS_6detail14LifoSemRawNodeISt6atomicEELj32ELj200ES3_NS_20IndexedMemPoolTraitsIS4_Lb0ELb0EEEE9localHeadEv.exit.i - %.sroa.020.0.in.i.i = phi i64 [ %36, %_ZN5folly14IndexedMemPoolINS_6detail14LifoSemRawNodeISt6atomicEELj32ELj200ES3_NS_20IndexedMemPoolTraitsIS4_Lb0ELb0EEEE9localHeadEv.exit.i ], [ %.sroa.020.1.in.i.i, %_ZN5folly12AtomicStructINS_14IndexedMemPoolINS_6detail14LifoSemRawNodeISt6atomicEELj32ELj200ES4_NS_20IndexedMemPoolTraitsIS5_Lb0ELb0EEEE9TaggedPtrES4_E23compare_exchange_strongERS9_S9_St12memory_orderSC_.exit.i.i ] - %.sroa.020.0.i.i = trunc i64 %.sroa.020.0.in.i.i to i32 + %.sroa.020.1.sink.in.i.i = phi i64 [ %.sroa.020.1.in.i.i, %_ZN5folly12AtomicStructINS_14IndexedMemPoolINS_6detail14LifoSemRawNodeISt6atomicEELj32ELj200ES4_NS_20IndexedMemPoolTraitsIS5_Lb0ELb0EEEE9TaggedPtrES4_E23compare_exchange_strongERS9_S9_St12memory_orderSC_.exit.i.i ], [ %36, %_ZN5folly14IndexedMemPoolINS_6detail14LifoSemRawNodeISt6atomicEELj32ELj200ES3_NS_20IndexedMemPoolTraitsIS4_Lb0ELb0EEEE9localHeadEv.exit.i ] + %.sroa.020.1.sink.i.i = trunc i64 %.sroa.020.1.sink.in.i.i to i32 store atomic i32 %.sroa.020.0.i.i, ptr %37 release, align 4 %39 = and i64 %.sroa.020.0.in.i.i, 1095216660480 %40 = icmp eq i64 %39, 858993459200 @@ -3555,7 +3555,7 @@ _ZN5folly12AtomicStructINS_14IndexedMemPoolINS_6detail14LifoSemRawNodeISt6atomic _ZN5folly12AtomicStructINS_14IndexedMemPoolINS_6detail14LifoSemRawNodeISt6atomicEELj32ELj200ES4_NS_20IndexedMemPoolTraitsIS5_Lb0ELb0EEEE9TaggedPtrES4_E23compare_exchange_strongERS9_S9_St12memory_orderSC_.exit.i.i: ; preds = %52, %41 %.pn.i.i = phi { i64, i1 } [ %43, %41 ], [ %54, %52 ] %.sroa.020.1.in.i.i = extractvalue { i64, i1 } %.pn.i.i, 0 - br label %38, !llvm.loop !102 + br label %38 _ZN5folly14IndexedMemPoolINS_6detail14LifoSemRawNodeISt6atomicEELj32ELj200ES3_NS_20IndexedMemPoolTraitsIS4_Lb0ELb0EEEE12recycleIndexEj.exit: ; preds = %52, %_ZN5folly12AtomicStructINS_14IndexedMemPoolINS_6detail14LifoSemRawNodeISt6atomicEELj32ELj200ES4_NS_20IndexedMemPoolTraitsIS5_Lb0ELb0EEEE9TaggedPtrES4_E23compare_exchange_strongERS9_S9_St12memory_orderSC_.exit.i.i.i ret void @@ -3804,28 +3804,28 @@ _ZNKSt6vectorIN5folly14ManualExecutor13ScheduledFuncESaIS2_EE12_M_check_lenEmPKc .lr.ph.i.i.i: ; preds = %33, %_ZSt19__relocate_object_aIN5folly14ManualExecutor13ScheduledFuncES2_SaIS2_EEvPT_PT0_RT1_.exit.i.i.i %.012.i.i.i = phi ptr [ %49, %_ZSt19__relocate_object_aIN5folly14ManualExecutor13ScheduledFuncES2_SaIS2_EEvPT_PT0_RT1_.exit.i.i.i ], [ %21, %33 ] %.0911.i.i.i = phi ptr [ %48, %_ZSt19__relocate_object_aIN5folly14ManualExecutor13ScheduledFuncES2_SaIS2_EEvPT_PT0_RT1_.exit.i.i.i ], [ %7, %33 ] - tail call void @llvm.experimental.noalias.scope.decl(metadata !103) - tail call void @llvm.experimental.noalias.scope.decl(metadata !106) - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(80) %.012.i.i.i, ptr noundef nonnull align 16 dereferenceable(80) %.0911.i.i.i, i64 16, i1 false), !alias.scope !108 + tail call void @llvm.experimental.noalias.scope.decl(metadata !102) + tail call void @llvm.experimental.noalias.scope.decl(metadata !105) + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(80) %.012.i.i.i, ptr noundef nonnull align 16 dereferenceable(80) %.0911.i.i.i, i64 16, i1 false), !alias.scope !107 %37 = getelementptr inbounds nuw i8, ptr %.012.i.i.i, i64 16 - store ptr null, ptr %37, align 16, !tbaa !17, !alias.scope !103, !noalias !106 + store ptr null, ptr %37, align 16, !tbaa !17, !alias.scope !102, !noalias !105 %38 = getelementptr inbounds nuw i8, ptr %.012.i.i.i, i64 64 %39 = getelementptr inbounds nuw i8, ptr %.0911.i.i.i, i64 64 - %40 = load ptr, ptr %39, align 16, !tbaa !18, !alias.scope !106, !noalias !103 - store ptr %40, ptr %38, align 16, !tbaa !18, !alias.scope !103, !noalias !106 + %40 = load ptr, ptr %39, align 16, !tbaa !18, !alias.scope !105, !noalias !102 + store ptr %40, ptr %38, align 16, !tbaa !18, !alias.scope !102, !noalias !105 %41 = getelementptr inbounds nuw i8, ptr %.012.i.i.i, i64 72 %42 = getelementptr inbounds nuw i8, ptr %.0911.i.i.i, i64 72 - %43 = load ptr, ptr %42, align 8, !tbaa !20, !alias.scope !106, !noalias !103 - store ptr %43, ptr %41, align 8, !tbaa !20, !alias.scope !103, !noalias !106 - store ptr @_ZN5folly6detail8function14FunctionTraitsIFvvEE10uninitCallERNS1_4DataE, ptr %39, align 16, !tbaa !18, !alias.scope !106, !noalias !103 - store ptr null, ptr %42, align 8, !tbaa !20, !alias.scope !106, !noalias !103 + %43 = load ptr, ptr %42, align 8, !tbaa !20, !alias.scope !105, !noalias !102 + store ptr %43, ptr %41, align 8, !tbaa !20, !alias.scope !102, !noalias !105 + store ptr @_ZN5folly6detail8function14FunctionTraitsIFvvEE10uninitCallERNS1_4DataE, ptr %39, align 16, !tbaa !18, !alias.scope !105, !noalias !102 + store ptr null, ptr %42, align 8, !tbaa !20, !alias.scope !105, !noalias !102 %.not.i.i.i.i.i.i.i.i.i = icmp eq ptr %43, null br i1 %.not.i.i.i.i.i.i.i.i.i, label %_ZSt19__relocate_object_aIN5folly14ManualExecutor13ScheduledFuncES2_SaIS2_EEvPT_PT0_RT1_.exit.i.i.i, label %_ZNSt16allocator_traitsISaIN5folly14ManualExecutor13ScheduledFuncEEE9constructIS2_JS2_EEEvRS3_PT_DpOT0_.exit.i.i.i.i _ZNSt16allocator_traitsISaIN5folly14ManualExecutor13ScheduledFuncEEE9constructIS2_JS2_EEEvRS3_PT_DpOT0_.exit.i.i.i.i: ; preds = %.lr.ph.i.i.i %44 = getelementptr inbounds nuw i8, ptr %.0911.i.i.i, i64 16 %45 = tail call noundef i64 %43(i32 noundef 0, ptr noundef nonnull align 16 dereferenceable(64) %44, ptr noundef nonnull align 16 dereferenceable(64) %37) #24 - %.pr.i.i.i.i = load ptr, ptr %42, align 8, !tbaa !20, !alias.scope !106, !noalias !103 + %.pr.i.i.i.i = load ptr, ptr %42, align 8, !tbaa !20, !alias.scope !105, !noalias !102 %.not.i.i.i.i.i5.i.i.i.i = icmp eq ptr %.pr.i.i.i.i, null br i1 %.not.i.i.i.i.i5.i.i.i.i, label %_ZSt19__relocate_object_aIN5folly14ManualExecutor13ScheduledFuncES2_SaIS2_EEvPT_PT0_RT1_.exit.i.i.i, label %46 @@ -3837,7 +3837,7 @@ _ZSt19__relocate_object_aIN5folly14ManualExecutor13ScheduledFuncES2_SaIS2_EEvPT_ %48 = getelementptr inbounds nuw i8, ptr %.0911.i.i.i, i64 80 %49 = getelementptr inbounds nuw i8, ptr %.012.i.i.i, i64 80 %.not.i.i.i = icmp eq ptr %48, %1 - br i1 %.not.i.i.i, label %_ZNSt6vectorIN5folly14ManualExecutor13ScheduledFuncESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit, label %.lr.ph.i.i.i, !llvm.loop !109 + br i1 %.not.i.i.i, label %_ZNSt6vectorIN5folly14ManualExecutor13ScheduledFuncESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit, label %.lr.ph.i.i.i, !llvm.loop !108 _ZNSt6vectorIN5folly14ManualExecutor13ScheduledFuncESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit: ; preds = %_ZSt19__relocate_object_aIN5folly14ManualExecutor13ScheduledFuncES2_SaIS2_EEvPT_PT0_RT1_.exit.i.i.i, %33 %.0.lcssa.i.i.i = phi ptr [ %21, %33 ], [ %49, %_ZSt19__relocate_object_aIN5folly14ManualExecutor13ScheduledFuncES2_SaIS2_EEvPT_PT0_RT1_.exit.i.i.i ] @@ -3848,28 +3848,28 @@ _ZNSt6vectorIN5folly14ManualExecutor13ScheduledFuncESaIS2_EE11_S_relocateEPS2_S5 .lr.ph.i.i.i28: ; preds = %_ZNSt6vectorIN5folly14ManualExecutor13ScheduledFuncESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit, %_ZSt19__relocate_object_aIN5folly14ManualExecutor13ScheduledFuncES2_SaIS2_EEvPT_PT0_RT1_.exit.i.i.i35 %.012.i.i.i29 = phi ptr [ %63, %_ZSt19__relocate_object_aIN5folly14ManualExecutor13ScheduledFuncES2_SaIS2_EEvPT_PT0_RT1_.exit.i.i.i35 ], [ %50, %_ZNSt6vectorIN5folly14ManualExecutor13ScheduledFuncESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit ] %.0911.i.i.i30 = phi ptr [ %62, %_ZSt19__relocate_object_aIN5folly14ManualExecutor13ScheduledFuncES2_SaIS2_EEvPT_PT0_RT1_.exit.i.i.i35 ], [ %1, %_ZNSt6vectorIN5folly14ManualExecutor13ScheduledFuncESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit ] - tail call void @llvm.experimental.noalias.scope.decl(metadata !110) - tail call void @llvm.experimental.noalias.scope.decl(metadata !113) - tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(80) %.012.i.i.i29, ptr noundef nonnull align 16 dereferenceable(80) %.0911.i.i.i30, i64 16, i1 false), !alias.scope !115 + tail call void @llvm.experimental.noalias.scope.decl(metadata !109) + tail call void @llvm.experimental.noalias.scope.decl(metadata !112) + tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(80) %.012.i.i.i29, ptr noundef nonnull align 16 dereferenceable(80) %.0911.i.i.i30, i64 16, i1 false), !alias.scope !114 %51 = getelementptr inbounds nuw i8, ptr %.012.i.i.i29, i64 16 - store ptr null, ptr %51, align 16, !tbaa !17, !alias.scope !110, !noalias !113 + store ptr null, ptr %51, align 16, !tbaa !17, !alias.scope !109, !noalias !112 %52 = getelementptr inbounds nuw i8, ptr %.012.i.i.i29, i64 64 %53 = getelementptr inbounds nuw i8, ptr %.0911.i.i.i30, i64 64 - %54 = load ptr, ptr %53, align 16, !tbaa !18, !alias.scope !113, !noalias !110 - store ptr %54, ptr %52, align 16, !tbaa !18, !alias.scope !110, !noalias !113 + %54 = load ptr, ptr %53, align 16, !tbaa !18, !alias.scope !112, !noalias !109 + store ptr %54, ptr %52, align 16, !tbaa !18, !alias.scope !109, !noalias !112 %55 = getelementptr inbounds nuw i8, ptr %.012.i.i.i29, i64 72 %56 = getelementptr inbounds nuw i8, ptr %.0911.i.i.i30, i64 72 - %57 = load ptr, ptr %56, align 8, !tbaa !20, !alias.scope !113, !noalias !110 - store ptr %57, ptr %55, align 8, !tbaa !20, !alias.scope !110, !noalias !113 - store ptr @_ZN5folly6detail8function14FunctionTraitsIFvvEE10uninitCallERNS1_4DataE, ptr %53, align 16, !tbaa !18, !alias.scope !113, !noalias !110 - store ptr null, ptr %56, align 8, !tbaa !20, !alias.scope !113, !noalias !110 + %57 = load ptr, ptr %56, align 8, !tbaa !20, !alias.scope !112, !noalias !109 + store ptr %57, ptr %55, align 8, !tbaa !20, !alias.scope !109, !noalias !112 + store ptr @_ZN5folly6detail8function14FunctionTraitsIFvvEE10uninitCallERNS1_4DataE, ptr %53, align 16, !tbaa !18, !alias.scope !112, !noalias !109 + store ptr null, ptr %56, align 8, !tbaa !20, !alias.scope !112, !noalias !109 %.not.i.i.i.i.i.i.i.i.i31 = icmp eq ptr %57, null br i1 %.not.i.i.i.i.i.i.i.i.i31, label %_ZSt19__relocate_object_aIN5folly14ManualExecutor13ScheduledFuncES2_SaIS2_EEvPT_PT0_RT1_.exit.i.i.i35, label %_ZNSt16allocator_traitsISaIN5folly14ManualExecutor13ScheduledFuncEEE9constructIS2_JS2_EEEvRS3_PT_DpOT0_.exit.i.i.i.i32 _ZNSt16allocator_traitsISaIN5folly14ManualExecutor13ScheduledFuncEEE9constructIS2_JS2_EEEvRS3_PT_DpOT0_.exit.i.i.i.i32: ; preds = %.lr.ph.i.i.i28 %58 = getelementptr inbounds nuw i8, ptr %.0911.i.i.i30, i64 16 %59 = tail call noundef i64 %57(i32 noundef 0, ptr noundef nonnull align 16 dereferenceable(64) %58, ptr noundef nonnull align 16 dereferenceable(64) %51) #24 - %.pr.i.i.i.i33 = load ptr, ptr %56, align 8, !tbaa !20, !alias.scope !113, !noalias !110 + %.pr.i.i.i.i33 = load ptr, ptr %56, align 8, !tbaa !20, !alias.scope !112, !noalias !109 %.not.i.i.i.i.i5.i.i.i.i34 = icmp eq ptr %.pr.i.i.i.i33, null br i1 %.not.i.i.i.i.i5.i.i.i.i34, label %_ZSt19__relocate_object_aIN5folly14ManualExecutor13ScheduledFuncES2_SaIS2_EEvPT_PT0_RT1_.exit.i.i.i35, label %60 @@ -3881,7 +3881,7 @@ _ZSt19__relocate_object_aIN5folly14ManualExecutor13ScheduledFuncES2_SaIS2_EEvPT_ %62 = getelementptr inbounds nuw i8, ptr %.0911.i.i.i30, i64 80 %63 = getelementptr inbounds nuw i8, ptr %.012.i.i.i29, i64 80 %.not.i.i.i36 = icmp eq ptr %62, %6 - br i1 %.not.i.i.i36, label %_ZNSt6vectorIN5folly14ManualExecutor13ScheduledFuncESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit38, label %.lr.ph.i.i.i28, !llvm.loop !109 + br i1 %.not.i.i.i36, label %_ZNSt6vectorIN5folly14ManualExecutor13ScheduledFuncESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit38, label %.lr.ph.i.i.i28, !llvm.loop !108 _ZNSt6vectorIN5folly14ManualExecutor13ScheduledFuncESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit38: ; preds = %_ZSt19__relocate_object_aIN5folly14ManualExecutor13ScheduledFuncES2_SaIS2_EEvPT_PT0_RT1_.exit.i.i.i35, %_ZNSt6vectorIN5folly14ManualExecutor13ScheduledFuncESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit %.0.lcssa.i.i.i37 = phi ptr [ %50, %_ZNSt6vectorIN5folly14ManualExecutor13ScheduledFuncESaIS2_EE11_S_relocateEPS2_S5_S5_RS3_.exit ], [ %63, %_ZSt19__relocate_object_aIN5folly14ManualExecutor13ScheduledFuncES2_SaIS2_EEvPT_PT0_RT1_.exit.i.i.i35 ] @@ -4055,17 +4055,16 @@ attributes #27 = { builtin allocsize(0) } !99 = !{!100, !100, i64 0} !100 = !{!"_ZTSN5folly6detail11FutexResultE", !11, i64 0} !101 = distinct !{!101, !25} -!102 = distinct !{!102, !25} -!103 = !{!104} -!104 = distinct !{!104, !105, !"_ZSt19__relocate_object_aIN5folly14ManualExecutor13ScheduledFuncES2_SaIS2_EEvPT_PT0_RT1_: argument 0"} -!105 = distinct !{!105, !"_ZSt19__relocate_object_aIN5folly14ManualExecutor13ScheduledFuncES2_SaIS2_EEvPT_PT0_RT1_"} -!106 = !{!107} -!107 = distinct !{!107, !105, !"_ZSt19__relocate_object_aIN5folly14ManualExecutor13ScheduledFuncES2_SaIS2_EEvPT_PT0_RT1_: argument 1"} -!108 = !{!104, !107} -!109 = distinct !{!109, !25} -!110 = !{!111} -!111 = distinct !{!111, !112, !"_ZSt19__relocate_object_aIN5folly14ManualExecutor13ScheduledFuncES2_SaIS2_EEvPT_PT0_RT1_: argument 0"} -!112 = distinct !{!112, !"_ZSt19__relocate_object_aIN5folly14ManualExecutor13ScheduledFuncES2_SaIS2_EEvPT_PT0_RT1_"} -!113 = !{!114} -!114 = distinct !{!114, !112, !"_ZSt19__relocate_object_aIN5folly14ManualExecutor13ScheduledFuncES2_SaIS2_EEvPT_PT0_RT1_: argument 1"} -!115 = !{!111, !114} +!102 = !{!103} +!103 = distinct !{!103, !104, !"_ZSt19__relocate_object_aIN5folly14ManualExecutor13ScheduledFuncES2_SaIS2_EEvPT_PT0_RT1_: argument 0"} +!104 = distinct !{!104, !"_ZSt19__relocate_object_aIN5folly14ManualExecutor13ScheduledFuncES2_SaIS2_EEvPT_PT0_RT1_"} +!105 = !{!106} +!106 = distinct !{!106, !104, !"_ZSt19__relocate_object_aIN5folly14ManualExecutor13ScheduledFuncES2_SaIS2_EEvPT_PT0_RT1_: argument 1"} +!107 = !{!103, !106} +!108 = distinct !{!108, !25} +!109 = !{!110} +!110 = distinct !{!110, !111, !"_ZSt19__relocate_object_aIN5folly14ManualExecutor13ScheduledFuncES2_SaIS2_EEvPT_PT0_RT1_: argument 0"} +!111 = distinct !{!111, !"_ZSt19__relocate_object_aIN5folly14ManualExecutor13ScheduledFuncES2_SaIS2_EEvPT_PT0_RT1_"} +!112 = !{!113} +!113 = distinct !{!113, !111, !"_ZSt19__relocate_object_aIN5folly14ManualExecutor13ScheduledFuncES2_SaIS2_EEvPT_PT0_RT1_: argument 1"} +!114 = !{!110, !113} diff --git a/bench/folly/optimized/ThreadPoolExecutor.ll b/bench/folly/optimized/ThreadPoolExecutor.ll index 719150ea07e..7270183dbfe 100644 --- a/bench/folly/optimized/ThreadPoolExecutor.ll +++ b/bench/folly/optimized/ThreadPoolExecutor.ll @@ -9138,8 +9138,8 @@ _ZN5folly14IndexedMemPoolINS_6detail14LifoSemRawNodeISt6atomicEELj32ELj200ES3_NS br label %38 38: ; preds = %_ZN5folly12AtomicStructINS_14IndexedMemPoolINS_6detail14LifoSemRawNodeISt6atomicEELj32ELj200ES4_NS_20IndexedMemPoolTraitsIS5_Lb0ELb0EEEE9TaggedPtrES4_E23compare_exchange_strongERS9_S9_St12memory_orderSC_.exit.i.i, %_ZN5folly14IndexedMemPoolINS_6detail14LifoSemRawNodeISt6atomicEELj32ELj200ES3_NS_20IndexedMemPoolTraitsIS4_Lb0ELb0EEEE9localHeadEv.exit.i - %.sroa.020.0.in.i.i = phi i64 [ %36, %_ZN5folly14IndexedMemPoolINS_6detail14LifoSemRawNodeISt6atomicEELj32ELj200ES3_NS_20IndexedMemPoolTraitsIS4_Lb0ELb0EEEE9localHeadEv.exit.i ], [ %.sroa.020.1.in.i.i, %_ZN5folly12AtomicStructINS_14IndexedMemPoolINS_6detail14LifoSemRawNodeISt6atomicEELj32ELj200ES4_NS_20IndexedMemPoolTraitsIS5_Lb0ELb0EEEE9TaggedPtrES4_E23compare_exchange_strongERS9_S9_St12memory_orderSC_.exit.i.i ] - %.sroa.020.0.i.i = trunc i64 %.sroa.020.0.in.i.i to i32 + %.sroa.020.1.sink.in.i.i = phi i64 [ %.sroa.020.1.in.i.i, %_ZN5folly12AtomicStructINS_14IndexedMemPoolINS_6detail14LifoSemRawNodeISt6atomicEELj32ELj200ES4_NS_20IndexedMemPoolTraitsIS5_Lb0ELb0EEEE9TaggedPtrES4_E23compare_exchange_strongERS9_S9_St12memory_orderSC_.exit.i.i ], [ %36, %_ZN5folly14IndexedMemPoolINS_6detail14LifoSemRawNodeISt6atomicEELj32ELj200ES3_NS_20IndexedMemPoolTraitsIS4_Lb0ELb0EEEE9localHeadEv.exit.i ] + %.sroa.020.1.sink.i.i = trunc i64 %.sroa.020.1.sink.in.i.i to i32 store atomic i32 %.sroa.020.0.i.i, ptr %37 release, align 4 %39 = and i64 %.sroa.020.0.in.i.i, 1095216660480 %40 = icmp eq i64 %39, 858993459200 @@ -9178,7 +9178,7 @@ _ZN5folly12AtomicStructINS_14IndexedMemPoolINS_6detail14LifoSemRawNodeISt6atomic _ZN5folly12AtomicStructINS_14IndexedMemPoolINS_6detail14LifoSemRawNodeISt6atomicEELj32ELj200ES4_NS_20IndexedMemPoolTraitsIS5_Lb0ELb0EEEE9TaggedPtrES4_E23compare_exchange_strongERS9_S9_St12memory_orderSC_.exit.i.i: ; preds = %52, %41 %.pn.i.i = phi { i64, i1 } [ %43, %41 ], [ %54, %52 ] %.sroa.020.1.in.i.i = extractvalue { i64, i1 } %.pn.i.i, 0 - br label %38, !llvm.loop !366 + br label %38 _ZN5folly14IndexedMemPoolINS_6detail14LifoSemRawNodeISt6atomicEELj32ELj200ES3_NS_20IndexedMemPoolTraitsIS4_Lb0ELb0EEEE12recycleIndexEj.exit: ; preds = %52, %_ZN5folly12AtomicStructINS_14IndexedMemPoolINS_6detail14LifoSemRawNodeISt6atomicEELj32ELj200ES4_NS_20IndexedMemPoolTraitsIS5_Lb0ELb0EEEE9TaggedPtrES4_E23compare_exchange_strongERS9_S9_St12memory_orderSC_.exit.i.i.i ret void @@ -9265,20 +9265,20 @@ _ZNSt16allocator_traitsISaISt10shared_ptrIN5folly18ThreadPoolExecutor8ObserverEE .lr.ph.i.i.i: ; preds = %_ZNSt16allocator_traitsISaISt10shared_ptrIN5folly18ThreadPoolExecutor8ObserverEEEE9constructIS4_JRKS4_EEEvRS5_PT_DpOT0_.exit, %.lr.ph.i.i.i %.012.i.i.i = phi ptr [ %39, %.lr.ph.i.i.i ], [ %20, %_ZNSt16allocator_traitsISaISt10shared_ptrIN5folly18ThreadPoolExecutor8ObserverEEEE9constructIS4_JRKS4_EEEvRS5_PT_DpOT0_.exit ] %.0911.i.i.i = phi ptr [ %38, %.lr.ph.i.i.i ], [ %6, %_ZNSt16allocator_traitsISaISt10shared_ptrIN5folly18ThreadPoolExecutor8ObserverEEEE9constructIS4_JRKS4_EEEvRS5_PT_DpOT0_.exit ] - tail call void @llvm.experimental.noalias.scope.decl(metadata !367) - tail call void @llvm.experimental.noalias.scope.decl(metadata !370) - %34 = load ptr, ptr %.0911.i.i.i, align 8, !tbaa !63, !alias.scope !370, !noalias !367 - store ptr %34, ptr %.012.i.i.i, align 8, !tbaa !63, !alias.scope !367, !noalias !370 + tail call void @llvm.experimental.noalias.scope.decl(metadata !366) + tail call void @llvm.experimental.noalias.scope.decl(metadata !369) + %34 = load ptr, ptr %.0911.i.i.i, align 8, !tbaa !63, !alias.scope !369, !noalias !366 + store ptr %34, ptr %.012.i.i.i, align 8, !tbaa !63, !alias.scope !366, !noalias !369 %35 = getelementptr inbounds nuw i8, ptr %.012.i.i.i, i64 8 %36 = getelementptr inbounds nuw i8, ptr %.0911.i.i.i, i64 8 - %37 = load ptr, ptr %36, align 8, !tbaa !24, !alias.scope !370, !noalias !367 - store ptr null, ptr %36, align 8, !tbaa !24, !alias.scope !370, !noalias !367 - store ptr %37, ptr %35, align 8, !tbaa !24, !alias.scope !367, !noalias !370 - store ptr null, ptr %.0911.i.i.i, align 8, !tbaa !63, !alias.scope !370, !noalias !367 + %37 = load ptr, ptr %36, align 8, !tbaa !24, !alias.scope !369, !noalias !366 + store ptr null, ptr %36, align 8, !tbaa !24, !alias.scope !369, !noalias !366 + store ptr %37, ptr %35, align 8, !tbaa !24, !alias.scope !366, !noalias !369 + store ptr null, ptr %.0911.i.i.i, align 8, !tbaa !63, !alias.scope !369, !noalias !366 %38 = getelementptr inbounds nuw i8, ptr %.0911.i.i.i, i64 16 %39 = getelementptr inbounds nuw i8, ptr %.012.i.i.i, i64 16 %.not.i.i.i = icmp eq ptr %38, %1 - br i1 %.not.i.i.i, label %_ZNSt6vectorISt10shared_ptrIN5folly18ThreadPoolExecutor8ObserverEESaIS4_EE11_S_relocateEPS4_S7_S7_RS5_.exit, label %.lr.ph.i.i.i, !llvm.loop !372 + br i1 %.not.i.i.i, label %_ZNSt6vectorISt10shared_ptrIN5folly18ThreadPoolExecutor8ObserverEESaIS4_EE11_S_relocateEPS4_S7_S7_RS5_.exit, label %.lr.ph.i.i.i, !llvm.loop !371 _ZNSt6vectorISt10shared_ptrIN5folly18ThreadPoolExecutor8ObserverEESaIS4_EE11_S_relocateEPS4_S7_S7_RS5_.exit: ; preds = %.lr.ph.i.i.i, %_ZNSt16allocator_traitsISaISt10shared_ptrIN5folly18ThreadPoolExecutor8ObserverEEEE9constructIS4_JRKS4_EEEvRS5_PT_DpOT0_.exit %.0.lcssa.i.i.i = phi ptr [ %20, %_ZNSt16allocator_traitsISaISt10shared_ptrIN5folly18ThreadPoolExecutor8ObserverEEEE9constructIS4_JRKS4_EEEvRS5_PT_DpOT0_.exit ], [ %39, %.lr.ph.i.i.i ] @@ -9289,20 +9289,20 @@ _ZNSt6vectorISt10shared_ptrIN5folly18ThreadPoolExecutor8ObserverEESaIS4_EE11_S_r .lr.ph.i.i.i17: ; preds = %_ZNSt6vectorISt10shared_ptrIN5folly18ThreadPoolExecutor8ObserverEESaIS4_EE11_S_relocateEPS4_S7_S7_RS5_.exit, %.lr.ph.i.i.i17 %.012.i.i.i18 = phi ptr [ %46, %.lr.ph.i.i.i17 ], [ %40, %_ZNSt6vectorISt10shared_ptrIN5folly18ThreadPoolExecutor8ObserverEESaIS4_EE11_S_relocateEPS4_S7_S7_RS5_.exit ] %.0911.i.i.i19 = phi ptr [ %45, %.lr.ph.i.i.i17 ], [ %1, %_ZNSt6vectorISt10shared_ptrIN5folly18ThreadPoolExecutor8ObserverEESaIS4_EE11_S_relocateEPS4_S7_S7_RS5_.exit ] - tail call void @llvm.experimental.noalias.scope.decl(metadata !373) - tail call void @llvm.experimental.noalias.scope.decl(metadata !376) - %41 = load ptr, ptr %.0911.i.i.i19, align 8, !tbaa !63, !alias.scope !376, !noalias !373 - store ptr %41, ptr %.012.i.i.i18, align 8, !tbaa !63, !alias.scope !373, !noalias !376 + tail call void @llvm.experimental.noalias.scope.decl(metadata !372) + tail call void @llvm.experimental.noalias.scope.decl(metadata !375) + %41 = load ptr, ptr %.0911.i.i.i19, align 8, !tbaa !63, !alias.scope !375, !noalias !372 + store ptr %41, ptr %.012.i.i.i18, align 8, !tbaa !63, !alias.scope !372, !noalias !375 %42 = getelementptr inbounds nuw i8, ptr %.012.i.i.i18, i64 8 %43 = getelementptr inbounds nuw i8, ptr %.0911.i.i.i19, i64 8 - %44 = load ptr, ptr %43, align 8, !tbaa !24, !alias.scope !376, !noalias !373 - store ptr null, ptr %43, align 8, !tbaa !24, !alias.scope !376, !noalias !373 - store ptr %44, ptr %42, align 8, !tbaa !24, !alias.scope !373, !noalias !376 - store ptr null, ptr %.0911.i.i.i19, align 8, !tbaa !63, !alias.scope !376, !noalias !373 + %44 = load ptr, ptr %43, align 8, !tbaa !24, !alias.scope !375, !noalias !372 + store ptr null, ptr %43, align 8, !tbaa !24, !alias.scope !375, !noalias !372 + store ptr %44, ptr %42, align 8, !tbaa !24, !alias.scope !372, !noalias !375 + store ptr null, ptr %.0911.i.i.i19, align 8, !tbaa !63, !alias.scope !375, !noalias !372 %45 = getelementptr inbounds nuw i8, ptr %.0911.i.i.i19, i64 16 %46 = getelementptr inbounds nuw i8, ptr %.012.i.i.i18, i64 16 %.not.i.i.i20 = icmp eq ptr %45, %5 - br i1 %.not.i.i.i20, label %_ZNSt6vectorISt10shared_ptrIN5folly18ThreadPoolExecutor8ObserverEESaIS4_EE11_S_relocateEPS4_S7_S7_RS5_.exit22, label %.lr.ph.i.i.i17, !llvm.loop !372 + br i1 %.not.i.i.i20, label %_ZNSt6vectorISt10shared_ptrIN5folly18ThreadPoolExecutor8ObserverEESaIS4_EE11_S_relocateEPS4_S7_S7_RS5_.exit22, label %.lr.ph.i.i.i17, !llvm.loop !371 _ZNSt6vectorISt10shared_ptrIN5folly18ThreadPoolExecutor8ObserverEESaIS4_EE11_S_relocateEPS4_S7_S7_RS5_.exit22: ; preds = %.lr.ph.i.i.i17, %_ZNSt6vectorISt10shared_ptrIN5folly18ThreadPoolExecutor8ObserverEESaIS4_EE11_S_relocateEPS4_S7_S7_RS5_.exit %.0.lcssa.i.i.i21 = phi ptr [ %40, %_ZNSt6vectorISt10shared_ptrIN5folly18ThreadPoolExecutor8ObserverEESaIS4_EE11_S_relocateEPS4_S7_S7_RS5_.exit ], [ %46, %.lr.ph.i.i.i17 ] @@ -9349,7 +9349,7 @@ define linkonce_odr ptr @_ZNSt6vectorISt10shared_ptrIN5folly18ThreadPoolExecutor %13 = getelementptr inbounds nuw i8, ptr %.0910.i.i.i.i.i, i64 8 %14 = load ptr, ptr %13, align 8, !tbaa !24 tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.0910.i.i.i.i.i, i8 0, i64 16, i1 false) - store ptr %12, ptr %.0811.i.i.i.i.i, align 8, !tbaa !378 + store ptr %12, ptr %.0811.i.i.i.i.i, align 8, !tbaa !377 %15 = getelementptr inbounds nuw i8, ptr %.0811.i.i.i.i.i, i64 8 %16 = load ptr, ptr %15, align 8, !tbaa !24 store ptr %14, ptr %15, align 8, !tbaa !24 @@ -9405,7 +9405,7 @@ _ZNSt10shared_ptrIN5folly18ThreadPoolExecutor8ObserverEEaSEOS3_.exit.i.i.i.i.i: %39 = getelementptr inbounds nuw i8, ptr %.0811.i.i.i.i.i, i64 16 %40 = add nsw i64 %.012.i.i.i.i.i, -1 %41 = icmp sgt i64 %.012.i.i.i.i.i, 1 - br i1 %41, label %.lr.ph.i.i.i.i.i, label %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN5folly18ThreadPoolExecutor8ObserverEESt6vectorIS6_SaIS6_EEEESB_ET0_T_SD_SC_.exit.loopexit, !llvm.loop !379 + br i1 %41, label %.lr.ph.i.i.i.i.i, label %_ZSt4moveIN9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN5folly18ThreadPoolExecutor8ObserverEESt6vectorIS6_SaIS6_EEEESB_ET0_T_SD_SC_.exit.loopexit, !llvm.loop !378 _ZSt4moveIN9__gnu_cxx17__normal_iteratorIPSt10shared_ptrIN5folly18ThreadPoolExecutor8ObserverEESt6vectorIS6_SaIS6_EEEESB_ET0_T_SD_SC_.exit.loopexit: ; preds = %_ZNSt10shared_ptrIN5folly18ThreadPoolExecutor8ObserverEEaSEOS3_.exit.i.i.i.i.i %.pre = load ptr, ptr %4, align 8, !tbaa !59 @@ -9595,7 +9595,7 @@ define void @_ZN5folly18ThreadPoolExecutor19ensureActiveThreadsEv(ptr noundef no %4 = alloca %"struct.folly::SharedMutexImpl::WaitForever", align 1 %5 = alloca %"class.std::unique_lock", align 8 tail call void @_ZN5folly18ThreadPoolExecutor12ensureJoinedEv(ptr noundef nonnull align 64 dereferenceable(480) %0) - tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #13, !srcloc !380 + tail call void asm sideeffect "", "~{memory},~{dirflag},~{fpsr},~{flags}"() #13, !srcloc !379 %6 = getelementptr inbounds nuw i8, ptr %0, i64 440 %7 = load atomic i64, ptr %6 monotonic, align 8 %8 = getelementptr inbounds nuw i8, ptr %0, i64 424 @@ -9699,21 +9699,21 @@ define linkonce_odr void @_ZNSt5dequeISt10shared_ptrIN5folly18ThreadPoolExecutor %2 = alloca %"struct.std::_Deque_iterator", align 8 %3 = alloca %"struct.std::_Deque_iterator", align 8 %4 = getelementptr inbounds nuw i8, ptr %0, i64 16 - %5 = load ptr, ptr %4, align 8, !tbaa !32, !noalias !381 + %5 = load ptr, ptr %4, align 8, !tbaa !32, !noalias !380 %6 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %7 = load ptr, ptr %6, align 8, !tbaa !42, !noalias !381 + %7 = load ptr, ptr %6, align 8, !tbaa !42, !noalias !380 %8 = getelementptr inbounds nuw i8, ptr %0, i64 32 - %9 = load ptr, ptr %8, align 8, !tbaa !43, !noalias !381 + %9 = load ptr, ptr %8, align 8, !tbaa !43, !noalias !380 %10 = getelementptr inbounds nuw i8, ptr %0, i64 40 - %11 = load ptr, ptr %10, align 8, !tbaa !41, !noalias !381 + %11 = load ptr, ptr %10, align 8, !tbaa !41, !noalias !380 %12 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %13 = load ptr, ptr %12, align 8, !tbaa !32, !noalias !384 + %13 = load ptr, ptr %12, align 8, !tbaa !32, !noalias !383 %14 = getelementptr inbounds nuw i8, ptr %0, i64 56 - %15 = load ptr, ptr %14, align 8, !tbaa !42, !noalias !384 + %15 = load ptr, ptr %14, align 8, !tbaa !42, !noalias !383 %16 = getelementptr inbounds nuw i8, ptr %0, i64 64 - %17 = load ptr, ptr %16, align 8, !tbaa !43, !noalias !384 + %17 = load ptr, ptr %16, align 8, !tbaa !43, !noalias !383 %18 = getelementptr inbounds nuw i8, ptr %0, i64 72 - %19 = load ptr, ptr %18, align 8, !tbaa !41, !noalias !384 + %19 = load ptr, ptr %18, align 8, !tbaa !41, !noalias !383 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %2) call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) store ptr %5, ptr %2, align 8, !tbaa !32 @@ -9865,7 +9865,7 @@ _ZSt8_DestroyIPSt10shared_ptrIN5folly18ThreadPoolExecutor6ThreadEES4_EvT_S6_RSaI %.0 = getelementptr inbounds nuw i8, ptr %.037, i64 8 %34 = load ptr, ptr %6, align 8, !tbaa !41 %35 = icmp ult ptr %.0, %34 - br i1 %35, label %.lr.ph, label %._crit_edge.loopexit, !llvm.loop !387 + br i1 %35, label %.lr.ph, label %._crit_edge.loopexit, !llvm.loop !386 36: ; preds = %._crit_edge %37 = getelementptr inbounds nuw i8, ptr %1, i64 16 @@ -10590,25 +10590,24 @@ attributes #39 = { cold } !363 = distinct !{!363, !34} !364 = distinct !{!364, !34} !365 = distinct !{!365, !34} -!366 = distinct !{!366, !34} -!367 = !{!368} -!368 = distinct !{!368, !369, !"_ZSt19__relocate_object_aISt10shared_ptrIN5folly18ThreadPoolExecutor8ObserverEES4_SaIS4_EEvPT_PT0_RT1_: argument 0"} -!369 = distinct !{!369, !"_ZSt19__relocate_object_aISt10shared_ptrIN5folly18ThreadPoolExecutor8ObserverEES4_SaIS4_EEvPT_PT0_RT1_"} -!370 = !{!371} -!371 = distinct !{!371, !369, !"_ZSt19__relocate_object_aISt10shared_ptrIN5folly18ThreadPoolExecutor8ObserverEES4_SaIS4_EEvPT_PT0_RT1_: argument 1"} -!372 = distinct !{!372, !34} -!373 = !{!374} -!374 = distinct !{!374, !375, !"_ZSt19__relocate_object_aISt10shared_ptrIN5folly18ThreadPoolExecutor8ObserverEES4_SaIS4_EEvPT_PT0_RT1_: argument 0"} -!375 = distinct !{!375, !"_ZSt19__relocate_object_aISt10shared_ptrIN5folly18ThreadPoolExecutor8ObserverEES4_SaIS4_EEvPT_PT0_RT1_"} -!376 = !{!377} -!377 = distinct !{!377, !375, !"_ZSt19__relocate_object_aISt10shared_ptrIN5folly18ThreadPoolExecutor8ObserverEES4_SaIS4_EEvPT_PT0_RT1_: argument 1"} -!378 = !{!65, !65, i64 0} -!379 = distinct !{!379, !34} -!380 = !{i64 6882566} -!381 = !{!382} -!382 = distinct !{!382, !383, !"_ZNSt5dequeISt10shared_ptrIN5folly18ThreadPoolExecutor6ThreadEESaIS4_EE5beginEv: argument 0"} -!383 = distinct !{!383, !"_ZNSt5dequeISt10shared_ptrIN5folly18ThreadPoolExecutor6ThreadEESaIS4_EE5beginEv"} -!384 = !{!385} -!385 = distinct !{!385, !386, !"_ZNSt5dequeISt10shared_ptrIN5folly18ThreadPoolExecutor6ThreadEESaIS4_EE3endEv: argument 0"} -!386 = distinct !{!386, !"_ZNSt5dequeISt10shared_ptrIN5folly18ThreadPoolExecutor6ThreadEESaIS4_EE3endEv"} -!387 = distinct !{!387, !34} +!366 = !{!367} +!367 = distinct !{!367, !368, !"_ZSt19__relocate_object_aISt10shared_ptrIN5folly18ThreadPoolExecutor8ObserverEES4_SaIS4_EEvPT_PT0_RT1_: argument 0"} +!368 = distinct !{!368, !"_ZSt19__relocate_object_aISt10shared_ptrIN5folly18ThreadPoolExecutor8ObserverEES4_SaIS4_EEvPT_PT0_RT1_"} +!369 = !{!370} +!370 = distinct !{!370, !368, !"_ZSt19__relocate_object_aISt10shared_ptrIN5folly18ThreadPoolExecutor8ObserverEES4_SaIS4_EEvPT_PT0_RT1_: argument 1"} +!371 = distinct !{!371, !34} +!372 = !{!373} +!373 = distinct !{!373, !374, !"_ZSt19__relocate_object_aISt10shared_ptrIN5folly18ThreadPoolExecutor8ObserverEES4_SaIS4_EEvPT_PT0_RT1_: argument 0"} +!374 = distinct !{!374, !"_ZSt19__relocate_object_aISt10shared_ptrIN5folly18ThreadPoolExecutor8ObserverEES4_SaIS4_EEvPT_PT0_RT1_"} +!375 = !{!376} +!376 = distinct !{!376, !374, !"_ZSt19__relocate_object_aISt10shared_ptrIN5folly18ThreadPoolExecutor8ObserverEES4_SaIS4_EEvPT_PT0_RT1_: argument 1"} +!377 = !{!65, !65, i64 0} +!378 = distinct !{!378, !34} +!379 = !{i64 6882566} +!380 = !{!381} +!381 = distinct !{!381, !382, !"_ZNSt5dequeISt10shared_ptrIN5folly18ThreadPoolExecutor6ThreadEESaIS4_EE5beginEv: argument 0"} +!382 = distinct !{!382, !"_ZNSt5dequeISt10shared_ptrIN5folly18ThreadPoolExecutor6ThreadEESaIS4_EE5beginEv"} +!383 = !{!384} +!384 = distinct !{!384, !385, !"_ZNSt5dequeISt10shared_ptrIN5folly18ThreadPoolExecutor6ThreadEESaIS4_EE3endEv: argument 0"} +!385 = distinct !{!385, !"_ZNSt5dequeISt10shared_ptrIN5folly18ThreadPoolExecutor6ThreadEESaIS4_EE3endEv"} +!386 = distinct !{!386, !34} diff --git a/bench/freetype/optimized/psaux.ll b/bench/freetype/optimized/psaux.ll index fab050a0f2e..b6641297ed6 100644 --- a/bench/freetype/optimized/psaux.ll +++ b/bench/freetype/optimized/psaux.ll @@ -6111,7 +6111,7 @@ afm_tokenize.exit.thread.i39.i.backedge: ; preds = %.loopexit17.i.i36.i br label %.thread.i45.i .thread.i45.i: ; preds = %433, %427 - %.sink96.i.i = phi i32 [ %432, %433 ], [ 0, %427 ] + %.sink93.i.i = phi i32 [ %432, %433 ], [ 0, %427 ] %.sink.i.i101 = phi i32 [ %437, %433 ], [ %432, %427 ] %438 = getelementptr inbounds nuw i8, ptr %424, i64 8 store i32 %.sink96.i.i, ptr %438, align 4, !tbaa !408 @@ -20442,34 +20442,33 @@ define internal fastcc i32 @cf2_hintmap_map(ptr noundef captures(none) %0, i32 n .critedge2: ; preds = %.lr.ph store i32 %.144, ptr %21, align 4, !tbaa !716 - %37 = zext i32 %.144 to i64 - br label %._crit_edge._crit_edge + br label %54 ._crit_edge: ; preds = %35, %.critedge store i32 0, ptr %21, align 4, !tbaa !716 - %38 = load i32, ptr %24, align 8, !tbaa !720 - %39 = icmp slt i32 %1, %38 + %37 = load i32, ptr %24, align 8, !tbaa !720 + %38 = icmp slt i32 %1, %38 br i1 %39, label %40, label %._crit_edge._crit_edge 40: ; preds = %._crit_edge - %41 = sub i32 %1, %38 - %42 = getelementptr inbounds nuw i8, ptr %0, i64 28 - %43 = load i32, ptr %42, align 4, !tbaa !588 - %44 = sext i32 %41 to i64 - %45 = sext i32 %43 to i64 - %46 = mul nsw i64 %45, %44 - %47 = ashr i64 %46, 63 - %48 = add nsw i64 %46, 32768 - %49 = add nsw i64 %48, %47 - %50 = lshr i64 %49, 16 - %51 = trunc i64 %50 to i32 - %52 = getelementptr inbounds nuw i8, ptr %0, i64 60 - %53 = load i32, ptr %52, align 4, !tbaa !723 - %54 = add i32 %53, %51 + %40 = sub i32 %1, %38 + %41 = getelementptr inbounds nuw i8, ptr %0, i64 28 + %42 = load i32, ptr %42, align 4, !tbaa !588 + %43 = sext i32 %40 to i64 + %44 = sext i32 %42 to i64 + %45 = mul nsw i64 %45, %44 + %46 = ashr i64 %46, 63 + %47 = add nsw i64 %46, 32768 + %48 = add nsw i64 %48, %47 + %49 = lshr i64 %49, 16 + %50 = trunc i64 %49 to i32 + %51 = getelementptr inbounds nuw i8, ptr %0, i64 60 + %52 = load i32, ptr %52, align 4, !tbaa !723 + %53 = add i32 %53, %51 br label %73 -._crit_edge._crit_edge: ; preds = %._crit_edge, %.critedge2 - %.142 = phi i64 [ %37, %.critedge2 ], [ 0, %._crit_edge ] +._crit_edge._crit_edge: ; preds = %.critedge2, %._crit_edge + %.142 = phi i64 [ %31, %.critedge2 ], [ 0, %._crit_edge ] %55 = getelementptr inbounds nuw i8, ptr %0, i64 40 %56 = getelementptr inbounds nuw [192 x %struct.CF2_HintRec_], ptr %55, i64 0, i64 %.142 %57 = getelementptr inbounds nuw i8, ptr %56, i64 16 diff --git a/bench/gromacs/optimized/gmx_wham.ll b/bench/gromacs/optimized/gmx_wham.ll index 32215739efd..85d5497b597 100644 --- a/bench/gromacs/optimized/gmx_wham.ll +++ b/bench/gromacs/optimized/gmx_wham.ll @@ -12572,7 +12572,7 @@ _ZL13gmx_snew_implI11t_pullcoordEvPKcS2_iRPT_m.exit: ; preds = %74 %.b.pre = load i1, ptr @_ZZL15read_tpr_headerPKcP16t_UmbrellaHeaderP15UmbrellaOptionsP16t_coordselectionE5first, align 4 %357 = trunc nuw i8 %.pre87 to i1 %358 = select i1 %357, i1 true, i1 %.b.pre - br label %413 + br i1 %358, label %415, label %414 359: ; preds = %.lr.ph48, %403 %indvars.iv79 = phi i64 [ 0, %.lr.ph48 ], [ %indvars.iv.next80, %403 ] @@ -12647,15 +12647,14 @@ _ZL13gmx_snew_implI11t_pullcoordEvPKcS2_iRPT_m.exit: ; preds = %74 call void @llvm.lifetime.end.p0(i64 4096, ptr nonnull %18) #26 br label %417 -413: ; preds = %._crit_edge, %._crit_edge49 - %414 = phi i1 [ %.b197, %._crit_edge ], [ %358, %._crit_edge49 ] - br i1 %414, label %416, label %415 +413: ; preds = %._crit_edge + br i1 %.b197, label %415, label %414 -415: ; preds = %413 +415: ; preds = %._crit_edge49, %413 %puts = call i32 @puts(ptr nonnull dereferenceable(1) @str.8) br label %416 -416: ; preds = %415, %413 +416: ; preds = %._crit_edge49, %415, %413 store i1 true, ptr @_ZZL15read_tpr_headerPKcP16t_UmbrellaHeaderP15UmbrellaOptionsP16t_coordselectionE5first, align 4 call void @_ZN7t_stateD2Ev(ptr noundef nonnull align 8 dereferenceable(832) %6) #26 call void @llvm.lifetime.end.p0(i64 832, ptr nonnull %6) #26 diff --git a/bench/hdf5/optimized/H5Dcontig.ll b/bench/hdf5/optimized/H5Dcontig.ll index 6b7c1d9b572..499483609cc 100644 --- a/bench/hdf5/optimized/H5Dcontig.ll +++ b/bench/hdf5/optimized/H5Dcontig.ll @@ -2695,11 +2695,11 @@ define internal range(i32 -1, 1) i32 @H5D__contig_writevv_sieve_cb(i64 noundef % %or.cond203 = select i1 %or.cond197.not207, i1 true, i1 %.not190 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %7, i64 32 %.pre = load i8, ptr %.phi.trans.insert, align 8, !tbaa !163, !range !7 - br i1 %or.cond203, label %138, label %126 + %126 = trunc nuw i8 %.pre to i1 + br i1 %or.cond203, label %138, label %127 126: ; preds = %122 - %127 = trunc nuw i8 %.pre to i1 - br i1 %127, label %129, label %.thread + br i1 %126, label %129, label %.thread .thread: ; preds = %126 %128 = getelementptr inbounds nuw i8, ptr %7, i64 32 @@ -2729,18 +2729,17 @@ define internal range(i32 -1, 1) i32 @H5D__contig_writevv_sieve_cb(i64 noundef % 138: ; preds = %122 %139 = getelementptr inbounds nuw i8, ptr %7, i64 32 - %140 = trunc nuw i8 %.pre to i1 - br i1 %140, label %141, label %149 + br i1 %126, label %140, label %148 141: ; preds = %138 - %142 = tail call i32 @H5F_shared_block_write(ptr noundef %5, i32 noundef 3, i64 noundef %77, i64 noundef %79, ptr noundef nonnull %17) #9 - %143 = icmp slt i32 %142, 0 + %141 = tail call i32 @H5F_shared_block_write(ptr noundef %5, i32 noundef 3, i64 noundef %77, i64 noundef %79, ptr noundef nonnull %17) #9 + %142 = icmp slt i32 %142, 0 br i1 %143, label %144, label %148 144: ; preds = %141 - %145 = load i64, ptr @H5E_DATASET_g, align 8, !tbaa !48 - %146 = load i64, ptr @H5E_WRITEERROR_g, align 8, !tbaa !48 - %147 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str.1, ptr noundef nonnull @__func__.H5D__contig_writevv_sieve_cb, i32 noundef 1435, i64 noundef %145, i64 noundef %146, ptr noundef nonnull @.str.51) #9 + %144 = load i64, ptr @H5E_DATASET_g, align 8, !tbaa !48 + %145 = load i64, ptr @H5E_WRITEERROR_g, align 8, !tbaa !48 + %146 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str.1, ptr noundef nonnull @__func__.H5D__contig_writevv_sieve_cb, i32 noundef 1435, i64 noundef %145, i64 noundef %146, ptr noundef nonnull @.str.51) #9 br label %175 148: ; preds = %141 @@ -2748,45 +2747,45 @@ define internal range(i32 -1, 1) i32 @H5D__contig_writevv_sieve_cb(i64 noundef % br label %149 149: ; preds = %.thread, %148, %138 - %150 = phi ptr [ %128, %.thread ], [ %139, %148 ], [ %139, %138 ] + %149 = phi ptr [ %128, %.thread ], [ %139, %148 ], [ %139, %138 ] store i64 %82, ptr %76, align 8, !tbaa !160 - %151 = tail call i64 @H5F_shared_get_eoa(ptr noundef %5, i32 noundef 3) #9 - %152 = icmp eq i64 %151, -1 + %150 = tail call i64 @H5F_shared_get_eoa(ptr noundef %5, i32 noundef 3) #9 + %151 = icmp eq i64 %151, -1 br i1 %152, label %153, label %157 153: ; preds = %149 - %154 = load i64, ptr @H5E_DATASET_g, align 8, !tbaa !48 - %155 = load i64, ptr @H5E_CANTGET_g, align 8, !tbaa !48 - %156 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str.1, ptr noundef nonnull @__func__.H5D__contig_writevv_sieve_cb, i32 noundef 1446, i64 noundef %154, i64 noundef %155, ptr noundef nonnull @.str.12) #9 + %153 = load i64, ptr @H5E_DATASET_g, align 8, !tbaa !48 + %154 = load i64, ptr @H5E_CANTGET_g, align 8, !tbaa !48 + %155 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str.1, ptr noundef nonnull @__func__.H5D__contig_writevv_sieve_cb, i32 noundef 1446, i64 noundef %154, i64 noundef %155, ptr noundef nonnull @.str.12) #9 br label %175 157: ; preds = %149 - %158 = getelementptr inbounds nuw i8, ptr %9, i64 8 - %159 = load i64, ptr %158, align 8, !tbaa !161 - %160 = sub i64 %159, %0 - %161 = load i64, ptr %76, align 8, !tbaa !160 - %162 = sub i64 %151, %161 - %163 = load i64, ptr %94, align 8, !tbaa !159 + %157 = getelementptr inbounds nuw i8, ptr %9, i64 8 + %158 = load i64, ptr %158, align 8, !tbaa !161 + %159 = sub i64 %159, %0 + %160 = load i64, ptr %76, align 8, !tbaa !160 + %161 = sub i64 %151, %161 + %162 = load i64, ptr %94, align 8, !tbaa !159 %.198 = tail call i64 @llvm.umin.i64(i64 %160, i64 %163) %spec.select204 = tail call i64 @llvm.umin.i64(i64 %162, i64 %.198) store i64 %spec.select204, ptr %78, align 8, !tbaa !162 - %164 = icmp ugt i64 %spec.select204, %2 + %163 = icmp ugt i64 %spec.select204, %2 br i1 %164, label %165, label %173 165: ; preds = %157 - %166 = load ptr, ptr %7, align 8, !tbaa !156 - %167 = tail call i32 @H5F_shared_block_read(ptr noundef %5, i32 noundef 3, i64 noundef %161, i64 noundef %spec.select204, ptr noundef %166) #9 - %168 = icmp slt i32 %167, 0 + %165 = load ptr, ptr %7, align 8, !tbaa !156 + %166 = tail call i32 @H5F_shared_block_read(ptr noundef %5, i32 noundef 3, i64 noundef %161, i64 noundef %spec.select204, ptr noundef %166) #9 + %167 = icmp slt i32 %167, 0 br i1 %168, label %169, label %173 169: ; preds = %165 - %170 = load i64, ptr @H5E_DATASET_g, align 8, !tbaa !48 - %171 = load i64, ptr @H5E_READERROR_g, align 8, !tbaa !48 - %172 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str.1, ptr noundef nonnull @__func__.H5D__contig_writevv_sieve_cb, i32 noundef 1464, i64 noundef %170, i64 noundef %171, ptr noundef nonnull @.str.49) #9 + %169 = load i64, ptr @H5E_DATASET_g, align 8, !tbaa !48 + %170 = load i64, ptr @H5E_READERROR_g, align 8, !tbaa !48 + %171 = tail call i32 (ptr, ptr, i32, i64, i64, ptr, ...) @H5E_printf_stack(ptr noundef nonnull @.str.1, ptr noundef nonnull @__func__.H5D__contig_writevv_sieve_cb, i32 noundef 1464, i64 noundef %170, i64 noundef %171, ptr noundef nonnull @.str.49) #9 br label %175 173: ; preds = %165, %157 - %174 = load ptr, ptr %7, align 8, !tbaa !156 + %173 = load ptr, ptr %7, align 8, !tbaa !156 tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %174, ptr align 1 %85, i64 %2, i1 false) store i8 1, ptr %150, align 8, !tbaa !163 br label %175 diff --git a/bench/hermes/optimized/regcomp.ll b/bench/hermes/optimized/regcomp.ll index 14ec91fbbcb..96ebc4cf038 100644 --- a/bench/hermes/optimized/regcomp.ll +++ b/bench/hermes/optimized/regcomp.ll @@ -719,7 +719,6 @@ if.then8.i: ; preds = %do.end.i pluscount.exit: ; preds = %stripsnug.exit.pluscount.exit_crit_edge, %do.end.i, %if.then8.i %cmp.not.i120168 = phi i1 [ true, %if.then8.i ], [ true, %do.end.i ], [ false, %stripsnug.exit.pluscount.exit_crit_edge ] - %pa.val75166 = phi i32 [ %pa.val75.pre, %if.then8.i ], [ %pa.val75.pre, %do.end.i ], [ 1, %stripsnug.exit.pluscount.exit_crit_edge ] %43 = phi i32 [ %or.i138, %if.then8.i ], [ %.pre162, %do.end.i ], [ %.pre, %stripsnug.exit.pluscount.exit_crit_edge ] %retval.0.i = phi i64 [ %maxnest.2.i, %if.then8.i ], [ %maxnest.2.i, %do.end.i ], [ 0, %stripsnug.exit.pluscount.exit_crit_edge ] %nplus = getelementptr inbounds nuw i8, ptr %call11, i64 128 @@ -748,8 +747,7 @@ if.end49.thread: ; preds = %if.then.i145, %if.t br label %if.then52 if.end49: ; preds = %pluscount.exit - %cmp51.not = icmp eq i32 %pa.val75166, 0 - br i1 %cmp51.not, label %return, label %if.then52 + br i1 %cmp.not.i120168, label %return, label %if.then52 if.then52: ; preds = %if.end49.thread, %if.end49 call void @llvh_regfree(ptr noundef nonnull %preg) #18 diff --git a/bench/hyperscan/optimized/ng_haig.ll b/bench/hyperscan/optimized/ng_haig.ll index bf44b808751..044f57342db 100644 --- a/bench/hyperscan/optimized/ng_haig.ll +++ b/bench/hyperscan/optimized/ng_haig.ll @@ -10710,7 +10710,7 @@ _ZNK3ue28bitfieldILm256EE3anyEv.exit.i.i: ; preds = %296 br i1 %.not158187.i.i, label %._crit_edge191.i.i, label %.lr.ph190.i.i ._crit_edge191.i.i: ; preds = %333, %298 - %301 = trunc nuw i8 %.064194.i.i to i1 + %301 = trunc i8 %.064194.i.i to i1 br i1 %301, label %334, label %341 .lr.ph190.i.i: ; preds = %298, %333 @@ -10792,14 +10792,12 @@ _ZN3ue28containsINS_8flat_setINS_12graph_detail17vertex_descriptorINS_9ue2_graph %336 = getelementptr inbounds nuw [4 x i64], ptr %213, i64 0, i64 %335 %337 = load i64, ptr %336, align 8 %338 = and i64 %.065193.i.i, 63 - %339 = shl nuw i64 1, %338 - %340 = and i64 %337, %339 - %.not159.i.i = icmp eq i64 %340, 0 - %spec.select.i.i = select i1 %.not159.i.i, i8 0, i8 %.064194.i.i + %339 = lshr i64 %337, %338 + %340 = trunc i64 %339 to i8 br label %341 341: ; preds = %334, %._crit_edge191.i.i - %.1.i.i = phi i8 [ 0, %._crit_edge191.i.i ], [ %spec.select.i.i, %334 ] + %.1.i.i = phi i8 [ 0, %._crit_edge191.i.i ], [ %340, %334 ] %.not.i71.i.i = icmp ult i64 %.065193.i.i, 256 br i1 %.not.i71.i.i, label %342, label %._crit_edge196.i.i @@ -11007,7 +11005,7 @@ _ZNK3ue28bitfieldILm256EE10find_firstEv.exit89.i.i: ; preds = %414 %424 = zext i16 %423 to i64 %425 = getelementptr inbounds nuw %"class.ue2::bitfield", ptr %.sroa.0250.0, i64 %424 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %425, ptr noundef nonnull readonly align 8 dereferenceable(32) %12, i64 32, i1 false) - %426 = trunc nuw i8 %.064.lcssa.i.i to i1 + %426 = trunc i8 %.064.lcssa.i.i to i1 br i1 %426, label %480, label %_ZN3ue212_GLOBAL__N_114Automaton_BaseINS0_12Graph_TraitsEE10transitionERKNS_8bitfieldILm256EEEPS5_.exit .lr.ph217.i.i: ; preds = %.lr.ph217.i.i.preheader, %_ZNK3ue28bitfieldILm256EE9find_nextEm.exit99.i.i @@ -17216,7 +17214,7 @@ _ZN5boost14dynamic_bitsetImSaImEED2Ev.exit10.i.i.i: ; preds = %_ZNSt16allocator_ br i1 %.not503522.i.i, label %._crit_edge526.i.i, label %.lr.ph525.i.i ._crit_edge526.i.i: ; preds = %531, %496 - %499 = trunc nuw i8 %.066529.i.i to i1 + %499 = trunc i8 %.066529.i.i to i1 br i1 %499, label %532, label %539 .lr.ph525.i.i: ; preds = %496, %531 @@ -17298,14 +17296,12 @@ _ZNKSt4lessIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderE %534 = getelementptr inbounds nuw i64, ptr %469, i64 %533 %535 = load i64, ptr %534, align 8 %536 = and i64 %.067528.i.i, 63 - %537 = shl nuw i64 1, %536 - %538 = and i64 %535, %537 - %.not504.i.i = icmp eq i64 %538, 0 - %spec.select.i.i = select i1 %.not504.i.i, i8 0, i8 %.066529.i.i + %537 = lshr i64 %535, %536 + %538 = trunc i64 %537 to i8 br label %539 539: ; preds = %532, %._crit_edge526.i.i - %.1.i.i = phi i8 [ 0, %._crit_edge526.i.i ], [ %spec.select.i.i, %532 ] + %.1.i.i = phi i8 [ 0, %._crit_edge526.i.i ], [ %538, %532 ] %540 = icmp uge i64 %.067528.i.i, %463 %or.cond.i.i.i = or i1 %464, %540 br i1 %or.cond.i.i.i, label %_ZNK5boost14dynamic_bitsetImSaImEE10find_firstEv.exit._crit_edge.i.i, label %541 @@ -18356,7 +18352,7 @@ _ZNK3ue29CharReach9find_nextEm.exit.i.i: ; preds = %893, %886 %903 = load i64, ptr %325, align 8 %904 = getelementptr inbounds nuw i8, ptr %796, i64 24 store i64 %903, ptr %904, align 8 - %905 = trunc nuw i8 %.066.lcssa.i.i to i1 + %905 = trunc i8 %.066.lcssa.i.i to i1 br i1 %905, label %906, label %_ZNK5boost14dynamic_bitsetImSaImEE3anyEv.exit181.thread.i.i 906: ; preds = %902 diff --git a/bench/hyperscan/optimized/ng_repeat.ll b/bench/hyperscan/optimized/ng_repeat.ll index 6893b84f3ac..89e72efdda0 100644 --- a/bench/hyperscan/optimized/ng_repeat.ll +++ b/bench/hyperscan/optimized/ng_repeat.ll @@ -17202,7 +17202,6 @@ _ZNK5boost6detail18out_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS2_8NGHo br i1 %.not.i.i.i.i8.i.i.i, label %.sink.split.i.i.i, label %.lr.ph.i.i.i.i3.i.i.i, !llvm.loop !666 .sink.split.i.i.i: ; preds = %_ZNK5boost6detail18out_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS2_8NGHolderEEES6_NS_14filtered_graphIS5_S6_S6_EEEclINS2_12graph_detail15edge_descriptorINS2_9ue2_graphIS5_NS2_19NFAGraphVertexPropsENS2_17NFAGraphEdgePropsEEEEEEEbRKT_.exit.thread.i.i.i.i.i.i.i, %_ZNK5boost6detail18out_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS2_8NGHolderEEES6_NS_14filtered_graphIS5_S6_S6_EEEclINS2_12graph_detail15edge_descriptorINS2_9ue2_graphIS5_NS2_19NFAGraphVertexPropsENS2_17NFAGraphEdgePropsEEEEEEEbRKT_.exit.i.i.i.i.i.i.i, %_ZN5boost9iterators6detail20iterator_facade_baseINS0_15filter_iteratorINS_6detail17in_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS6_8NGHolderEEESA_NS_14filtered_graphIS9_SA_SA_EEEENS6_9ue2_graphIS9_NS6_19NFAGraphVertexPropsENS6_17NFAGraphEdgePropsEE16in_edge_iteratorEEENS6_12graph_detail15edge_descriptorISH_EENS1_32iterator_category_with_traversalISt18input_iterator_tagNS0_27bidirectional_traversal_tagEEESM_lLb0ELb0EEppEv.exit.i.i.i, %154 - %.sroa.99.1 = phi i8 [ 1, %154 ], [ 1, %_ZN5boost9iterators6detail20iterator_facade_baseINS0_15filter_iteratorINS_6detail17in_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS6_8NGHolderEEESA_NS_14filtered_graphIS9_SA_SA_EEEENS6_9ue2_graphIS9_NS6_19NFAGraphVertexPropsENS6_17NFAGraphEdgePropsEE16in_edge_iteratorEEENS6_12graph_detail15edge_descriptorISH_EENS1_32iterator_category_with_traversalISt18input_iterator_tagNS0_27bidirectional_traversal_tagEEESM_lLb0ELb0EEppEv.exit.i.i.i ], [ %.sroa.99.0361, %_ZNK5boost6detail18out_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS2_8NGHolderEEES6_NS_14filtered_graphIS5_S6_S6_EEEclINS2_12graph_detail15edge_descriptorINS2_9ue2_graphIS5_NS2_19NFAGraphVertexPropsENS2_17NFAGraphEdgePropsEEEEEEEbRKT_.exit.i.i.i.i.i.i.i ], [ %.sroa.99.0361, %_ZNK5boost6detail18out_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS2_8NGHolderEEES6_NS_14filtered_graphIS5_S6_S6_EEEclINS2_12graph_detail15edge_descriptorINS2_9ue2_graphIS5_NS2_19NFAGraphVertexPropsENS2_17NFAGraphEdgePropsEEEEEEEbRKT_.exit.thread.i.i.i.i.i.i.i ] %.sroa.57.2 = phi ptr [ %155, %154 ], [ %.sroa.57.0364, %_ZN5boost9iterators6detail20iterator_facade_baseINS0_15filter_iteratorINS_6detail17in_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS6_8NGHolderEEESA_NS_14filtered_graphIS9_SA_SA_EEEENS6_9ue2_graphIS9_NS6_19NFAGraphVertexPropsENS6_17NFAGraphEdgePropsEE16in_edge_iteratorEEENS6_12graph_detail15edge_descriptorISH_EENS1_32iterator_category_with_traversalISt18input_iterator_tagNS0_27bidirectional_traversal_tagEEESM_lLb0ELb0EEppEv.exit.i.i.i ], [ %162, %_ZNK5boost6detail18out_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS2_8NGHolderEEES6_NS_14filtered_graphIS5_S6_S6_EEEclINS2_12graph_detail15edge_descriptorINS2_9ue2_graphIS5_NS2_19NFAGraphVertexPropsENS2_17NFAGraphEdgePropsEEEEEEEbRKT_.exit.thread.i.i.i.i.i.i.i ], [ %.sroa.57.1, %_ZNK5boost6detail18out_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS2_8NGHolderEEES6_NS_14filtered_graphIS5_S6_S6_EEEclINS2_12graph_detail15edge_descriptorINS2_9ue2_graphIS5_NS2_19NFAGraphVertexPropsENS2_17NFAGraphEdgePropsEEEEEEEbRKT_.exit.i.i.i.i.i.i.i ] %.sroa.22.3 = phi ptr [ %.sroa.22.0373, %154 ], [ %.sroa.22.2, %_ZN5boost9iterators6detail20iterator_facade_baseINS0_15filter_iteratorINS_6detail17in_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS6_8NGHolderEEESA_NS_14filtered_graphIS9_SA_SA_EEEENS6_9ue2_graphIS9_NS6_19NFAGraphVertexPropsENS6_17NFAGraphEdgePropsEE16in_edge_iteratorEEENS6_12graph_detail15edge_descriptorISH_EENS1_32iterator_category_with_traversalISt18input_iterator_tagNS0_27bidirectional_traversal_tagEEESM_lLb0ELb0EEppEv.exit.i.i.i ], [ %.sroa.22.0373, %_ZNK5boost6detail18out_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS2_8NGHolderEEES6_NS_14filtered_graphIS5_S6_S6_EEEclINS2_12graph_detail15edge_descriptorINS2_9ue2_graphIS5_NS2_19NFAGraphVertexPropsENS2_17NFAGraphEdgePropsEEEEEEEbRKT_.exit.i.i.i.i.i.i.i ], [ %.sroa.22.0373, %_ZNK5boost6detail18out_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS2_8NGHolderEEES6_NS_14filtered_graphIS5_S6_S6_EEEclINS2_12graph_detail15edge_descriptorINS2_9ue2_graphIS5_NS2_19NFAGraphVertexPropsENS2_17NFAGraphEdgePropsEEEEEEEbRKT_.exit.thread.i.i.i.i.i.i.i ] %163 = getelementptr inbounds nuw i8, ptr %.sroa.0235.0377, i64 136 @@ -17303,7 +17302,7 @@ _ZN5boost9iterators6detail20iterator_facade_baseINS0_15filter_iteratorINS_6detai br i1 %.not.i, label %.loopexit, label %167, !llvm.loop !675 .loopexit: ; preds = %_ZN5boost4edgeIN3ue28NGHolderENS1_12_GLOBAL__N_111ReachFilterIS2_EES5_EESt4pairINS_14filtered_graphIT_T0_T1_E15edge_descriptorEbENSB_17vertex_descriptorESE_RKSB_.exit.i, %_ZN5boost9iterators6detail20iterator_facade_baseINS0_15filter_iteratorINS_6detail18out_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS6_8NGHolderEEESA_NS_14filtered_graphIS9_SA_SA_EEEENS6_9ue2_graphIS9_NS6_19NFAGraphVertexPropsENS6_17NFAGraphEdgePropsEE17out_edge_iteratorEEENS6_12graph_detail15edge_descriptorISH_EENS1_32iterator_category_with_traversalISt18input_iterator_tagNS0_27bidirectional_traversal_tagEEESM_lLb0ELb0EEppEv.exit.i, %.critedge24.i.i.i.i, %.critedge.i.i.i.i, %_ZN5boost9iterators6detail20iterator_facade_baseINS0_15filter_iteratorINS_6detail17in_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS6_8NGHolderEEESA_NS_14filtered_graphIS9_SA_SA_EEEENS6_9ue2_graphIS9_NS6_19NFAGraphVertexPropsENS6_17NFAGraphEdgePropsEE16in_edge_iteratorEEENS6_12graph_detail15edge_descriptorISH_EENS1_32iterator_category_with_traversalISt18input_iterator_tagNS0_27bidirectional_traversal_tagEEESM_lLb0ELb0EEppEv.exit.i.i.i, %.sink.split.i.i.i - %.sroa.99.2 = phi i8 [ %.sroa.99.0361, %_ZN5boost9iterators6detail20iterator_facade_baseINS0_15filter_iteratorINS_6detail17in_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS6_8NGHolderEEESA_NS_14filtered_graphIS9_SA_SA_EEEENS6_9ue2_graphIS9_NS6_19NFAGraphVertexPropsENS6_17NFAGraphEdgePropsEE16in_edge_iteratorEEENS6_12graph_detail15edge_descriptorISH_EENS1_32iterator_category_with_traversalISt18input_iterator_tagNS0_27bidirectional_traversal_tagEEESM_lLb0ELb0EEppEv.exit.i.i.i ], [ %.sroa.99.1, %.sink.split.i.i.i ], [ %.sroa.99.1, %.critedge.i.i.i.i ], [ %.sroa.99.1, %.critedge24.i.i.i.i ], [ %.sroa.99.1, %_ZN5boost9iterators6detail20iterator_facade_baseINS0_15filter_iteratorINS_6detail18out_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS6_8NGHolderEEESA_NS_14filtered_graphIS9_SA_SA_EEEENS6_9ue2_graphIS9_NS6_19NFAGraphVertexPropsENS6_17NFAGraphEdgePropsEE17out_edge_iteratorEEENS6_12graph_detail15edge_descriptorISH_EENS1_32iterator_category_with_traversalISt18input_iterator_tagNS0_27bidirectional_traversal_tagEEESM_lLb0ELb0EEppEv.exit.i ], [ %.sroa.99.1, %_ZN5boost4edgeIN3ue28NGHolderENS1_12_GLOBAL__N_111ReachFilterIS2_EES5_EESt4pairINS_14filtered_graphIT_T0_T1_E15edge_descriptorEbENSB_17vertex_descriptorESE_RKSB_.exit.i ] + %.sroa.99.2 = phi i8 [ 0, %_ZN5boost9iterators6detail20iterator_facade_baseINS0_15filter_iteratorINS_6detail17in_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS6_8NGHolderEEESA_NS_14filtered_graphIS9_SA_SA_EEEENS6_9ue2_graphIS9_NS6_19NFAGraphVertexPropsENS6_17NFAGraphEdgePropsEE16in_edge_iteratorEEENS6_12graph_detail15edge_descriptorISH_EENS1_32iterator_category_with_traversalISt18input_iterator_tagNS0_27bidirectional_traversal_tagEEESM_lLb0ELb0EEppEv.exit.i.i.i ], [ 1, %.sink.split.i.i.i ], [ 1, %.critedge.i.i.i.i ], [ 1, %.critedge24.i.i.i.i ], [ 1, %_ZN5boost9iterators6detail20iterator_facade_baseINS0_15filter_iteratorINS_6detail18out_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS6_8NGHolderEEESA_NS_14filtered_graphIS9_SA_SA_EEEENS6_9ue2_graphIS9_NS6_19NFAGraphVertexPropsENS6_17NFAGraphEdgePropsEE17out_edge_iteratorEEENS6_12graph_detail15edge_descriptorISH_EENS1_32iterator_category_with_traversalISt18input_iterator_tagNS0_27bidirectional_traversal_tagEEESM_lLb0ELb0EEppEv.exit.i ], [ 1, %_ZN5boost4edgeIN3ue28NGHolderENS1_12_GLOBAL__N_111ReachFilterIS2_EES5_EESt4pairINS_14filtered_graphIT_T0_T1_E15edge_descriptorEbENSB_17vertex_descriptorESE_RKSB_.exit.i ] %.sroa.57.7 = phi ptr [ %.sroa.57.0364, %_ZN5boost9iterators6detail20iterator_facade_baseINS0_15filter_iteratorINS_6detail17in_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS6_8NGHolderEEESA_NS_14filtered_graphIS9_SA_SA_EEEENS6_9ue2_graphIS9_NS6_19NFAGraphVertexPropsENS6_17NFAGraphEdgePropsEE16in_edge_iteratorEEENS6_12graph_detail15edge_descriptorISH_EENS1_32iterator_category_with_traversalISt18input_iterator_tagNS0_27bidirectional_traversal_tagEEESM_lLb0ELb0EEppEv.exit.i.i.i ], [ %.sroa.57.2, %.sink.split.i.i.i ], [ %.sroa.57.3, %.critedge.i.i.i.i ], [ %.sroa.57.3, %.critedge24.i.i.i.i ], [ %.sroa.57.3, %_ZN5boost4edgeIN3ue28NGHolderENS1_12_GLOBAL__N_111ReachFilterIS2_EES5_EESt4pairINS_14filtered_graphIT_T0_T1_E15edge_descriptorEbENSB_17vertex_descriptorESE_RKSB_.exit.i ], [ %.sroa.57.5, %_ZN5boost9iterators6detail20iterator_facade_baseINS0_15filter_iteratorINS_6detail18out_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS6_8NGHolderEEESA_NS_14filtered_graphIS9_SA_SA_EEEENS6_9ue2_graphIS9_NS6_19NFAGraphVertexPropsENS6_17NFAGraphEdgePropsEE17out_edge_iteratorEEENS6_12graph_detail15edge_descriptorISH_EENS1_32iterator_category_with_traversalISt18input_iterator_tagNS0_27bidirectional_traversal_tagEEESM_lLb0ELb0EEppEv.exit.i ] %.sroa.22.4 = phi ptr [ %.sroa.22.2, %_ZN5boost9iterators6detail20iterator_facade_baseINS0_15filter_iteratorINS_6detail17in_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS6_8NGHolderEEESA_NS_14filtered_graphIS9_SA_SA_EEEENS6_9ue2_graphIS9_NS6_19NFAGraphVertexPropsENS6_17NFAGraphEdgePropsEE16in_edge_iteratorEEENS6_12graph_detail15edge_descriptorISH_EENS1_32iterator_category_with_traversalISt18input_iterator_tagNS0_27bidirectional_traversal_tagEEESM_lLb0ELb0EEppEv.exit.i.i.i ], [ %.sroa.22.3, %.sink.split.i.i.i ], [ %.sroa.22.3, %.critedge.i.i.i.i ], [ %.sroa.22.3, %.critedge24.i.i.i.i ], [ %.sroa.22.3, %_ZN5boost9iterators6detail20iterator_facade_baseINS0_15filter_iteratorINS_6detail18out_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS6_8NGHolderEEESA_NS_14filtered_graphIS9_SA_SA_EEEENS6_9ue2_graphIS9_NS6_19NFAGraphVertexPropsENS6_17NFAGraphEdgePropsEE17out_edge_iteratorEEENS6_12graph_detail15edge_descriptorISH_EENS1_32iterator_category_with_traversalISt18input_iterator_tagNS0_27bidirectional_traversal_tagEEESM_lLb0ELb0EEppEv.exit.i ], [ %.sroa.22.3, %_ZN5boost4edgeIN3ue28NGHolderENS1_12_GLOBAL__N_111ReachFilterIS2_EES5_EESt4pairINS_14filtered_graphIT_T0_T1_E15edge_descriptorEbENSB_17vertex_descriptorESE_RKSB_.exit.i ] store ptr %.sroa.0181.0385, ptr %8, align 8 @@ -17664,7 +17663,6 @@ _ZNK5boost6detail18out_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS2_8NGHo br i1 %.not.i.i.i.i8.i.i.i224, label %.sink.split.i.i.i214, label %.lr.ph.i.i.i.i3.i.i.i218, !llvm.loop !666 .sink.split.i.i.i214: ; preds = %_ZNK5boost6detail18out_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS2_8NGHolderEEES6_NS_14filtered_graphIS5_S6_S6_EEEclINS2_12graph_detail15edge_descriptorINS2_9ue2_graphIS5_NS2_19NFAGraphVertexPropsENS2_17NFAGraphEdgePropsEEEEEEEbRKT_.exit.thread.i.i.i.i.i.i.i223, %_ZNK5boost6detail18out_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS2_8NGHolderEEES6_NS_14filtered_graphIS5_S6_S6_EEEclINS2_12graph_detail15edge_descriptorINS2_9ue2_graphIS5_NS2_19NFAGraphVertexPropsENS2_17NFAGraphEdgePropsEEEEEEEbRKT_.exit.i.i.i.i.i.i.i225, %_ZN5boost9iterators6detail20iterator_facade_baseINS0_15filter_iteratorINS_6detail17in_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS6_8NGHolderEEESA_NS_14filtered_graphIS9_SA_SA_EEEENS6_9ue2_graphIS9_NS6_19NFAGraphVertexPropsENS6_17NFAGraphEdgePropsEE16in_edge_iteratorEEENS6_12graph_detail15edge_descriptorISH_EENS1_32iterator_category_with_traversalISt18input_iterator_tagNS0_27bidirectional_traversal_tagEEESM_lLb0ELb0EEppEv.exit.i.i.i212, %299 - %.sroa.99.3 = phi i8 [ 1, %299 ], [ 1, %_ZN5boost9iterators6detail20iterator_facade_baseINS0_15filter_iteratorINS_6detail17in_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS6_8NGHolderEEESA_NS_14filtered_graphIS9_SA_SA_EEEENS6_9ue2_graphIS9_NS6_19NFAGraphVertexPropsENS6_17NFAGraphEdgePropsEE16in_edge_iteratorEEENS6_12graph_detail15edge_descriptorISH_EENS1_32iterator_category_with_traversalISt18input_iterator_tagNS0_27bidirectional_traversal_tagEEESM_lLb0ELb0EEppEv.exit.i.i.i212 ], [ %.sroa.99.0361, %_ZNK5boost6detail18out_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS2_8NGHolderEEES6_NS_14filtered_graphIS5_S6_S6_EEEclINS2_12graph_detail15edge_descriptorINS2_9ue2_graphIS5_NS2_19NFAGraphVertexPropsENS2_17NFAGraphEdgePropsEEEEEEEbRKT_.exit.i.i.i.i.i.i.i225 ], [ %.sroa.99.0361, %_ZNK5boost6detail18out_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS2_8NGHolderEEES6_NS_14filtered_graphIS5_S6_S6_EEEclINS2_12graph_detail15edge_descriptorINS2_9ue2_graphIS5_NS2_19NFAGraphVertexPropsENS2_17NFAGraphEdgePropsEEEEEEEbRKT_.exit.thread.i.i.i.i.i.i.i223 ] %.sroa.57.9 = phi ptr [ %300, %299 ], [ %.sroa.57.0364, %_ZN5boost9iterators6detail20iterator_facade_baseINS0_15filter_iteratorINS_6detail17in_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS6_8NGHolderEEESA_NS_14filtered_graphIS9_SA_SA_EEEENS6_9ue2_graphIS9_NS6_19NFAGraphVertexPropsENS6_17NFAGraphEdgePropsEE16in_edge_iteratorEEENS6_12graph_detail15edge_descriptorISH_EENS1_32iterator_category_with_traversalISt18input_iterator_tagNS0_27bidirectional_traversal_tagEEESM_lLb0ELb0EEppEv.exit.i.i.i212 ], [ %307, %_ZNK5boost6detail18out_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS2_8NGHolderEEES6_NS_14filtered_graphIS5_S6_S6_EEEclINS2_12graph_detail15edge_descriptorINS2_9ue2_graphIS5_NS2_19NFAGraphVertexPropsENS2_17NFAGraphEdgePropsEEEEEEEbRKT_.exit.thread.i.i.i.i.i.i.i223 ], [ %.sroa.57.8, %_ZNK5boost6detail18out_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS2_8NGHolderEEES6_NS_14filtered_graphIS5_S6_S6_EEEclINS2_12graph_detail15edge_descriptorINS2_9ue2_graphIS5_NS2_19NFAGraphVertexPropsENS2_17NFAGraphEdgePropsEEEEEEEbRKT_.exit.i.i.i.i.i.i.i225 ] %.sroa.22.7 = phi ptr [ %.sroa.22.0373, %299 ], [ %.sroa.22.6, %_ZN5boost9iterators6detail20iterator_facade_baseINS0_15filter_iteratorINS_6detail17in_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS6_8NGHolderEEESA_NS_14filtered_graphIS9_SA_SA_EEEENS6_9ue2_graphIS9_NS6_19NFAGraphVertexPropsENS6_17NFAGraphEdgePropsEE16in_edge_iteratorEEENS6_12graph_detail15edge_descriptorISH_EENS1_32iterator_category_with_traversalISt18input_iterator_tagNS0_27bidirectional_traversal_tagEEESM_lLb0ELb0EEppEv.exit.i.i.i212 ], [ %.sroa.22.0373, %_ZNK5boost6detail18out_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS2_8NGHolderEEES6_NS_14filtered_graphIS5_S6_S6_EEEclINS2_12graph_detail15edge_descriptorINS2_9ue2_graphIS5_NS2_19NFAGraphVertexPropsENS2_17NFAGraphEdgePropsEEEEEEEbRKT_.exit.i.i.i.i.i.i.i225 ], [ %.sroa.22.0373, %_ZNK5boost6detail18out_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS2_8NGHolderEEES6_NS_14filtered_graphIS5_S6_S6_EEEclINS2_12graph_detail15edge_descriptorINS2_9ue2_graphIS5_NS2_19NFAGraphVertexPropsENS2_17NFAGraphEdgePropsEEEEEEEbRKT_.exit.thread.i.i.i.i.i.i.i223 ] %308 = getelementptr inbounds nuw i8, ptr %.sroa.0235.0377, i64 136 @@ -17776,7 +17774,7 @@ _ZN5boost9iterators6detail20iterator_facade_baseIN3ue216undirected_graphINS_14fi %.sroa.48253.1 = phi ptr [ %.sroa.48253.0357, %.sink.split.i.i.i214 ], [ %.sroa.48253.0357, %_ZN5boost9iterators6detail20iterator_facade_baseINS0_15filter_iteratorINS_6detail17in_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS6_8NGHolderEEESA_NS_14filtered_graphIS9_SA_SA_EEEENS6_9ue2_graphIS9_NS6_19NFAGraphVertexPropsENS6_17NFAGraphEdgePropsEE16in_edge_iteratorEEENS6_12graph_detail15edge_descriptorISH_EENS1_32iterator_category_with_traversalISt18input_iterator_tagNS0_27bidirectional_traversal_tagEEESM_lLb0ELb0EEppEv.exit.i.i.i212 ], [ %230, %_ZN5boost9out_edgesIN3ue28NGHolderENS1_12_GLOBAL__N_111ReachFilterIS2_EES5_EESt4pairINS_14filtered_graphIT_T0_T1_E17out_edge_iteratorESC_ENSB_17vertex_descriptorERKSB_.exit.i ], [ %230, %252 ], [ %230, %.critedge.i.i.i.i293 ], [ %230, %.critedge24.i.i.i.i271 ], [ %.sroa.48253.0357, %.critedge.i.i.i.i259 ], [ %.sroa.48253.0357, %.critedge24.i.i.i.i237 ], [ %230, %_ZN5boost4edgeIN3ue28NGHolderENS1_12_GLOBAL__N_111ReachFilterIS2_EES5_EESt4pairINS_14filtered_graphIT_T0_T1_E15edge_descriptorEbENSB_17vertex_descriptorESE_RKSB_.exit.i275 ], [ %230, %_ZN5boost9iterators6detail20iterator_facade_baseINS0_15filter_iteratorINS_6detail18out_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS6_8NGHolderEEESA_NS_14filtered_graphIS9_SA_SA_EEEENS6_9ue2_graphIS9_NS6_19NFAGraphVertexPropsENS6_17NFAGraphEdgePropsEE17out_edge_iteratorEEENS6_12graph_detail15edge_descriptorISH_EENS1_32iterator_category_with_traversalISt18input_iterator_tagNS0_27bidirectional_traversal_tagEEESM_lLb0ELb0EEppEv.exit.i289 ], [ %.sroa.48253.0357, %_ZN5boost9iterators6detail20iterator_facade_baseINS0_15filter_iteratorINS_6detail18out_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS6_8NGHolderEEESA_NS_14filtered_graphIS9_SA_SA_EEEENS6_9ue2_graphIS9_NS6_19NFAGraphVertexPropsENS6_17NFAGraphEdgePropsEE17out_edge_iteratorEEENS6_12graph_detail15edge_descriptorISH_EENS1_32iterator_category_with_traversalISt18input_iterator_tagNS0_27bidirectional_traversal_tagEEESM_lLb0ELb0EEppEv.exit.i255 ], [ %.sroa.48253.0357, %_ZN5boost4edgeIN3ue28NGHolderENS1_12_GLOBAL__N_111ReachFilterIS2_EES5_EESt4pairINS_14filtered_graphIT_T0_T1_E15edge_descriptorEbENSB_17vertex_descriptorESE_RKSB_.exit.i241 ] %.sroa.88.1 = phi ptr [ %.sroa.88.0358, %.sink.split.i.i.i214 ], [ %.sroa.88.0358, %_ZN5boost9iterators6detail20iterator_facade_baseINS0_15filter_iteratorINS_6detail17in_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS6_8NGHolderEEESA_NS_14filtered_graphIS9_SA_SA_EEEENS6_9ue2_graphIS9_NS6_19NFAGraphVertexPropsENS6_17NFAGraphEdgePropsEE16in_edge_iteratorEEENS6_12graph_detail15edge_descriptorISH_EENS1_32iterator_category_with_traversalISt18input_iterator_tagNS0_27bidirectional_traversal_tagEEESM_lLb0ELb0EEppEv.exit.i.i.i212 ], [ %230, %_ZN5boost9out_edgesIN3ue28NGHolderENS1_12_GLOBAL__N_111ReachFilterIS2_EES5_EESt4pairINS_14filtered_graphIT_T0_T1_E17out_edge_iteratorESC_ENSB_17vertex_descriptorERKSB_.exit.i ], [ %230, %252 ], [ %230, %.critedge.i.i.i.i293 ], [ %230, %.critedge24.i.i.i.i271 ], [ %.sroa.88.0358, %.critedge.i.i.i.i259 ], [ %.sroa.88.0358, %.critedge24.i.i.i.i237 ], [ %230, %_ZN5boost4edgeIN3ue28NGHolderENS1_12_GLOBAL__N_111ReachFilterIS2_EES5_EESt4pairINS_14filtered_graphIT_T0_T1_E15edge_descriptorEbENSB_17vertex_descriptorESE_RKSB_.exit.i275 ], [ %230, %_ZN5boost9iterators6detail20iterator_facade_baseINS0_15filter_iteratorINS_6detail18out_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS6_8NGHolderEEESA_NS_14filtered_graphIS9_SA_SA_EEEENS6_9ue2_graphIS9_NS6_19NFAGraphVertexPropsENS6_17NFAGraphEdgePropsEE17out_edge_iteratorEEENS6_12graph_detail15edge_descriptorISH_EENS1_32iterator_category_with_traversalISt18input_iterator_tagNS0_27bidirectional_traversal_tagEEESM_lLb0ELb0EEppEv.exit.i289 ], [ %.sroa.88.0358, %_ZN5boost9iterators6detail20iterator_facade_baseINS0_15filter_iteratorINS_6detail18out_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS6_8NGHolderEEESA_NS_14filtered_graphIS9_SA_SA_EEEENS6_9ue2_graphIS9_NS6_19NFAGraphVertexPropsENS6_17NFAGraphEdgePropsEE17out_edge_iteratorEEENS6_12graph_detail15edge_descriptorISH_EENS1_32iterator_category_with_traversalISt18input_iterator_tagNS0_27bidirectional_traversal_tagEEESM_lLb0ELb0EEppEv.exit.i255 ], [ %.sroa.88.0358, %_ZN5boost4edgeIN3ue28NGHolderENS1_12_GLOBAL__N_111ReachFilterIS2_EES5_EESt4pairINS_14filtered_graphIT_T0_T1_E15edge_descriptorEbENSB_17vertex_descriptorESE_RKSB_.exit.i241 ] %.sroa.89.1 = phi ptr [ %.sroa.89.0359, %.sink.split.i.i.i214 ], [ %.sroa.89.0359, %_ZN5boost9iterators6detail20iterator_facade_baseINS0_15filter_iteratorINS_6detail17in_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS6_8NGHolderEEESA_NS_14filtered_graphIS9_SA_SA_EEEENS6_9ue2_graphIS9_NS6_19NFAGraphVertexPropsENS6_17NFAGraphEdgePropsEE16in_edge_iteratorEEENS6_12graph_detail15edge_descriptorISH_EENS1_32iterator_category_with_traversalISt18input_iterator_tagNS0_27bidirectional_traversal_tagEEESM_lLb0ELb0EEppEv.exit.i.i.i212 ], [ %242, %_ZN5boost9out_edgesIN3ue28NGHolderENS1_12_GLOBAL__N_111ReachFilterIS2_EES5_EESt4pairINS_14filtered_graphIT_T0_T1_E17out_edge_iteratorESC_ENSB_17vertex_descriptorERKSB_.exit.i ], [ %242, %252 ], [ %242, %.critedge.i.i.i.i293 ], [ %242, %.critedge24.i.i.i.i271 ], [ %.sroa.89.0359, %.critedge.i.i.i.i259 ], [ %.sroa.89.0359, %.critedge24.i.i.i.i237 ], [ %242, %_ZN5boost4edgeIN3ue28NGHolderENS1_12_GLOBAL__N_111ReachFilterIS2_EES5_EESt4pairINS_14filtered_graphIT_T0_T1_E15edge_descriptorEbENSB_17vertex_descriptorESE_RKSB_.exit.i275 ], [ %242, %_ZN5boost9iterators6detail20iterator_facade_baseINS0_15filter_iteratorINS_6detail18out_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS6_8NGHolderEEESA_NS_14filtered_graphIS9_SA_SA_EEEENS6_9ue2_graphIS9_NS6_19NFAGraphVertexPropsENS6_17NFAGraphEdgePropsEE17out_edge_iteratorEEENS6_12graph_detail15edge_descriptorISH_EENS1_32iterator_category_with_traversalISt18input_iterator_tagNS0_27bidirectional_traversal_tagEEESM_lLb0ELb0EEppEv.exit.i289 ], [ %.sroa.89.0359, %_ZN5boost9iterators6detail20iterator_facade_baseINS0_15filter_iteratorINS_6detail18out_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS6_8NGHolderEEESA_NS_14filtered_graphIS9_SA_SA_EEEENS6_9ue2_graphIS9_NS6_19NFAGraphVertexPropsENS6_17NFAGraphEdgePropsEE17out_edge_iteratorEEENS6_12graph_detail15edge_descriptorISH_EENS1_32iterator_category_with_traversalISt18input_iterator_tagNS0_27bidirectional_traversal_tagEEESM_lLb0ELb0EEppEv.exit.i255 ], [ %.sroa.89.0359, %_ZN5boost4edgeIN3ue28NGHolderENS1_12_GLOBAL__N_111ReachFilterIS2_EES5_EESt4pairINS_14filtered_graphIT_T0_T1_E15edge_descriptorEbENSB_17vertex_descriptorESE_RKSB_.exit.i241 ] - %.sroa.99.5 = phi i8 [ %.sroa.99.3, %.sink.split.i.i.i214 ], [ %.sroa.99.0361, %_ZN5boost9iterators6detail20iterator_facade_baseINS0_15filter_iteratorINS_6detail17in_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS6_8NGHolderEEESA_NS_14filtered_graphIS9_SA_SA_EEEENS6_9ue2_graphIS9_NS6_19NFAGraphVertexPropsENS6_17NFAGraphEdgePropsEE16in_edge_iteratorEEENS6_12graph_detail15edge_descriptorISH_EENS1_32iterator_category_with_traversalISt18input_iterator_tagNS0_27bidirectional_traversal_tagEEESM_lLb0ELb0EEppEv.exit.i.i.i212 ], [ 0, %_ZN5boost9out_edgesIN3ue28NGHolderENS1_12_GLOBAL__N_111ReachFilterIS2_EES5_EESt4pairINS_14filtered_graphIT_T0_T1_E17out_edge_iteratorESC_ENSB_17vertex_descriptorERKSB_.exit.i ], [ 1, %252 ], [ 1, %.critedge.i.i.i.i293 ], [ 1, %.critedge24.i.i.i.i271 ], [ %.sroa.99.3, %.critedge.i.i.i.i259 ], [ %.sroa.99.3, %.critedge24.i.i.i.i237 ], [ 1, %_ZN5boost4edgeIN3ue28NGHolderENS1_12_GLOBAL__N_111ReachFilterIS2_EES5_EESt4pairINS_14filtered_graphIT_T0_T1_E15edge_descriptorEbENSB_17vertex_descriptorESE_RKSB_.exit.i275 ], [ 1, %_ZN5boost9iterators6detail20iterator_facade_baseINS0_15filter_iteratorINS_6detail18out_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS6_8NGHolderEEESA_NS_14filtered_graphIS9_SA_SA_EEEENS6_9ue2_graphIS9_NS6_19NFAGraphVertexPropsENS6_17NFAGraphEdgePropsEE17out_edge_iteratorEEENS6_12graph_detail15edge_descriptorISH_EENS1_32iterator_category_with_traversalISt18input_iterator_tagNS0_27bidirectional_traversal_tagEEESM_lLb0ELb0EEppEv.exit.i289 ], [ %.sroa.99.3, %_ZN5boost9iterators6detail20iterator_facade_baseINS0_15filter_iteratorINS_6detail18out_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS6_8NGHolderEEESA_NS_14filtered_graphIS9_SA_SA_EEEENS6_9ue2_graphIS9_NS6_19NFAGraphVertexPropsENS6_17NFAGraphEdgePropsEE17out_edge_iteratorEEENS6_12graph_detail15edge_descriptorISH_EENS1_32iterator_category_with_traversalISt18input_iterator_tagNS0_27bidirectional_traversal_tagEEESM_lLb0ELb0EEppEv.exit.i255 ], [ %.sroa.99.3, %_ZN5boost4edgeIN3ue28NGHolderENS1_12_GLOBAL__N_111ReachFilterIS2_EES5_EESt4pairINS_14filtered_graphIT_T0_T1_E15edge_descriptorEbENSB_17vertex_descriptorESE_RKSB_.exit.i241 ] + %.sroa.99.5 = phi i8 [ 1, %.sink.split.i.i.i214 ], [ 0, %_ZN5boost9iterators6detail20iterator_facade_baseINS0_15filter_iteratorINS_6detail17in_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS6_8NGHolderEEESA_NS_14filtered_graphIS9_SA_SA_EEEENS6_9ue2_graphIS9_NS6_19NFAGraphVertexPropsENS6_17NFAGraphEdgePropsEE16in_edge_iteratorEEENS6_12graph_detail15edge_descriptorISH_EENS1_32iterator_category_with_traversalISt18input_iterator_tagNS0_27bidirectional_traversal_tagEEESM_lLb0ELb0EEppEv.exit.i.i.i212 ], [ 0, %_ZN5boost9out_edgesIN3ue28NGHolderENS1_12_GLOBAL__N_111ReachFilterIS2_EES5_EESt4pairINS_14filtered_graphIT_T0_T1_E17out_edge_iteratorESC_ENSB_17vertex_descriptorERKSB_.exit.i ], [ 1, %252 ], [ 1, %.critedge.i.i.i.i293 ], [ 1, %.critedge24.i.i.i.i271 ], [ 1, %.critedge.i.i.i.i259 ], [ 1, %.critedge24.i.i.i.i237 ], [ 1, %_ZN5boost4edgeIN3ue28NGHolderENS1_12_GLOBAL__N_111ReachFilterIS2_EES5_EESt4pairINS_14filtered_graphIT_T0_T1_E15edge_descriptorEbENSB_17vertex_descriptorESE_RKSB_.exit.i275 ], [ 1, %_ZN5boost9iterators6detail20iterator_facade_baseINS0_15filter_iteratorINS_6detail18out_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS6_8NGHolderEEESA_NS_14filtered_graphIS9_SA_SA_EEEENS6_9ue2_graphIS9_NS6_19NFAGraphVertexPropsENS6_17NFAGraphEdgePropsEE17out_edge_iteratorEEENS6_12graph_detail15edge_descriptorISH_EENS1_32iterator_category_with_traversalISt18input_iterator_tagNS0_27bidirectional_traversal_tagEEESM_lLb0ELb0EEppEv.exit.i289 ], [ 1, %_ZN5boost9iterators6detail20iterator_facade_baseINS0_15filter_iteratorINS_6detail18out_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS6_8NGHolderEEESA_NS_14filtered_graphIS9_SA_SA_EEEENS6_9ue2_graphIS9_NS6_19NFAGraphVertexPropsENS6_17NFAGraphEdgePropsEE17out_edge_iteratorEEENS6_12graph_detail15edge_descriptorISH_EENS1_32iterator_category_with_traversalISt18input_iterator_tagNS0_27bidirectional_traversal_tagEEESM_lLb0ELb0EEppEv.exit.i255 ], [ 1, %_ZN5boost4edgeIN3ue28NGHolderENS1_12_GLOBAL__N_111ReachFilterIS2_EES5_EESt4pairINS_14filtered_graphIT_T0_T1_E15edge_descriptorEbENSB_17vertex_descriptorESE_RKSB_.exit.i241 ] %.sroa.87.1 = phi ptr [ %.sroa.87.0362, %.sink.split.i.i.i214 ], [ %.sroa.87.0362, %_ZN5boost9iterators6detail20iterator_facade_baseINS0_15filter_iteratorINS_6detail17in_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS6_8NGHolderEEESA_NS_14filtered_graphIS9_SA_SA_EEEENS6_9ue2_graphIS9_NS6_19NFAGraphVertexPropsENS6_17NFAGraphEdgePropsEE16in_edge_iteratorEEENS6_12graph_detail15edge_descriptorISH_EENS1_32iterator_category_with_traversalISt18input_iterator_tagNS0_27bidirectional_traversal_tagEEESM_lLb0ELb0EEppEv.exit.i.i.i212 ], [ %.sroa.01.0.copyload.i.i, %_ZN5boost9out_edgesIN3ue28NGHolderENS1_12_GLOBAL__N_111ReachFilterIS2_EES5_EESt4pairINS_14filtered_graphIT_T0_T1_E17out_edge_iteratorESC_ENSB_17vertex_descriptorERKSB_.exit.i ], [ %.sroa.01.0.copyload.i.i, %252 ], [ %.sroa.01.0.copyload.i.i, %.critedge.i.i.i.i293 ], [ %.sroa.01.0.copyload.i.i, %.critedge24.i.i.i.i271 ], [ %.sroa.87.0362, %.critedge.i.i.i.i259 ], [ %.sroa.87.0362, %.critedge24.i.i.i.i237 ], [ %.sroa.01.0.copyload.i.i, %_ZN5boost4edgeIN3ue28NGHolderENS1_12_GLOBAL__N_111ReachFilterIS2_EES5_EESt4pairINS_14filtered_graphIT_T0_T1_E15edge_descriptorEbENSB_17vertex_descriptorESE_RKSB_.exit.i275 ], [ %.sroa.01.0.copyload.i.i, %_ZN5boost9iterators6detail20iterator_facade_baseINS0_15filter_iteratorINS_6detail18out_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS6_8NGHolderEEESA_NS_14filtered_graphIS9_SA_SA_EEEENS6_9ue2_graphIS9_NS6_19NFAGraphVertexPropsENS6_17NFAGraphEdgePropsEE17out_edge_iteratorEEENS6_12graph_detail15edge_descriptorISH_EENS1_32iterator_category_with_traversalISt18input_iterator_tagNS0_27bidirectional_traversal_tagEEESM_lLb0ELb0EEppEv.exit.i289 ], [ %.sroa.87.0362, %_ZN5boost9iterators6detail20iterator_facade_baseINS0_15filter_iteratorINS_6detail18out_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS6_8NGHolderEEESA_NS_14filtered_graphIS9_SA_SA_EEEENS6_9ue2_graphIS9_NS6_19NFAGraphVertexPropsENS6_17NFAGraphEdgePropsEE17out_edge_iteratorEEENS6_12graph_detail15edge_descriptorISH_EENS1_32iterator_category_with_traversalISt18input_iterator_tagNS0_27bidirectional_traversal_tagEEESM_lLb0ELb0EEppEv.exit.i255 ], [ %.sroa.87.0362, %_ZN5boost4edgeIN3ue28NGHolderENS1_12_GLOBAL__N_111ReachFilterIS2_EES5_EESt4pairINS_14filtered_graphIT_T0_T1_E15edge_descriptorEbENSB_17vertex_descriptorESE_RKSB_.exit.i241 ] %.sroa.82.1 = phi ptr [ %.sroa.82.0363, %.sink.split.i.i.i214 ], [ %.sroa.82.0363, %_ZN5boost9iterators6detail20iterator_facade_baseINS0_15filter_iteratorINS_6detail17in_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS6_8NGHolderEEESA_NS_14filtered_graphIS9_SA_SA_EEEENS6_9ue2_graphIS9_NS6_19NFAGraphVertexPropsENS6_17NFAGraphEdgePropsEE16in_edge_iteratorEEENS6_12graph_detail15edge_descriptorISH_EENS1_32iterator_category_with_traversalISt18input_iterator_tagNS0_27bidirectional_traversal_tagEEESM_lLb0ELb0EEppEv.exit.i.i.i212 ], [ %.sroa.02.0.copyload.i.i, %_ZN5boost9out_edgesIN3ue28NGHolderENS1_12_GLOBAL__N_111ReachFilterIS2_EES5_EESt4pairINS_14filtered_graphIT_T0_T1_E17out_edge_iteratorESC_ENSB_17vertex_descriptorERKSB_.exit.i ], [ %.sroa.02.0.copyload.i.i, %252 ], [ %.sroa.02.0.copyload.i.i, %.critedge.i.i.i.i293 ], [ %.sroa.02.0.copyload.i.i, %.critedge24.i.i.i.i271 ], [ %.sroa.82.0363, %.critedge.i.i.i.i259 ], [ %.sroa.82.0363, %.critedge24.i.i.i.i237 ], [ %.sroa.02.0.copyload.i.i, %_ZN5boost4edgeIN3ue28NGHolderENS1_12_GLOBAL__N_111ReachFilterIS2_EES5_EESt4pairINS_14filtered_graphIT_T0_T1_E15edge_descriptorEbENSB_17vertex_descriptorESE_RKSB_.exit.i275 ], [ %.sroa.02.0.copyload.i.i, %_ZN5boost9iterators6detail20iterator_facade_baseINS0_15filter_iteratorINS_6detail18out_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS6_8NGHolderEEESA_NS_14filtered_graphIS9_SA_SA_EEEENS6_9ue2_graphIS9_NS6_19NFAGraphVertexPropsENS6_17NFAGraphEdgePropsEE17out_edge_iteratorEEENS6_12graph_detail15edge_descriptorISH_EENS1_32iterator_category_with_traversalISt18input_iterator_tagNS0_27bidirectional_traversal_tagEEESM_lLb0ELb0EEppEv.exit.i289 ], [ %.sroa.82.0363, %_ZN5boost9iterators6detail20iterator_facade_baseINS0_15filter_iteratorINS_6detail18out_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS6_8NGHolderEEESA_NS_14filtered_graphIS9_SA_SA_EEEENS6_9ue2_graphIS9_NS6_19NFAGraphVertexPropsENS6_17NFAGraphEdgePropsEE17out_edge_iteratorEEENS6_12graph_detail15edge_descriptorISH_EENS1_32iterator_category_with_traversalISt18input_iterator_tagNS0_27bidirectional_traversal_tagEEESM_lLb0ELb0EEppEv.exit.i255 ], [ %.sroa.82.0363, %_ZN5boost4edgeIN3ue28NGHolderENS1_12_GLOBAL__N_111ReachFilterIS2_EES5_EESt4pairINS_14filtered_graphIT_T0_T1_E15edge_descriptorEbENSB_17vertex_descriptorESE_RKSB_.exit.i241 ] %.sroa.57.15 = phi ptr [ %.sroa.57.9, %.sink.split.i.i.i214 ], [ %.sroa.57.0364, %_ZN5boost9iterators6detail20iterator_facade_baseINS0_15filter_iteratorINS_6detail17in_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS6_8NGHolderEEESA_NS_14filtered_graphIS9_SA_SA_EEEENS6_9ue2_graphIS9_NS6_19NFAGraphVertexPropsENS6_17NFAGraphEdgePropsEE16in_edge_iteratorEEENS6_12graph_detail15edge_descriptorISH_EENS1_32iterator_category_with_traversalISt18input_iterator_tagNS0_27bidirectional_traversal_tagEEESM_lLb0ELb0EEppEv.exit.i.i.i212 ], [ %.sroa.024.1.i17.i, %_ZN5boost9out_edgesIN3ue28NGHolderENS1_12_GLOBAL__N_111ReachFilterIS2_EES5_EESt4pairINS_14filtered_graphIT_T0_T1_E17out_edge_iteratorESC_ENSB_17vertex_descriptorERKSB_.exit.i ], [ %.sroa.024.1.i17.i, %252 ], [ %.sroa.17205.2, %.critedge.i.i.i.i293 ], [ %.sroa.17205.2, %.critedge24.i.i.i.i271 ], [ %.sroa.57.10, %.critedge.i.i.i.i259 ], [ %.sroa.57.10, %.critedge24.i.i.i.i237 ], [ %.sroa.17205.4, %_ZN5boost9iterators6detail20iterator_facade_baseINS0_15filter_iteratorINS_6detail18out_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS6_8NGHolderEEESA_NS_14filtered_graphIS9_SA_SA_EEEENS6_9ue2_graphIS9_NS6_19NFAGraphVertexPropsENS6_17NFAGraphEdgePropsEE17out_edge_iteratorEEENS6_12graph_detail15edge_descriptorISH_EENS1_32iterator_category_with_traversalISt18input_iterator_tagNS0_27bidirectional_traversal_tagEEESM_lLb0ELb0EEppEv.exit.i289 ], [ %.sroa.17205.2, %_ZN5boost4edgeIN3ue28NGHolderENS1_12_GLOBAL__N_111ReachFilterIS2_EES5_EESt4pairINS_14filtered_graphIT_T0_T1_E15edge_descriptorEbENSB_17vertex_descriptorESE_RKSB_.exit.i275 ], [ %.sroa.57.10, %_ZN5boost4edgeIN3ue28NGHolderENS1_12_GLOBAL__N_111ReachFilterIS2_EES5_EESt4pairINS_14filtered_graphIT_T0_T1_E15edge_descriptorEbENSB_17vertex_descriptorESE_RKSB_.exit.i241 ], [ %.sroa.57.12, %_ZN5boost9iterators6detail20iterator_facade_baseINS0_15filter_iteratorINS_6detail18out_edge_predicateIN3ue212_GLOBAL__N_111ReachFilterINS6_8NGHolderEEESA_NS_14filtered_graphIS9_SA_SA_EEEENS6_9ue2_graphIS9_NS6_19NFAGraphVertexPropsENS6_17NFAGraphEdgePropsEE17out_edge_iteratorEEENS6_12graph_detail15edge_descriptorISH_EENS1_32iterator_category_with_traversalISt18input_iterator_tagNS0_27bidirectional_traversal_tagEEESM_lLb0ELb0EEppEv.exit.i255 ] @@ -25591,7 +25589,7 @@ _ZN5boost8optionalIN3ue217undirected_detail32undirected_graph_edge_descriptorINS .thread: ; preds = %.loopexit.i.i, %.loopexit.i9.i, %.critedge24.i.i.i.i, %.critedge.i.i.i.i, %.critedge24.i.i.i5.i, %.critedge.i.i.i11.i, %126, %130, %151 %.sroa.27503.2550 = phi ptr [ %128, %126 ], [ %128, %130 ], [ %.sroa.27503.0637, %151 ], [ %.sroa.27503.0637, %.critedge.i.i.i11.i ], [ %.sroa.27503.0637, %.critedge24.i.i.i5.i ], [ %128, %.critedge.i.i.i.i ], [ %128, %.critedge24.i.i.i.i ], [ %.sroa.27503.0637, %.loopexit.i9.i ], [ %128, %.loopexit.i.i ] %.sroa.46.4548 = phi ptr [ %.sroa.46.0636, %126 ], [ %.sroa.46.0636, %130 ], [ %152, %151 ], [ %.sroa.46.3, %.critedge.i.i.i11.i ], [ %.sroa.46.3, %.critedge24.i.i.i5.i ], [ %.sroa.46.2, %.critedge.i.i.i.i ], [ %.sroa.46.2, %.critedge24.i.i.i.i ], [ %173, %.loopexit.i9.i ], [ %150, %.loopexit.i.i ] - %.sroa.70.2546 = phi i8 [ 0, %126 ], [ 1, %130 ], [ 1, %151 ], [ %.sroa.70.0635, %.critedge.i.i.i11.i ], [ %.sroa.70.0635, %.critedge24.i.i.i5.i ], [ 1, %.critedge.i.i.i.i ], [ 1, %.critedge24.i.i.i.i ], [ %.sroa.70.0635, %.loopexit.i9.i ], [ 1, %.loopexit.i.i ] + %.sroa.70.2546 = phi i8 [ 0, %126 ], [ 1, %130 ], [ 1, %151 ], [ 1, %.critedge.i.i.i11.i ], [ 1, %.critedge24.i.i.i5.i ], [ 1, %.critedge.i.i.i.i ], [ 1, %.critedge24.i.i.i.i ], [ 1, %.loopexit.i9.i ], [ 1, %.loopexit.i.i ] %174 = load ptr, ptr %53, align 8 %175 = load ptr, ptr %55, align 8 %.not.i.i108 = icmp eq ptr %174, %175 @@ -26078,7 +26076,7 @@ _ZNSt4pairIN3ue212graph_detail17vertex_descriptorINS0_9ue2_graphINS0_8NGHolderEN _ZN5boost9iterators6detail20iterator_facade_baseIN3ue216undirected_graphINS3_8NGHolderERKS5_E17adj_edge_iteratorILb0EEENS3_17undirected_detail32undirected_graph_edge_descriptorIS5_EENS0_21forward_traversal_tagESD_lLb0ELb0EEppEv.exit159: ; preds = %.loopexit.i.i183, %.loopexit.i9.i196, %.loopexit.i.i.i131, %.critedge24.i.i.i.i179, %.critedge.i.i.i.i185, %.critedge24.i.i.i5.i192, %.critedge.i.i.i11.i198, %.critedge24.i.i.i.i.i127, %.critedge.i.i.i.i.i133, %.loopexit, %298, %321, %325, %346 %.sroa.17.1 = phi ptr [ %.sroa.17.0634, %346 ], [ %.sroa.17.0634, %325 ], [ %.sroa.17.0634, %321 ], [ %292, %298 ], [ %292, %.loopexit ], [ %292, %.critedge.i.i.i.i.i133 ], [ %292, %.critedge24.i.i.i.i.i127 ], [ %.sroa.17.0634, %.critedge.i.i.i11.i198 ], [ %.sroa.17.0634, %.critedge24.i.i.i5.i192 ], [ %.sroa.17.0634, %.critedge.i.i.i.i185 ], [ %.sroa.17.0634, %.critedge24.i.i.i.i179 ], [ %292, %.loopexit.i.i.i131 ], [ %.sroa.17.0634, %.loopexit.i9.i196 ], [ %.sroa.17.0634, %.loopexit.i.i183 ] - %.sroa.70.1 = phi i8 [ 1, %346 ], [ 1, %325 ], [ 0, %321 ], [ 1, %298 ], [ 0, %.loopexit ], [ 1, %.critedge.i.i.i.i.i133 ], [ 1, %.critedge24.i.i.i.i.i127 ], [ %.sroa.70.0635, %.critedge.i.i.i11.i198 ], [ %.sroa.70.0635, %.critedge24.i.i.i5.i192 ], [ 1, %.critedge.i.i.i.i185 ], [ 1, %.critedge24.i.i.i.i179 ], [ 1, %.loopexit.i.i.i131 ], [ %.sroa.70.0635, %.loopexit.i9.i196 ], [ 1, %.loopexit.i.i183 ] + %.sroa.70.1 = phi i8 [ 1, %346 ], [ 1, %325 ], [ 0, %321 ], [ 1, %298 ], [ 0, %.loopexit ], [ 1, %.critedge.i.i.i.i.i133 ], [ 1, %.critedge24.i.i.i.i.i127 ], [ 1, %.critedge.i.i.i11.i198 ], [ 1, %.critedge24.i.i.i5.i192 ], [ 1, %.critedge.i.i.i.i185 ], [ 1, %.critedge24.i.i.i.i179 ], [ 1, %.loopexit.i.i.i131 ], [ 1, %.loopexit.i9.i196 ], [ 1, %.loopexit.i.i183 ] %.sroa.46.1 = phi ptr [ %347, %346 ], [ %.sroa.46.0636, %325 ], [ %.sroa.46.0636, %321 ], [ %295, %298 ], [ %295, %.loopexit ], [ %.sroa.912.0.i126, %.critedge.i.i.i.i.i133 ], [ %.sroa.912.0.i126, %.critedge24.i.i.i.i.i127 ], [ %.sroa.46.6, %.critedge.i.i.i11.i198 ], [ %.sroa.46.6, %.critedge24.i.i.i5.i192 ], [ %.sroa.46.5, %.critedge.i.i.i.i185 ], [ %.sroa.46.5, %.critedge24.i.i.i.i179 ], [ %317, %.loopexit.i.i.i131 ], [ %368, %.loopexit.i9.i196 ], [ %345, %.loopexit.i.i183 ] %.sroa.27503.1 = phi ptr [ %.sroa.27503.0637, %346 ], [ %323, %325 ], [ %323, %321 ], [ %296, %298 ], [ %296, %.loopexit ], [ %296, %.critedge.i.i.i.i.i133 ], [ %296, %.critedge24.i.i.i.i.i127 ], [ %.sroa.27503.0637, %.critedge.i.i.i11.i198 ], [ %.sroa.27503.0637, %.critedge24.i.i.i5.i192 ], [ %323, %.critedge.i.i.i.i185 ], [ %323, %.critedge24.i.i.i.i179 ], [ %296, %.loopexit.i.i.i131 ], [ %.sroa.27503.0637, %.loopexit.i9.i196 ], [ %323, %.loopexit.i.i183 ] %.sroa.14498.1 = phi i64 [ %.sroa.14498.0638, %346 ], [ %.sroa.14498.0638, %325 ], [ %.sroa.14498.0638, %321 ], [ %.pn7.i.i, %298 ], [ %.pn7.i.i, %.loopexit ], [ %.pn7.i.i, %.critedge.i.i.i.i.i133 ], [ %.pn7.i.i, %.critedge24.i.i.i.i.i127 ], [ %.sroa.14498.0638, %.critedge.i.i.i11.i198 ], [ %.sroa.14498.0638, %.critedge24.i.i.i5.i192 ], [ %.sroa.14498.0638, %.critedge.i.i.i.i185 ], [ %.sroa.14498.0638, %.critedge24.i.i.i.i179 ], [ %.pn7.i.i, %.loopexit.i.i.i131 ], [ %.sroa.14498.0638, %.loopexit.i9.i196 ], [ %.sroa.14498.0638, %.loopexit.i.i183 ] diff --git a/bench/icu/optimized/locdispnames.ll b/bench/icu/optimized/locdispnames.ll index cff4b9fa1d1..67a9fc4cc83 100644 --- a/bench/icu/optimized/locdispnames.ll +++ b/bench/icu/optimized/locdispnames.ll @@ -1796,6 +1796,7 @@ _ZN6icu_778internal16LocalOpenPointerI15UResourceBundleXadL_Z13ures_close_77EEED .loopexit360.preheader: ; preds = %.lr.ph, %.preheader359, %87, %88 %.3230408.ph = phi i32 [ %.3246, %88 ], [ 0, %87 ], [ 0, %.preheader359 ], [ %.3246, %.lr.ph ] %.3238407.ph = phi ptr [ %2, %88 ], [ %2, %87 ], [ %2, %.preheader359 ], [ %92, %.lr.ph ] + %.4247406.ph = phi i32 [ %.3246, %88 ], [ 0, %87 ], [ %.3246, %.preheader359 ], [ %.3246, %.lr.ph ] br label %.loopexit360 .preheader359: ; preds = %88 @@ -1839,7 +1840,7 @@ _ZN6icu_778internal16LocalOpenPointerI12UEnumerationXadL_Z14uenum_close_77EEED2E br i1 %.not318, label %265, label %87, !llvm.loop !32 .loopexit360: ; preds = %.loopexit360.preheader, %262 - %.1198415 = phi i32 [ %.6, %262 ], [ %.3246, %.loopexit360.preheader ] + %.1198415 = phi i32 [ %.6, %262 ], [ %.4247406.ph, %.loopexit360.preheader ] %.0211414 = phi i32 [ %.1212, %262 ], [ 0, %.loopexit360.preheader ] %.0213413 = phi i32 [ %.1214, %262 ], [ 0, %.loopexit360.preheader ] %.0215412 = phi i32 [ %.1216, %262 ], [ 0, %.loopexit360.preheader ] @@ -1848,7 +1849,7 @@ _ZN6icu_778internal16LocalOpenPointerI12UEnumerationXadL_Z14uenum_close_77EEED2E %.0224409 = phi i32 [ %.2226, %262 ], [ 0, %.loopexit360.preheader ] %.3230408 = phi i32 [ %.4231, %262 ], [ %.3230408.ph, %.loopexit360.preheader ] %.3238407 = phi ptr [ %.14, %262 ], [ %.3238407.ph, %.loopexit360.preheader ] - %.4247406 = phi i32 [ %.5248, %262 ], [ %.3246, %.loopexit360.preheader ] + %.4247406 = phi i32 [ %.5248, %262 ], [ %.4247406.ph, %.loopexit360.preheader ] %.1278405 = phi i8 [ %.2279, %262 ], [ %.0277, %.loopexit360.preheader ] %.1282404 = phi i8 [ %.2283, %262 ], [ %.0281, %.loopexit360.preheader ] %.1286403 = phi i8 [ %.3288, %262 ], [ %.0285, %.loopexit360.preheader ] diff --git a/bench/icu/optimized/normalizer2impl.ll b/bench/icu/optimized/normalizer2impl.ll index 003d1c3dfbb..d5e22bf9176 100644 --- a/bench/icu/optimized/normalizer2impl.ll +++ b/bench/icu/optimized/normalizer2impl.ll @@ -5089,7 +5089,7 @@ _ZNK6icu_7716ReorderingBuffer23copyReorderableSuffixToERNS_13UnicodeStringE.exit .preheader: ; preds = %_ZNK6icu_7716ReorderingBuffer23copyReorderableSuffixToERNS_13UnicodeStringE.exit %28 = getelementptr inbounds nuw i8, ptr %0, i64 48 - %.not6274 = icmp eq ptr %1, %2 + %.not6273 = icmp eq ptr %1, %2 br i1 %.not6274, label %.thread, label %.lr.ph .lr.ph: ; preds = %.preheader @@ -5103,10 +5103,10 @@ _ZNK6icu_7716ReorderingBuffer23copyReorderableSuffixToERNS_13UnicodeStringE.exit br label %114 34: ; preds = %.lr.ph, %101 - %.04678 = phi i1 [ true, %.lr.ph ], [ false, %101 ] - %.04877 = phi i8 [ 0, %.lr.ph ], [ %spec.select, %101 ] - %.05176 = phi ptr [ %1, %.lr.ph ], [ %.253, %101 ] - %.05575 = phi i8 [ 0, %.lr.ph ], [ %.0.i, %101 ] + %.04677 = phi i1 [ true, %.lr.ph ], [ false, %101 ] + %.04876 = phi i8 [ 0, %.lr.ph ], [ %spec.select, %101 ] + %.05175 = phi ptr [ %1, %.lr.ph ], [ %.253, %101 ] + %.05574 = phi i8 [ 0, %.lr.ph ], [ %.0.i, %101 ] %35 = getelementptr inbounds nuw i8, ptr %.05176, i64 2 %36 = load i16, ptr %.05176, align 2, !tbaa !32 %37 = zext i16 %36 to i32 @@ -5142,7 +5142,7 @@ _ZNK6icu_7716ReorderingBuffer23copyReorderableSuffixToERNS_13UnicodeStringE.exit %55 = zext i16 %54 to i32 %56 = and i32 %55, 64512 %57 = icmp eq i32 %56, 56320 - %.pre92 = load ptr, ptr %29, align 8, !tbaa !45 + %.pre91 = load ptr, ptr %29, align 8, !tbaa !45 br i1 %57, label %58, label %71 58: ; preds = %53 @@ -5163,7 +5163,7 @@ _ZNK6icu_7716ReorderingBuffer23copyReorderableSuffixToERNS_13UnicodeStringE.exit 69: ; preds = %58 %70 = tail call i32 @ucptrie_internalSmallIndex_77(ptr noundef nonnull %.pre92, i32 noundef %62) - %.pre93 = load ptr, ptr %29, align 8, !tbaa !45 + %.pre92 = load ptr, ptr %29, align 8, !tbaa !45 br label %76 71: ; preds = %._crit_edge, %53 @@ -5894,7 +5894,6 @@ define void @_ZNK6icu_7715Normalizer2Impl9recomposeERNS_16ReorderingBufferEia(pt .outer.outer: ; preds = %.outer.outer.backedge, %.preheader183 %.0141.ph.ph = phi ptr [ null, %.preheader183 ], [ %271, %.outer.outer.backedge ] - %.0129.ph.ph = phi i8 [ 0, %.preheader183 ], [ %72, %.outer.outer.backedge ] %.0126.ph.ph = phi i8 [ 0, %.preheader183 ], [ %.0126.ph.ph.be, %.outer.outer.backedge ] %.0121.ph.ph = phi ptr [ null, %.preheader183 ], [ %.0121.ph.ph.be, %.outer.outer.backedge ] %.0114.ph.ph = phi ptr [ %10, %.preheader183 ], [ %.0114, %.outer.outer.backedge ] @@ -5907,7 +5906,7 @@ define void @_ZNK6icu_7715Normalizer2Impl9recomposeERNS_16ReorderingBufferEia(pt .outer: ; preds = %.outer.backedge, %.outer.outer %.0141.ph = phi ptr [ %.0141.ph.ph, %.outer.outer ], [ %.0141.ph.be, %.outer.backedge ] - %.0129.ph = phi i8 [ %.0129.ph.ph, %.outer.outer ], [ %72, %.outer.backedge ] + %.0129.ph = phi i8 [ 0, %.outer.outer ], [ %72, %.outer.backedge ] %.0126.ph = phi i8 [ %.0126.ph.ph, %.outer.outer ], [ %.0126.ph187, %.outer.backedge ] %.0114.ph = phi ptr [ %.0114.ph.ph, %.outer.outer ], [ %.0114, %.outer.backedge ] %.0.ph = phi ptr [ %.0.ph.ph, %.outer.outer ], [ %.1, %.outer.backedge ] diff --git a/bench/icu/optimized/ustdio.ll b/bench/icu/optimized/ustdio.ll index 7a80b25926f..f237f0ea150 100644 --- a/bench/icu/optimized/ustdio.ll +++ b/bench/icu/optimized/ustdio.ll @@ -702,7 +702,7 @@ define noundef ptr @u_fgets_77(ptr noundef writeonly captures(ret: address, prov 10: ; preds = %5 tail call void @_Z26ufile_fill_uchar_buffer_77P5UFILE(ptr noundef nonnull %2) %.pre = load ptr, ptr %8, align 8, !tbaa !40 - %.pre126 = load ptr, ptr %6, align 8, !tbaa !41 + %.pre125 = load ptr, ptr %6, align 8, !tbaa !41 br label %11 11: ; preds = %10, %5 @@ -726,9 +726,9 @@ define noundef ptr @u_fgets_77(ptr noundef writeonly captures(ret: address, prov .lr.ph112: ; preds = %.preheader99, %53 %24 = phi ptr [ %54, %53 ], [ %13, %.preheader99 ] %25 = phi ptr [ %55, %53 ], [ %12, %.preheader99 ] - %.066111 = phi i16 [ %.1136146, %53 ], [ 0, %.preheader99 ] - %.067110 = phi ptr [ %.269134147, %53 ], [ %0, %.preheader99 ] - %.076109 = phi i32 [ %.177131149, %53 ], [ 0, %.preheader99 ] + %.066111 = phi i16 [ %.1, %53 ], [ 0, %.preheader99 ] + %.067110 = phi ptr [ %.269, %53 ], [ %0, %.preheader99 ] + %.076109 = phi i32 [ %.177, %53 ], [ 0, %.preheader99 ] %.081108 = phi i32 [ %60, %53 ], [ %19, %.preheader99 ] %26 = sub nsw i32 %14, %.076109 %27 = icmp slt i32 %.081108, %26 @@ -736,14 +736,16 @@ define noundef ptr @u_fgets_77(ptr noundef writeonly captures(ret: address, prov %29 = getelementptr inbounds i16, ptr %25, i64 %28 %.071 = select i1 %27, ptr %24, ptr %29 %.not90 = icmp eq i16 %.066111, 0 + br i1 %.not90, label %.preheader, label %.critedge92 + +.preheader: ; preds = %.lr.ph112 %30 = icmp ult ptr %25, %.071 - %or.cond115 = select i1 %.not90, i1 %30, i1 false - br i1 %or.cond115, label %.lr.ph, label %.critedge92 + br i1 %30, label %.lr.ph, label %.critedge92 -.lr.ph: ; preds = %.lr.ph112, %34 - %.370105 = phi ptr [ %37, %34 ], [ %.067110, %.lr.ph112 ] - %.173104 = phi ptr [ %36, %34 ], [ %25, %.lr.ph112 ] - %.278103 = phi i32 [ %35, %34 ], [ %.076109, %.lr.ph112 ] +.lr.ph: ; preds = %.preheader, %34 + %.370105 = phi ptr [ %37, %34 ], [ %.067110, %.preheader ] + %.173104 = phi ptr [ %36, %34 ], [ %25, %.preheader ] + %.278103 = phi i32 [ %35, %34 ], [ %.076109, %.preheader ] %31 = load i16, ptr %.173104, align 2, !tbaa !38 %32 = add i16 %31, -10 %or.cond = icmp ult i16 %32, 4 @@ -762,7 +764,7 @@ define noundef ptr @u_fgets_77(ptr noundef writeonly captures(ret: address, prov %37 = getelementptr inbounds nuw i8, ptr %.370105, i64 2 store i16 %31, ptr %.370105, align 2, !tbaa !38 %38 = icmp ult ptr %36, %.071 - br i1 %38, label %.lr.ph, label %.critedge4.thread141, !llvm.loop !44 + br i1 %38, label %.lr.ph, label %.critedge92, !llvm.loop !44 .critedge2: ; preds = %33, %33, %33, %.lr.ph %39 = icmp eq i16 %31, 13 @@ -773,18 +775,14 @@ define noundef ptr @u_fgets_77(ptr noundef writeonly captures(ret: address, prov store i16 %31, ptr %.370105, align 2, !tbaa !38 br label %.critedge92 -.critedge92: ; preds = %.critedge2, %.lr.ph112 - %.177 = phi i32 [ %.076109, %.lr.ph112 ], [ %40, %.critedge2 ] - %.072 = phi ptr [ %25, %.lr.ph112 ], [ %41, %.critedge2 ] - %.269 = phi ptr [ %.067110, %.lr.ph112 ], [ %42, %.critedge2 ] - %.1 = phi i16 [ %.066111, %.lr.ph112 ], [ %., %.critedge2 ] +.critedge92: ; preds = %34, %.preheader, %.critedge2, %.lr.ph112 + %.177 = phi i32 [ %.076109, %.lr.ph112 ], [ %40, %.critedge2 ], [ %.076109, %.preheader ], [ %35, %34 ] + %.072 = phi ptr [ %25, %.lr.ph112 ], [ %41, %.critedge2 ], [ %25, %.preheader ], [ %36, %34 ] + %.269 = phi ptr [ %.067110, %.lr.ph112 ], [ %42, %.critedge2 ], [ %.067110, %.preheader ], [ %37, %34 ] + %.1 = phi i16 [ %.066111, %.lr.ph112 ], [ %., %.critedge2 ], [ 0, %.preheader ], [ 0, %34 ] %43 = icmp ult ptr %.072, %.071 br i1 %43, label %44, label %.critedge4 -.critedge4.thread141: ; preds = %34 - store ptr %36, ptr %6, align 8, !tbaa !41 - br label %53 - 44: ; preds = %.critedge92 %45 = icmp eq i16 %.1, 13 br i1 %45, label %46, label %.critedge4.thread @@ -811,10 +809,7 @@ define noundef ptr @u_fgets_77(ptr noundef writeonly captures(ret: address, prov %52 = icmp eq i16 %.1, 1 br i1 %52, label %.loopexit, label %53 -53: ; preds = %.critedge4.thread141, %.critedge4 - %.177131149 = phi i32 [ %35, %.critedge4.thread141 ], [ %.177, %.critedge4 ] - %.269134147 = phi ptr [ %37, %.critedge4.thread141 ], [ %.269, %.critedge4 ] - %.1136146 = phi i16 [ 0, %.critedge4.thread141 ], [ %.1, %.critedge4 ] +53: ; preds = %.critedge4 tail call void @_Z26ufile_fill_uchar_buffer_77P5UFILE(ptr noundef nonnull %2) %54 = load ptr, ptr %8, align 8, !tbaa !40 %55 = load ptr, ptr %6, align 8, !tbaa !41 @@ -824,12 +819,12 @@ define noundef ptr @u_fgets_77(ptr noundef writeonly captures(ret: address, prov %59 = lshr exact i64 %58, 1 %60 = trunc i64 %59 to i32 %61 = icmp sgt i32 %60, 0 - %62 = icmp slt i32 %.177131149, %14 + %62 = icmp slt i32 %.177, %14 %63 = select i1 %61, i1 %62, i1 false br i1 %63, label %.lr.ph112, label %.loopexit, !llvm.loop !45 .loopexit: ; preds = %53, %.critedge4, %.preheader99, %.critedge4.thread - %.168 = phi ptr [ %.4.ph, %.critedge4.thread ], [ %0, %.preheader99 ], [ %.269134147, %53 ], [ %.269, %.critedge4 ] + %.168 = phi ptr [ %.4.ph, %.critedge4.thread ], [ %0, %.preheader99 ], [ %.269, %.critedge4 ], [ %.269, %53 ] store i16 0, ptr %.168, align 2, !tbaa !38 br label %64 diff --git a/bench/image-rs/optimized/30755d6iao7ojcvl.ll b/bench/image-rs/optimized/30755d6iao7ojcvl.ll index 19b6e659d71..dd6b59c6c5a 100644 --- a/bench/image-rs/optimized/30755d6iao7ojcvl.ll +++ b/bench/image-rs/optimized/30755d6iao7ojcvl.ll @@ -18563,13 +18563,13 @@ define hidden noundef ptr @_ZN3std2io5Write18write_all_vectored17hdd5d9fbc516b9a %8 = getelementptr inbounds { ptr, i64 }, ptr %1, i64 %2 %9 = icmp eq i64 %2, 0 %.sink.sroa.gep = getelementptr inbounds nuw i8, ptr %6, i64 24 - %.sink.sroa.gep91 = getelementptr inbounds nuw i8, ptr %5, i64 24 - %.sink.sroa.gep93 = getelementptr inbounds nuw i8, ptr %6, i64 16 - %.sink.sroa.gep94 = getelementptr inbounds nuw i8, ptr %5, i64 16 - %.sink.sroa.gep96 = getelementptr inbounds nuw i8, ptr %6, i64 32 - %.sink.sroa.gep97 = getelementptr inbounds nuw i8, ptr %5, i64 32 - %.sink.sroa.gep99 = getelementptr inbounds nuw i8, ptr %6, i64 8 - %.sink.sroa.gep100 = getelementptr inbounds nuw i8, ptr %5, i64 8 + %.sink.sroa.gep103 = getelementptr inbounds nuw i8, ptr %5, i64 24 + %.sink.sroa.gep105 = getelementptr inbounds nuw i8, ptr %6, i64 16 + %.sink.sroa.gep106 = getelementptr inbounds nuw i8, ptr %5, i64 16 + %.sink.sroa.gep108 = getelementptr inbounds nuw i8, ptr %6, i64 32 + %.sink.sroa.gep109 = getelementptr inbounds nuw i8, ptr %5, i64 32 + %.sink.sroa.gep111 = getelementptr inbounds nuw i8, ptr %6, i64 8 + %.sink.sroa.gep112 = getelementptr inbounds nuw i8, ptr %5, i64 8 br i1 %9, label %.loopexit, label %.lr.ph.i "_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hedadb4e3bad94abfE.exit.thread.i": ; preds = %15, %.lr.ph.i @@ -18692,8 +18692,13 @@ define hidden noundef ptr @_ZN3std2io5Write18write_all_vectored17hdd5d9fbc516b9a %trunc = trunc nuw i64 %.pre to i1 br i1 %trunc, label %54, label %thread-pre-split -.loopexit: ; preds = %94, %"_ZN110_$LT$core..ops..range..RangeFrom$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17hda9ec29918986761E.exit.i", %3, %93 - %.0 = phi ptr [ %.1, %93 ], [ null, %3 ], [ null, %"_ZN110_$LT$core..ops..range..RangeFrom$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17hda9ec29918986761E.exit.i" ], [ null, %94 ] +.loopexit: ; preds = %51, %57, %59, %63, %_ZN3std2io5error5Error14is_interrupted17h943f3f95534b9a0eE.exit, %"_ZN110_$LT$core..ops..range..RangeFrom$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17hda9ec29918986761E.exit.thread.i16" + %.0.ph = phi ptr [ null, %"_ZN110_$LT$core..ops..range..RangeFrom$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17hda9ec29918986761E.exit.thread.i16" ], [ @anon.f6d9434fcf4bddc9e50dec3b041c07d1.27, %51 ], [ %.val, %57 ], [ %.val, %59 ], [ %.val, %63 ], [ %.val, %_ZN3std2io5error5Error14is_interrupted17h943f3f95534b9a0eE.exit ] + call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) + br label %.loopexit + +.loopexit: ; preds = %92, %.loopexit.sink.split, %"_ZN110_$LT$core..ops..range..RangeFrom$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17hda9ec29918986761E.exit.i", %3 + %.0 = phi ptr [ null, %3 ], [ null, %"_ZN110_$LT$core..ops..range..RangeFrom$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17hda9ec29918986761E.exit.i" ], [ %.0.ph, %.loopexit.sink.split ], [ null, %92 ] ret ptr %.0 thread-pre-split: ; preds = %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$14write_vectored17h3bc1cb30835669bdE.exit" @@ -18703,7 +18708,7 @@ thread-pre-split: ; preds = %"_ZN3std2io5impls58 51: ; preds = %thread-pre-split, %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$14write_vectored17h3bc1cb30835669bdE.exit.thread54" %52 = phi i64 [ %.pr, %thread-pre-split ], [ %30, %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$14write_vectored17h3bc1cb30835669bdE.exit.thread54" ] %53 = icmp eq i64 %52, 0 - br i1 %53, label %93, label %.lr.ph.i7 + br i1 %53, label %.loopexit, label %.lr.ph.i7 54: ; preds = %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$14write_vectored17h3bc1cb30835669bdE.exit.thread", %"_ZN3std2io5impls58_$LT$impl$u20$std..io..Write$u20$for$u20$$RF$mut$u20$W$GT$14write_vectored17h3bc1cb30835669bdE.exit" %.val = load ptr, ptr %24, align 8, !nonnull !13, !noundef !13 @@ -18722,13 +18727,13 @@ default.unreachable: ; preds = %54 57: ; preds = %54 %.mask.i = and i64 %55, -4294967296 %58 = icmp eq i64 %.mask.i, 17179869184 - br i1 %58, label %_ZN3std2io7IoSlice14advance_slices17h140462c502129a66E.exit20.thread, label %93 + br i1 %58, label %_ZN3std2io7IoSlice14advance_slices17h140462c502129a66E.exit20.thread, label %.loopexit 59: ; preds = %54 %60 = getelementptr inbounds nuw i8, ptr %.val, i64 16 %61 = load i8, ptr %60, align 8, !range !757, !noundef !13 %62 = icmp eq i8 %61, 35 - br i1 %62, label %_ZN3std2io7IoSlice14advance_slices17h140462c502129a66E.exit20.thread, label %93 + br i1 %62, label %_ZN3std2io7IoSlice14advance_slices17h140462c502129a66E.exit20.thread, label %.loopexit 63: ; preds = %54 %64 = getelementptr i8, ptr %.val, i64 -1 @@ -18737,7 +18742,7 @@ default.unreachable: ; preds = %54 %66 = getelementptr i8, ptr %.val, i64 15 %67 = load i8, ptr %66, align 8, !range !757, !noundef !13 %68 = icmp eq i8 %67, 35 - br i1 %68, label %_ZN3std2io7IoSlice14advance_slices17h140462c502129a66E.exit20.thread, label %93 + br i1 %68, label %_ZN3std2io7IoSlice14advance_slices17h140462c502129a66E.exit20.thread, label %.loopexit "_ZN91_$LT$core..slice..iter..Iter$LT$T$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$4next17hedadb4e3bad94abfE.exit.thread.i12": ; preds = %75, %.lr.ph.i7 %.016.lcssa.i13 = phi i64 [ %.01622.i9, %.lr.ph.i7 ], [ %76, %75 ] @@ -18773,7 +18778,7 @@ default.unreachable: ; preds = %54 "_ZN110_$LT$core..ops..range..RangeFrom$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17hda9ec29918986761E.exit.thread.i16": ; preds = %"_ZN110_$LT$core..ops..range..RangeFrom$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17hda9ec29918986761E.exit.i15" %80 = icmp eq i64 %.016.lcssa.i13, 0 - br i1 %80, label %_ZN3std2io7IoSlice14advance_slices17h140462c502129a66E.exit20, label %81 + br i1 %80, label %.loopexit, label %81 81: ; preds = %"_ZN110_$LT$core..ops..range..RangeFrom$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17hda9ec29918986761E.exit.thread.i16" call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %6), !noalias !3154 @@ -18783,30 +18788,20 @@ default.unreachable: ; preds = %54 %83 = getelementptr inbounds nuw i8, ptr %71, i64 8 %84 = load i64, ptr %83, align 8, !noalias !3154, !noundef !13 %85 = icmp ult i64 %84, %.016.lcssa.i13 - br i1 %85, label %91, label %86 + br i1 %85, label %86, label %93 86: ; preds = %82 - %87 = sub nuw i64 %84, %.016.lcssa.i13 - store i64 %87, ptr %83, align 8, !noalias !3154 - %88 = load ptr, ptr %71, align 8, !noalias !3154, !noundef !13 - %89 = getelementptr inbounds i8, ptr %88, i64 %.016.lcssa.i13 - store ptr %89, ptr %71, align 8, !noalias !3154 - %.pre50 = load i64, ptr %7, align 8, !range !838 - %90 = icmp eq i64 %.pre50, 0 - br label %_ZN3std2io7IoSlice14advance_slices17h140462c502129a66E.exit20 - -91: ; preds = %82 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %5), !noalias !3154 br label %.invoke -.invoke: ; preds = %81, %91 - %.sink.sroa.phi = phi ptr [ %.sink.sroa.gep, %81 ], [ %.sink.sroa.gep91, %91 ] - %.sink.sroa.phi92 = phi ptr [ %.sink.sroa.gep93, %81 ], [ %.sink.sroa.gep94, %91 ] - %.sink.sroa.phi95 = phi ptr [ %.sink.sroa.gep96, %81 ], [ %.sink.sroa.gep97, %91 ] - %.sink.sroa.phi98 = phi ptr [ %.sink.sroa.gep99, %81 ], [ %.sink.sroa.gep100, %91 ] - %.sink = phi ptr [ %6, %81 ], [ %5, %91 ] - %anon.f6d9434fcf4bddc9e50dec3b041c07d1.42.sink = phi ptr [ @anon.f6d9434fcf4bddc9e50dec3b041c07d1.42, %81 ], [ @anon.f6d9434fcf4bddc9e50dec3b041c07d1.46, %91 ] - %92 = phi ptr [ @anon.f6d9434fcf4bddc9e50dec3b041c07d1.43, %81 ], [ @anon.f6d9434fcf4bddc9e50dec3b041c07d1.48, %91 ] +.invoke: ; preds = %81, %86 + %.sink.sroa.phi = phi ptr [ %.sink.sroa.gep, %81 ], [ %.sink.sroa.gep91, %86 ] + %.sink.sroa.phi104 = phi ptr [ %.sink.sroa.gep93, %81 ], [ %.sink.sroa.gep94, %86 ] + %.sink.sroa.phi107 = phi ptr [ %.sink.sroa.gep96, %81 ], [ %.sink.sroa.gep97, %86 ] + %.sink.sroa.phi110 = phi ptr [ %.sink.sroa.gep99, %81 ], [ %.sink.sroa.gep100, %86 ] + %.sink = phi ptr [ %6, %81 ], [ %5, %86 ] + %anon.f6d9434fcf4bddc9e50dec3b041c07d1.42.sink = phi ptr [ @anon.f6d9434fcf4bddc9e50dec3b041c07d1.42, %81 ], [ @anon.f6d9434fcf4bddc9e50dec3b041c07d1.46, %86 ] + %87 = phi ptr [ @anon.f6d9434fcf4bddc9e50dec3b041c07d1.43, %81 ], [ @anon.f6d9434fcf4bddc9e50dec3b041c07d1.48, %86 ] store ptr %anon.f6d9434fcf4bddc9e50dec3b041c07d1.42.sink, ptr %.sink, align 8, !noalias !3154 store i64 1, ptr %.sink.sroa.phi98, align 8, !noalias !3154 store ptr null, ptr %.sink.sroa.phi95, align 8, !noalias !3154 @@ -18815,38 +18810,38 @@ default.unreachable: ; preds = %54 call void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %.sink, ptr noalias noundef readonly align 8 dereferenceable(24) %92) #40 unreachable -93: ; preds = %_ZN3std2io5error5Error14is_interrupted17h943f3f95534b9a0eE.exit, %63, %59, %57, %51 - %.1 = phi ptr [ @anon.f6d9434fcf4bddc9e50dec3b041c07d1.27, %51 ], [ %.val, %57 ], [ %.val, %59 ], [ %.val, %63 ], [ %.val, %_ZN3std2io5error5Error14is_interrupted17h943f3f95534b9a0eE.exit ] - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) - br label %.loopexit - -_ZN3std2io7IoSlice14advance_slices17h140462c502129a66E.exit20: ; preds = %86, %"_ZN110_$LT$core..ops..range..RangeFrom$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17hda9ec29918986761E.exit.thread.i16" - %.not6 = phi i1 [ true, %"_ZN110_$LT$core..ops..range..RangeFrom$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17hda9ec29918986761E.exit.thread.i16" ], [ %90, %86 ] - %.sroa.8.1 = phi i64 [ 0, %"_ZN110_$LT$core..ops..range..RangeFrom$LT$usize$GT$$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$9index_mut17hda9ec29918986761E.exit.thread.i16" ], [ %70, %86 ] - br i1 %.not6, label %94, label %_ZN3std2io7IoSlice14advance_slices17h140462c502129a66E.exit20.thread +93: ; preds = %82 + %88 = sub nuw i64 %84, %.016.lcssa.i13 + store i64 %88, ptr %83, align 8, !noalias !3154 + %89 = load ptr, ptr %71, align 8, !noalias !3154, !noundef !13 + %90 = getelementptr inbounds i8, ptr %89, i64 %.016.lcssa.i13 + store ptr %90, ptr %71, align 8, !noalias !3154 + %.pre50 = load i64, ptr %7, align 8, !range !838 + %91 = icmp eq i64 %.pre50, 0 + br i1 %91, label %94, label %_ZN3std2io7IoSlice14advance_slices17h140462c502129a66E.exit20.thread _ZN3std2io5error5Error14is_interrupted17h943f3f95534b9a0eE.exit: ; preds = %54 %.mask20.i = and i64 %55, -4294967296 %switch.i = icmp eq i64 %.mask20.i, 150323855360 - br i1 %switch.i, label %_ZN3std2io7IoSlice14advance_slices17h140462c502129a66E.exit20.thread, label %93 + br i1 %switch.i, label %_ZN3std2io7IoSlice14advance_slices17h140462c502129a66E.exit20.thread, label %.loopexit 94: ; preds = %"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17h465e23b60d7b9e57E.exit", %_ZN3std2io7IoSlice14advance_slices17h140462c502129a66E.exit20 %.sroa.0.162 = phi ptr [ %.sroa.0.161, %"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17h465e23b60d7b9e57E.exit" ], [ %71, %_ZN3std2io7IoSlice14advance_slices17h140462c502129a66E.exit20 ] - %.sroa.8.160 = phi i64 [ %.sroa.8.159, %"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17h465e23b60d7b9e57E.exit" ], [ %.sroa.8.1, %_ZN3std2io7IoSlice14advance_slices17h140462c502129a66E.exit20 ] + %.sroa.8.160 = phi i64 [ %.sroa.8.159, %"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17h465e23b60d7b9e57E.exit" ], [ %70, %_ZN3std2io7IoSlice14advance_slices17h140462c502129a66E.exit20 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) - %95 = icmp eq i64 %.sroa.8.160, 0 + %93 = icmp eq i64 %.sroa.8.160, 0 br i1 %95, label %.loopexit, label %28 _ZN3std2io7IoSlice14advance_slices17h140462c502129a66E.exit20.thread: ; preds = %57, %59, %63, %_ZN3std2io5error5Error14is_interrupted17h943f3f95534b9a0eE.exit, %_ZN3std2io7IoSlice14advance_slices17h140462c502129a66E.exit20 %.sroa.0.161 = phi ptr [ %71, %_ZN3std2io7IoSlice14advance_slices17h140462c502129a66E.exit20 ], [ %.sroa.0.041, %_ZN3std2io5error5Error14is_interrupted17h943f3f95534b9a0eE.exit ], [ %.sroa.0.041, %63 ], [ %.sroa.0.041, %59 ], [ %.sroa.0.041, %57 ] - %.sroa.8.159 = phi i64 [ %.sroa.8.1, %_ZN3std2io7IoSlice14advance_slices17h140462c502129a66E.exit20 ], [ %.sroa.8.040, %_ZN3std2io5error5Error14is_interrupted17h943f3f95534b9a0eE.exit ], [ %.sroa.8.040, %63 ], [ %.sroa.8.040, %59 ], [ %.sroa.8.040, %57 ] + %.sroa.8.159 = phi i64 [ %70, %_ZN3std2io7IoSlice14advance_slices17h140462c502129a66E.exit20 ], [ %.sroa.8.040, %_ZN3std2io5error5Error14is_interrupted17h943f3f95534b9a0eE.exit ], [ %.sroa.8.040, %63 ], [ %.sroa.8.040, %59 ], [ %.sroa.8.040, %57 ] call void @llvm.experimental.noalias.scope.decl(metadata !3157) call void @llvm.experimental.noalias.scope.decl(metadata !3160) call void @llvm.experimental.noalias.scope.decl(metadata !3163) call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4), !noalias !3166 - %96 = load ptr, ptr %24, align 8, !alias.scope !3166, !nonnull !13, !noundef !13 + %94 = load ptr, ptr %24, align 8, !alias.scope !3166, !nonnull !13, !noundef !13 call void @_ZN3std2io5error14repr_bitpacked11decode_repr17hd96ac60c1dd9bdefE.llvm.9832446184049035033(ptr noalias noundef nonnull sret({ i8, [15 x i8] }) align 8 captures(none) dereferenceable(16) %4, ptr noundef nonnull %96), !noalias !3166 - %97 = load i8, ptr %4, align 8, !range !159, !alias.scope !3167, !noalias !3166, !noundef !13 + %95 = load i8, ptr %4, align 8, !range !159, !alias.scope !3167, !noalias !3166, !noundef !13 %switch.not.i.i.i.i = icmp eq i8 %97, 3 br i1 %switch.not.i.i.i.i, label %98, label %"_ZN4core3ptr42drop_in_place$LT$std..io..error..Error$GT$17h465e23b60d7b9e57E.exit" diff --git a/bench/jemalloc/optimized/extent_dss.ll b/bench/jemalloc/optimized/extent_dss.ll index 4c389a6268d..e297340b87f 100644 --- a/bench/jemalloc/optimized/extent_dss.ll +++ b/bench/jemalloc/optimized/extent_dss.ll @@ -205,16 +205,17 @@ atomic_store_p.exit: ; preds = %69 %82 = tail call zeroext i1 @je_pages_decommit(ptr noundef nonnull %51, i64 noundef %3) #6 %83 = zext i1 %82 to i8 store i8 %83, ptr %6, align 1, !tbaa !11 - br label %84 + %84 = load i8, ptr %5, align 1, !tbaa !11, !range !13, !noundef !14 + %85 = trunc nuw i8 %84 to i1 + %86 = select i1 %85, i1 %82, i1 false + br i1 %86, label %.thread112, label %.thread93 -84: ; preds = %81, %78 - %85 = phi i1 [ %82, %81 ], [ true, %78 ] - %86 = load i8, ptr %5, align 1, !tbaa !11, !range !13, !noundef !14 - %87 = trunc nuw i8 %86 to i1 - %or.cond117 = select i1 %87, i1 %85, i1 false - br i1 %or.cond117, label %88, label %.thread93 +84: ; preds = %78 + %87 = load i8, ptr %5, align 1, !tbaa !11, !range !13, !noundef !14 + %88 = trunc nuw i8 %87 to i1 + br i1 %88, label %88, label %.thread93 -88: ; preds = %84 +88: ; preds = %81, %84 call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %9) #6 %89 = getelementptr inbounds nuw i8, ptr %9, i64 24 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(104) %89, i8 0, i64 104, i1 false) @@ -259,8 +260,8 @@ atomic_store_b.exit: ; preds = %102 tail call void @je_edata_cache_put(ptr noundef %0, ptr noundef nonnull %12, ptr noundef nonnull %13) #6 br label %.thread93 -.thread93: ; preds = %84, %101, %11, %7, %.thread - %.0 = phi ptr [ null, %.thread ], [ null, %7 ], [ null, %11 ], [ %51, %101 ], [ %51, %84 ] +.thread93: ; preds = %81, %84, %101, %11, %7, %.thread + %.0 = phi ptr [ null, %.thread ], [ null, %7 ], [ null, %11 ], [ %51, %101 ], [ %51, %81 ], [ %51, %84 ] ret ptr %.0 } diff --git a/bench/jq/optimized/decNumber.ll b/bench/jq/optimized/decNumber.ll index 7b0c6971524..dc322ecbd18 100644 --- a/bench/jq/optimized/decNumber.ll +++ b/bench/jq/optimized/decNumber.ll @@ -3357,7 +3357,7 @@ define internal fastcc noundef ptr @decCompareOp(ptr noundef returned %0, ptr no %.not125 = icmp eq i8 %36, 0 %37 = and i8 %12, 16 %.not126 = icmp eq i8 %37, 0 - %or.cond175 = or i1 %.not125, %.not126 + %or.cond174 = or i1 %.not125, %.not126 br i1 %or.cond175, label %38, label %decUnitCompare.exit 38: ; preds = %35 @@ -3434,9 +3434,9 @@ define internal fastcc noundef ptr @decCompareOp(ptr noundef returned %0, ptr no decUnitCompare.exit: ; preds = %75, %71, %70, %35, %65, %62, %32, %30, %28 %.1 = phi i32 [ -1, %28 ], [ 1, %30 ], [ -1, %32 ], [ 1, %62 ], [ -1, %65 ], [ 1, %35 ], [ 1, %71 ], [ -1, %75 ], [ 0, %70 ] %77 = sub nsw i32 0, %.1 - %.not127177 = icmp slt i8 %10, 0 + %.not127176 = icmp slt i8 %10, 0 %spec.select = select i1 %.not127177, i32 %77, i32 %.1 - br label %.thread + br label %.thread.thread 78: ; preds = %27 %79 = and i8 %21, 16 @@ -3466,7 +3466,7 @@ decUnitCompare.exit: ; preds = %75, %71, %70, %35, 85: ; preds = %._crit_edge %86 = add nsw i8 %4, -7 %or.cond = icmp ult i8 %86, 2 - %.184 = zext i1 %or.cond to i8 + %.183 = zext i1 %or.cond to i8 %87 = tail call fastcc i32 @decCompare(ptr noundef nonnull %1, ptr noundef nonnull %2, i8 noundef zeroext %.184) %88 = icmp eq i32 %87, -2147483648 br i1 %88, label %89, label %.thread @@ -3477,8 +3477,7 @@ decUnitCompare.exit: ; preds = %75, %71, %70, %35, store i32 %91, ptr %5, align 4, !tbaa !16 br label %149 -.thread: ; preds = %decUnitCompare.exit, %85 - %.0103142 = phi i32 [ %87, %85 ], [ %spec.select, %decUnitCompare.exit ] +.thread: ; preds = %85 switch i8 %4, label %117 [ i8 6, label %92 i8 4, label %92 @@ -3486,9 +3485,11 @@ decUnitCompare.exit: ; preds = %75, %71, %70, %35, i8 5, label %149 ] -92: ; preds = %.thread, %.thread, %.thread - %93 = icmp eq i32 %.0103142, 0 - %or.cond10 = and i1 %8, %93 +92: ; preds = %decUnitCompare.exit, %.thread, %.thread, %.thread + %92 = phi i1 [ %23, %.thread ], [ %8, %.thread ], [ %8, %.thread ], [ true, %decUnitCompare.exit ] + %.0103142153 = phi i32 [ %87, %.thread ], [ %87, %.thread ], [ %87, %.thread ], [ %spec.select, %decUnitCompare.exit ] + %93 = icmp eq i32 %.0103142153, 0 + %or.cond10 = and i1 %92, %93 br i1 %or.cond10, label %94, label %105 94: ; preds = %92 @@ -3514,7 +3515,7 @@ decUnitCompare.exit: ; preds = %75, %71, %70, %35, %.135 = select i1 %102, i32 -1, i32 1 %103 = load i8, ptr %17, align 4, !tbaa !4 %104 = sub nsw i32 0, %.135 - %.not131178 = icmp slt i8 %103, 0 + %.not131177 = icmp slt i8 %103, 0 %spec.select139 = select i1 %.not131178, i32 %104, i32 %.135 br label %.sink.split @@ -3529,7 +3530,7 @@ decUnitCompare.exit: ; preds = %75, %71, %70, %35, br i1 %93, label %149, label %112 .sink.split: ; preds = %13, %15, %.thread147 - %.2150.ph = phi i32 [ %spec.select139, %.thread147 ], [ -1, %13 ], [ 1, %15 ] + %.2150.ph = phi i32 [ %spec.select139, %.thread147 ], [ 1, %15 ], [ -1, %13 ] %109 = getelementptr inbounds nuw i8, ptr %0, i64 8 store i8 0, ptr %109, align 4, !tbaa !4 %110 = getelementptr inbounds nuw i8, ptr %0, i64 4 @@ -3541,7 +3542,7 @@ decUnitCompare.exit: ; preds = %75, %71, %70, %35, 112: ; preds = %.sink.split, %105 %113 = phi ptr [ %108, %105 ], [ %111, %.sink.split ] %114 = phi ptr [ %106, %105 ], [ %109, %.sink.split ] - %.2150 = phi i32 [ %.0103142, %105 ], [ %.2150.ph, %.sink.split ] + %.2150 = phi i32 [ %.0103142153, %105 ], [ %.2150.ph, %.sink.split ] store i16 1, ptr %113, align 2, !tbaa !11 %115 = icmp slt i32 %.2150, 0 br i1 %115, label %116, label %149 @@ -3553,7 +3554,7 @@ decUnitCompare.exit: ; preds = %75, %71, %70, %35, 117: ; preds = %.thread call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #18 store i32 0, ptr %7, align 4, !tbaa !16 - %118 = icmp eq i32 %.0103142, 0 + %118 = icmp eq i32 %87, 0 br i1 %118, label %119, label %135 119: ; preds = %117 @@ -3589,7 +3590,7 @@ decUnitCompare.exit: ; preds = %75, %71, %70, %35, br label %135 135: ; preds = %124, %131, %133, %117 - %.4 = phi i32 [ %.0103142, %117 ], [ %.136, %124 ], [ %.137, %131 ], [ %.138, %133 ] + %.4 = phi i32 [ %87, %117 ], [ %.136, %124 ], [ %.137, %131 ], [ %.138, %133 ] switch i8 %4, label %138 [ i8 8, label %136 i8 3, label %136 @@ -3626,78 +3627,42 @@ decUnitCompare.exit: ; preds = %75, %71, %70, %35, define dso_local noundef ptr @decNumberCompareSignal(ptr noundef returned %0, ptr noundef captures(address) %1, ptr noundef captures(address) %2, ptr noundef %3) local_unnamed_addr #4 { %5 = alloca i32, align 4 call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #18 - %6 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %7 = load i8, ptr %6, align 4, !tbaa !4 - %8 = getelementptr inbounds nuw i8, ptr %2, i64 8 - %9 = load i8, ptr %8, align 4, !tbaa !4 - %10 = or i8 %9, %7 - %11 = and i8 %10, 48 - %.not116.i = icmp eq i8 %11, 0 - br i1 %.not116.i, label %12, label %decCompareOp.exit - -12: ; preds = %4 - %13 = tail call fastcc i32 @decCompare(ptr noundef nonnull %1, ptr noundef nonnull %2, i8 noundef zeroext 0) - %14 = icmp eq i32 %13, -2147483648 - br i1 %14, label %.thread9, label %.thread.i - -.thread.i: ; preds = %12 - %15 = icmp eq i32 %13, 0 - %16 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i8 0, ptr %16, align 4, !tbaa !4 - %17 = getelementptr inbounds nuw i8, ptr %0, i64 4 - store i32 0, ptr %17, align 4, !tbaa !9 - store i32 1, ptr %0, align 4, !tbaa !10 - %18 = getelementptr inbounds nuw i8, ptr %0, i64 10 - store i16 0, ptr %18, align 2, !tbaa !11 - br i1 %15, label %decCompareOp.exit.thread, label %19 - -19: ; preds = %.thread.i - store i16 1, ptr %18, align 2, !tbaa !11 - %20 = icmp slt i32 %13, 0 - br i1 %20, label %21, label %decCompareOp.exit.thread - -21: ; preds = %19 - store i8 -128, ptr %16, align 4, !tbaa !4 - br label %decCompareOp.exit.thread - -decCompareOp.exit: ; preds = %4 - store i32 1073741952, ptr %5, align 4, !tbaa !16 - %22 = call fastcc ptr @decNaNs(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef readonly %3, ptr noundef nonnull %5) - %.pr.pre = load i32, ptr %5, align 4, !tbaa !16 - %.not = icmp eq i32 %.pr.pre, 0 - br i1 %.not, label %decCompareOp.exit.thread, label %23 + store i32 0, ptr %5, align 4, !tbaa !16 + %6 = call fastcc ptr @decCompareOp(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, i8 noundef zeroext 6, ptr noundef %5) + %7 = load i32, ptr %5, align 4, !tbaa !16 + %.not = icmp eq i32 %7, 0 + br i1 %.not, label %19, label %8 -23: ; preds = %decCompareOp.exit - %24 = and i32 %.pr.pre, 221 +23: ; preds = %4 + %9 = and i32 %7, 221 %.not.i = icmp eq i32 %24, 0 br i1 %.not.i, label %decStatus.exit, label %25 25: ; preds = %23 - %26 = and i32 %.pr.pre, 1073741824 + %11 = and i32 %7, 1073741824 %.not6.i = icmp eq i32 %26, 0 br i1 %.not6.i, label %.thread9, label %27 27: ; preds = %25 - %28 = and i32 %.pr.pre, -1073741825 + %13 = and i32 %7, -1073741825 br label %decStatus.exit -.thread9: ; preds = %12, %25 - %29 = phi i32 [ %.pr.pre, %25 ], [ 16, %12 ] - %30 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %31 = getelementptr inbounds nuw i8, ptr %0, i64 4 - store i32 0, ptr %31, align 4, !tbaa !9 +.thread9: ; preds = %25 + %15 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %16 = getelementptr inbounds nuw i8, ptr %0, i64 4 + store i32 0, ptr %30, align 4, !tbaa !9 store i32 1, ptr %0, align 4, !tbaa !10 - %32 = getelementptr inbounds nuw i8, ptr %0, i64 10 + %17 = getelementptr inbounds nuw i8, ptr %0, i64 10 store i16 0, ptr %32, align 2, !tbaa !11 - store i8 32, ptr %30, align 4, !tbaa !4 + store i8 32, ptr %15, align 4, !tbaa !4 br label %decStatus.exit decStatus.exit: ; preds = %23, %27, %.thread9 - %.0.i = phi i32 [ %28, %27 ], [ %29, %.thread9 ], [ %.pr.pre, %23 ] - %33 = tail call ptr @decContextSetStatus(ptr noundef %3, i32 noundef %.0.i) #18 + %.0.i = phi i32 [ %28, %27 ], [ %7, %.thread9 ], [ %7, %23 ] + %18 = tail call ptr @decContextSetStatus(ptr noundef %3, i32 noundef %.0.i) #18 br label %decCompareOp.exit.thread -decCompareOp.exit.thread: ; preds = %21, %19, %.thread.i, %decStatus.exit, %decCompareOp.exit +decCompareOp.exit.thread: ; preds = %decStatus.exit, %4 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #18 ret ptr %0 } @@ -9377,7 +9342,7 @@ decSetMaxValue.exit: ; preds = %.lr.ph.i, %11 br label %decStatus.exit decStatus.exit: ; preds = %38, %36, %40 - %.0.i = phi i32 [ %35, %40 ], [ %35, %36 ], [ 128, %38 ] + %.0.i = phi i32 [ 1223, %40 ], [ %35, %36 ], [ 128, %38 ] %44 = call ptr @decContextSetStatus(ptr noundef nonnull %2, i32 noundef %.0.i) #18 br label %45 @@ -9512,7 +9477,7 @@ decSetMaxValue.exit: ; preds = %.lr.ph.i, %10 br label %decStatus.exit decStatus.exit: ; preds = %37, %35, %39 - %.0.i = phi i32 [ %34, %39 ], [ %34, %35 ], [ 128, %37 ] + %.0.i = phi i32 [ 1223, %39 ], [ %34, %35 ], [ 128, %37 ] %43 = call ptr @decContextSetStatus(ptr noundef nonnull %2, i32 noundef %.0.i) #18 br label %44 diff --git a/bench/jsonnet/optimized/vm.ll b/bench/jsonnet/optimized/vm.ll index c285f5d181d..a357fe201aa 100644 --- a/bench/jsonnet/optimized/vm.ll +++ b/bench/jsonnet/optimized/vm.ll @@ -74847,7 +74847,7 @@ define linkonce_odr void @_ZN2c43yml7EmitterINS0_13WriterOStreamINSt7__cxx1118ba %10 = getelementptr inbounds nuw %"struct.c4::yml::NodeData", ptr %9, i64 %1 %11 = load i64, ptr %10, align 8, !tbaa !521 %12 = and i64 %11, 16 - %.not70 = icmp eq i64 %12, 0 + %.not71 = icmp eq i64 %12, 0 br i1 %.not70, label %18, label %13 13: ; preds = %4 @@ -74856,21 +74856,21 @@ define linkonce_odr void @_ZN2c43yml7EmitterINS0_13WriterOStreamINSt7__cxx1118ba %15 = load ptr, ptr %14, align 8, !tbaa !520 %16 = getelementptr inbounds nuw %"struct.c4::yml::NodeData", ptr %15, i64 %1, i32 4 %17 = load i64, ptr %16, align 8, !tbaa !1031 - %.not78 = icmp eq i64 %17, -1 - br i1 %.not78, label %180, label %.thread68 + %.not = icmp eq i64 %17, -1 + br i1 %.not78, label %181, label %.thread68 18: ; preds = %4 %19 = and i64 %11, 44 - %.not71 = icmp eq i64 %19, 0 + %.not72 = icmp eq i64 %19, 0 br i1 %.not71, label %.thread68, label %20 20: ; preds = %18 %21 = and i64 %11, 2 - %.not72 = icmp eq i64 %21, 0 + %.not73 = icmp eq i64 %21, 0 br i1 %.not72, label %39, label %22 22: ; preds = %20 - %.not.i56 = icmp eq i64 %6, 0 + %.not.i57 = icmp eq i64 %6, 0 br i1 %.not.i56, label %_ZN2c43yml13WriterOStreamINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEE9_do_writeENS0_4RepCE.exit, label %.lr.ph.i .lr.ph.i: ; preds = %22, %.lr.ph.i @@ -74914,16 +74914,16 @@ _ZN2c43yml13WriterOStreamINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaI br i1 %42, label %56, label %43 43: ; preds = %39 - %.not.i57 = icmp eq i64 %6, 0 + %.not.i58 = icmp eq i64 %6, 0 br i1 %.not.i57, label %_ZN2c43yml13WriterOStreamINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEE9_do_writeENS0_4RepCE.exit61, label %.lr.ph.i58 .lr.ph.i58: ; preds = %43, %.lr.ph.i58 - %.04.i59 = phi i64 [ %47, %.lr.ph.i58 ], [ 0, %43 ] + %.04.i60 = phi i64 [ %47, %.lr.ph.i58 ], [ 0, %43 ] %44 = load ptr, ptr %0, align 8, !tbaa !1022 %45 = getelementptr inbounds nuw i8, ptr %44, i64 16 %46 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSo3putEc(ptr noundef nonnull align 8 dereferenceable(8) %45, i8 noundef signext 32) %47 = add nuw i64 %.04.i59, 1 - %exitcond.not.i60 = icmp eq i64 %47, %6 + %exitcond.not.i61 = icmp eq i64 %47, %6 br i1 %exitcond.not.i60, label %_ZN2c43yml13WriterOStreamINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEE9_do_writeENS0_4RepCE.exit61, label %.lr.ph.i58, !llvm.loop !1042 _ZN2c43yml13WriterOStreamINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEE9_do_writeENS0_4RepCE.exit61: ; preds = %.lr.ph.i58, %43 @@ -75014,7 +75014,7 @@ _ZN2c43yml7EmitterINS0_13WriterOStreamINSt7__cxx1118basic_stringstreamIcSt11char %97 = getelementptr inbounds nuw %"struct.c4::yml::NodeData", ptr %96, i64 %1 %98 = load i64, ptr %97, align 8, !tbaa !521 %99 = and i64 %98, 512 - %.not.i55 = icmp ne i64 %99, 0 + %.not.i56 = icmp ne i64 %99, 0 %100 = and i64 %98, 13 %101 = icmp ne i64 %100, 0 %102 = and i1 %.not.i55, %101 @@ -75070,19 +75070,19 @@ _ZN2c43yml13WriterOStreamINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaI %.251 = phi i8 [ %.150, %_ZN2c43yml7EmitterINS0_13WriterOStreamINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEEE10_write_tagENS_15basic_substringIKcEE.exit ], [ 1, %112 ], [ 1, %125 ] %132 = getelementptr inbounds nuw %"struct.c4::yml::NodeData", ptr %131, i64 %1, i32 4 %133 = load i64, ptr %132, align 8, !tbaa !1031 - %.not73 = icmp eq i64 %133, -1 + %.not74 = icmp eq i64 %133, -1 %134 = getelementptr inbounds nuw %"struct.c4::yml::NodeData", ptr %131, i64 %1 %135 = load i64, ptr %134, align 8, !tbaa !521 br i1 %.not73, label %138, label %136 136: ; preds = %_ZN2c43yml13WriterOStreamINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEE9_do_writeENS_15basic_substringIKcEE.exit %137 = and i64 %135, 2 - %.not76 = icmp eq i64 %137, 0 + %.not77 = icmp eq i64 %137, 0 br i1 %.not76, label %156, label %.thread68.sink.split 138: ; preds = %_ZN2c43yml13WriterOStreamINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEE9_do_writeENS_15basic_substringIKcEE.exit %139 = and i64 %135, 8 - %.not74 = icmp eq i64 %139, 0 + %.not75 = icmp eq i64 %139, 0 br i1 %.not74, label %147, label %140 140: ; preds = %138 @@ -75093,12 +75093,12 @@ _ZN2c43yml13WriterOStreamINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaI %145 = load i64, ptr %144, align 8, !tbaa !526 %146 = add i64 %145, 4 store i64 %146, ptr %144, align 8, !tbaa !526 - br label %180 + br label %181 147: ; preds = %138 %148 = and i64 %135, 4 - %.not75 = icmp eq i64 %148, 0 - br i1 %.not75, label %180, label %149 + %.not76 = icmp eq i64 %148, 0 + br i1 %.not75, label %181, label %149 149: ; preds = %147 %150 = load ptr, ptr %0, align 8, !tbaa !1022 @@ -75108,18 +75108,17 @@ _ZN2c43yml13WriterOStreamINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaI %154 = load i64, ptr %153, align 8, !tbaa !526 %155 = add i64 %154, 4 store i64 %155, ptr %153, align 8, !tbaa !526 - br label %180 + br label %181 156: ; preds = %136 %157 = getelementptr inbounds nuw %"struct.c4::yml::NodeData", ptr %131, i64 %1, i32 3 %158 = load i64, ptr %157, align 8, !tbaa !1018 %159 = icmp eq i64 %158, -1 - %or.cond = or i1 %159, %.153 %160 = trunc nuw i8 %.251 to i1 - %.not77 = xor i1 %160, true - %.not = select i1 %or.cond, i1 %.not77, i1 false - %or.cond3 = or i1 %.not, %.153 - %161 = xor i1 %.not, true + %.not78 = xor i1 %160, true + %161 = select i1 %159, i1 %.not77, i1 false + %or.cond3 = or i1 %.153, %.not + %162 = xor i1 %.not, true %brmerge = or i1 %.153, %161 %.mux = select i1 %or.cond3, i8 10, i8 32 %.mux90 = zext i1 %or.cond3 to i64 @@ -75128,41 +75127,41 @@ _ZN2c43yml13WriterOStreamINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaI .thread68.sink.split: ; preds = %156, %136 %.sink88 = phi i8 [ %.mux, %156 ], [ 10, %136 ] %.047.ph = phi i64 [ %.mux90, %156 ], [ 1, %136 ] - %162 = load ptr, ptr %0, align 8, !tbaa !1022 - %163 = getelementptr inbounds nuw i8, ptr %162, i64 16 - %164 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSo3putEc(ptr noundef nonnull align 8 dereferenceable(8) %163, i8 noundef signext %.sink88) - %165 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %166 = load i64, ptr %165, align 8, !tbaa !526 - %167 = add i64 %166, 1 + %163 = load ptr, ptr %0, align 8, !tbaa !1022 + %164 = getelementptr inbounds nuw i8, ptr %162, i64 16 + %165 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSo3putEc(ptr noundef nonnull align 8 dereferenceable(8) %163, i8 noundef signext %.sink88) + %166 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %167 = load i64, ptr %165, align 8, !tbaa !526 + %168 = add i64 %166, 1 store i64 %167, ptr %165, align 8, !tbaa !526 br label %.thread68 .thread68: ; preds = %156, %.thread68.sink.split, %18, %13 %.047 = phi i64 [ %3, %13 ], [ %3, %18 ], [ %.047.ph, %.thread68.sink.split ], [ 0, %156 ] - %168 = load ptr, ptr %7, align 8, !tbaa !529 - %169 = load ptr, ptr %168, align 8, !tbaa !520 - %170 = getelementptr inbounds nuw %"struct.c4::yml::NodeData", ptr %169, i64 %1, i32 3 - %171 = load i64, ptr %170, align 8, !tbaa !1018 - %172 = icmp eq i64 %171, -1 + %169 = load ptr, ptr %7, align 8, !tbaa !529 + %170 = load ptr, ptr %168, align 8, !tbaa !520 + %171 = getelementptr inbounds nuw %"struct.c4::yml::NodeData", ptr %169, i64 %1, i32 3 + %172 = load i64, ptr %170, align 8, !tbaa !1018 + %173 = icmp eq i64 %171, -1 br i1 %172, label %178, label %173 173: ; preds = %.thread68 - %174 = add i64 %2, 1 - %175 = getelementptr inbounds nuw %"struct.c4::yml::NodeData", ptr %169, i64 %1 - %176 = load i64, ptr %175, align 8, !tbaa !521 - %177 = and i64 %176, 16 + %175 = add i64 %2, 1 + %176 = getelementptr inbounds nuw %"struct.c4::yml::NodeData", ptr %169, i64 %1 + %177 = load i64, ptr %175, align 8, !tbaa !521 + %178 = and i64 %176, 16 %.not79 = icmp eq i64 %177, 0 - br i1 %.not79, label %179, label %178 + br i1 %.not79, label %180, label %178 178: ; preds = %173, %.thread68 - br label %179 + br label %180 -179: ; preds = %178, %173 - %.0 = phi i64 [ %2, %178 ], [ %174, %173 ] +180: ; preds = %179, %174 + %.0 = phi i64 [ %2, %179 ], [ %175, %174 ] tail call void @_ZN2c43yml7EmitterINS0_13WriterOStreamINSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEEEEE25_do_visit_block_containerEmmm(ptr noundef nonnull align 8 dereferenceable(24) %0, i64 noundef %1, i64 noundef %.0, i64 noundef %.047) - br label %180 + br label %181 -180: ; preds = %147, %149, %140, %13, %179 +181: ; preds = %147, %149, %140, %13, %180 ret void } diff --git a/bench/lief/optimized/ssl_tls13_client.ll b/bench/lief/optimized/ssl_tls13_client.ll index a259e595317..6920a22004e 100644 --- a/bench/lief/optimized/ssl_tls13_client.ll +++ b/bench/lief/optimized/ssl_tls13_client.ll @@ -721,93 +721,94 @@ define hidden i32 @mbedtls_ssl_tls13_write_client_hello_exts(ptr noundef %0, ptr %85 = load ptr, ptr %8, align 8, !tbaa !17 %86 = getelementptr inbounds nuw i8, ptr %85, i64 2032 %87 = load i16, ptr %86, align 8, !tbaa !62 - %switch.tableidx = add i16 %87, -23 - %88 = icmp ult i16 %switch.tableidx, 8 - %switch.maskindex = trunc i16 %switch.tableidx to i8 - %switch.shifted = lshr i8 -57, %switch.maskindex - %switch.lobit = trunc i8 %switch.shifted to i1 - %or.cond = select i1 %88, i1 %switch.lobit, i1 false - br i1 %or.cond, label %switch.lookup, label %89 + switch i16 %87, label %88 [ + i16 29, label %ssl_tls13_get_default_group_id.exit.i + i16 25, label %ssl_tls13_get_default_group_id.exit.i + i16 24, label %ssl_tls13_get_default_group_id.exit.i + i16 23, label %ssl_tls13_get_default_group_id.exit.i + i16 30, label %mbedtls_ssl_tls13_named_group_is_ecdhe.exit59.thread.i + ] 89: ; preds = %84 - %90 = add i16 %87, -261 - %91 = icmp ult i16 %90, -5 + %89 = add i16 %87, -261 + %90 = icmp ult i16 %90, -5 br i1 %91, label %92, label %ssl_tls13_get_default_group_id.exit.i 92: ; preds = %89 - %93 = getelementptr inbounds nuw i8, ptr %85, i64 104 - %94 = load ptr, ptr %93, align 8, !tbaa !63 + %92 = getelementptr inbounds nuw i8, ptr %85, i64 104 + %93 = load ptr, ptr %93, align 8, !tbaa !63 %.not7.i.i.i = icmp eq ptr %94, null br i1 %.not7.i.i.i, label %mbedtls_ssl_get_groups.exit.i.i, label %.preheader.i.i mbedtls_ssl_get_groups.exit.i.i: ; preds = %92 - %95 = load ptr, ptr %0, align 8, !tbaa !39 - %96 = getelementptr inbounds nuw i8, ptr %95, i64 256 - %97 = load ptr, ptr %96, align 8, !tbaa !64 - %98 = icmp eq ptr %97, null + %94 = load ptr, ptr %0, align 8, !tbaa !39 + %95 = getelementptr inbounds nuw i8, ptr %95, i64 256 + %96 = load ptr, ptr %96, align 8, !tbaa !64 + %97 = icmp eq ptr %97, null br i1 %98, label %ssl_tls13_write_supported_versions_ext.exit, label %.preheader.i.i .preheader.i.i: ; preds = %mbedtls_ssl_get_groups.exit.i.i, %92 %.0.i24.i.i = phi ptr [ %97, %mbedtls_ssl_get_groups.exit.i.i ], [ %94, %92 ] - %99 = load i16, ptr %.0.i24.i.i, align 2, !tbaa !65 + %98 = load i16, ptr %.0.i24.i.i, align 2, !tbaa !65 %.not19.i.i = icmp eq i16 %99, 0 br i1 %.not19.i.i, label %ssl_tls13_write_supported_versions_ext.exit, label %.lr.ph.i.i -100: ; preds = %108 - %101 = getelementptr inbounds nuw i8, ptr %.020.i.i, i64 2 - %102 = load i16, ptr %101, align 2, !tbaa !65 +100: ; preds = %107 + %100 = getelementptr inbounds nuw i8, ptr %.020.i.i, i64 2 + %101 = load i16, ptr %101, align 2, !tbaa !65 %.not.i.i = icmp eq i16 %102, 0 br i1 %.not.i.i, label %ssl_tls13_write_supported_versions_ext.exit, label %.lr.ph.i.i, !llvm.loop !66 .lr.ph.i.i: ; preds = %.preheader.i.i, %100 - %103 = phi i16 [ %102, %100 ], [ %99, %.preheader.i.i ] + %102 = phi i16 [ %102, %100 ], [ %99, %.preheader.i.i ] %.020.i.i = phi ptr [ %101, %100 ], [ %.0.i24.i.i, %.preheader.i.i ] - %104 = tail call i32 @mbedtls_ssl_get_psa_curve_info_from_tls_id(i16 noundef zeroext %103, ptr noundef null, ptr noundef null) #12 - %105 = icmp eq i32 %104, 0 + %103 = tail call i32 @mbedtls_ssl_get_psa_curve_info_from_tls_id(i16 noundef zeroext %103, ptr noundef null, ptr noundef null) #12 + %104 = icmp eq i32 %104, 0 %.pre.i.i = load i16, ptr %.020.i.i, align 2, !tbaa !65 - br i1 %105, label %106, label %108 - -106: ; preds = %.lr.ph.i.i - %switch.tableidx77 = add i16 %.pre.i.i, -23 - %107 = icmp ult i16 %switch.tableidx77, 8 - %switch.maskindex80 = trunc i16 %switch.tableidx77 to i8 - %switch.shifted81 = lshr i8 -57, %switch.maskindex80 - %switch.lobit82 = trunc i8 %switch.shifted81 to i1 - %or.cond85 = select i1 %107, i1 %switch.lobit82, i1 false - br i1 %or.cond85, label %switch.lookup79, label %108 - -108: ; preds = %106, %.lr.ph.i.i - %109 = add i16 %.pre.i.i, -261 - %110 = icmp ult i16 %109, -5 - br i1 %110, label %100, label %ssl_tls13_get_default_group_id.exit.i - -switch.lookup: ; preds = %84 - %111 = zext nneg i16 %switch.tableidx to i64 - %switch.gep = getelementptr inbounds nuw [8 x i16], ptr @switch.table.mbedtls_ssl_tls13_write_client_hello_exts.18, i64 0, i64 %111 - %switch.load = load i16, ptr %switch.gep, align 2 - br label %ssl_tls13_get_default_group_id.exit.i + br i1 %105, label %105, label %107 -switch.lookup79: ; preds = %106 - %112 = zext nneg i16 %switch.tableidx77 to i64 - %switch.gep83 = getelementptr inbounds nuw [8 x i16], ptr @switch.table.mbedtls_ssl_tls13_write_client_hello_exts.18, i64 0, i64 %112 - %switch.load84 = load i16, ptr %switch.gep83, align 2 - br label %ssl_tls13_get_default_group_id.exit.i +switch.lookup79: ; preds = %.lr.ph.i.i + %switch.tableidx = add i16 %.pre.i.i, -23 + %106 = icmp ult i16 %switch.tableidx, 8 + %switch.maskindex = trunc i16 %switch.tableidx to i8 + %switch.shifted = lshr i8 -57, %switch.maskindex + %switch.lobit = trunc i8 %switch.shifted to i1 + %or.cond = select i1 %106, i1 %switch.lobit, i1 false + br i1 %or.cond, label %switch.lookup, label %107 -ssl_tls13_get_default_group_id.exit.i: ; preds = %108, %switch.lookup79, %switch.lookup, %89 - %.066.i = phi i16 [ %87, %89 ], [ %switch.load, %switch.lookup ], [ %switch.load84, %switch.lookup79 ], [ %.pre.i.i, %108 ] - switch i16 %.066.i, label %113 [ - i16 29, label %mbedtls_ssl_tls13_named_group_is_ecdhe.exit59.thread.i - i16 25, label %mbedtls_ssl_tls13_named_group_is_ecdhe.exit59.thread.i - i16 24, label %mbedtls_ssl_tls13_named_group_is_ecdhe.exit59.thread.i - i16 23, label %mbedtls_ssl_tls13_named_group_is_ecdhe.exit59.thread.i - i16 30, label %mbedtls_ssl_tls13_named_group_is_ecdhe.exit59.thread.i - ] +ssl_tls13_get_default_group_id.exit.i: ; preds = %switch.lookup79, %.lr.ph.i.i + %108 = add i16 %.pre.i.i, -261 + %109 = icmp ult i16 %108, -5 + br i1 %109, label %99, label %mbedtls_ssl_tls13_named_group_is_ecdhe.exit59.thread.i -113: ; preds = %ssl_tls13_get_default_group_id.exit.i - %114 = icmp samesign ult i16 %.066.i, 256 - br i1 %114, label %ssl_tls13_write_supported_versions_ext.exit, label %mbedtls_ssl_tls13_named_group_is_ecdhe.exit59.thread.i +113: ; preds = %105 + %110 = zext nneg i16 %switch.tableidx to i64 + %switch.gep = getelementptr inbounds nuw [8 x i16], ptr @switch.table.mbedtls_ssl_tls13_write_client_hello_exts.18, i64 0, i64 %110 + %switch.load = load i16, ptr %switch.gep, align 2 + br label %ssl_tls13_get_default_group_id.exit.i -mbedtls_ssl_tls13_named_group_is_ecdhe.exit59.thread.i: ; preds = %113, %ssl_tls13_get_default_group_id.exit.i, %ssl_tls13_get_default_group_id.exit.i, %ssl_tls13_get_default_group_id.exit.i, %ssl_tls13_get_default_group_id.exit.i, %ssl_tls13_get_default_group_id.exit.i +mbedtls_ssl_tls13_named_group_is_ecdhe.exit59.thread.i: ; preds = %107, %113, %88, %84, %84, %84, %84 + %.066.i = phi i16 [ %87, %88 ], [ %87, %84 ], [ %87, %84 ], [ %87, %84 ], [ %87, %84 ], [ %switch.load, %switch.lookup ], [ %.pre.i.i, %107 ] + %switch.tableidx77 = add i16 %.066.i, -23 + %111 = icmp ult i16 %switch.tableidx77, 8 + %switch.maskindex79 = trunc i16 %switch.tableidx77 to i8 + %switch.shifted80 = lshr i8 -57, %switch.maskindex79 + %switch.lobit81 = trunc i8 %switch.shifted80 to i1 + %or.cond84 = select i1 %111, i1 %switch.lobit81, i1 false + br i1 %or.cond84, label %switch.lookup78, label %112 + +112: ; preds = %ssl_tls13_get_default_group_id.exit.i + %113 = icmp samesign ult i16 %.066.i, 256 + br i1 %113, label %ssl_tls13_write_supported_versions_ext.exit, label %mbedtls_ssl_tls13_named_group_is_ecdhe.exit59.thread.i + +switch.lookup78: ; preds = %ssl_tls13_get_default_group_id.exit.i + %114 = zext nneg i16 %switch.tableidx77 to i64 + %switch.gep82 = getelementptr inbounds nuw [8 x i16], ptr @switch.table.mbedtls_ssl_tls13_write_client_hello_exts.18, i64 0, i64 %114 + %switch.load83 = load i16, ptr %switch.gep82, align 2 + br label %mbedtls_ssl_tls13_named_group_is_ecdhe.exit59.thread.i + +mbedtls_ssl_tls13_named_group_is_ecdhe.exit59.thread.i: ; preds = %switch.lookup78, %112, %84 + %.06686.i = phi i16 [ %.066.i, %112 ], [ %87, %84 ], [ %switch.load83, %switch.lookup78 ] call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #12 store i64 0, ptr %5, align 8, !tbaa !3 %115 = icmp ule ptr %.ptr58.i, %2 @@ -819,7 +820,7 @@ mbedtls_ssl_tls13_named_group_is_ecdhe.exit59.thread.i: ; preds = %113, %ssl_tls 119: ; preds = %mbedtls_ssl_tls13_named_group_is_ecdhe.exit59.thread.i %.ptr.i = getelementptr inbounds nuw i8, ptr %76, i64 10 - %120 = call i32 @mbedtls_ssl_tls13_generate_and_write_xxdh_key_exchange(ptr noundef nonnull %0, i16 noundef zeroext %.066.i, ptr noundef nonnull %.ptr.i, ptr noundef %2, ptr noundef nonnull %5) #12 + %120 = call i32 @mbedtls_ssl_tls13_generate_and_write_xxdh_key_exchange(ptr noundef nonnull %0, i16 noundef zeroext %.06686.i, ptr noundef nonnull %.ptr.i, ptr noundef %2, ptr noundef nonnull %5) #12 %.not56.i = icmp eq i32 %120, 0 br i1 %.not56.i, label %121, label %.thread.i @@ -831,7 +832,7 @@ mbedtls_ssl_tls13_named_group_is_ecdhe.exit59.thread.i: ; preds = %113, %ssl_tls 121: ; preds = %119 %122 = load i64, ptr %5, align 8, !tbaa !3 %.add.i = add nuw nsw i64 %122, 10 - %123 = call i16 @llvm.bswap.i16(i16 %.066.i) + %123 = call i16 @llvm.bswap.i16(i16 %.06686.i) store i16 %123, ptr %.ptr58.i, align 1 %124 = getelementptr inbounds nuw i8, ptr %76, i64 8 %125 = trunc i64 %122 to i16 @@ -849,7 +850,7 @@ mbedtls_ssl_tls13_named_group_is_ecdhe.exit59.thread.i: ; preds = %113, %ssl_tls store i16 %132, ptr %131, align 1 %133 = load ptr, ptr %8, align 8, !tbaa !17 %134 = getelementptr inbounds nuw i8, ptr %133, i64 2032 - store i16 %.066.i, ptr %134, align 8, !tbaa !62 + store i16 %.06686.i, ptr %134, align 8, !tbaa !62 call void @mbedtls_debug_print_buf(ptr noundef nonnull %0, i32 noundef 3, ptr noundef nonnull @.str, i32 noundef 357, ptr noundef nonnull @.str.21, ptr noundef nonnull %76, i64 noundef %.add.i) #12 %135 = call i32 @mbedtls_ssl_get_extension_mask(i32 noundef 51) #12 %136 = load ptr, ptr %8, align 8, !tbaa !17 @@ -946,8 +947,8 @@ mbedtls_ssl_tls13_named_group_is_ecdhe.exit59.thread.i: ; preds = %113, %ssl_tls store i64 %177, ptr %3, align 8, !tbaa !3 br label %ssl_tls13_write_supported_versions_ext.exit -ssl_tls13_write_supported_versions_ext.exit: ; preds = %100, %mbedtls_ssl_get_groups.exit.i.i, %.preheader.i.i, %.thread.i, %113, %79, %144, %44, %7, %4, %174 - %.033 = phi i32 [ 0, %174 ], [ %6, %4 ], [ -27136, %7 ], [ -27136, %44 ], [ -27136, %144 ], [ -24192, %mbedtls_ssl_get_groups.exit.i.i ], [ -28800, %.preheader.i.i ], [ %.1.ph.i, %.thread.i ], [ -27648, %113 ], [ -27136, %79 ], [ -28800, %100 ] +ssl_tls13_write_supported_versions_ext.exit: ; preds = %100, %mbedtls_ssl_get_groups.exit.i.i, %.preheader.i.i, %.thread.i, %112, %79, %144, %44, %7, %4, %174 + %.033 = phi i32 [ 0, %174 ], [ %6, %4 ], [ -27136, %7 ], [ -27136, %44 ], [ -27136, %144 ], [ -24192, %mbedtls_ssl_get_groups.exit.i.i ], [ -28800, %.preheader.i.i ], [ %.1.ph.i, %.thread.i ], [ -27648, %112 ], [ -27136, %79 ], [ -28800, %100 ] ret i32 %.033 } diff --git a/bench/linux/optimized/vsprintf.ll b/bench/linux/optimized/vsprintf.ll index f976a8a5217..8458e227c65 100644 --- a/bench/linux/optimized/vsprintf.ll +++ b/bench/linux/optimized/vsprintf.ll @@ -12330,12 +12330,13 @@ put_dec_trunc8.exit: ; preds = %.split, %62 br i1 %85, label %.loopexit, label %.preheader.preheader .preheader.preheader: ; preds = %put_dec_trunc8.exit, %82, %.thread - %.ph = phi ptr [ %84, %.thread ], [ %83, %82 ], [ %57, %put_dec_trunc8.exit ] + %.ph = phi i32 [ %80, %.thread ], [ 2, %82 ], [ %80, %put_dec_trunc8.exit ] + %.ph21 = phi ptr [ %84, %.thread ], [ %83, %82 ], [ %57, %put_dec_trunc8.exit ] br label %.preheader .preheader: ; preds = %.preheader.preheader, %.preheader - %86 = phi i32 [ %88, %.preheader ], [ %80, %.preheader.preheader ] - %87 = phi ptr [ %92, %.preheader ], [ %.ph, %.preheader.preheader ] + %86 = phi i32 [ %88, %.preheader ], [ %.ph, %.preheader.preheader ] + %87 = phi ptr [ %92, %.preheader ], [ %.ph21, %.preheader.preheader ] %88 = add i32 %86, -1 %89 = sext i32 %88 to i64 %90 = getelementptr [4 x i8], ptr %3, i64 0, i64 %89 diff --git a/bench/llama.cpp/optimized/llama-kv-cache.ll b/bench/llama.cpp/optimized/llama-kv-cache.ll index 4a480f6e854..207bfdabaf5 100644 --- a/bench/llama.cpp/optimized/llama-kv-cache.ll +++ b/bench/llama.cpp/optimized/llama-kv-cache.ll @@ -2029,8 +2029,7 @@ define noundef i32 @_Z23llama_kv_cache_cell_maxRK14llama_kv_cache(ptr noundef no 7: ; preds = %.lr.ph, %16 %indvars.iv = phi i64 [ %6, %.lr.ph ], [ %indvars.iv.next, %16 ] - %indvars.iv.next = add nsw i64 %indvars.iv, -1 - %8 = and i64 %indvars.iv.next, 4294967295 + %8 = add nsw i64 %indvars.iv, -1 %9 = getelementptr inbounds nuw %struct.llama_kv_cell, ptr %5, i64 %8 %10 = load i32, ptr %9, align 8, !tbaa !131 %11 = icmp sgt i32 %10, -1 @@ -2043,12 +2042,11 @@ define noundef i32 @_Z23llama_kv_cache_cell_maxRK14llama_kv_cache(ptr noundef no br i1 %15, label %16, label %._crit_edge.loopexit.split.loop.exit 16: ; preds = %7, %12 - %17 = and i64 %indvars.iv.next, 4294967295 - %.not = icmp eq i64 %17, 0 - br i1 %.not, label %._crit_edge, label %7, !llvm.loop !153 + %.not.wide = icmp eq i64 %indvars.iv.next, 0 + br i1 %.not.wide, label %._crit_edge, label %7, !llvm.loop !153 ._crit_edge.loopexit.split.loop.exit: ; preds = %12 - %18 = trunc nuw i64 %indvars.iv to i32 + %17 = trunc nuw i64 %indvars.iv to i32 br label %._crit_edge ._crit_edge: ; preds = %16, %._crit_edge.loopexit.split.loop.exit, %1 diff --git a/bench/luajit/optimized/buildvm_fold.ll b/bench/luajit/optimized/buildvm_fold.ll index d3f18e5ad4a..326530738e5 100644 --- a/bench/luajit/optimized/buildvm_fold.ll +++ b/bench/luajit/optimized/buildvm_fold.ll @@ -97,7 +97,7 @@ define dso_local void @emit_fold(ptr noundef readonly captures(none) %0) local_u store i32 0, ptr @funcidx, align 4, !tbaa !20 store i32 0, ptr @nkeys, align 4, !tbaa !20 %35 = call ptr @fgets(ptr noundef nonnull %4, i32 noundef 256, ptr noundef %.0) - %.not3966 = icmp eq ptr %35, null + %.not3965 = icmp eq ptr %35, null br i1 %.not3966, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %29 @@ -191,8 +191,7 @@ nexttoken.exit.i: ; preds = %.lr.ph164.i.i 76: ; preds = %88, %.lr.ph.i %indvars.iv.i = phi i64 [ %72, %.lr.ph.i ], [ %indvars.iv.next.i, %88 ] - %indvars.iv.next.i = add nsw i64 %indvars.iv.i, -1 - %77 = and i64 %indvars.iv.next.i, 4294967295 + %77 = add nsw i64 %indvars.iv.i, -1 %78 = getelementptr inbounds nuw [4096 x i32], ptr @foldkeys, i64 0, i64 %77 %79 = load i32, ptr %78, align 4, !tbaa !20 %80 = and i32 %79, 16777215 @@ -213,7 +212,7 @@ nexttoken.exit.i: ; preds = %.lr.ph164.i.i 88: ; preds = %82 %89 = getelementptr inbounds nuw [4096 x i32], ptr @foldkeys, i64 0, i64 %indvars.iv.i store i32 %79, ptr %89, align 4, !tbaa !20 - %.not.i = icmp eq i64 %77, 0 + %.not.wide.i = icmp eq i64 %77, 0 br i1 %.not.i, label %._crit_edge.loopexit.i, label %76, !llvm.loop !24 ._crit_edge.loopexit.i: ; preds = %88, %76 @@ -519,7 +518,7 @@ printhash.exit43.i: ; preds = %218 br i1 %exitcond83.not.i, label %228, label %.preheader.i43, !llvm.loop !29 228: ; preds = %.loopexit.i - %indvars.iv.next.i44 = add nuw nsw i64 %indvars.iv.i42, 2 + %indvars.iv.next.i = add nuw nsw i64 %indvars.iv.i42, 2 %229 = icmp samesign ult i64 %indvars.iv.i42, 8190 br i1 %229, label %.preheader49.i, label %._crit_edge.i, !llvm.loop !30 diff --git a/bench/luau/optimized/isocline.ll b/bench/luau/optimized/isocline.ll index f6b410d6714..5a04a19c346 100644 --- a/bench/luau/optimized/isocline.ll +++ b/bench/luau/optimized/isocline.ll @@ -1888,7 +1888,7 @@ str_prev_ofs.exit: ; preds = %.preheader.i, %58 br i1 %exitcond.not.i159, label %mem_strndup.exit.thread168, label %.lr.ph.i, !llvm.loop !83 mem_strndup.exit.thread168: ; preds = %.lr.ph.i, %89, %.preheader.i158 - %.022.i.lcssa.sink = phi i64 [ %79, %.preheader.i158 ], [ %79, %89 ], [ %.022.i, %.lr.ph.i ] + %.022.i.lcssa.sink = phi i64 [ 0, %.preheader.i158 ], [ %79, %89 ], [ %.022.i, %.lr.ph.i ] %92 = getelementptr inbounds nuw i8, ptr %85, i64 %.022.i.lcssa.sink store i8 0, ptr %92, align 1, !tbaa !4 %93 = icmp sgt i64 %78, 0 @@ -3152,10 +3152,11 @@ ic_strlen.exit: ; preds = %3 br i1 %13, label %.thread, label %.preheader .preheader: ; preds = %10, %9 + %.029.ph = phi i64 [ 0, %9 ], [ %1, %10 ] br label %14 14: ; preds = %.preheader, %19 - %.029 = phi i64 [ %22, %19 ], [ %1, %.preheader ] + %.029 = phi i64 [ %22, %19 ], [ %.029.ph, %.preheader ] %15 = icmp slt i64 %.029, %8 br i1 %15, label %16, label %.thread41 @@ -3205,10 +3206,11 @@ ic_strlen.exit.i: ; preds = %4 br i1 %14, label %ic_is_token.exit.thread, label %.preheader .preheader: ; preds = %11, %10 + %.029.i.ph = phi i64 [ 0, %10 ], [ %1, %11 ] br label %15 15: ; preds = %.preheader, %20 - %.029.i = phi i64 [ %23, %20 ], [ %1, %.preheader ] + %.029.i = phi i64 [ %23, %20 ], [ %.029.i.ph, %.preheader ] %16 = icmp slt i64 %.029.i, %9 br i1 %16, label %17, label %ic_is_token.exit @@ -3275,10 +3277,11 @@ ic_strlen.exit.i: ; preds = %4 br i1 %14, label %ic_is_token.exit.thread, label %.preheader37 .preheader37: ; preds = %11, %10 + %.029.i.ph = phi i64 [ 0, %10 ], [ %1, %11 ] br label %15 15: ; preds = %.preheader37, %20 - %.029.i = phi i64 [ %23, %20 ], [ %1, %.preheader37 ] + %.029.i = phi i64 [ %23, %20 ], [ %.029.i.ph, %.preheader37 ] %16 = icmp slt i64 %.029.i, %9 br i1 %16, label %17, label %ic_is_token.exit @@ -11177,10 +11180,11 @@ sub_189: ; preds = %.tail br i1 %.not22.i, label %ic_istarts_with.exit, label %.lr.ph.i.preheader .lr.ph.i.preheader: ; preds = %.tail87.thread.thread, %.thread, %47 + %.ph = phi i8 [ %35, %47 ], [ 46, %.thread ], [ 46, %.tail87.thread.thread ] br label %.lr.ph.i .lr.ph.i: ; preds = %.lr.ph.i.preheader, %58 - %48 = phi i8 [ %61, %58 ], [ %35, %.lr.ph.i.preheader ] + %48 = phi i8 [ %61, %58 ], [ %.ph, %.lr.ph.i.preheader ] %.023.i = phi i64 [ %59, %58 ], [ 0, %.lr.ph.i.preheader ] %49 = getelementptr inbounds nuw i8, ptr %4, i64 %.023.i %50 = load i8, ptr %49, align 1, !tbaa !4 diff --git a/bench/lvgl/optimized/lv_svg_render.ll b/bench/lvgl/optimized/lv_svg_render.ll index aabda935795..b8937ed154d 100644 --- a/bench/lvgl/optimized/lv_svg_render.ll +++ b/bench/lvgl/optimized/lv_svg_render.ll @@ -5628,98 +5628,97 @@ define internal void @_init_gradient(ptr noundef %0, ptr noundef readonly captur store i32 0, ptr %12, align 4, !tbaa !273 %13 = getelementptr inbounds nuw i8, ptr %1, i64 16 %14 = load i32, ptr %13, align 8, !tbaa !163 - %15 = getelementptr inbounds nuw i8, ptr %0, i64 588 - %.not70 = icmp eq i32 %14, 0 - br i1 %.not70, label %._crit_edge66, label %.lr.ph65 + %.not69 = icmp eq i32 %14, 0 + br i1 %.not69, label %.loopexit, label %.lr.ph66 .lr.ph65: ; preds = %2 - %16 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %15 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %16 = getelementptr inbounds nuw i8, ptr %0, i64 588 %wide.trip.count = zext i32 %14 to i64 - br label %17 + br label %18 -17: ; preds = %.lr.ph65, %.thread - %indvars.iv = phi i64 [ 0, %.lr.ph65 ], [ %indvars.iv.next, %.thread ] - %.063 = phi i32 [ 0, %.lr.ph65 ], [ %.253, %.thread ] - %18 = load ptr, ptr %16, align 8, !tbaa !164 - %19 = getelementptr inbounds nuw ptr, ptr %18, i64 %indvars.iv - %20 = load ptr, ptr %19, align 8, !tbaa !165 - %21 = getelementptr inbounds nuw i8, ptr %20, i64 48 - %22 = tail call i32 @lv_array_size(ptr noundef nonnull %21) #10 - %23 = tail call i24 @lv_color_black() #10 - %.not71 = icmp eq i32 %22, 0 - br i1 %.not71, label %.thread, label %.lr.ph - -._crit_edge: ; preds = %40 - br i1 %.149, label %42, label %.thread - -.lr.ph: ; preds = %17, %40 - %.04358 = phi i32 [ %41, %40 ], [ 0, %17 ] - %.04457 = phi i8 [ %.145, %40 ], [ 0, %17 ] - %.04656 = phi i8 [ %.147, %40 ], [ -1, %17 ] - %.sroa.08.055 = phi i24 [ %.sroa.08.1, %40 ], [ %23, %17 ] - %.04854 = phi i1 [ %.149, %40 ], [ false, %17 ] - %24 = tail call ptr @lv_array_at(ptr noundef nonnull %21, i32 noundef %.04358) #10 - %25 = load i8, ptr %24, align 8, !tbaa !182 - switch i8 %25, label %40 [ - i8 44, label %26 - i8 45, label %30 - i8 43, label %35 +17: ; preds = %.thread + %17 = trunc i32 %.253 to i16 + br label %._crit_edge66 + +18: ; preds = %.lr.ph66, %.thread + %indvars.iv = phi i64 [ 0, %.lr.ph66 ], [ %indvars.iv.next, %.thread ] + %.064 = phi i32 [ 0, %.lr.ph66 ], [ %.253, %.thread ] + %19 = load ptr, ptr %15, align 8, !tbaa !164 + %20 = getelementptr inbounds nuw ptr, ptr %19, i64 %indvars.iv + %21 = load ptr, ptr %20, align 8, !tbaa !165 + %22 = getelementptr inbounds nuw i8, ptr %21, i64 48 + %23 = tail call i32 @lv_array_size(ptr noundef nonnull %22) #10 + %24 = tail call i24 @lv_color_black() #10 + %.not70 = icmp eq i32 %23, 0 + br i1 %.not70, label %.thread, label %.lr.ph + +._crit_edge: ; preds = %41 + br i1 %.149, label %43, label %.thread + +.lr.ph:; preds = %18, %41 + %.04359 = phi i32 [ %42, %40 ], [ 0, %18 ] + %.04458 = phi i8 [ %.145, %41 ], [ 0, %18 ] + %.04657 = phi i8 [ %.147, %41 ], [ -1, %18 ] + %.sroa.08.056 = phi i24 [ %.sroa.08.1, %40 ], [ %24, %18 ] + %.04855 = phi i1 [ %.149, %41 ], [ false, %18 ] + %25 = tail call ptr @lv_array_at(ptr noundef nonnull %22, i32 noundef %.04359) #10 + %26 = load i8, ptr %25, align 8, !tbaa !182 + switch i8 %26, label %41 [ + i8 44, label %27 + i8 45, label %31 + i8 43, label %36 ] 26: ; preds = %.lr.ph - %27 = getelementptr inbounds nuw i8, ptr %24, i64 8 - %28 = load i32, ptr %27, align 8, !tbaa !184 - %29 = tail call i24 @lv_color_hex(i32 noundef %28) #10 + %28 = getelementptr inbounds nuw i8, ptr %25, i64 8 + %29 = load i32, ptr %27, align 8, !tbaa !184 + %30 = tail call i24 @lv_color_hex(i32 noundef %28) #10 br label %40 30: ; preds = %.lr.ph - %31 = getelementptr inbounds nuw i8, ptr %24, i64 8 - %32 = load float, ptr %31, align 8, !tbaa !184 - %33 = fmul float %32, 2.550000e+02 - %34 = fptoui float %33 to i8 + %32 = getelementptr inbounds nuw i8, ptr %25, i64 8 + %33 = load float, ptr %31, align 8, !tbaa !184 + %34 = fmul float %32, 2.550000e+02 + %35 = fptoui float %34 to i8 br label %40 35: ; preds = %.lr.ph - %36 = getelementptr inbounds nuw i8, ptr %24, i64 8 - %37 = load float, ptr %36, align 8, !tbaa !184 - %38 = fmul float %37, 2.550000e+02 - %39 = fptoui float %38 to i8 + %37 = getelementptr inbounds nuw i8, ptr %25, i64 8 + %38 = load float, ptr %36, align 8, !tbaa !184 + %39 = fmul float %37, 2.550000e+02 + %40 = fptoui float %39 to i8 br label %40 40: ; preds = %35, %30, %26, %.lr.ph - %.149 = phi i1 [ %.04854, %.lr.ph ], [ true, %35 ], [ true, %30 ], [ true, %26 ] - %.sroa.08.1 = phi i24 [ %.sroa.08.055, %.lr.ph ], [ %.sroa.08.055, %35 ], [ %.sroa.08.055, %30 ], [ %29, %26 ] - %.147 = phi i8 [ %.04656, %.lr.ph ], [ %.04656, %35 ], [ %34, %30 ], [ %.04656, %26 ] - %.145 = phi i8 [ %.04457, %.lr.ph ], [ %39, %35 ], [ %.04457, %30 ], [ %.04457, %26 ] - %41 = add nuw i32 %.04358, 1 - %exitcond.not = icmp eq i32 %41, %22 + %.149 = phi i1 [ %.04855, %.lr.ph ], [ true, %35 ], [ true, %30 ], [ true, %26 ] + %.sroa.08.1 = phi i24 [ %.sroa.08.056, %.lr.ph ], [ %.sroa.08.056, %35 ], [ %.sroa.08.056, %30 ], [ %29, %26 ] + %.147 = phi i8 [ %.04657, %.lr.ph ], [ %.04657, %35 ], [ %34, %30 ], [ %.04657, %26 ] + %.145 = phi i8 [ %.04458, %.lr.ph ], [ %39, %35 ], [ %.04458, %30 ], [ %.04458, %26 ] + %42 = add nuw i32 %.04359, 1 + %exitcond.not = icmp eq i32 %41, %23 br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !274 42: ; preds = %._crit_edge - %43 = zext i32 %.063 to i64 - %44 = getelementptr inbounds nuw [2 x %struct.lv_grad_stop_t], ptr %15, i64 0, i64 %43 - %45 = getelementptr inbounds nuw i8, ptr %44, i64 3 + %44 = zext i32 %.064 to i64 + %45 = getelementptr inbounds nuw [2 x %struct.lv_grad_stop_t], ptr %16, i64 0, i64 %43 + %46 = getelementptr inbounds nuw i8, ptr %44, i64 3 store i8 %.147, ptr %45, align 1, !tbaa !275 - %46 = getelementptr inbounds nuw i8, ptr %44, i64 4 + %47 = getelementptr inbounds nuw i8, ptr %44, i64 4 store i8 %.145, ptr %46, align 1, !tbaa !277 store i24 %.sroa.08.1, ptr %44, align 1 - %47 = add i32 %.063, 1 + %48 = add i32 %.064, 1 %.not = icmp eq i32 %47, 2 - br i1 %.not, label %._crit_edge66.loopexit, label %.thread + br i1 %.not, label %._crit_edge66, label %.thread -.thread: ; preds = %17, %._crit_edge, %42 - %.253 = phi i32 [ %47, %42 ], [ %.063, %._crit_edge ], [ %.063, %17 ] +.thread: ; preds = %18, %._crit_edge, %42 + %.253 = phi i32 [ %47, %42 ], [ %.064, %._crit_edge ], [ %.064, %18 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 - %exitcond73.not = icmp eq i64 %indvars.iv.next, %wide.trip.count - br i1 %exitcond73.not, label %._crit_edge66.loopexit, label %17, !llvm.loop !278 - -._crit_edge66.loopexit: ; preds = %.thread, %42 - %.1.ph = phi i32 [ 2, %42 ], [ %.253, %.thread ] - %48 = trunc i32 %.1.ph to i16 - br label %._crit_edge66 + %exitcond72.not = icmp eq i64 %indvars.iv.next, %wide.trip.count + br i1 %exitcond73.not, label %._crit_edge67.loopexit, label %18, !llvm.loop !278 -._crit_edge66: ; preds = %._crit_edge66.loopexit, %2 - %.1 = phi i16 [ 0, %2 ], [ %48, %._crit_edge66.loopexit ] +._crit_edge66: ; preds = %43, %2, %._crit_edge67.loopexit + %.1 = phi i16 [ 0, %2 ], [ %17, %._crit_edge67.loopexit ], [ 2, %43 ] %49 = getelementptr inbounds nuw i8, ptr %0, i64 598 store i16 %.1, ptr %49, align 2, !tbaa !279 ret void diff --git a/bench/ninja/optimized/graph.ll b/bench/ninja/optimized/graph.ll index ea50a6e8fa1..d278f62cb4f 100644 --- a/bench/ninja/optimized/graph.ll +++ b/bench/ninja/optimized/graph.ll @@ -752,7 +752,7 @@ _ZNSt6vectorIP4NodeSaIS1_EE9push_backERKS1_.exit: ; preds = %41, %_ZNSt6vectorIP br label %121 121: ; preds = %113, %120, %.critedge - %.0111 = phi i8 [ 0, %.critedge ], [ 0, %113 ], [ 1, %120 ] + %.0111 = phi i1 [ false, %.critedge ], [ false, %113 ], [ true, %120 ] %122 = getelementptr inbounds nuw i8, ptr %3, i64 8 %123 = load ptr, ptr %122, align 8, !tbaa !34 %124 = getelementptr inbounds nuw i8, ptr %8, i64 64 @@ -779,7 +779,7 @@ _ZNSt6vectorIP4NodeSaIS1_EE9push_backERKS1_.exit: ; preds = %41, %_ZNSt6vectorIP 139: ; preds = %.lr.ph135, %178 %.061133 = phi ptr [ null, %.lr.ph135 ], [ %.162, %178 ] - %.1112132 = phi i8 [ %.0111, %.lr.ph135 ], [ %.2, %178 ] + %.1112132 = phi i1 [ %.0111, %.lr.ph135 ], [ %.2, %178 ] %.sroa.086.0131 = phi ptr [ %134, %.lr.ph135 ], [ %180, %178 ] %140 = load ptr, ptr %.sroa.086.0131, align 8, !tbaa !35 %141 = tail call noundef zeroext i1 @_ZN14DependencyScan18RecomputeNodeDirtyEP4NodePSt6vectorIS1_SaIS1_EES5_PNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(96) %0, ptr noundef %140, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %4) @@ -847,59 +847,58 @@ _ZNSt6vectorIP4NodeSaIS1_EE9push_backERKS1_.exit: ; preds = %41, %_ZNSt6vectorIP 178: ; preds = %151, %171, %177, %168 %179 = phi ptr [ %157, %151 ], [ %.pre142, %168 ], [ %157, %177 ], [ %157, %171 ] - %.2 = phi i8 [ %.1112132, %151 ], [ 1, %168 ], [ %.1112132, %177 ], [ %.1112132, %171 ] + %.2 = phi i1 [ %.1112132, %151 ], [ true, %168 ], [ %.1112132, %177 ], [ %.1112132, %171 ] %.162 = phi ptr [ %.061133, %151 ], [ %.061133, %168 ], [ %143, %177 ], [ %.061133, %171 ] %180 = getelementptr inbounds nuw i8, ptr %.sroa.086.0131, i64 8 %.not117 = icmp eq ptr %180, %179 br i1 %.not117, label %.critedge73, label %139, !llvm.loop !99 .critedge73: ; preds = %178, %121 - %.1112.lcssa = phi i8 [ %.0111, %121 ], [ %.2, %178 ] + %.1112.lcssa = phi i1 [ %.0111, %121 ], [ %.2, %178 ] %.061.lcssa = phi ptr [ null, %121 ], [ %.162, %178 ] - %181 = trunc nuw i8 %.1112.lcssa to i1 - br i1 %181, label %.thread, label %182 + br i1 %.1112.lcssa, label %.thread, label %181 182: ; preds = %.critedge73 call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #27 call void @_ZNK4Edge15EvaluateCommandB5cxx11Eb(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %6, ptr noundef nonnull align 8 dereferenceable(168) %8, i1 noundef zeroext true) - %183 = load ptr, ptr %89, align 8, !tbaa !34 - %184 = load ptr, ptr %91, align 8, !tbaa !34 + %182 = load ptr, ptr %89, align 8, !tbaa !34 + %183 = load ptr, ptr %91, align 8, !tbaa !34 %.not17.i = icmp eq ptr %183, %184 br i1 %.not17.i, label %.critedge.i, label %.lr.ph.i 185: ; preds = %190 - %186 = getelementptr inbounds nuw i8, ptr %.sroa.014.018.i, i64 8 - %187 = load ptr, ptr %91, align 8, !tbaa !34 + %185 = getelementptr inbounds nuw i8, ptr %.sroa.014.018.i, i64 8 + %186 = load ptr, ptr %91, align 8, !tbaa !34 %.not.i80 = icmp eq ptr %186, %187 br i1 %.not.i80, label %.critedge.i.loopexit, label %.lr.ph.i, !llvm.loop !100 .lr.ph.i: ; preds = %182, %185 %.sroa.014.018.i = phi ptr [ %186, %185 ], [ %183, %182 ] - %188 = load ptr, ptr %.sroa.014.018.i, align 8, !tbaa !35 - %189 = invoke noundef zeroext i1 @_ZN14DependencyScan20RecomputeOutputDirtyEPK4EdgePK4NodeRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPS3_(ptr noundef nonnull align 8 dereferenceable(96) %0, ptr noundef nonnull %8, ptr noundef %.061.lcssa, ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef %188) + %187 = load ptr, ptr %.sroa.014.018.i, align 8, !tbaa !35 + %188 = invoke noundef zeroext i1 @_ZN14DependencyScan20RecomputeOutputDirtyEPK4EdgePK4NodeRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPS3_(ptr noundef nonnull align 8 dereferenceable(96) %0, ptr noundef nonnull %8, ptr noundef %.061.lcssa, ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef %188) to label %190 unwind label %191 190: ; preds = %.lr.ph.i br i1 %189, label %.critedge.i.loopexit, label %185 191: ; preds = %.lr.ph.i - %192 = landingpad { ptr, i32 } + %191 = landingpad { ptr, i32 } cleanup - %193 = load ptr, ptr %6, align 8, !tbaa !78 - %194 = getelementptr inbounds nuw i8, ptr %6, i64 16 - %195 = icmp eq ptr %193, %194 + %192 = load ptr, ptr %6, align 8, !tbaa !78 + %193 = getelementptr inbounds nuw i8, ptr %6, i64 16 + %194 = icmp eq ptr %193, %194 br i1 %195, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i.i: ; preds = %191 - %196 = getelementptr inbounds nuw i8, ptr %6, i64 8 - %197 = load i64, ptr %196, align 8, !tbaa !97 - %198 = icmp ult i64 %197, 16 + %195 = getelementptr inbounds nuw i8, ptr %6, i64 8 + %196 = load i64, ptr %196, align 8, !tbaa !97 + %197 = icmp ult i64 %197, 16 call void @llvm.assume(i1 %198) br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i.i: ; preds = %191 - %199 = load i64, ptr %194, align 8, !tbaa !101 - %200 = add i64 %199, 1 + %198 = load i64, ptr %194, align 8, !tbaa !101 + %199 = add i64 %199, 1 call void @_ZdlPvm(ptr noundef %193, i64 noundef %200) #28 br label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i @@ -907,41 +906,36 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit.i: ; preds = %_ZN call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #27 resume { ptr, i32 } %192 -.critedge.i.loopexit: ; preds = %185, %190 - %.4113.ph = phi i8 [ %.1112.lcssa, %185 ], [ 1, %190 ] - %201 = trunc nuw i8 %.4113.ph to i1 - br label %.critedge.i - -.critedge.i: ; preds = %.critedge.i.loopexit, %182 - %.4113 = phi i1 [ false, %182 ], [ %201, %.critedge.i.loopexit ] - %202 = load ptr, ptr %6, align 8, !tbaa !78 - %203 = getelementptr inbounds nuw i8, ptr %6, i64 16 - %204 = icmp eq ptr %202, %203 - br i1 %204, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i12.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i11.i +.critedge.i.loopexit: ; preds = %189, %185, %181 + %.4113 = phi i1 [ false, %181 ], [ %188, %185 ], [ %188, %190 ] + %200 = load ptr, ptr %6, align 8, !tbaa !78 + %201 = getelementptr inbounds nuw i8, ptr %6, i64 16 + %202 = icmp eq ptr %200, %201 + br i1 %202, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i12.i, label %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i11.i _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i12.i: ; preds = %.critedge.i - %205 = getelementptr inbounds nuw i8, ptr %6, i64 8 - %206 = load i64, ptr %205, align 8, !tbaa !97 - %207 = icmp ult i64 %206, 16 + %203 = getelementptr inbounds nuw i8, ptr %6, i64 8 + %204 = load i64, ptr %205, align 8, !tbaa !97 + %205 = icmp ult i64 %206, 16 call void @llvm.assume(i1 %207) br label %210 _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i11.i: ; preds = %.critedge.i - %208 = load i64, ptr %203, align 8, !tbaa !101 - %209 = add i64 %208, 1 - call void @_ZdlPvm(ptr noundef %202, i64 noundef %209) #28 + %206 = load i64, ptr %201, align 8, !tbaa !101 + %207 = add i64 %208, 1 + call void @_ZdlPvm(ptr noundef %200, i64 noundef %209) #28 br label %210 210: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i11.i, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i12.i call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #27 - %211 = load ptr, ptr %89, align 8, !tbaa !34 - %212 = load ptr, ptr %91, align 8, !tbaa !34 + %209 = load ptr, ptr %89, align 8, !tbaa !34 + %210 = load ptr, ptr %91, align 8, !tbaa !34 %.not118137 = icmp eq ptr %211, %212 br i1 %.not118137, label %._crit_edge, label %.lr.ph139 .thread: ; preds = %.critedge73 - %213 = load ptr, ptr %89, align 8, !tbaa !34 - %214 = load ptr, ptr %91, align 8, !tbaa !34 + %211 = load ptr, ptr %89, align 8, !tbaa !34 + %212 = load ptr, ptr %91, align 8, !tbaa !34 %.not118137145 = icmp eq ptr %213, %214 br i1 %.not118137145, label %._crit_edge.thread, label %.lr.ph139.split.us.preheader @@ -949,16 +943,16 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i11 br i1 %.4113, label %.lr.ph139.split.us.preheader, label %._crit_edge.thread151 .lr.ph139.split.us.preheader: ; preds = %.thread, %.lr.ph139 - %215 = phi ptr [ %211, %.lr.ph139 ], [ %213, %.thread ] - %216 = phi ptr [ %212, %.lr.ph139 ], [ %214, %.thread ] + %213 = phi ptr [ %211, %.lr.ph139 ], [ %213, %.thread ] + %214 = phi ptr [ %212, %.lr.ph139 ], [ %214, %.thread ] br label %.lr.ph139.split.us .lr.ph139.split.us: ; preds = %.lr.ph139.split.us.preheader, %.lr.ph139.split.us %.sroa.081.0138.us = phi ptr [ %219, %.lr.ph139.split.us ], [ %215, %.lr.ph139.split.us.preheader ] - %217 = load ptr, ptr %.sroa.081.0138.us, align 8, !tbaa !35 - %218 = getelementptr inbounds nuw i8, ptr %217, i64 52 + %215 = load ptr, ptr %.sroa.081.0138.us, align 8, !tbaa !35 + %216 = getelementptr inbounds nuw i8, ptr %217, i64 52 store i8 1, ptr %218, align 4, !tbaa !79 - %219 = getelementptr inbounds nuw i8, ptr %.sroa.081.0138.us, i64 8 + %217 = getelementptr inbounds nuw i8, ptr %.sroa.081.0138.us, i64 8 %.not118.us = icmp eq ptr %219, %216 br i1 %.not118.us, label %._crit_edge.thread, label %.lr.ph139.split.us, !llvm.loop !102 @@ -966,14 +960,14 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i11 br i1 %.4113, label %._crit_edge.thread, label %._crit_edge.thread151 ._crit_edge.thread: ; preds = %.lr.ph139.split.us, %.thread, %._crit_edge - %220 = load ptr, ptr %8, align 8, !tbaa !103 - %221 = call noundef zeroext i1 @_ZNK4Rule7IsPhonyEv(ptr noundef nonnull align 8 dereferenceable(81) %220) + %218 = load ptr, ptr %8, align 8, !tbaa !103 + %219 = call noundef zeroext i1 @_ZNK4Rule7IsPhonyEv(ptr noundef nonnull align 8 dereferenceable(81) %220) br i1 %221, label %222, label %226 222: ; preds = %._crit_edge.thread - %223 = load ptr, ptr %133, align 8, !tbaa !34 - %224 = load ptr, ptr %135, align 8, !tbaa !34 - %225 = icmp eq ptr %223, %224 + %221 = load ptr, ptr %133, align 8, !tbaa !34 + %222 = load ptr, ptr %135, align 8, !tbaa !34 + %223 = icmp eq ptr %223, %224 br i1 %225, label %._crit_edge.thread151, label %226 226: ; preds = %222, %._crit_edge.thread @@ -982,8 +976,8 @@ _ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i11 ._crit_edge.thread151: ; preds = %.lr.ph139, %226, %222, %._crit_edge store i32 2, ptr %31, align 8, !tbaa !80 - %227 = load ptr, ptr %37, align 8, !tbaa !51 - %228 = getelementptr inbounds i8, ptr %227, i64 -8 + %225 = load ptr, ptr %37, align 8, !tbaa !51 + %226 = getelementptr inbounds i8, ptr %227, i64 -8 store ptr %228, ptr %37, align 8, !tbaa !51 br label %_ZN4Node15StatIfNecessaryEP13DiskInterfacePNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE.exit diff --git a/bench/nuttx/optimized/fs_sendfile.ll b/bench/nuttx/optimized/fs_sendfile.ll index 46a8d6715db..faa5e248c29 100644 --- a/bench/nuttx/optimized/fs_sendfile.ll +++ b/bench/nuttx/optimized/fs_sendfile.ll @@ -56,6 +56,7 @@ define i64 @file_sendfile(ptr noundef %0, ptr noundef %1, ptr noundef captures(a .critedge.i.preheader: ; preds = %28, %24 %.062.i.ph = phi i64 [ %22, %24 ], [ %26, %28 ] + %.3.i.ph = phi i64 [ 0, %24 ], [ %.05886.fr.i, %28 ] br label %.critedge.i .preheader.split.i: ; preds = %.preheader.i, %30 @@ -68,12 +69,12 @@ define i64 @file_sendfile(ptr noundef %0, ptr noundef %1, ptr noundef captures(a br i1 %29, label %30, label %.critedge.i.preheader 30: ; preds = %28 - %.not88.i = icmp eq i64 %26, -4 + %.not87.i = icmp eq i64 %26, -4 br i1 %.not88.i, label %.preheader.split.i, label %.critedge.thread.thread.i, !llvm.loop !6 .critedge.i: ; preds = %.critedge.i.preheader, %40 %.062.i = phi i64 [ %.163.i, %40 ], [ %.062.i.ph, %.critedge.i.preheader ] - %.3.i = phi i64 [ %.4.i, %40 ], [ %.05886.fr.i, %.critedge.i.preheader ] + %.3.i = phi i64 [ %.4.i, %40 ], [ %.3.i.ph, %.critedge.i.preheader ] %.055.i = phi ptr [ %.1.i, %40 ], [ %19, %.critedge.i.preheader ] %31 = tail call i64 @file_write(ptr noundef %0, ptr noundef %.055.i, i64 noundef %.062.i) #5 %32 = icmp sgt i64 %31, -1 @@ -99,11 +100,11 @@ define i64 @file_sendfile(ptr noundef %0, ptr noundef %1, ptr noundef captures(a br i1 %41, label %.critedge.i, label %.critedge.thread.i, !llvm.loop !8 .critedge.thread.i: ; preds = %40 - %.not101.i = icmp ult i64 %.4.i, %3 + %.not100.i = icmp ult i64 %.4.i, %3 br i1 %.not101.i, label %.preheader.i, label %.critedge.thread.thread.i, !llvm.loop !9 .critedge.thread.thread.i: ; preds = %.critedge.thread.i, %24, %.preheader.split.us.i, %30, %.preheader.split.i, %37 - %.26095.i = phi i64 [ %31, %37 ], [ %.05886.fr.i, %.preheader.split.i ], [ %26, %30 ], [ %.4.i, %.critedge.thread.i ], [ %22, %24 ], [ 0, %.preheader.split.us.i ] + %.26094.i = phi i64 [ %31, %37 ], [ %26, %30 ], [ %.05886.fr.i, %.preheader.split.i ], [ %.4.i, %.critedge.thread.i ], [ %22, %24 ], [ 0, %.preheader.split.us.i ] tail call void @free(ptr noundef %19) br i1 %.not.i, label %copyfile.exit, label %42 diff --git a/bench/opencv/optimized/text_format.ll b/bench/opencv/optimized/text_format.ll index c245813411c..11c4393488d 100644 --- a/bench/opencv/optimized/text_format.ll +++ b/bench/opencv/optimized/text_format.ll @@ -25967,14 +25967,14 @@ define linkonce_odr hidden void @_ZN6google8protobuf10TextFormat7Printer13TextGe %11 = getelementptr inbounds nuw i8, ptr %0, i64 28 %12 = load i8, ptr %11, align 4, !tbaa !58, !range !49, !noundef !50 %13 = trunc nuw i8 %12 to i1 - br i1 %13, label %14, label %_ZN6google8protobuf10TextFormat7Printer13TextGenerator11WriteIndentEv.exit.thread + br i1 %13, label %14, label %_ZN6google8protobuf10TextFormat7Printer13TextGenerator11WriteIndentEv.exit.thread29 14: ; preds = %10 store i8 0, ptr %11, align 4, !tbaa !58 %15 = getelementptr inbounds nuw i8, ptr %0, i64 32 %16 = load i32, ptr %15, align 8, !tbaa !61 %17 = icmp eq i32 %16, 0 - br i1 %17, label %_ZN6google8protobuf10TextFormat7Printer13TextGenerator11WriteIndentEv.exit.thread, label %18 + br i1 %17, label %_ZN6google8protobuf10TextFormat7Printer13TextGenerator11WriteIndentEv.exit.thread29, label %18 18: ; preds = %14 %19 = load ptr, ptr %0, align 8, !tbaa !24 @@ -26020,7 +26020,7 @@ define linkonce_odr hidden void @_ZN6google8protobuf10TextFormat7Printer13TextGe %42 = xor i1 %41, true %43 = zext i1 %42 to i8 store i8 %43, ptr %6, align 1, !tbaa !59 - br i1 %41, label %44, label %.critedge.i + br i1 %41, label %44, label %_ZN6google8protobuf10TextFormat7Printer13TextGenerator11WriteIndentEv.exit.thread 44: ; preds = %35 %45 = sub nsw i32 %.0610.i, %36 @@ -26031,6 +26031,10 @@ define linkonce_odr hidden void @_ZN6google8protobuf10TextFormat7Printer13TextGe %48 = icmp sgt i32 %45, %47 br i1 %48, label %29, label %._crit_edge.i, !llvm.loop !400 +_ZN6google8protobuf10TextFormat7Printer13TextGenerator11WriteIndentEv.exit.thread: ; preds = %35 + call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #31 + br label %92 + ._crit_edge.i: ; preds = %44, %.._crit_edge_crit_edge.i %49 = phi ptr [ %.pre12.i, %.._crit_edge_crit_edge.i ], [ %46, %44 ] %.06.lcssa.i = phi i32 [ %23, %.._crit_edge_crit_edge.i ], [ %45, %44 ] @@ -26044,93 +26048,85 @@ define linkonce_odr hidden void @_ZN6google8protobuf10TextFormat7Printer13TextGe store i32 %54, ptr %24, align 8, !tbaa !57 %.pre = load i8, ptr %6, align 1, !tbaa !59, !range !49 %55 = trunc nuw i8 %.pre to i1 - br label %_ZN6google8protobuf10TextFormat7Printer13TextGenerator11WriteIndentEv.exit - -.critedge.i: ; preds = %35 - call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #31 - br label %_ZN6google8protobuf10TextFormat7Printer13TextGenerator11WriteIndentEv.exit - -_ZN6google8protobuf10TextFormat7Printer13TextGenerator11WriteIndentEv.exit: ; preds = %._crit_edge.i, %.critedge.i - %56 = phi i1 [ %55, %._crit_edge.i ], [ %42, %.critedge.i ] - br i1 %56, label %93, label %_ZN6google8protobuf10TextFormat7Printer13TextGenerator11WriteIndentEv.exit.thread - -_ZN6google8protobuf10TextFormat7Printer13TextGenerator11WriteIndentEv.exit.thread: ; preds = %14, %_ZN6google8protobuf10TextFormat7Printer13TextGenerator11WriteIndentEv.exit, %10 - %57 = getelementptr inbounds nuw i8, ptr %0, i64 24 - %58 = load i32, ptr %57, align 8, !tbaa !57 - %59 = sext i32 %58 to i64 - %60 = icmp sgt i64 %2, %59 - %61 = getelementptr inbounds nuw i8, ptr %0, i64 16 - br i1 %60, label %.lr.ph, label %.._crit_edge_crit_edge - -.._crit_edge_crit_edge: ; preds = %_ZN6google8protobuf10TextFormat7Printer13TextGenerator11WriteIndentEv.exit.thread - %.pre28 = load ptr, ptr %61, align 8, !tbaa !56 + br i1 %55, label %92, label %_ZN6google8protobuf10TextFormat7Printer13TextGenerator11WriteIndentEv.exit.thread29 + +.critedge.i: ; preds = %14, %._crit_edge.i, %10 + %56 = getelementptr inbounds nuw i8, ptr %0, i64 24 + %57 = load i32, ptr %56, align 8, !tbaa !57 + %58 = sext i32 %57 to i64 + %59 = icmp sgt i64 %2, %58 + %60 = getelementptr inbounds nuw i8, ptr %0, i64 16 + br i1 %59, label %.lr.ph, label %_ZN6google8protobuf10TextFormat7Printer13TextGenerator11WriteIndentEv.exit.thread + +_ZN6google8protobuf10TextFormat7Printer13TextGenerator11WriteIndentEv.exit.thread: ; preds = %_ZN6google8protobuf10TextFormat7Printer13TextGenerator11WriteIndentEv.exit.thread29 + %.pre28 = load ptr, ptr %60, align 8, !tbaa !56 br label %._crit_edge -.lr.ph: ; preds = %_ZN6google8protobuf10TextFormat7Printer13TextGenerator11WriteIndentEv.exit.thread - %62 = getelementptr inbounds nuw i8, ptr %0, i64 8 +.lr.ph: ; preds = %_ZN6google8protobuf10TextFormat7Printer13TextGenerator11WriteIndentEv.exit.thread29 + %61 = getelementptr inbounds nuw i8, ptr %0, i64 8 br label %63 63: ; preds = %.lr.ph, %81 - %64 = phi i64 [ %59, %.lr.ph ], [ %84, %81 ] - %65 = phi i32 [ %58, %.lr.ph ], [ %83, %81 ] + %63 = phi i64 [ %58, %.lr.ph ], [ %84, %81 ] + %64 = phi i32 [ %57, %.lr.ph ], [ %83, %81 ] %.01122 = phi i64 [ %2, %.lr.ph ], [ %.1, %81 ] %.01221 = phi ptr [ %1, %.lr.ph ], [ %.113, %81 ] - %66 = icmp sgt i32 %65, 0 - br i1 %66, label %67, label %73 + %65 = icmp sgt i32 %65, 0 + br i1 %66, label %66, label %72 + +66: ; preds = %62 + %67 = load ptr, ptr %60, align 8, !tbaa !56 + call void @llvm.memcpy.p0.p0.i64(ptr align 1 %67, ptr align 1 %.01221, i64 %63, i1 false) + %68 = load i32, ptr %56, align 8, !tbaa !57 + %69 = sext i32 %68 to i64 + %70 = getelementptr inbounds i8, ptr %.01221, i64 %69 + %71 = sub i64 %.01122, %69 + br label %72 -67: ; preds = %63 - %68 = load ptr, ptr %61, align 8, !tbaa !56 - call void @llvm.memcpy.p0.p0.i64(ptr align 1 %68, ptr align 1 %.01221, i64 %64, i1 false) - %69 = load i32, ptr %57, align 8, !tbaa !57 - %70 = sext i32 %69 to i64 - %71 = getelementptr inbounds i8, ptr %.01221, i64 %70 - %72 = sub i64 %.01122, %70 - br label %73 - -73: ; preds = %67, %63 - %.113 = phi ptr [ %71, %67 ], [ %.01221, %63 ] - %.1 = phi i64 [ %72, %67 ], [ %.01122, %63 ] +67: ; preds = %66, %63 + %.113 = phi ptr [ %70, %66 ], [ %.01221, %62 ] + %.1 = phi i64 [ %71, %66 ], [ %.01122, %62 ] call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #31 store ptr null, ptr %5, align 8, !tbaa !196 - %74 = load ptr, ptr %62, align 8, !tbaa !52 - %75 = load ptr, ptr %74, align 8, !tbaa !24 - %76 = getelementptr inbounds nuw i8, ptr %75, i64 16 - %77 = load ptr, ptr %76, align 8 - %78 = call noundef zeroext i1 %77(ptr noundef nonnull align 8 dereferenceable(8) %74, ptr noundef nonnull %5, ptr noundef nonnull %57) - %79 = xor i1 %78, true - %80 = zext i1 %79 to i8 + %73 = load ptr, ptr %62, align 8, !tbaa !52 + %74 = load ptr, ptr %74, align 8, !tbaa !24 + %75 = getelementptr inbounds nuw i8, ptr %75, i64 16 + %76 = load ptr, ptr %76, align 8 + %77 = call noundef zeroext i1 %76(ptr noundef nonnull align 8 dereferenceable(8) %74, ptr noundef nonnull %5, ptr noundef nonnull %56) + %78 = xor i1 %78, true + %79 = zext i1 %78 to i8 store i8 %80, ptr %6, align 1, !tbaa !59 br i1 %78, label %81, label %.thread -.thread: ; preds = %73 +.thread: ; preds = %72 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #31 br label %93 -81: ; preds = %73 - %82 = load ptr, ptr %5, align 8, !tbaa !196 - store ptr %82, ptr %61, align 8, !tbaa !56 +81: ; preds = %72 + %81 = load ptr, ptr %5, align 8, !tbaa !196 + store ptr %82, ptr %60, align 8, !tbaa !56 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #31 - %83 = load i32, ptr %57, align 8, !tbaa !57 - %84 = sext i32 %83 to i64 - %85 = icmp sgt i64 %.1, %84 + %82 = load i32, ptr %56, align 8, !tbaa !57 + %83 = sext i32 %82 to i64 + %84 = icmp sgt i64 %.1, %84 br i1 %85, label %63, label %._crit_edge ._crit_edge: ; preds = %81, %.._crit_edge_crit_edge - %86 = phi ptr [ %.pre28, %.._crit_edge_crit_edge ], [ %82, %81 ] + %85 = phi ptr [ %.pre28, %.._crit_edge_crit_edge ], [ %82, %81 ] %.012.lcssa = phi ptr [ %1, %.._crit_edge_crit_edge ], [ %.113, %81 ] %.011.lcssa = phi i64 [ %2, %.._crit_edge_crit_edge ], [ %.1, %81 ] - %87 = getelementptr inbounds nuw i8, ptr %0, i64 16 + %86 = getelementptr inbounds nuw i8, ptr %0, i64 16 call void @llvm.memcpy.p0.p0.i64(ptr align 1 %86, ptr align 1 %.012.lcssa, i64 %.011.lcssa, i1 false) - %88 = load ptr, ptr %87, align 8, !tbaa !56 - %89 = getelementptr inbounds nuw i8, ptr %88, i64 %.011.lcssa + %87 = load ptr, ptr %87, align 8, !tbaa !56 + %88 = getelementptr inbounds nuw i8, ptr %88, i64 %.011.lcssa store ptr %89, ptr %87, align 8, !tbaa !56 - %90 = load i32, ptr %57, align 8, !tbaa !57 - %91 = trunc i64 %.011.lcssa to i32 - %92 = sub i32 %90, %91 - store i32 %92, ptr %57, align 8, !tbaa !57 + %89 = load i32, ptr %56, align 8, !tbaa !57 + %90 = trunc i64 %.011.lcssa to i32 + %91 = sub i32 %90, %91 + store i32 %92, ptr %56, align 8, !tbaa !57 br label %93 -93: ; preds = %.thread, %_ZN6google8protobuf10TextFormat7Printer13TextGenerator11WriteIndentEv.exit, %3, %._crit_edge +93: ; preds = %_ZN6google8protobuf10TextFormat7Printer13TextGenerator11WriteIndentEv.exit.thread, %.thread, %._crit_edge.i, %3, %._crit_edge ret void } diff --git a/bench/openjdk/optimized/memnode.ll b/bench/openjdk/optimized/memnode.ll index 173068b53a6..e302ac07a98 100644 --- a/bench/openjdk/optimized/memnode.ll +++ b/bench/openjdk/optimized/memnode.ll @@ -20120,9 +20120,10 @@ _ZN14InitializeNode11zero_memoryEv.exit: ; preds = %14, %23, %33 %43 = load i8, ptr @UseTLAB, align 1 %44 = trunc i8 %43 to i1 %45 = load i8, ptr @ZeroTLAB, align 1 - %46 = xor i8 %45, 1 - %spec.select = select i1 %44, i8 %46, i8 1 - %.186 = select i1 %or.cond5, i8 %spec.select, i8 0 + %46 = trunc i8 %45 to i1 + %or.cond3 = select i1 %44, i1 %46, i1 false + %.085 = xor i1 %spec.select, true + %.186 = select i1 %or.cond5, i1 %.085, i1 false %47 = getelementptr inbounds nuw i8, ptr %6, i64 32 %48 = getelementptr inbounds nuw i8, ptr %6, i64 2408 %.not8.i = icmp eq ptr %.0.i.i, null @@ -20134,11 +20135,11 @@ _ZN14InitializeNode11zero_memoryEv.exit: ; preds = %14, %23, %33 52: ; preds = %.lr.ph, %_ZN4Node7set_reqEjPS_.exit %indvars.iv = phi i64 [ 6, %.lr.ph ], [ %indvars.iv.next, %_ZN4Node7set_reqEjPS_.exit ] - %.0122 = phi ptr [ %2, %.lr.ph ], [ %.1, %_ZN4Node7set_reqEjPS_.exit ] - %.081121 = phi ptr [ %.0.i.i, %.lr.ph ], [ %55, %_ZN4Node7set_reqEjPS_.exit ] - %.082120 = phi i64 [ %4, %.lr.ph ], [ %spec.select105, %_ZN4Node7set_reqEjPS_.exit ] - %.287119 = phi i8 [ %.186, %.lr.ph ], [ %.388, %_ZN4Node7set_reqEjPS_.exit ] - %.089118 = phi i32 [ 0, %.lr.ph ], [ %.190, %_ZN4Node7set_reqEjPS_.exit ] + %.0120 = phi ptr [ %2, %.lr.ph ], [ %.1, %_ZN4Node7set_reqEjPS_.exit ] + %.081119 = phi ptr [ %.0.i.i, %.lr.ph ], [ %55, %_ZN4Node7set_reqEjPS_.exit ] + %.082118 = phi i64 [ %4, %.lr.ph ], [ %spec.select105, %_ZN4Node7set_reqEjPS_.exit ] + %.287117 = phi i1 [ %.186, %.lr.ph ], [ %.388, %_ZN4Node7set_reqEjPS_.exit ] + %.089116 = phi i32 [ 0, %.lr.ph ], [ %.190, %_ZN4Node7set_reqEjPS_.exit ] %53 = load ptr, ptr %15, align 8 %54 = getelementptr inbounds nuw ptr, ptr %53, i64 %indvars.iv %55 = load ptr, ptr %54, align 8 @@ -20184,12 +20185,13 @@ _ZN14InitializeNode16get_store_offsetEP4NodeP11PhaseValues.exit: ; preds = %60 %77 = call noundef i32 %76(ptr noundef nonnull align 8 dereferenceable(56) %55) #13 %78 = sext i32 %77 to i64 %79 = add nsw i64 %..i, %78 - %80 = trunc i8 %.287119 to i1 - %81 = icmp slt i64 %.082120, %79 - %or.cond103 = select i1 %80, i1 %81, i1 false - br i1 %or.cond103, label %82, label %102 + br i1 %.287119, label %80, label %102 82: ; preds = %73 + %81 = icmp slt i64 %.082118, %79 + br i1 %81, label %82, label %102 + +82: ; preds = %80 %83 = icmp slt i32 %77, 4 br i1 %83, label %84, label %91 @@ -20219,15 +20221,14 @@ _ZN14InitializeNode16get_store_offsetEP4NodeP11PhaseValues.exit: ; preds = %60 99: ; preds = %93 %100 = add nsw i32 %.089118, 1 - %101 = icmp sgt i32 %.089118, 1 - %spec.select104 = select i1 %101, i8 0, i8 %.287119 + %101 = icmp slt i32 %.089118, 2 br label %102 -102: ; preds = %99, %91, %93, %73 - %.190 = phi i32 [ %.089118, %93 ], [ %.089118, %91 ], [ %.089118, %73 ], [ %100, %99 ] - %.388 = phi i8 [ 1, %93 ], [ 1, %91 ], [ %.287119, %73 ], [ %spec.select104, %99 ] - %.183 = phi i64 [ %.092, %93 ], [ %.082120, %91 ], [ %.082120, %73 ], [ %.092, %99 ] - %.1 = phi ptr [ %96, %93 ], [ %.0122, %91 ], [ %.0122, %73 ], [ %96, %99 ] +102: ; preds = %99, %91, %93, %80, %73 + %.190 = phi i32 [ %.089118, %93 ], [ %.089118, %91 ], [ %.089116, %80 ], [ %.089116, %73 ], [ %100, %99 ] + %.388 = phi i1 [ true, %93 ], [ true, %91 ], [ true, %80 ], [ false, %73 ], [ %101, %99 ] + %.183 = phi i64 [ %.092, %93 ], [ %.082120, %91 ], [ %.082118, %82 ], [ %.082118, %73 ], [ %.092, %99 ] + %.1 = phi ptr [ %96, %93 ], [ %.0122, %91 ], [ %.0120, %80 ], [ %.0120, %73 ], [ %96, %99 ] %103 = load ptr, ptr %47, align 8 %104 = call noundef zeroext i1 @_ZN8NodeHash11hash_deleteEPK4Node(ptr noundef nonnull align 8 dereferenceable(40) %103, ptr noundef nonnull %55) #13 %105 = load ptr, ptr %48, align 8 @@ -20301,7 +20302,7 @@ _ZN12PhaseIterGVN16replace_input_ofEP4NodejS1_.exit: ; preds = %_ZN9VectorSet8te br label %144 144: ; preds = %144, %139 - %.0.i.i107 = phi ptr [ %143, %139 ], [ %145, %144 ] + %.0.i.i105 = phi ptr [ %143, %139 ], [ %145, %144 ] %145 = getelementptr inbounds i8, ptr %.0.i.i107, i64 -8 %146 = load ptr, ptr %145, align 8 %.not.i.i = icmp eq ptr %146, %0 @@ -20349,15 +20350,15 @@ _ZN4Node7del_outEPS_.exit.i: ; preds = %147, %135, %_ZN12Ph _ZN4Node7set_reqEjPS_.exit: ; preds = %_ZN4Node7del_outEPS_.exit.i, %152, %160 %166 = icmp eq i64 %.183, %..i - %spec.select105 = select i1 %166, i64 %79, i64 %.183 + %spec.select103 = select i1 %166, i64 %79, i64 %.183 %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count br i1 %exitcond.not, label %.loopexit, label %52, !llvm.loop !61 .loopexit: ; preds = %_ZN4Node7set_reqEjPS_.exit, %_ZN14InitializeNode16get_store_offsetEP4NodeP11PhaseValues.exit, %69, %_ZN14InitializeNode11zero_memoryEv.exit, %_ZN14InitializeNode16get_store_offsetEP4NodeP11PhaseValues.exit.thread - %.082115 = phi i64 [ %.082120, %_ZN14InitializeNode16get_store_offsetEP4NodeP11PhaseValues.exit.thread ], [ %4, %_ZN14InitializeNode11zero_memoryEv.exit ], [ %spec.select105, %_ZN4Node7set_reqEjPS_.exit ], [ %.082120, %_ZN14InitializeNode16get_store_offsetEP4NodeP11PhaseValues.exit ], [ %.082120, %69 ] - %.081113 = phi ptr [ %.081121, %_ZN14InitializeNode16get_store_offsetEP4NodeP11PhaseValues.exit.thread ], [ %.0.i.i, %_ZN14InitializeNode11zero_memoryEv.exit ], [ %55, %_ZN4Node7set_reqEjPS_.exit ], [ %.081121, %_ZN14InitializeNode16get_store_offsetEP4NodeP11PhaseValues.exit ], [ %.081121, %69 ] - %.0111 = phi ptr [ %.0122, %_ZN14InitializeNode16get_store_offsetEP4NodeP11PhaseValues.exit.thread ], [ %2, %_ZN14InitializeNode11zero_memoryEv.exit ], [ %.1, %_ZN4Node7set_reqEjPS_.exit ], [ %.0122, %_ZN14InitializeNode16get_store_offsetEP4NodeP11PhaseValues.exit ], [ %.0122, %69 ] + %.082113 = phi i64 [ %.082120, %_ZN14InitializeNode16get_store_offsetEP4NodeP11PhaseValues.exit.thread ], [ %4, %_ZN14InitializeNode11zero_memoryEv.exit ], [ %spec.select105, %_ZN4Node7set_reqEjPS_.exit ], [ %.082120, %_ZN14InitializeNode16get_store_offsetEP4NodeP11PhaseValues.exit ], [ %.082120, %69 ] + %.081111 = phi ptr [ %.081121, %_ZN14InitializeNode16get_store_offsetEP4NodeP11PhaseValues.exit.thread ], [ %.0.i.i, %_ZN14InitializeNode11zero_memoryEv.exit ], [ %55, %_ZN4Node7set_reqEjPS_.exit ], [ %.081121, %_ZN14InitializeNode16get_store_offsetEP4NodeP11PhaseValues.exit ], [ %.081121, %69 ] + %.0109 = phi ptr [ %.0122, %_ZN14InitializeNode16get_store_offsetEP4NodeP11PhaseValues.exit.thread ], [ %2, %_ZN14InitializeNode11zero_memoryEv.exit ], [ %.1, %_ZN4Node7set_reqEjPS_.exit ], [ %.0122, %_ZN14InitializeNode16get_store_offsetEP4NodeP11PhaseValues.exit ], [ %.0122, %69 ] call void @_ZN14InitializeNode19remove_extra_zeroesEv(ptr noundef nonnull align 8 dereferenceable(73) %0) call void @_ZN4Node7add_reqEPS_(ptr noundef nonnull align 8 dereferenceable(52) %0, ptr noundef %.081113) #13 %167 = load i8, ptr @UseTLAB, align 1 @@ -20370,7 +20371,7 @@ _ZN4Node7set_reqEjPS_.exit: ; preds = %_ZN4Node7del_outEPS 171: ; preds = %.loopexit %172 = and i64 %.082115, -4 %173 = call noundef ptr @_ZN11PhaseValues14find_long_typeEP4Node(ptr noundef nonnull align 8 dereferenceable(2400) %6, ptr noundef %5) #13 - %.not.i108 = icmp eq ptr %173, null + %.not.i106 = icmp eq ptr %173, null br i1 %.not.i108, label %_ZN11PhaseValues13find_long_conEP4Nodel.exit, label %174 174: ; preds = %171 @@ -20422,7 +20423,7 @@ _ZN11PhaseValues13find_long_conEP4Nodel.exit: ; preds = %171, %174 %208 = load i32, ptr %207, align 8 %209 = sext i32 %208 to i64 %210 = icmp eq i64 %172, %209 - %spec.select106 = select i1 %210, i64 %180, i64 %172 + %spec.select104 = select i1 %210, i64 %180, i64 %172 br label %211 211: ; preds = %189, %182, %184, %_ZN11PhaseValues13find_long_conEP4Nodel.exit diff --git a/bench/openssl/optimized/quic_engine.ll b/bench/openssl/optimized/quic_engine.ll index 171d7149071..aeb4bcb2e6a 100644 --- a/bench/openssl/optimized/quic_engine.ll +++ b/bench/openssl/optimized/quic_engine.ll @@ -109,22 +109,25 @@ define i64 @ossl_quic_engine_make_real_time(ptr noundef readonly captures(none) %3 = getelementptr inbounds nuw i8, ptr %0, i64 24 %4 = load ptr, ptr %3, align 8, !tbaa !27 %.not = icmp eq ptr %4, null - %5 = add i64 %1, 1 - %6 = icmp ult i64 %5, 2 - %or.cond15 = select i1 %.not, i1 true, i1 %6 - br i1 %or.cond15, label %12, label %7 - -7: ; preds = %2 - %8 = getelementptr inbounds nuw i8, ptr %0, i64 32 - %9 = load ptr, ptr %8, align 8, !tbaa !28 - %10 = tail call i64 %4(ptr noundef %9) #10 - %..i = tail call i64 @llvm.usub.sat.i64(i64 %1, i64 %10) - %11 = tail call i64 @ossl_time_now() #10 - %.sroa.03.0.i = tail call i64 @llvm.uadd.sat.i64(i64 %..i, i64 %11) - br label %12 - -12: ; preds = %7, %2 - %.sroa.07.0 = phi i64 [ %.sroa.03.0.i, %7 ], [ %1, %2 ] + br i1 %.not, label %.fold.split, label %5 + +5:; preds = %2 + switch i64 %1, label %6 [ + i64 0, label %.fold.split + i64 -1, label %.fold.split + ] + +6:; preds = %5 + %7 = getelementptr inbounds nuw i8, ptr %0, i64 32 + %8 = load ptr, ptr %7, align 8, !tbaa !28 + %9 = tail call i64 %4(ptr noundef %8) #10 + %..i = tail call i64 @llvm.usub.sat.i64(i64 %1, i64 %9) + %10 = tail call i64 @ossl_time_now() #10 + %.sroa.03.0.i = tail call i64 @llvm.uadd.sat.i64(i64 %..i, i64 %10) + br label %.fold.split + +.fold.split: ; preds = %5, %5, %6, %2 + %.sroa.07.0 = phi i64 [ %1, %5 ], [ %.sroa.03.0.i, %6 ], [ %1, %2 ], [ %1, %5 ] ret i64 %.sroa.07.0 } diff --git a/bench/openusd/optimized/lightAPIAdapter.ll b/bench/openusd/optimized/lightAPIAdapter.ll index 812c0df41dd..4414a7c7daf 100644 --- a/bench/openusd/optimized/lightAPIAdapter.ll +++ b/bench/openusd/optimized/lightAPIAdapter.ll @@ -1271,7 +1271,7 @@ define void @_ZN32pxrInternal_v0_24__pxrReserved__25UsdImagingLightAPIAdapter24I %9 = icmp eq ptr %8, null %10 = load ptr, ptr %4, align 8 %11 = icmp eq ptr %10, null - %or.cond27 = select i1 %9, i1 %11, i1 false + %or.cond = select i1 %9, i1 %11, i1 false %12 = getelementptr inbounds nuw i8, ptr %0, i64 448 store i32 0, ptr %12, align 8 %13 = getelementptr inbounds nuw i8, ptr %0, i64 452 @@ -1282,45 +1282,46 @@ define void @_ZN32pxrInternal_v0_24__pxrReserved__25UsdImagingLightAPIAdapter24I %15 = load ptr, ptr %5, align 8 %16 = getelementptr inbounds nuw i8, ptr %5, i64 8 %17 = load ptr, ptr %16, align 8 - %.not28 = icmp eq ptr %15, %17 + %.not24 = icmp eq ptr %15, %17 br i1 %.not28, label %.loopexit, label %.lr.ph .lr.ph: ; preds = %14, %.thread - %.031 = phi i1 [ %.125, %.thread ], [ false, %14 ] - %.01330 = phi i1 [ %.114, %.thread ], [ false, %14 ] - %.sroa.020.029 = phi ptr [ %57, %.thread ], [ %15, %14 ] - br i1 %.031, label %.thread, label %18 - -18: ; preds = %.lr.ph - %19 = load ptr, ptr %.sroa.020.029, align 8 - %20 = ptrtoint ptr %19 to i64 - %21 = and i64 %20, -8 - %.not.i = icmp eq i64 %21, 0 - br i1 %.not.i, label %25, label %22 - -22: ; preds = %18 - %23 = inttoptr i64 %21 to ptr - %24 = getelementptr inbounds nuw i8, ptr %23, i64 16 + %.027 = phi i8 [ %.1, %.thread ], [ 0, %14 ] + %.01326 = phi i8 [ %.114, %.thread ], [ 0, %14 ] + %.sroa.020.025 = phi ptr [ %59, %.thread ], [ %15, %14 ] + %18 = trunc nuw i8 %.027 to i1 + br i1 %18, label %_ZN32pxrInternal_v0_24__pxrReserved__18TfStringStartsWithERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc.exit.thread, label %19 + +19:; preds = %.lr.ph + %20 = load ptr, ptr %.sroa.020.025, align 8 + %21 = ptrtoint ptr %20 to i64 + %22 = and i64 %21, -8 + %.not.i = icmp eq i64 %22, 0 + br i1 %.not.i, label %26, label %23 + +23:; preds = %19 + %24 = inttoptr i64 %22 to ptr + %25 = getelementptr inbounds nuw i8, ptr %24, i64 16 br label %_ZNK32pxrInternal_v0_24__pxrReserved__7TfToken9GetStringB5cxx11Ev.exit -25: ; preds = %18 - %26 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN32pxrInternal_v0_24__pxrReserved__7TfToken15_GetEmptyStringB5cxx11Ev() +25: ; preds = %19 + %27 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN32pxrInternal_v0_24__pxrReserved__7TfToken15_GetEmptyStringB5cxx11Ev() to label %_ZNK32pxrInternal_v0_24__pxrReserved__7TfToken9GetStringB5cxx11Ev.exit unwind label %38 -_ZNK32pxrInternal_v0_24__pxrReserved__7TfToken9GetStringB5cxx11Ev.exit: ; preds = %22, %25 - %27 = phi ptr [ %24, %22 ], [ %26, %25 ] - %28 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %27) #19 - %29 = tail call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %27) #19 +_ZNK32pxrInternal_v0_24__pxrReserved__7TfToken9GetStringB5cxx11Ev.exit: ; preds = %23, %25 + %28 = phi ptr [ %25, %23 ], [ %26, %25 ] + %29 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %27) #19 + %30 = tail call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %27) #19 %.not.i.i = icmp ult i64 %29, 7 br i1 %.not.i.i, label %_ZN32pxrInternal_v0_24__pxrReserved__18TfStringStartsWithERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc.exit.thread, label %_ZN32pxrInternal_v0_24__pxrReserved__18TfStringStartsWithERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc.exit _ZN32pxrInternal_v0_24__pxrReserved__18TfStringStartsWithERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc.exit: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__7TfToken9GetStringB5cxx11Ev.exit - %30 = tail call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %28, ptr noundef nonnull dereferenceable(8) @.str.2, i64 noundef 7) #23 - %31 = icmp eq i32 %30, 0 + %31 = tail call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %28, ptr noundef nonnull dereferenceable(8) @.str.2, i64 noundef 7) #23 + %32 = icmp eq i32 %30, 0 br i1 %31, label %32, label %_ZN32pxrInternal_v0_24__pxrReserved__18TfStringStartsWithERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc.exit.thread 32: ; preds = %_ZN32pxrInternal_v0_24__pxrReserved__18TfStringStartsWithERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc.exit - %33 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN32pxrInternal_v0_24__pxrReserved__16HdMaterialSchema17GetDefaultLocatorEv() + %34 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN32pxrInternal_v0_24__pxrReserved__16HdMaterialSchema17GetDefaultLocatorEv() to label %34 unwind label %38 34: ; preds = %32 @@ -1328,63 +1329,65 @@ _ZN32pxrInternal_v0_24__pxrReserved__18TfStringStartsWithERKNSt7__cxx1112basic_s to label %35 unwind label %38 35: ; preds = %34 - %36 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN32pxrInternal_v0_24__pxrReserved__13HdLightSchema17GetDefaultLocatorEv() + %37 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN32pxrInternal_v0_24__pxrReserved__13HdLightSchema17GetDefaultLocatorEv() to label %37 unwind label %38 37: ; preds = %35 invoke void @_ZN32pxrInternal_v0_24__pxrReserved__22HdDataSourceLocatorSet6insertERKNS_19HdDataSourceLocatorE(ptr noundef nonnull align 8 dereferenceable(456) %0, ptr noundef nonnull align 8 dereferenceable(56) %36) - to label %.thread unwind label %38 + to label %44 unwind label %38 -38: ; preds = %47, %25, %56, %54, %37, %35, %34, %32 - %39 = landingpad { ptr, i32 } +38: ; preds = %47, %26, %58, %56, %38, %36, %35, %33 + %40 = landingpad { ptr, i32 } cleanup tail call void @_ZN32pxrInternal_v0_24__pxrReserved__22HdDataSourceLocatorSetD2Ev(ptr noundef nonnull align 8 dereferenceable(456) %0) #19 resume { ptr, i32 } %39 -_ZN32pxrInternal_v0_24__pxrReserved__18TfStringStartsWithERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc.exit.thread: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__7TfToken9GetStringB5cxx11Ev.exit, %_ZN32pxrInternal_v0_24__pxrReserved__18TfStringStartsWithERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc.exit - br i1 %.01330, label %.thread, label %40 - -40: ; preds = %_ZN32pxrInternal_v0_24__pxrReserved__18TfStringStartsWithERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc.exit.thread - %41 = load ptr, ptr %.sroa.020.029, align 8 - %42 = ptrtoint ptr %41 to i64 - %43 = and i64 %42, -8 - %.not.i15 = icmp eq i64 %43, 0 - br i1 %.not.i15, label %47, label %44 - -44: ; preds = %40 - %45 = inttoptr i64 %43 to ptr - %46 = getelementptr inbounds nuw i8, ptr %45, i64 16 +44: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__7TfToken9GetStringB5cxx11Ev.exit, %38, %_ZN32pxrInternal_v0_24__pxrReserved__18TfStringStartsWithERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc.exit, %.lr.ph + %.1 = phi i8 [ 1, %.lr.ph ], [ 1, %38 ], [ 0, %_ZN32pxrInternal_v0_24__pxrReserved__18TfStringStartsWithERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc.exit ], [ 0, %_ZNK32pxrInternal_v0_24__pxrReserved__7TfToken9GetStringB5cxx11Ev.exit ] + %41 = or i8 %.1, %.01326 + %or.cond.not = icmp eq i8 %41, 0 + br i1 %or.cond.not, label %42, label %_ZN32pxrInternal_v0_24__pxrReserved__18TfStringStartsWithERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc.exit19.thread + +42: ; preds = %_ZN32pxrInternal_v0_24__pxrReserved__18TfStringStartsWithERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc.exit.thread + %43 = load ptr, ptr %.sroa.020.025, align 8 + %44 = ptrtoint ptr %43 to i64 + %45 = and i64 %44, -8 + %.not.i15 = icmp eq i64 %45, 0 + br i1 %.not.i15, label %49, label %46 + +46: ; preds = %42 + %47 = inttoptr i64 %45 to ptr + %48 = getelementptr inbounds nuw i8, ptr %47, i64 16 br label %_ZNK32pxrInternal_v0_24__pxrReserved__7TfToken9GetStringB5cxx11Ev.exit17 -47: ; preds = %40 - %48 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN32pxrInternal_v0_24__pxrReserved__7TfToken15_GetEmptyStringB5cxx11Ev() +47: ; preds = %42 + %50 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN32pxrInternal_v0_24__pxrReserved__7TfToken15_GetEmptyStringB5cxx11Ev() to label %_ZNK32pxrInternal_v0_24__pxrReserved__7TfToken9GetStringB5cxx11Ev.exit17 unwind label %38 -_ZNK32pxrInternal_v0_24__pxrReserved__7TfToken9GetStringB5cxx11Ev.exit17: ; preds = %44, %47 - %49 = phi ptr [ %46, %44 ], [ %48, %47 ] - %50 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %49) #19 - %51 = tail call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %49) #19 +_ZNK32pxrInternal_v0_24__pxrReserved__7TfToken9GetStringB5cxx11Ev.exit17: ; preds = %46, %47 + %51 = phi ptr [ %48, %46 ], [ %48, %47 ] + %52 = tail call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %49) #19 + %53 = tail call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6lengthEv(ptr noundef nonnull align 8 dereferenceable(32) %49) #19 %.not.i.i18 = icmp ult i64 %51, 6 br i1 %.not.i.i18, label %.thread, label %_ZN32pxrInternal_v0_24__pxrReserved__18TfStringStartsWithERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc.exit19 _ZN32pxrInternal_v0_24__pxrReserved__18TfStringStartsWithERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc.exit19: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__7TfToken9GetStringB5cxx11Ev.exit17 - %52 = tail call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %50, ptr noundef nonnull dereferenceable(7) @.str.3, i64 noundef 6) #23 - %53 = icmp eq i32 %52, 0 + %54 = tail call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %50, ptr noundef nonnull dereferenceable(7) @.str.3, i64 noundef 6) #23 + %55 = icmp eq i32 %52, 0 br i1 %53, label %54, label %.thread 54: ; preds = %_ZN32pxrInternal_v0_24__pxrReserved__18TfStringStartsWithERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc.exit19 - %55 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN32pxrInternal_v0_24__pxrReserved__13HdLightSchema17GetDefaultLocatorEv() + %57 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN32pxrInternal_v0_24__pxrReserved__13HdLightSchema17GetDefaultLocatorEv() to label %56 unwind label %38 56: ; preds = %54 invoke void @_ZN32pxrInternal_v0_24__pxrReserved__22HdDataSourceLocatorSet6insertERKNS_19HdDataSourceLocatorE(ptr noundef nonnull align 8 dereferenceable(456) %0, ptr noundef nonnull align 8 dereferenceable(56) %55) to label %.thread unwind label %38 -.thread: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__7TfToken9GetStringB5cxx11Ev.exit17, %37, %.lr.ph, %_ZN32pxrInternal_v0_24__pxrReserved__18TfStringStartsWithERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc.exit.thread, %_ZN32pxrInternal_v0_24__pxrReserved__18TfStringStartsWithERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc.exit19, %56 - %.125 = phi i1 [ false, %_ZN32pxrInternal_v0_24__pxrReserved__18TfStringStartsWithERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc.exit.thread ], [ false, %56 ], [ false, %_ZN32pxrInternal_v0_24__pxrReserved__18TfStringStartsWithERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc.exit19 ], [ true, %37 ], [ true, %.lr.ph ], [ false, %_ZNK32pxrInternal_v0_24__pxrReserved__7TfToken9GetStringB5cxx11Ev.exit17 ] - %.114 = phi i1 [ true, %_ZN32pxrInternal_v0_24__pxrReserved__18TfStringStartsWithERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc.exit.thread ], [ true, %56 ], [ false, %_ZN32pxrInternal_v0_24__pxrReserved__18TfStringStartsWithERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc.exit19 ], [ %.01330, %37 ], [ %.01330, %.lr.ph ], [ false, %_ZNK32pxrInternal_v0_24__pxrReserved__7TfToken9GetStringB5cxx11Ev.exit17 ] - %57 = getelementptr inbounds nuw i8, ptr %.sroa.020.029, i64 8 - %.not = icmp eq ptr %57, %17 +.thread: ; preds = %_ZNK32pxrInternal_v0_24__pxrReserved__7TfToken9GetStringB5cxx11Ev.exit17, %_ZN32pxrInternal_v0_24__pxrReserved__18TfStringStartsWithERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc.exit.thread, %_ZN32pxrInternal_v0_24__pxrReserved__18TfStringStartsWithERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc.exit19, %56 + %.114 = phi i8 [ %.01326, %_ZN32pxrInternal_v0_24__pxrReserved__18TfStringStartsWithERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc.exit.thread ], [ 1, %56 ], [ 0, %_ZN32pxrInternal_v0_24__pxrReserved__18TfStringStartsWithERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKc.exit19 ], [ 0, %_ZNK32pxrInternal_v0_24__pxrReserved__7TfToken9GetStringB5cxx11Ev.exit17 ] + %59 = getelementptr inbounds nuw i8, ptr %.sroa.020.025, i64 8 + %.not = icmp eq ptr %59, %17 br i1 %.not, label %.loopexit, label %.lr.ph .loopexit: ; preds = %.thread, %7, %14 diff --git a/bench/ozz-animation/optimized/options.ll b/bench/ozz-animation/optimized/options.ll index 2498cc574d4..7662b368c8c 100644 --- a/bench/ozz-animation/optimized/options.ll +++ b/bench/ozz-animation/optimized/options.ll @@ -5640,25 +5640,24 @@ define internal noundef zeroext i1 @_ZN3ozz7options12_GLOBAL__N_112sort_optionsE 8: ; preds = %2 %9 = trunc nuw i8 %7 to i1 - br i1 %9, label %._crit_edge, label %18 - -._crit_edge: ; preds = %2, %8 - %10 = phi i8 [ 1, %8 ], [ %7, %2 ] - %.not = icmp eq i8 %4, %10 - br i1 %.not, label %11, label %18 - -11: ; preds = %._crit_edge - %12 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %13 = load ptr, ptr %12, align 8, !tbaa !4 - %14 = getelementptr inbounds nuw i8, ptr %1, i64 8 - %15 = load ptr, ptr %14, align 8, !tbaa !4 - %16 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %13, ptr noundef nonnull dereferenceable(1) %15) #31 - %17 = icmp slt i32 %16, 0 - br label %18 - -18: ; preds = %._crit_edge, %11, %8 - %19 = phi i1 [ true, %8 ], [ false, %._crit_edge ], [ %17, %11 ] - ret i1 %19 + br i1 %9, label %.thread, label %17 + +._crit_edge: ; preds = %2 + %.not = icmp eq i8 %4, %7 + br i1 %.not, label %.thread, label %17 + +.thread: ; preds = %8, %10 + %11 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %12 = load ptr, ptr %11, align 8, !tbaa !4 + %13 = getelementptr inbounds nuw i8, ptr %1, i64 8 + %14 = load ptr, ptr %13, align 8, !tbaa !4 + %15 = tail call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %12, ptr noundef nonnull dereferenceable(1) %14) #31 + %16 = icmp slt i32 %15, 0 + br label %17 + +17: ; preds = %10, %.thread, %8 + %18 = phi i1 [ true, %8 ], [ false, %._crit_edge ], [ %16, %.thread ] + ret i1 %18 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(argmem: read) uwtable diff --git a/bench/php/optimized/phpdbg_frame.ll b/bench/php/optimized/phpdbg_frame.ll index 82f9a6410d7..f6223e5881e 100644 --- a/bench/php/optimized/phpdbg_frame.ll +++ b/bench/php/optimized/phpdbg_frame.ll @@ -1314,48 +1314,47 @@ define internal fastcc void @phpdbg_dump_prototype(ptr noundef readonly captures %135 = load i32, ptr %134, align 8, !tbaa !124 %136 = lshr i32 %135, 27 %137 = trunc nuw nsw i32 %136 to i8 - %.pre = trunc i32 %136 to i1 - %138 = select i1 %.pre, ptr @.str.22, ptr @.str.23 br label %.thread87 .thread87: ; preds = %125, %132 - %.pre-phi = phi ptr [ @.str.22, %125 ], [ %138, %132 ] - %.3.in = phi i8 [ %.05895, %125 ], [ %137, %132 ] - %139 = load i32, ptr getelementptr inbounds nuw (i8, ptr @phpdbg_globals, i64 1508), align 4, !tbaa !111 + %.3.in = phi i8 [ 1, %125 ], [ %137, %132 ] + %138 = load i32, ptr getelementptr inbounds nuw (i8, ptr @phpdbg_globals, i64 1508), align 4, !tbaa !111 %.not74 = icmp eq ptr %130, null - %140 = select i1 %.not74, ptr @.str.18, ptr %.053 - %141 = call i32 (i32, ptr, ...) @phpdbg_out_internal(i32 noundef %139, ptr noundef nonnull @.str.21, ptr noundef nonnull %140, ptr noundef nonnull %.pre-phi) #11 - br label %142 + %139 = select i1 %.not74, ptr @.str.18, ptr %.053 + %140 = trunc i8 %.3.in to i1 + %141 = select i1 %140, ptr @.str.22, ptr @.str.23 + %142 = call i32 (i32, ptr, ...) @phpdbg_out_internal(i32 noundef %138, ptr noundef nonnull @.str.21, ptr noundef nonnull %139, ptr noundef nonnull %141) #11 + br label %143 142: ; preds = %.thread87, %123 %.2 = phi i8 [ %.3.in, %.thread87 ], [ %.05895, %123 ] - %143 = add nsw i32 %.05993, 1 - %144 = call ptr @phpdbg_short_zval_print(ptr noundef nonnull %.05497, i32 noundef 40) #11 - %145 = call i64 (ptr, ...) @php_printf(ptr noundef nonnull @.str.24, ptr noundef %144) #11 + %144 = add nsw i32 %.05993, 1 + %145 = call ptr @phpdbg_short_zval_print(ptr noundef nonnull %.05497, i32 noundef 40) #11 + %146 = call i64 (ptr, ...) @php_printf(ptr noundef nonnull @.str.24, ptr noundef %144) #11 call void @_efree(ptr noundef %144) #11 br label %146 146: ; preds = %.lr.ph.split.split, %142 %.160 = phi i32 [ %.05993, %.lr.ph.split.split ], [ %143, %142 ] %.1 = phi i8 [ %.05895, %.lr.ph.split.split ], [ %.2, %142 ] - %147 = getelementptr inbounds nuw i8, ptr %.05497, i64 %81 - %148 = getelementptr inbounds nuw i8, ptr %147, i64 16 - %149 = add i32 %.05696, -1 + %148 = getelementptr inbounds nuw i8, ptr %.05497, i64 %81 + %149 = getelementptr inbounds nuw i8, ptr %147, i64 16 + %150 = add i32 %.05696, -1 %.not70 = icmp eq i32 %149, 0 br i1 %.not70, label %._crit_edge, label %.lr.ph.split.split ._crit_edge: ; preds = %146 - %150 = trunc i8 %.1 to i1 + %151 = trunc i8 %.1 to i1 br i1 %150, label %151, label %._crit_edge.thread 151: ; preds = %._crit_edge - %152 = load i32, ptr getelementptr inbounds nuw (i8, ptr @phpdbg_globals, i64 1508), align 4, !tbaa !111 - %153 = call i32 (i32, ptr, ...) @phpdbg_out_internal(i32 noundef %152, ptr noundef nonnull @.str.25) #11 + %153 = load i32, ptr getelementptr inbounds nuw (i8, ptr @phpdbg_globals, i64 1508), align 4, !tbaa !111 + %154 = call i32 (i32, ptr, ...) @phpdbg_out_internal(i32 noundef %152, ptr noundef nonnull @.str.25) #11 br label %._crit_edge.thread ._crit_edge.thread: ; preds = %112, %93, %70, %._crit_edge, %151, %44 - %154 = load i32, ptr getelementptr inbounds nuw (i8, ptr @phpdbg_globals, i64 1508), align 4, !tbaa !111 - %155 = call i32 (i32, ptr, ...) @phpdbg_out_internal(i32 noundef %154, ptr noundef nonnull @.str.26) #11 + %155 = load i32, ptr getelementptr inbounds nuw (i8, ptr @phpdbg_globals, i64 1508), align 4, !tbaa !111 + %156 = call i32 (i32, ptr, ...) @phpdbg_out_internal(i32 noundef %154, ptr noundef nonnull @.str.26) #11 call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %.sroa.0) ret void } diff --git a/bench/pocketpy/optimized/dataclasses.ll b/bench/pocketpy/optimized/dataclasses.ll index 7b730379161..7ec6f9ec906 100644 --- a/bench/pocketpy/optimized/dataclasses.ll +++ b/bench/pocketpy/optimized/dataclasses.ll @@ -514,7 +514,7 @@ common.resume.i: ; preds = %189, %77, %74, %70 _ZN4pkpyL13patch__init__EPNS_2VMENS_4TypeE.exit.i: ; preds = %65, %62, %59 call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) - %.pre46.i = load i8, ptr %22, align 1 + %.pre44.i = load i8, ptr %22, align 1 br label %82 82: ; preds = %_ZN4pkpyL13patch__init__EPNS_2VMENS_4TypeE.exit.i, %_ZNK4pkpy12NameDictImplIPNS_8PyObjectEE8containsENS_7StrNameE.exit.i @@ -587,7 +587,7 @@ _ZNK4pkpy12NameDictImplIPNS_8PyObjectEE8containsENS_7StrNameE.exit36.i: ; preds _ZNK4pkpy12NameDictImplIPNS_8PyObjectEE8containsENS_7StrNameE.exit36.thread.i: ; preds = %.lr.ph.i.i27.i, %87, %_ZNK4pkpy12NameDictImplIPNS_8PyObjectEE8containsENS_7StrNameE.exit36.i, %95 call void @_ZN4pkpy2VM12bind__repr__ENS_4TypeEPFNS_3StrEPS0_PNS_8PyObjectEE(ptr noundef nonnull align 8 dereferenceable(264913) %0, i16 %20, ptr noundef nonnull @"_ZZN4pkpyL13patch__repr__EPNS_2VMENS_4TypeEEN3$_08__invokeES1_PNS_8PyObjectE") - %.pre47.i = load i8, ptr %22, align 1 + %.pre45.i = load i8, ptr %22, align 1 br label %113 113: ; preds = %_ZNK4pkpy12NameDictImplIPNS_8PyObjectEE8containsENS_7StrNameE.exit36.thread.i, %_ZNK4pkpy12NameDictImplIPNS_8PyObjectEE8containsENS_7StrNameE.exit36.i @@ -670,7 +670,7 @@ _ZNK4pkpy12NameDictImplIPNS_8PyObjectEE8containsENS_7StrNameE.exit48.thread.i: ; %149 = load ptr, ptr %148, align 8 %150 = getelementptr inbounds nuw i8, ptr %148, i64 8 %151 = load ptr, ptr %150, align 8 - %.not1631.i = icmp eq ptr %149, %151 + %.not1629.i = icmp eq ptr %149, %151 br i1 %.not1631.i, label %"_ZZN4pkpy22add_module_dataclassesEPNS_2VMEENK3$_0clES1_NS_8ArgsViewE.exit", label %.lr.ph.i .lr.ph.i: ; preds = %144 @@ -681,8 +681,8 @@ _ZNK4pkpy12NameDictImplIPNS_8PyObjectEE8containsENS_7StrNameE.exit48.thread.i: ; br label %156 156: ; preds = %190, %.lr.ph.i - %.02333.i = phi i1 [ false, %.lr.ph.i ], [ %.1.i, %190 ] - %.sroa.01.032.i = phi ptr [ %149, %.lr.ph.i ], [ %191, %190 ] + %.02331.i = phi i1 [ false, %.lr.ph.i ], [ %.1.i, %190 ] + %.sroa.01.030.i = phi ptr [ %149, %.lr.ph.i ], [ %191, %190 ] %157 = load i16, ptr %.sroa.01.032.i, align 2 store i16 %157, ptr %5, align 2 %158 = load i8, ptr %22, align 1 @@ -692,7 +692,7 @@ _ZNK4pkpy12NameDictImplIPNS_8PyObjectEE8containsENS_7StrNameE.exit48.thread.i: ; 160: ; preds = %.preheader.i %indvars.iv.next.i.i.i58.i = add nuw nsw i64 %indvars.iv.i.i.i57.i, 1 %exitcond.not.i.i.i59.i = icmp eq i64 %indvars.iv.next.i.i.i58.i, 8 - br i1 %exitcond.not.i.i.i59.i, label %_ZNK4pkpy12NameDictImplIPNS_8PyObjectEE8containsENS_7StrNameE.exit60.thread.i, label %.preheader.i, !llvm.loop !4 + br i1 %exitcond.not.i.i.i59.i, label %_ZNK4pkpy12NameDictImplIPNS_8PyObjectEE8containsENS_7StrNameE.exit60.i, label %.preheader.i, !llvm.loop !4 .preheader.i: ; preds = %156, %160 %indvars.iv.i.i.i57.i = phi i64 [ %indvars.iv.next.i.i.i58.i, %160 ], [ 0, %156 ] @@ -703,59 +703,57 @@ _ZNK4pkpy12NameDictImplIPNS_8PyObjectEE8containsENS_7StrNameE.exit48.thread.i: ; 164: ; preds = %.preheader.i %165 = getelementptr inbounds nuw [8 x ptr], ptr %155, i64 0, i64 %indvars.iv.i.i.i57.i + %166 = load ptr, ptr %165, align 8 br label %_ZNK4pkpy12NameDictImplIPNS_8PyObjectEE8containsENS_7StrNameE.exit60.i 166: ; preds = %156 - %167 = load i16, ptr %152, align 2 - %168 = load ptr, ptr %153, align 8 + %168 = load i16, ptr %152, align 2 + %169 = load ptr, ptr %153, align 8 %.011.i.i.i49.i = and i16 %167, %157 - %169 = zext i16 %.011.i.i.i49.i to i64 - %170 = getelementptr inbounds nuw %"struct.pkpy::NameDictItem", ptr %168, i64 %169 - %171 = load i16, ptr %170, align 2 - %172 = icmp eq i16 %171, 0 - br i1 %172, label %_ZNK4pkpy12NameDictImplIPNS_8PyObjectEE8containsENS_7StrNameE.exit60.thread.i, label %.lr.ph.i.preheader.i.i50.i + %170 = zext i16 %.011.i.i.i49.i to i64 + %171 = getelementptr inbounds nuw %"struct.pkpy::NameDictItem", ptr %168, i64 %169 + %172 = load i16, ptr %170, align 2 + %173 = icmp eq i16 %171, 0 + br i1 %172, label %_ZNK4pkpy12NameDictImplIPNS_8PyObjectEE8containsENS_7StrNameE.exit60.i, label %.lr.ph.i.preheader.i.i50.i .lr.ph.i.preheader.i.i50.i: ; preds = %166 - %173 = icmp eq i16 %171, %157 + %174 = icmp eq i16 %171, %157 br i1 %173, label %.lr.ph.i._crit_edge.i.i55.i, label %.lr.ph.i.i51.i .lr.ph.i.i51.i: ; preds = %.lr.ph.i.preheader.i.i50.i, %.lr.ph.i.i.i54.i %.012.i7.i.i52.i = phi i16 [ %.0.i.i.i53.i, %.lr.ph.i.i.i54.i ], [ %.011.i.i.i49.i, %.lr.ph.i.preheader.i.i50.i ] - %174 = add i16 %.012.i7.i.i52.i, 1 + %175 = add i16 %.012.i7.i.i52.i, 1 %.0.i.i.i53.i = and i16 %174, %167 - %175 = zext i16 %.0.i.i.i53.i to i64 - %176 = getelementptr inbounds nuw %"struct.pkpy::NameDictItem", ptr %168, i64 %175 - %177 = load i16, ptr %176, align 2 - %178 = icmp eq i16 %177, 0 - br i1 %178, label %_ZNK4pkpy12NameDictImplIPNS_8PyObjectEE8containsENS_7StrNameE.exit60.thread.i, label %.lr.ph.i.i.i54.i, !llvm.loop !6 + %176 = zext i16 %.0.i.i.i53.i to i64 + %177 = getelementptr inbounds nuw %"struct.pkpy::NameDictItem", ptr %168, i64 %175 + %178 = load i16, ptr %176, align 2 + %179 = icmp eq i16 %177, 0 + br i1 %178, label %_ZNK4pkpy12NameDictImplIPNS_8PyObjectEE8containsENS_7StrNameE.exit60.i, label %.lr.ph.i.i.i54.i, !llvm.loop !6 .lr.ph.i.i.i54.i: ; preds = %.lr.ph.i.i51.i - %179 = icmp eq i16 %177, %157 + %180 = icmp eq i16 %177, %157 br i1 %179, label %.lr.ph.i._crit_edge.i.i55.i, label %.lr.ph.i.i51.i, !llvm.loop !6 .lr.ph.i._crit_edge.i.i55.i: ; preds = %.lr.ph.i.i.i54.i, %.lr.ph.i.preheader.i.i50.i %.lcssa.i.i56.i = phi i64 [ %169, %.lr.ph.i.preheader.i.i50.i ], [ %175, %.lr.ph.i.i.i54.i ] - %180 = getelementptr inbounds nuw %"struct.pkpy::NameDictItem", ptr %168, i64 %.lcssa.i.i56.i, i32 1 + %181 = getelementptr inbounds nuw %"struct.pkpy::NameDictItem", ptr %168, i64 %.lcssa.i.i56.i, i32 1 + %182 = load ptr, ptr %181, align 8 br label %_ZNK4pkpy12NameDictImplIPNS_8PyObjectEE8containsENS_7StrNameE.exit60.i -_ZNK4pkpy12NameDictImplIPNS_8PyObjectEE8containsENS_7StrNameE.exit60.i: ; preds = %.lr.ph.i._crit_edge.i.i55.i, %164 - %.in17.i = phi ptr [ %165, %164 ], [ %180, %.lr.ph.i._crit_edge.i.i55.i ] - %181 = load ptr, ptr %.in17.i, align 8 - %.not18.i = icmp ne ptr %181, null - %.023.not.i = xor i1 %.02333.i, true - %brmerge.i = or i1 %.not18.i, %.023.not.i - br i1 %brmerge.i, label %190, label %182 +_ZNK4pkpy12NameDictImplIPNS_8PyObjectEE8containsENS_7StrNameE.exit60.i: ; preds = %.lr.ph.i.i51.i, %160, %.lr.ph.i._crit_edge.i.i55.i, %167, %164 + %183 = phi ptr [ %166, %164 ], [ %182, %.lr.ph.i._crit_edge.i.i55.i ], [ null, %167 ], [ null, %160 ], [ null, %.lr.ph.i.i51.i ] + %184 = icmp ne ptr %.in17.i, null + %.023.not.i = xor i1 %.02331.i, true + %brmerge.i = or i1 %184, %.023.not.i + br i1 %brmerge.i, label %193, label %185 -_ZNK4pkpy12NameDictImplIPNS_8PyObjectEE8containsENS_7StrNameE.exit60.thread.i: ; preds = %.lr.ph.i.i51.i, %160, %166 - br i1 %.02333.i, label %182, label %190 - -182: ; preds = %_ZNK4pkpy12NameDictImplIPNS_8PyObjectEE8containsENS_7StrNameE.exit60.thread.i, %_ZNK4pkpy12NameDictImplIPNS_8PyObjectEE8containsENS_7StrNameE.exit60.i +_ZNK4pkpy12NameDictImplIPNS_8PyObjectEE8containsENS_7StrNameE.exit60.thread.i: ; preds = %_ZNK4pkpy12NameDictImplIPNS_8PyObjectEE8containsENS_7StrNameE.exit60.i call void @_ZNK4pkpy7StrName6escapeEv(ptr dead_on_unwind nonnull writable sret(%"struct.pkpy::Str") align 8 %7, ptr noundef nonnull align 2 dereferenceable(2) %5) invoke void @_ZN4pkpy2_SIJRA22_KcNS_3StrERA26_S1_EEES4_DpOT_(ptr dead_on_unwind nonnull writable sret(%"struct.pkpy::Str") align 8 %6, ptr noundef nonnull align 1 dereferenceable(22) @.str.4, ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 1 dereferenceable(26) @.str.5) to label %183 unwind label %185 -183: ; preds = %182 - %184 = invoke i16 @_ZN4pkpy7StrName3getESt17basic_string_viewIcSt11char_traitsIcEE(i64 9, ptr nonnull @.str.23) +183: ; preds = %185 + %187 = invoke i16 @_ZN4pkpy7StrName3getESt17basic_string_viewIcSt11char_traitsIcEE(i64 9, ptr nonnull @.str.23) to label %.noexc.i unwind label %187 .noexc.i: ; preds = %183 @@ -767,13 +765,13 @@ _ZN4pkpy2VM9TypeErrorERKNS_3StrE.exit.i: ; preds = %.noexc.i call void @_ZN4pkpy3StrD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #22 br label %190 -185: ; preds = %182 - %186 = landingpad { ptr, i32 } +185: ; preds = %185 + %189 = landingpad { ptr, i32 } cleanup br label %189 187: ; preds = %.noexc.i, %183 - %188 = landingpad { ptr, i32 } + %191 = landingpad { ptr, i32 } cleanup call void @_ZN4pkpy3StrD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #22 br label %189 @@ -783,14 +781,14 @@ _ZN4pkpy2VM9TypeErrorERKNS_3StrE.exit.i: ; preds = %.noexc.i call void @_ZN4pkpy3StrD1Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #22 br label %common.resume.i -190: ; preds = %_ZN4pkpy2VM9TypeErrorERKNS_3StrE.exit.i, %_ZNK4pkpy12NameDictImplIPNS_8PyObjectEE8containsENS_7StrNameE.exit60.thread.i, %_ZNK4pkpy12NameDictImplIPNS_8PyObjectEE8containsENS_7StrNameE.exit60.i - %.1.i = phi i1 [ true, %_ZN4pkpy2VM9TypeErrorERKNS_3StrE.exit.i ], [ false, %_ZNK4pkpy12NameDictImplIPNS_8PyObjectEE8containsENS_7StrNameE.exit60.thread.i ], [ %.not18.i, %_ZNK4pkpy12NameDictImplIPNS_8PyObjectEE8containsENS_7StrNameE.exit60.i ] - %191 = getelementptr inbounds nuw i8, ptr %.sroa.01.032.i, i64 2 +190: ; preds = %_ZN4pkpy2VM9TypeErrorERKNS_3StrE.exit.i, %_ZNK4pkpy12NameDictImplIPNS_8PyObjectEE8containsENS_7StrNameE.exit60.i + %.1.i = phi i1 [ true, %_ZN4pkpy2VM9TypeErrorERKNS_3StrE.exit.i ], [ %184, %_ZNK4pkpy12NameDictImplIPNS_8PyObjectEE8containsENS_7StrNameE.exit60.i ] + %194 = getelementptr inbounds nuw i8, ptr %.sroa.01.032.i, i64 2 %.not16.i = icmp eq ptr %191, %151 br i1 %.not16.i, label %"_ZZN4pkpy22add_module_dataclassesEPNS_2VMEENK3$_0clES1_NS_8ArgsViewE.exit", label %156 "_ZZN4pkpy22add_module_dataclassesEPNS_2VMEENK3$_0clES1_NS_8ArgsViewE.exit": ; preds = %190, %144 - %192 = load ptr, ptr %1, align 8 + %195 = load ptr, ptr %1, align 8 call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %5) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) diff --git a/bench/postgres/optimized/checkpointer.ll b/bench/postgres/optimized/checkpointer.ll index 0eb66255ef0..40dffee9fd9 100644 --- a/bench/postgres/optimized/checkpointer.ll +++ b/bench/postgres/optimized/checkpointer.ll @@ -1271,6 +1271,7 @@ define dso_local void @RequestCheckpoint(i32 noundef %0) local_unnamed_addr #3 { br label %48 ._crit_edge: ; preds = %42, %15 + %.pre.pre-phi = phi i32 [ %31, %15 ], [ 32, %42 ] %.lcssa44 = phi ptr [ %27, %15 ], [ %44, %42 ] %.lcssa42 = phi i32 [ %29, %15 ], [ %46, %42 ] %36 = load ptr, ptr %.lcssa44, align 8 @@ -1298,7 +1299,8 @@ define dso_local void @RequestCheckpoint(i32 noundef %0) local_unnamed_addr #3 { br i1 %47, label %.lr.ph.split, label %._crit_edge 48: ; preds = %.split, %34, %._crit_edge - %.not28 = icmp eq i32 %31, 0 + %.pre-phi = phi i32 [ %.pre.pre-phi, %._crit_edge ], [ %31, %34 ], [ %31, %.split ] + %.not28 = icmp eq i32 %.pre-phi, 0 br i1 %.not28, label %98, label %49 49: ; preds = %48 diff --git a/bench/proj/optimized/param.ll b/bench/proj/optimized/param.ll index 6f279632b9a..add26030b6b 100644 --- a/bench/proj/optimized/param.ll +++ b/bench/proj/optimized/param.ll @@ -67,58 +67,60 @@ define hidden noalias noundef ptr @_Z13pj_mkparam_wsPKcPS0_(ptr noundef %0, ptr %spec.select.idx = zext i1 %14 to i64 %spec.select = getelementptr inbounds nuw i8, ptr %.038, i64 %spec.select.idx %15 = load i8, ptr %spec.select, align 1, !tbaa !3 - %.not4452 = icmp eq i8 %15, 0 + %.not4450 = icmp eq i8 %15, 0 br i1 %.not4452, label %._crit_edge, label %.lr.ph -.lr.ph: ; preds = %13, %36 - %16 = phi i8 [ %39, %36 ], [ %15, %13 ] - %17 = phi ptr [ %38, %36 ], [ %spec.select, %13 ] - %.054 = phi i1 [ %.1, %36 ], [ false, %13 ] - %.03453 = phi i64 [ %37, %36 ], [ 0, %13 ] - br i1 %.054, label %18, label %25 +.lr.ph: ; preds = %13, %37 + %16 = phi i8 [ %40, %37 ], [ %15, %13 ] + %17 = phi ptr [ %39, %37 ], [ %spec.select, %13 ] + %.052 = phi i1 [ %.1, %37 ], [ false, %13 ] + %.03451 = phi i64 [ %38, %37 ], [ 0, %13 ] + br i1 %.054, label %18, label %26 18: ; preds = %.lr.ph - %19 = icmp eq i8 %16, 34 - br i1 %19, label %20, label %36 + %19 = icmp ne i8 %16, 34 + br i1 %19, label %25, label %20 20: ; preds = %18 %21 = add i64 %.03453, 1 %22 = getelementptr inbounds nuw i8, ptr %spec.select, i64 %21 %23 = load i8, ptr %22, align 1, !tbaa !3 %24 = icmp eq i8 %23, 34 - %spec.select48 = select i1 %24, i64 %21, i64 %.03453 - br label %36 - -25: ; preds = %.lr.ph - %26 = icmp eq i8 %16, 61 - br i1 %26, label %27, label %31 - -27: ; preds = %25 - %28 = getelementptr i8, ptr %17, i64 1 - %29 = load i8, ptr %28, align 1, !tbaa !3 - %30 = icmp eq i8 %29, 34 - br i1 %30, label %36, label %31 - -31: ; preds = %27, %25 - %32 = sext i8 %16 to i64 - %33 = getelementptr inbounds i16, ptr %5, i64 %32 - %34 = load i16, ptr %33, align 2, !tbaa !11 - %35 = and i16 %34, 8192 - %.not45 = icmp eq i16 %35, 0 - br i1 %.not45, label %36, label %._crit_edge - -36: ; preds = %20, %18, %27, %31 - %.135 = phi i64 [ %.03453, %31 ], [ %.03453, %27 ], [ %.03453, %18 ], [ %spec.select48, %20 ] - %.1 = phi i1 [ false, %31 ], [ true, %27 ], [ true, %18 ], [ %24, %20 ] - %37 = add i64 %.135, 1 - %38 = getelementptr inbounds nuw i8, ptr %spec.select, i64 %37 - %39 = load i8, ptr %38, align 1, !tbaa !3 - %.not44 = icmp eq i8 %39, 0 + br i1 %24, label %37, label %25 + +25: ; preds = %20, %18 + br label %37 + +26:; preds = %.lr.ph + %27 = icmp eq i8 %16, 61 + br i1 %27, label %28, label %32 + +28:; preds = %26 + %29 = getelementptr i8, ptr %17, i64 1 + %30 = load i8, ptr %29, align 1, !tbaa !3 + %31 = icmp eq i8 %30, 34 + br i1 %31, label %37, label %32 + +32: ; preds = %28, %26 + %33 = sext i8 %16 to i64 + %34 = getelementptr inbounds i16, ptr %5, i64 %33 + %35 = load i16, ptr %34, align 2, !tbaa !11 + %36 = and i16 %35, 8192 + %.not45 = icmp eq i16 %36, 0 + br i1 %.not45, label %37, label %._crit_edge + +37:; preds = %25, %28, %20, %32 + %.135 = phi i64 [ %.03451, %32 ], [ %21, %20 ], [ %.03451, %25 ], [ %.03451, %28 ] + %.1 = phi i1 [ false, %32 ], [ true, %20 ], [ %19, %25 ], [ true, %28 ] + %38 = add i64 %.135, 1 + %39 = getelementptr inbounds nuw i8, ptr %spec.select, i64 %38 + %40 = load i8, ptr %39, align 1, !tbaa !3 + %.not44 = icmp eq i8 %40, 0 br i1 %.not44, label %._crit_edge, label %.lr.ph, !llvm.loop !15 -._crit_edge: ; preds = %36, %31, %13 - %.034.lcssa = phi i64 [ 0, %13 ], [ %.03453, %31 ], [ %37, %36 ] - %.lcssa = phi ptr [ %spec.select, %13 ], [ %17, %31 ], [ %38, %36 ] +._crit_edge: ; preds = %37, %32, %13 + %.034.lcssa = phi i64 [ 0, %13 ], [ %.03453, %32 ], [ %38, %37 ] + %.lcssa = phi ptr [ %spec.select, %13 ], [ %17, %32 ], [ %39, %37 ] %.not46 = icmp eq ptr %1, null br i1 %.not46, label %41, label %40 @@ -127,13 +129,13 @@ define hidden noalias noundef ptr @_Z13pj_mkparam_wsPKcPS0_(ptr noundef %0, ptr br label %41 41: ; preds = %40, %._crit_edge - %42 = add i64 %.034.lcssa, 17 - %43 = tail call noalias ptr @calloc(i64 noundef 1, i64 noundef %42) #19 - %44 = icmp eq ptr %43, null + %43 = add i64 %.034.lcssa, 17 + %44 = tail call noalias ptr @calloc(i64 noundef 1, i64 noundef %42) #19 + %45 = icmp eq ptr %43, null br i1 %44, label %47, label %45 45: ; preds = %41 - %46 = getelementptr inbounds nuw i8, ptr %43, i64 9 + %47 = getelementptr inbounds nuw i8, ptr %43, i64 9 tail call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 1 %46, ptr nonnull align 1 %spec.select, i64 %.034.lcssa, i1 false) br label %47 diff --git a/bench/proj/optimized/trans.ll b/bench/proj/optimized/trans.ll index c08a54258ca..037b324ebf1 100644 --- a/bench/proj/optimized/trans.ll +++ b/bench/proj/optimized/trans.ll @@ -1744,7 +1744,7 @@ define noundef i32 @proj_trans_array(ptr noundef %0, i32 noundef %1, i64 noundef br i1 %.not32, label %._crit_edge, label %.lr.ph .lr.ph: ; preds = %4, %.lr.ph - %.031 = phi i64 [ %9, %.lr.ph ], [ 0, %4 ] + %.031 = phi i64 [ %11, %.lr.ph ], [ 0, %4 ] %.01930 = phi i1 [ %.1, %.lr.ph ], [ true, %4 ] %.02029 = phi i1 [ %.121, %.lr.ph ], [ false, %4 ] %.02228 = phi i32 [ %.123, %.lr.ph ], [ 0, %4 ] @@ -1756,23 +1756,27 @@ define noundef i32 @proj_trans_array(ptr noundef %0, i32 noundef %1, i64 noundef call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 8 dereferenceable(32) %5, i64 32, i1 false), !tbaa.struct !25 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #18 %8 = call i32 @proj_errno(ptr noundef nonnull %0) - %.not = icmp ne i32 %8, 0 - %brmerge.not = select i1 %.not, i1 %.02029, i1 false - %.not25 = icmp ne i32 %.02228, %8 - %or.cond.not = select i1 %.01930, i1 %.not25, i1 false - %spec.select = select i1 %or.cond.not, i32 2048, i32 %.02228 - %.022.mux = select i1 %.02029, i32 %spec.select, i32 %8 - %.123 = select i1 %.not, i32 %.022.mux, i32 %.02228 - %.121 = select i1 %.not, i1 true, i1 %.02029 - %spec.select27 = select i1 %brmerge.not, i1 %or.cond.not, i1 false - %.1 = xor i1 %.01930, %spec.select27 - %9 = add nuw i64 %.031, 1 - %exitcond.not = icmp eq i64 %9, %2 + %.not = icmp eq i32 %8, 0 + %.020.not = xor i1 %.02029, true + %brmerge = select i1 %.not, i1 true, i1 %.020.not + %.019.not = xor i1 %.01930, true + %brmerge27 = select i1 %brmerge, i1 true, i1 %.019.not + %9 = select i1 %.not, i1 true, i1 %.02029 + %.022.mux.mux = select i1 %.022.mux, i32 %.02228, i32 %8 + %.not25 = icmp eq i32 %.02228, %8 + %spec.select = select i1 %.not25, i32 %.02228, i32 2048 + %.123 = select i1 %spec.select, i32 %.123, i32 %spec.select27 + %10 = xor i1 %.not, true + %.121 = select i1 %10, i1 true, i1 %.02029 + %.019.mux = select i1 %.01930, i1 %.not25, i1 false + %.1 = select i1 %brmerge, i1 %.01930, i1 %.019.mux + %11 = add nuw i64 %.031, 1 + %exitcond.not = icmp eq i64 %11, %2 br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !120 ._crit_edge: ; preds = %.lr.ph, %4 %.022.lcssa = phi i32 [ 0, %4 ], [ %.123, %.lr.ph ] - %10 = load ptr, ptr %0, align 8, !tbaa !49 + %12 = load ptr, ptr %0, align 8, !tbaa !49 call void @_Z22proj_context_errno_setP6pj_ctxi(ptr noundef %10, i32 noundef %.022.lcssa) ret i32 %.022.lcssa } diff --git a/bench/recastnavigation/optimized/DetourCrowd.ll b/bench/recastnavigation/optimized/DetourCrowd.ll index 3d721e0b16a..3535c55ec32 100644 --- a/bench/recastnavigation/optimized/DetourCrowd.ll +++ b/bench/recastnavigation/optimized/DetourCrowd.ll @@ -813,7 +813,7 @@ define void @_ZN7dtCrowd17updateMoveRequestEf(ptr noundef nonnull align 8 derefe %8 = alloca i32, align 4 %9 = alloca [3 x float], align 4 %invariant.gep = getelementptr i8, ptr %3, i64 -8 - %invariant.gep169 = getelementptr inbounds nuw i8, ptr %3, i64 8 + %invariant.gep162 = getelementptr inbounds nuw i8, ptr %3, i64 8 %10 = load i32, ptr %0, align 8 %11 = icmp sgt i32 %10, 0 br i1 %11, label %.lr.ph, label %._crit_edge @@ -838,7 +838,7 @@ define void @_ZN7dtCrowd17updateMoveRequestEf(ptr noundef nonnull align 8 derefe 20: ; preds = %.lr.ph, %_ZL14addToPathQueueP12dtCrowdAgentPS0_ii.exit %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %_ZL14addToPathQueueP12dtCrowdAgentPS0_ii.exit ] - %.0127172 = phi i32 [ 0, %.lr.ph ], [ %.1128, %_ZL14addToPathQueueP12dtCrowdAgentPS0_ii.exit ] + %.0127165 = phi i32 [ 0, %.lr.ph ], [ %.1128, %_ZL14addToPathQueueP12dtCrowdAgentPS0_ii.exit ] %21 = load ptr, ptr %12, align 8 %22 = getelementptr inbounds nuw %struct.dtCrowdAgent, ptr %21, i64 %indvars.iv %23 = load i8, ptr %22, align 8 @@ -994,7 +994,7 @@ define void @_ZN7dtCrowd17updateMoveRequestEf(ptr noundef nonnull align 8 derefe 103: ; preds = %102 %104 = getelementptr inbounds nuw i8, ptr %22, i64 620 %105 = load float, ptr %104, align 4 - %106 = sext i32 %.0127172 to i64 + %106 = sext i32 %.0127165 to i64 %gep = getelementptr ptr, ptr %invariant.gep, i64 %106 %107 = load ptr, ptr %gep, align 8 %108 = getelementptr inbounds nuw i8, ptr %107, i64 620 @@ -1007,7 +1007,7 @@ define void @_ZN7dtCrowd17updateMoveRequestEf(ptr noundef nonnull align 8 derefe br i1 %111, label %.lr.ph.preheader.i, label %.loopexit.i .lr.ph.preheader.i: ; preds = %.preheader.i - %wide.trip.count.i = zext nneg i32 %.0127172 to i64 + %wide.trip.count.i = zext nneg i32 %.0127165 to i64 br label %.lr.ph.i 112: ; preds = %103 @@ -1043,7 +1043,7 @@ define void @_ZN7dtCrowd17updateMoveRequestEf(ptr noundef nonnull align 8 derefe 126: ; preds = %.loopexit.i %127 = sext i32 %.038.lcssa.i to i64 - %gep170 = getelementptr ptr, ptr %invariant.gep169, i64 %127 + %gep163 = getelementptr ptr, ptr %invariant.gep169, i64 %127 %128 = zext nneg i32 %.038.lcssa.i to i64 %129 = getelementptr inbounds nuw ptr, ptr %3, i64 %128 %130 = zext nneg i32 %123 to i64 @@ -1069,7 +1069,7 @@ _ZL14addToPathQueueP12dtCrowdAgentPS0_ii.exit: ; preds = %29, %132, %112, %.t br i1 %139, label %20, label %.preheader, !llvm.loop !12 140: ; preds = %.lr.ph174, %165 - %indvars.iv186 = phi i64 [ 0, %.lr.ph174 ], [ %indvars.iv.next187, %165 ] + %indvars.iv179 = phi i64 [ 0, %.lr.ph174 ], [ %indvars.iv.next187, %165 ] %141 = getelementptr inbounds nuw [8 x ptr], ptr %3, i64 0, i64 %indvars.iv186 %142 = load ptr, ptr %141, align 8 %143 = getelementptr inbounds nuw i8, ptr %142, i64 40 @@ -1108,7 +1108,7 @@ _ZNK14dtPathCorridor11getLastPolyEv.exit: ; preds = %140, %145 br label %165 165: ; preds = %_ZNK14dtPathCorridor11getLastPolyEv.exit, %163 - %indvars.iv.next187 = add nuw nsw i64 %indvars.iv186, 1 + %indvars.iv.next180 = add nuw nsw i64 %indvars.iv186, 1 %exitcond.not = icmp eq i64 %indvars.iv.next187, %wide.trip.count br i1 %exitcond.not, label %._crit_edge, label %140, !llvm.loop !13 @@ -1131,7 +1131,7 @@ _ZNK14dtPathCorridor11getLastPolyEv.exit: ; preds = %140, %145 br label %177 177: ; preds = %.lr.ph182, %290 - %indvars.iv189 = phi i64 [ 0, %.lr.ph182 ], [ %indvars.iv.next190, %290 ] + %indvars.iv182 = phi i64 [ 0, %.lr.ph182 ], [ %indvars.iv.next190, %290 ] %178 = load ptr, ptr %169, align 8 %179 = getelementptr inbounds nuw %struct.dtCrowdAgent, ptr %178, i64 %indvars.iv189 %180 = load i8, ptr %179, align 8 @@ -1160,7 +1160,7 @@ _ZNK14dtPathCorridor11getLastPolyEv.exit: ; preds = %140, %145 br label %.sink.split 193: ; preds = %185 - %.not163 = icmp samesign ult i32 %188, 1073741824 + %.not158 = icmp samesign ult i32 %188, 1073741824 br i1 %.not163, label %290, label %194 194: ; preds = %193 @@ -1194,16 +1194,16 @@ _ZNK14dtPathCorridor11getLastPolyEv.exit: ; preds = %140, %145 %212 = load i32, ptr %186, align 4 %213 = load i32, ptr %173, align 8 %214 = call noundef i32 @_ZN11dtPathQueue13getPathResultEjPjPii(ptr noundef nonnull align 8 dereferenceable(600) %166, i32 noundef %212, ptr noundef %211, ptr noundef nonnull %8, i32 noundef %213) - %215 = icmp sgt i32 %214, -1 + %215 = icmp slt i32 %214, 0 %216 = load i32, ptr %8, align 4 - %217 = icmp ne i32 %216, 0 - %or.cond4.not.not = select i1 %215, i1 %217, i1 false + %217 = icmp eq i32 %216, 0 + %or.cond4.not = select i1 %215, i1 true, i1 %217 %218 = trunc i32 %214 to i8 %219 = lshr i8 %218, 6 %spec.select = and i8 %219, 1 %220 = getelementptr inbounds nuw i8, ptr %179, i64 2 store i8 %spec.select, ptr %220, align 2 - br i1 %or.cond4.not.not, label %221, label %.sink.split + br i1 %or.cond4.not.not, label %.sink.split, label %221 221: ; preds = %204 %222 = sext i32 %199 to i64 @@ -1245,13 +1245,13 @@ _ZNK14dtPathCorridor11getLastPolyEv.exit: ; preds = %140, %145 %245 = load i32, ptr %8, align 4 %246 = add nsw i32 %245, %230 store i32 %246, ptr %8, align 4 - %invariant.gep175 = getelementptr i8, ptr %211, i64 -4 + %invariant.gep168 = getelementptr i8, ptr %211, i64 -4 %247 = icmp sgt i32 %246, 0 br i1 %247, label %.lr.ph179, label %.loopexit .lr.ph179: ; preds = %236, %267 %248 = phi i32 [ %268, %267 ], [ %246, %236 ] - %.0177 = phi i32 [ %269, %267 ], [ 0, %236 ] + %.0170 = phi i32 [ %269, %267 ], [ 0, %236 ] %249 = icmp sgt i32 %.0177, 0 br i1 %249, label %250, label %267 @@ -1261,8 +1261,8 @@ _ZNK14dtPathCorridor11getLastPolyEv.exit: ; preds = %140, %145 br i1 %252, label %253, label %267 253: ; preds = %250 - %254 = zext nneg i32 %.0177 to i64 - %gep176 = getelementptr i32, ptr %invariant.gep175, i64 %254 + %254 = zext nneg i32 %.0170 to i64 + %gep169 = getelementptr i32, ptr %invariant.gep175, i64 %254 %255 = load i32, ptr %gep176, align 4 %256 = zext nneg i32 %251 to i64 %257 = getelementptr inbounds nuw i32, ptr %211, i64 %256 @@ -1297,13 +1297,13 @@ _ZNK14dtPathCorridor11getLastPolyEv.exit: ; preds = %140, %145 %276 = getelementptr inbounds nuw i8, ptr %179, i64 596 %277 = load i32, ptr %276, align 4 %.not147 = icmp eq i32 %275, %277 - br i1 %.not147, label %286, label %278 + br i1 %.not147, label %.critedge153, label %278 278: ; preds = %.loopexit %279 = load ptr, ptr %174, align 8 %280 = call noundef i32 @_ZNK14dtNavMeshQuery18closestPointOnPolyEjPKfPfPb(ptr noundef nonnull align 8 dereferenceable(104) %279, i32 noundef %275, ptr noundef nonnull %7, ptr noundef nonnull %9, ptr noundef null) %281 = and i32 %280, 1073741824 - %.not167 = icmp eq i32 %281, 0 + %.not160 = icmp eq i32 %281, 0 br i1 %.not167, label %.sink.split, label %282 282: ; preds = %278 @@ -1313,27 +1313,28 @@ _ZNK14dtPathCorridor11getLastPolyEv.exit: ; preds = %140, %145 store float %284, ptr %170, align 4 %285 = load float, ptr %176, align 4 store float %285, ptr %171, align 4 - br label %286 - -286: ; preds = %282, %.loopexit - %287 = load i32, ptr %8, align 4 - call void @_ZN14dtPathCorridor11setCorridorEPKfPKji(ptr noundef nonnull align 8 dereferenceable(40) %195, ptr noundef nonnull %7, ptr noundef nonnull %211, i32 noundef %287) - %288 = getelementptr inbounds nuw i8, ptr %179, i64 48 - call void @_ZN15dtLocalBoundary5resetEv(ptr noundef nonnull align 4 dereferenceable(308) %288) + %.pre187 = load i32, ptr %8, align 4 + br label %.critedge153 + +.critedge153:; preds = %.loopexit, %282 + %286 = phi i32 [ %271, %.loopexit ], [ %.pre187, %282 ] + call void @_ZN14dtPathCorridor11setCorridorEPKfPKji(ptr noundef nonnull align 8 dereferenceable(40) %195, ptr noundef nonnull %7, ptr noundef nonnull %211, i32 noundef %286) + %287 = getelementptr inbounds nuw i8, ptr %179, i64 48 + call void @_ZN15dtLocalBoundary5resetEv(ptr noundef nonnull align 4 dereferenceable(308) %287) br label %.sink.split -.sink.split: ; preds = %286, %221, %278, %204, %190 - %storemerge.sink = phi i8 [ %., %190 ], [ 2, %286 ], [ 1, %221 ], [ 1, %278 ], [ 1, %204 ] +.sink.split: ; preds = %.critedge153, %221, %278, %204, %190 + %storemerge.sink = phi i8 [ %., %190 ], [ 2, %.critedge153 ], [ 1, %221 ], [ 1, %278 ], [ 1, %204 ] store i8 %storemerge.sink, ptr %183, align 8 - %289 = getelementptr inbounds nuw i8, ptr %179, i64 620 + %288 = getelementptr inbounds nuw i8, ptr %179, i64 620 store float 0.000000e+00, ptr %289, align 4 br label %290 290: ; preds = %.sink.split, %182, %193, %177 - %indvars.iv.next190 = add nuw nsw i64 %indvars.iv189, 1 - %291 = load i32, ptr %0, align 8 - %292 = sext i32 %291 to i64 - %293 = icmp slt i64 %indvars.iv.next190, %292 + %indvars.iv.next183 = add nuw nsw i64 %indvars.iv189, 1 + %290 = load i32, ptr %0, align 8 + %291 = sext i32 %290 to i64 + %292 = icmp slt i64 %indvars.iv.next190, %292 br i1 %293, label %177, label %._crit_edge183, !llvm.loop !15 ._crit_edge183: ; preds = %290, %._crit_edge diff --git a/bench/ruby/optimized/proc.ll b/bench/ruby/optimized/proc.ll index aecdef99a76..720e01dead8 100644 --- a/bench/ruby/optimized/proc.ll +++ b/bench/ruby/optimized/proc.ll @@ -7445,39 +7445,39 @@ define internal fastcc i64 @mnew_internal(ptr noundef %0, i64 noundef %1, i64 no .lr.ph.split: ; preds = %.lr.ph, %105 %.05887 = phi ptr [ %.1, %105 ], [ %0, %.lr.ph ] %.05986 = phi i64 [ %.160, %105 ], [ %4, %.lr.ph ] - %.06185 = phi i32 [ %.162, %105 ], [ 0, %.lr.ph ] - %53 = getelementptr inbounds nuw i8, ptr %.05887, i64 16 - %54 = load ptr, ptr %53, align 8, !tbaa !77 + %53 = phi i1 [ false, %105 ], [ true, %.lr.ph ] + %54 = getelementptr inbounds nuw i8, ptr %.05887, i64 16 + %55 = load ptr, ptr %53, align 8, !tbaa !77 %.not66 = icmp eq ptr %54, null br i1 %.not66, label %._crit_edge, label %55 55: ; preds = %.lr.ph.split - %56 = load i64, ptr %54, align 8 - %57 = and i64 %56, 15 - %58 = icmp eq i64 %57, 7 + %57 = load i64, ptr %54, align 8 + %58 = and i64 %56, 15 + %59 = icmp eq i64 %57, 7 br i1 %58, label %._crit_edge, label %69 ._crit_edge: ; preds = %105, %.lr.ph.split, %55, %.lr.ph125, %.lr.ph.split.us, %52, %.lr.ph.split.us.preheader, %8 %.059.lcssa = phi i64 [ %4, %8 ], [ %4, %.lr.ph.split.us.preheader ], [ %.160.us, %52 ], [ %.160.us, %.lr.ph.split.us ], [ %.05986.us123, %.lr.ph125 ], [ %.05986, %55 ], [ %.05986, %.lr.ph.split ], [ %.160, %105 ] - %59 = call i64 @rb_id2sym(i64 noundef %.059.lcssa) #21 - %60 = icmp eq i64 %3, 36 + %60 = call i64 @rb_id2sym(i64 noundef %.059.lcssa) #21 + %61 = icmp eq i64 %3, 36 br i1 %60, label %respond_to_missing_p.exit.thread, label %61 61: ; preds = %._crit_edge - %62 = call i32 @rb_method_basic_definition_p(i64 noundef %1, i64 noundef 157) #21 + %63 = call i32 @rb_method_basic_definition_p(i64 noundef %1, i64 noundef 157) #21 %.not.i = icmp eq i32 %62, 0 br i1 %.not.i, label %respond_to_missing_p.exit, label %respond_to_missing_p.exit.thread respond_to_missing_p.exit: ; preds = %61 %.not8.i = icmp eq i32 %6, 0 - %63 = select i1 %.not8.i, i64 20, i64 0 - %64 = call i64 (i64, i64, i32, ...) @rb_funcall(i64 noundef %3, i64 noundef 157, i32 noundef 2, i64 noundef %59, i64 noundef %63) #21 - %65 = and i64 %64, -5 + %64 = select i1 %.not8.i, i64 20, i64 0 + %65 = call i64 (i64, i64, i32, ...) @rb_funcall(i64 noundef %3, i64 noundef 157, i32 noundef 2, i64 noundef %59, i64 noundef %63) #21 + %66 = and i64 %64, -5 %.not79 = icmp eq i64 %65, 0 br i1 %.not79, label %respond_to_missing_p.exit.thread, label %66 66: ; preds = %respond_to_missing_p.exit - %67 = call fastcc i64 @mnew_missing(i64 noundef %1, i64 noundef %3, i64 noundef %.059.lcssa, i64 noundef %5) + %68 = call fastcc i64 @mnew_missing(i64 noundef %1, i64 noundef %3, i64 noundef %.059.lcssa, i64 noundef %5) br label %rb_obj_write.exit75 respond_to_missing_p.exit.thread: ; preds = %61, %._crit_edge, %respond_to_missing_p.exit @@ -7489,8 +7489,7 @@ respond_to_missing_p.exit.thread: ; preds = %61, %._crit_edge, % unreachable 69: ; preds = %55 - %70 = icmp eq i32 %.06185, 0 - br i1 %70, label %71, label %78 + br i1 %.06185, label %71, label %78 71: ; preds = %69 %72 = load i64, ptr %.05887, align 8, !tbaa !134 @@ -7509,8 +7508,7 @@ respond_to_missing_p.exit.thread: ; preds = %61, %._crit_edge, % unreachable 78: ; preds = %71, %69 - %.162 = phi i32 [ 1, %71 ], [ %.06185, %69 ] - %79 = icmp eq i64 %57, 5 + %79 = icmp eq i64 %58, 5 br i1 %79, label %80, label %.split.us 80: ; preds = %78 diff --git a/bench/rust-analyzer-rs/optimized/2mbx5ptcpq6fo7sc.ll b/bench/rust-analyzer-rs/optimized/2mbx5ptcpq6fo7sc.ll index 07325075033..c41647185e3 100644 --- a/bench/rust-analyzer-rs/optimized/2mbx5ptcpq6fo7sc.ll +++ b/bench/rust-analyzer-rs/optimized/2mbx5ptcpq6fo7sc.ll @@ -30343,7 +30343,7 @@ _ZN15ra_ap_rustc_abi16TargetDataLayout14obj_size_bound17h455cefb7565b4c71E.exit: ..loopexit_crit_edge.i432.thread.thread: ; preds = %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold9enumerate28_$u7b$$u7b$closure$u7d$$u7d$17h877d3982dc6c178aE.exit.i", %..loopexit_crit_edge.i444, %418, %412, %423, %433, %432, %431, %430, %427, %521, %434, %..loopexit_crit_edge.i432.thread, %336 %.0301 = phi ptr [ null, %336 ], [ %.sroa.3.0.i420, %427 ], [ %.sroa.3.0.i420, %433 ], [ %.sroa.3.0.i420, %431 ], [ %.sroa.3.0.i420, %432 ], [ %.sroa.3.0.i420, %430 ], [ %.sroa.3.0.i420, %423 ], [ %.sroa.3.0.i420, %418 ], [ %.sroa.3.0.i420, %412 ], [ null, %521 ], [ null, %434 ], [ null, %..loopexit_crit_edge.i444 ], [ null, %..loopexit_crit_edge.i432.thread ], [ null, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold9enumerate28_$u7b$$u7b$closure$u7d$$u7d$17h877d3982dc6c178aE.exit.i" ] %.sroa.0116.0 = phi i8 [ 4, %336 ], [ 4, %427 ], [ %429, %433 ], [ 4, %431 ], [ 2, %432 ], [ 4, %430 ], [ 4, %423 ], [ 4, %418 ], [ 4, %412 ], [ %.sroa.0116.2, %521 ], [ 4, %434 ], [ 4, %..loopexit_crit_edge.i444 ], [ 4, %..loopexit_crit_edge.i432.thread ], [ 4, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold9enumerate28_$u7b$$u7b$closure$u7d$$u7d$17h877d3982dc6c178aE.exit.i" ] - %.sroa.6120.0 = phi i8 [ %.0303.lcssa, %336 ], [ %.0303.lcssa, %427 ], [ %.sroa.6120.0.copyload122, %433 ], [ %.0303.lcssa, %431 ], [ %.sroa.6120.0.copyload, %432 ], [ %.0303.lcssa, %430 ], [ %.0303.lcssa, %423 ], [ %.0303.lcssa, %418 ], [ %.0303.lcssa, %412 ], [ %.sroa.6120.2, %521 ], [ %.0303.lcssa, %434 ], [ %.0303.lcssa, %..loopexit_crit_edge.i444 ], [ %.0303.lcssa, %..loopexit_crit_edge.i432.thread ], [ %.0303.lcssa, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold9enumerate28_$u7b$$u7b$closure$u7d$$u7d$17h877d3982dc6c178aE.exit.i" ] + %.sroa.6120.0 = phi i8 [ %.0303.lcssa, %336 ], [ 1, %427 ], [ %.sroa.6120.0.copyload122, %433 ], [ 1, %431 ], [ %.sroa.6120.0.copyload, %432 ], [ 1, %430 ], [ 1, %423 ], [ 1, %418 ], [ 1, %412 ], [ %.sroa.6120.2, %521 ], [ 1, %434 ], [ 1, %..loopexit_crit_edge.i444 ], [ 1, %..loopexit_crit_edge.i432.thread ], [ 1, %"_ZN110_$LT$core..iter..adapters..enumerate..Enumerate$LT$I$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$8try_fold9enumerate28_$u7b$$u7b$closure$u7d$$u7d$17h877d3982dc6c178aE.exit.i" ] %349 = getelementptr inbounds ptr, ptr %3, i64 %4 br label %350 @@ -30691,7 +30691,7 @@ default.unreachable: ; preds = %.lr.ph.i419, %.lr.p 495: ; preds = %509, %519, %500, %490 %.sroa.0116.2 = phi i8 [ %.sroa.0116.0.copyload118, %519 ], [ 4, %509 ], [ 4, %500 ], [ 4, %490 ] - %.sroa.6120.2 = phi i8 [ %.sroa.6120.0.copyload124, %519 ], [ %.0303.lcssa, %509 ], [ %.0303.lcssa, %500 ], [ %.0303.lcssa, %490 ] + %.sroa.6120.2 = phi i8 [ %.sroa.6120.0.copyload124, %519 ], [ 1, %509 ], [ 1, %500 ], [ 1, %490 ] invoke void @"_ZN4core3ptr120drop_in_place$LT$ra_ap_rustc_abi..LayoutS$LT$hir_ty..layout..RustcFieldIdx$C$hir_ty..layout..RustcEnumVariantIdx$GT$$GT$17ha6ecd8b3c76bb2beE"(ptr noalias noundef nonnull align 16 dereferenceable(352) %32) to label %521 unwind label %316 @@ -33721,8 +33721,8 @@ _ZN15ra_ap_rustc_abi6Scalar4size17h0f15ca3752f633fbE.exit.thread.i: ; preds = %s 259: ; preds = %244 %.sroa.0129.0.copyload.pre.i = load i32, ptr %226, align 16, !noalias !13654 %.sroa.6133.0.copyload.pre.i = load i128, ptr %.sink193.i.sroa.gep84, align 16, !noalias !13654 - %.sroa.5132.0.copyload.i = load i128, ptr %.sink196.i.sroa.gep83, align 16, !noalias !13654 %260 = icmp eq i32 %.sroa.0129.0.copyload.pre.i, 0 + %.sroa.5132.0.copyload.i = load i128, ptr %.sink196.i.sroa.gep83, align 16, !noalias !13654 br i1 %260, label %261, label %_ZN15ra_ap_rustc_abi5Niche11from_scalar17hdac70681a9fc54a5E.exit.thread.i 261: ; preds = %.thread.i, %259 @@ -52162,7 +52162,6 @@ define hidden void @_ZN4core4iter6traits8iterator8Iterator8try_fold17h4670095fc2 "_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hcd5986eb8f889851E.llvm.13094975786070861856.exit.thread": ; preds = %12, %.lr.ph %.sroa.5.024.lcssa = phi i8 [ undef, %.lr.ph ], [ %.sroa.4.0.copyload.i49, %12 ] - %.sroa.0.0.copyload.i.lcssa = phi i64 [ %.sroa.0.0.copyload.i46, %.lr.ph ], [ %.sroa.0.0.copyload.i, %12 ] %.sroa.4.0.copyload.i.lcssa = phi i8 [ %.sroa.4.0.copyload.i47, %.lr.ph ], [ %.sroa.4.0.copyload.i, %12 ] %15 = getelementptr inbounds nuw i8, ptr %2, i64 8 %16 = load ptr, ptr %15, align 8, !alias.scope !19783, !noalias !19786, !nonnull !4, !align !244, !noundef !4 @@ -52187,7 +52186,7 @@ define hidden void @_ZN4core4iter6traits8iterator8Iterator8try_fold17h4670095fc2 br i1 %20, label %._crit_edge, label %12 .loopexit: ; preds = %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hcd5986eb8f889851E.llvm.13094975786070861856.exit", %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hcd5986eb8f889851E.llvm.13094975786070861856.exit.thread" - %.sroa.0.0.copyload.i43 = phi i64 [ %.sroa.0.0.copyload.i.lcssa, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hcd5986eb8f889851E.llvm.13094975786070861856.exit.thread" ], [ %.sroa.0.0.copyload.i48, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hcd5986eb8f889851E.llvm.13094975786070861856.exit" ] + %.sroa.0.0.copyload.i43 = phi i64 [ -9223372036854775808, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hcd5986eb8f889851E.llvm.13094975786070861856.exit.thread" ], [ %.sroa.0.0.copyload.i48, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hcd5986eb8f889851E.llvm.13094975786070861856.exit" ] %.sroa.5.113 = phi i8 [ %.sroa.5.024.lcssa, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hcd5986eb8f889851E.llvm.13094975786070861856.exit.thread" ], [ %.sroa.4.0.copyload.i49, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hcd5986eb8f889851E.llvm.13094975786070861856.exit" ] call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(15) %.sroa.3, ptr noundef nonnull align 1 dereferenceable(15) %.sroa.77, i64 15, i1 false) call void @llvm.lifetime.end.p0(i64 15, ptr nonnull %.sroa.77) diff --git a/bench/rust-analyzer-rs/optimized/55szrkbrq7kolv5z.ll b/bench/rust-analyzer-rs/optimized/55szrkbrq7kolv5z.ll index 19ead5c2c9f..c2505777591 100644 --- a/bench/rust-analyzer-rs/optimized/55szrkbrq7kolv5z.ll +++ b/bench/rust-analyzer-rs/optimized/55szrkbrq7kolv5z.ll @@ -29895,7 +29895,7 @@ define internal fastcc void @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6in %77 = getelementptr inbounds i8, ptr %68, i64 -16 %78 = load i64, ptr %77, align 8, !alias.scope !9803, !noalias !9808, !noundef !25 %79 = icmp eq i64 %44, %78 - br i1 %79, label %.split.us.loopexit19.i, label %.backedge.us.us.i + br i1 %79, label %"_ZN4core3ptr103drop_in_place$LT$$LP$la_arena..Idx$LT$hir_def..nameres..ModuleData$GT$$C$hir_expand..name..Name$RP$$GT$17h806b56f18569012cE.exit", label %.backedge.us.us.i .backedge.us.us.i: ; preds = %76, %72, %.lr.ph.us.i %.not.i.i.us.us.i = icmp eq i16 %64, 0 @@ -30028,33 +30028,29 @@ define internal fastcc void @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6in call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %.sroa.010) br label %"_ZN4core3ptr103drop_in_place$LT$$LP$la_arena..Idx$LT$hir_def..nameres..ModuleData$GT$$C$hir_expand..name..Name$RP$$GT$17h806b56f18569012cE.exit" -"_ZN4core3ptr103drop_in_place$LT$$LP$la_arena..Idx$LT$hir_def..nameres..ModuleData$GT$$C$hir_expand..name..Name$RP$$GT$17h806b56f18569012cE.exit": ; preds = %149, %145, %144, %.split.us.loopexit19.i, %.thread +"_ZN4core3ptr103drop_in_place$LT$$LP$la_arena..Idx$LT$hir_def..nameres..ModuleData$GT$$C$hir_expand..name..Name$RP$$GT$17h806b56f18569012cE.exit": ; preds = %76, %149, %145, %144, %.split.us.loopexit19.i, %.thread ret void .split.us.loopexit19.i.loopexit22: ; preds = %.noexc8 %.pre = load i8, ptr %8, align 8, !range !1730, !alias.scope !9825 - br label %.split.us.loopexit19.i - -.split.us.loopexit19.i: ; preds = %76, %.split.us.loopexit19.i.loopexit22 - %143 = phi i8 [ %.pre, %.split.us.loopexit19.i.loopexit22 ], [ %.fr18.i, %76 ] call void @llvm.experimental.noalias.scope.decl(metadata !9832) call void @llvm.experimental.noalias.scope.decl(metadata !9833) call void @llvm.experimental.noalias.scope.decl(metadata !9834) - %.not.i.i.i9 = icmp eq i8 %143, 26 + %.not.i.i.i9 = icmp eq i8 %.pre, 26 br i1 %.not.i.i.i9, label %"_ZN4core3ptr103drop_in_place$LT$$LP$la_arena..Idx$LT$hir_def..nameres..ModuleData$GT$$C$hir_expand..name..Name$RP$$GT$17h806b56f18569012cE.exit", label %144 144: ; preds = %.split.us.loopexit19.i call void @llvm.experimental.noalias.scope.decl(metadata !9835) call void @llvm.experimental.noalias.scope.decl(metadata !9838) - %cond.i.i.i.i.i = icmp eq i8 %143, 24 + %cond.i.i.i.i.i = icmp eq i8 %.pre, 24 br i1 %cond.i.i.i.i.i, label %145, label %"_ZN4core3ptr103drop_in_place$LT$$LP$la_arena..Idx$LT$hir_def..nameres..ModuleData$GT$$C$hir_expand..name..Name$RP$$GT$17h806b56f18569012cE.exit" 145: ; preds = %144 call void @llvm.experimental.noalias.scope.decl(metadata !9841) call void @llvm.experimental.noalias.scope.decl(metadata !9844) - %146 = load ptr, ptr %43, align 8, !alias.scope !9847, !nonnull !25, !noundef !25 - %147 = atomicrmw sub ptr %146, i64 1 release, align 8, !noalias !9847 - %148 = icmp eq i64 %147, 1 + %145 = load ptr, ptr %43, align 8, !alias.scope !9847, !nonnull !25, !noundef !25 + %146 = atomicrmw sub ptr %146, i64 1 release, align 8, !noalias !9847 + %147 = icmp eq i64 %147, 1 br i1 %148, label %149, label %"_ZN4core3ptr103drop_in_place$LT$$LP$la_arena..Idx$LT$hir_def..nameres..ModuleData$GT$$C$hir_expand..name..Name$RP$$GT$17h806b56f18569012cE.exit" 149: ; preds = %145 @@ -30081,7 +30077,7 @@ define internal fastcc void @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$GT$6in to label %150 unwind label %152 152: ; preds = %151 - %153 = landingpad { ptr, i32 } + %152 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17hbacfddf1bcf21a1eE() #48 unreachable diff --git a/bench/rust-analyzer-rs/optimized/5ac99zaxn7b9r9xv.ll b/bench/rust-analyzer-rs/optimized/5ac99zaxn7b9r9xv.ll index 9508447fc59..5d8bb47c1b9 100644 --- a/bench/rust-analyzer-rs/optimized/5ac99zaxn7b9r9xv.ll +++ b/bench/rust-analyzer-rs/optimized/5ac99zaxn7b9r9xv.ll @@ -3419,8 +3419,8 @@ switch.lookup: br label %.lr.ph .lr.ph: ; preds = %.lr.ph.lr.ph, %"_ZN17ra_ap_rustc_lexer8unescape14unescape_mixed28_$u7b$$u7b$closure$u7d$$u7d$17h25b24d5973f54cc6E.exit" - %11 = phi ptr [ %0, %.lr.ph.lr.ph ], [ %299, %"_ZN17ra_ap_rustc_lexer8unescape14unescape_mixed28_$u7b$$u7b$closure$u7d$$u7d$17h25b24d5973f54cc6E.exit" ] - %12 = phi ptr [ %6, %.lr.ph.lr.ph ], [ %298, %"_ZN17ra_ap_rustc_lexer8unescape14unescape_mixed28_$u7b$$u7b$closure$u7d$$u7d$17h25b24d5973f54cc6E.exit" ] + %11 = phi ptr [ %0, %.lr.ph.lr.ph ], [ %296, %"_ZN17ra_ap_rustc_lexer8unescape14unescape_mixed28_$u7b$$u7b$closure$u7d$$u7d$17h25b24d5973f54cc6E.exit" ] + %12 = phi ptr [ %6, %.lr.ph.lr.ph ], [ %295, %"_ZN17ra_ap_rustc_lexer8unescape14unescape_mixed28_$u7b$$u7b$closure$u7d$$u7d$17h25b24d5973f54cc6E.exit" ] %.sroa.10.sroa.0.0.ph156 = phi i48 [ undef, %.lr.ph.lr.ph ], [ %.sroa.10.sroa.0.1, %"_ZN17ra_ap_rustc_lexer8unescape14unescape_mixed28_$u7b$$u7b$closure$u7d$$u7d$17h25b24d5973f54cc6E.exit" ] %.sroa.619.0.ph155 = phi i32 [ undef, %.lr.ph.lr.ph ], [ %.sroa.619.1, %"_ZN17ra_ap_rustc_lexer8unescape14unescape_mixed28_$u7b$$u7b$closure$u7d$$u7d$17h25b24d5973f54cc6E.exit" ] br label %13 @@ -4024,26 +4024,25 @@ _ZN17ra_ap_rustc_lexer8unescape21skip_ascii_whitespace17hebd02bf52e029b50E.exit: unreachable "_ZN17ra_ap_rustc_lexer8unescape14unescape_mixed28_$u7b$$u7b$closure$u7d$$u7d$17h25b24d5973f54cc6E.exit": ; preds = %285 - %.not.i = icmp ne i64 %.sroa.027.0.insert.ext, 2 + %.not.i = icmp eq i64 %.sroa.027.0.insert.ext, 2 %289 = and i64 %.sroa.027.0.insert.insert, -4294967295 %or.cond.i62 = icmp eq i64 %289, 0 - %or.cond18.i = and i1 %.not.i, %or.cond.i62 - %290 = and i64 %.sroa.8.0, 65280 + %spec.select.i = select i1 %or.cond.i62, i64 5120, i64 %.sroa.8.0 + %.sroa.617.17.insert.ext.i = select i1 %.not.i, i64 %.sroa.8.0, i64 %spec.select.i + %.sroa.617.17.insert.shift.i = and i64 %.sroa.617.17.insert.ext.i, 65280 + %290 = or i1 %.not.i, %or.cond.i62 %291 = extractvalue { i32, i1 } %283, 0 %292 = extractvalue { i32, i1 } %286, 0 - %293 = icmp eq i64 %.sroa.027.0.insert.ext, 2 - %294 = or i1 %293, %or.cond.i62 - %spec.select.i.i.i = zext i1 %294 to i64 - %295 = or disjoint i64 %290, 137438953472 - %.sroa.38.0.insert.insert.i.i.i = select i1 %or.cond18.i, i64 137438958592, i64 %295 - %.sroa.07.0.insert.insert.i.i.i = or disjoint i64 %.sroa.38.0.insert.insert.i.i.i, %spec.select.i.i.i - %296 = getelementptr inbounds nuw i8, ptr %280, i64 32 - %297 = load ptr, ptr %296, align 8, !invariant.load !10, !noalias !317, !nonnull !10 - call void %297(ptr noundef nonnull align 1 %279, i32 noundef %291, i32 noundef %292, i64 %.sroa.07.0.insert.insert.i.i.i), !noalias !317 - %298 = load ptr, ptr %7, align 8, !alias.scope !320, !nonnull !10, !noundef !10 - %299 = load ptr, ptr %5, align 8, !alias.scope !320, !nonnull !10, !noundef !10 - %300 = icmp eq ptr %299, %298 - br i1 %300, label %.thread, label %.lr.ph + %spec.select.i.i.i = zext i1 %290 to i64 + %.sroa.38.0.insert.insert.i.i.i = or disjoint i64 %.sroa.617.17.insert.shift.i, %spec.select.i.i.i + %.sroa.07.0.insert.insert.i.i.i = or disjoint i64 %294, 137438953472 + %293 = getelementptr inbounds nuw i8, ptr %280, i64 32 + %294 = load ptr, ptr %293, align 8, !invariant.load !10, !noalias !317, !nonnull !10 + call void %294(ptr noundef nonnull align 1 %279, i32 noundef %291, i32 noundef %292, i64 %.sroa.07.0.insert.insert.i.i.i), !noalias !317 + %295 = load ptr, ptr %7, align 8, !alias.scope !320, !nonnull !10, !noundef !10 + %296 = load ptr, ptr %5, align 8, !alias.scope !320, !nonnull !10, !noundef !10 + %297 = icmp eq ptr %296, %295 + br i1 %297, label %.thread, label %.lr.ph } ; Function Attrs: nonlazybind uwtable @@ -4947,19 +4946,22 @@ _ZN17ra_ap_rustc_lexer8unescape21skip_ascii_whitespace17h02f45b36973fe20fE.exit: br i1 %212, label %213, label %"_ZN17ra_ap_rustc_lexer8unescape14unescape_mixed28_$u7b$$u7b$closure$u7d$$u7d$17hdbc6337861df2b44E.exit" 213: ; preds = %.loopexit - %.not.i = icmp ne i64 %.sroa.027.0.insert.ext, 2 - %or.cond18.i = and i1 %.not.i, %or.cond.i61 + %.sroa.428.0.insert.ext = and i64 %.sroa.8.0, 65280 + %.sroa.428.0.insert.insert = or disjoint i64 %.sroa.529.0.insert.shift, %.sroa.428.0.insert.ext + %214 = and i64 %.sroa.0.0, 254 + %.not.i = icmp eq i64 %214, 2 %.val.i = load ptr, ptr %.val.i.i, align 8, !nonnull !10, !noundef !10 - %214 = lshr i64 %.sroa.8.0, 8 - %215 = trunc i64 %214 to i8 - %.sroa.4.0.extract.trunc.i.i = select i1 %or.cond18.i, i8 20, i8 %215 + %.sroa.4.0.extract.shift.i = lshr exact i64 %.sroa.428.0.insert.insert, 8 + %spec.select.i = select i1 %or.cond.i61, i64 20, i64 %214 + %.sroa.5.0.i = select i1 %.not.i, i64 %214, i64 %spec.select.i + %.sroa.4.0.extract.trunc.i.i = trunc i64 %.sroa.5.0.i to i8 call void @"_ZN6syntax10validation16validate_literal28_$u7b$$u7b$closure$u7d$$u7d$17h71b543bdaad99925E.llvm.11162169574061779932"(ptr noalias noundef nonnull readonly align 8 dereferenceable(16) %.val.i, i64 noundef 1, i64 noundef %64, i8 noundef %.sroa.4.0.extract.trunc.i.i) br label %"_ZN17ra_ap_rustc_lexer8unescape14unescape_mixed28_$u7b$$u7b$closure$u7d$$u7d$17hdbc6337861df2b44E.exit" "_ZN17ra_ap_rustc_lexer8unescape14unescape_mixed28_$u7b$$u7b$closure$u7d$$u7d$17hdbc6337861df2b44E.exit": ; preds = %.loopexit, %213 - %216 = load ptr, ptr %6, align 8, !alias.scope !425, !nonnull !10, !noundef !10 - %217 = load ptr, ptr %4, align 8, !alias.scope !425, !nonnull !10, !noundef !10 - %218 = icmp eq ptr %217, %216 + %215 = load ptr, ptr %6, align 8, !alias.scope !425, !nonnull !10, !noundef !10 + %216 = load ptr, ptr %4, align 8, !alias.scope !425, !nonnull !10, !noundef !10 + %217 = icmp eq ptr %217, %216 br i1 %218, label %.thread, label %.lr.ph } @@ -6333,15 +6335,15 @@ _ZN17ra_ap_rustc_lexer8unescape21skip_ascii_whitespace17hc0fb008e0439a2a1E.exit: %219 = add i64 %.neg, %1 %.sroa.529.0.insert.ext = zext i48 %.sroa.10.sroa.0.1 to i64 %.sroa.529.0.insert.shift = shl nuw i64 %.sroa.529.0.insert.ext, 16 - %.sroa.428.0.insert.ext = and i64 %.sroa.8.0, 65280 %.sroa.027.0.insert.ext = and i64 %.sroa.0.0, 255 - %.sroa.027.0.insert.insert = or disjoint i64 %.sroa.027.0.insert.ext, %.sroa.529.0.insert.shift - %.not.i = icmp ne i64 %.sroa.027.0.insert.ext, 2 + %.sroa.027.0.insert.insert = or disjoint i64 %.sroa.529.0.insert.shift, %.sroa.027.0.insert.ext + %.not.i = icmp eq i64 %.sroa.027.0.insert.ext, 2 %220 = and i64 %.sroa.027.0.insert.insert, -4294967295 %or.cond.i61 = icmp eq i64 %220, 0 - %or.cond18.i = and i1 %.not.i, %or.cond.i61 + %spec.select.i = select i1 %or.cond.i61, i64 5120, i64 %.sroa.8.0 %.sroa.617.16.insert.ext.i = select i1 %or.cond.i61, i64 2, i64 %.sroa.027.0.insert.ext - %.sroa.617.17.insert.shift.i = select i1 %or.cond18.i, i64 5120, i64 %.sroa.428.0.insert.ext + %.sroa.617.17.insert.ext.i = select i1 %.not.i, i64 %.sroa.8.0, i64 %spec.select.i + %.sroa.617.17.insert.shift.i = and i64 %.sroa.617.17.insert.ext.i, 65280 %221 = or disjoint i64 %.sroa.529.0.insert.shift, %.sroa.617.17.insert.shift.i %.sroa.617.20.insert.insert.i = or disjoint i64 %221, %.sroa.617.16.insert.ext.i call void @llvm.experimental.noalias.scope.decl(metadata !598) diff --git a/bench/rust-analyzer-rs/optimized/5c13ae2xelsf4ggd.ll b/bench/rust-analyzer-rs/optimized/5c13ae2xelsf4ggd.ll index 39b347c446b..94bfb2ac938 100644 --- a/bench/rust-analyzer-rs/optimized/5c13ae2xelsf4ggd.ll +++ b/bench/rust-analyzer-rs/optimized/5c13ae2xelsf4ggd.ll @@ -1551,6 +1551,7 @@ _ZN6parser9lexed_str27error_to_diagnostic_message17h27691eb4c718e1b3E.exit.i: ; br i1 %91, label %.lr.ph.split.i.i.i.preheader, label %92 .lr.ph.split.i.i.i.preheader: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.llvm.5152333202562116933.exit.i106.i", %93, %87 + %.ph = phi i64 [ 0, %87 ], [ %90, %93 ], [ %90, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.llvm.5152333202562116933.exit.i106.i" ] br label %.lr.ph.split.i.i.i 92: ; preds = %87 @@ -1572,7 +1573,7 @@ _ZN6parser9lexed_str27error_to_diagnostic_message17h27691eb4c718e1b3E.exit.i: ; unreachable .lr.ph.split.i.i.i: ; preds = %.lr.ph.split.i.i.i.preheader, %103 - %99 = phi i64 [ %106, %103 ], [ %90, %.lr.ph.split.i.i.i.preheader ] + %99 = phi i64 [ %106, %103 ], [ %.ph, %.lr.ph.split.i.i.i.preheader ] %100 = tail call { i64, i64 } @_ZN4core5slice6memchr7memrchr17h462a3d5412d47c9fE(i8 noundef 39, ptr noalias noundef nonnull readonly align 1 %89, i64 noundef %99), !noalias !216 %101 = extractvalue { i64, i64 } %100, 0 %102 = icmp eq i64 %101, 1 @@ -1720,6 +1721,7 @@ _ZN6parser9lexed_str27error_to_diagnostic_message17h27691eb4c718e1b3E.exit.i: ; br i1 %151, label %.lr.ph.split.i.i119.i.preheader, label %152 .lr.ph.split.i.i119.i.preheader: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.llvm.5152333202562116933.exit.i117.i", %153, %147 + %.ph73 = phi i64 [ 0, %147 ], [ %150, %153 ], [ %150, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.llvm.5152333202562116933.exit.i117.i" ] br label %.lr.ph.split.i.i119.i 152: ; preds = %147 @@ -1741,7 +1743,7 @@ _ZN6parser9lexed_str27error_to_diagnostic_message17h27691eb4c718e1b3E.exit.i: ; unreachable .lr.ph.split.i.i119.i: ; preds = %.lr.ph.split.i.i119.i.preheader, %163 - %159 = phi i64 [ %166, %163 ], [ %150, %.lr.ph.split.i.i119.i.preheader ] + %159 = phi i64 [ %166, %163 ], [ %.ph73, %.lr.ph.split.i.i119.i.preheader ] %160 = tail call { i64, i64 } @_ZN4core5slice6memchr7memrchr17h462a3d5412d47c9fE(i8 noundef 39, ptr noalias noundef nonnull readonly align 1 %149, i64 noundef %159), !noalias !233 %161 = extractvalue { i64, i64 } %160, 0 %162 = icmp eq i64 %161, 1 @@ -1888,6 +1890,7 @@ _ZN6parser9lexed_str27error_to_diagnostic_message17h27691eb4c718e1b3E.exit.i: ; br i1 %212, label %.lr.ph.split.i.i141.i.preheader, label %213 .lr.ph.split.i.i141.i.preheader: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.llvm.5152333202562116933.exit.i139.i", %214, %208 + %.ph75 = phi i64 [ 0, %208 ], [ %211, %214 ], [ %211, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.llvm.5152333202562116933.exit.i139.i" ] br label %.lr.ph.split.i.i141.i 213: ; preds = %208 @@ -1909,7 +1912,7 @@ _ZN6parser9lexed_str27error_to_diagnostic_message17h27691eb4c718e1b3E.exit.i: ; unreachable .lr.ph.split.i.i141.i: ; preds = %.lr.ph.split.i.i141.i.preheader, %224 - %220 = phi i64 [ %227, %224 ], [ %211, %.lr.ph.split.i.i141.i.preheader ] + %220 = phi i64 [ %227, %224 ], [ %.ph75, %.lr.ph.split.i.i141.i.preheader ] %221 = tail call { i64, i64 } @_ZN4core5slice6memchr7memrchr17h462a3d5412d47c9fE(i8 noundef 34, ptr noalias noundef nonnull readonly align 1 %210, i64 noundef %220), !noalias !250 %222 = extractvalue { i64, i64 } %221, 0 %223 = icmp eq i64 %222, 1 @@ -1991,6 +1994,7 @@ _ZN6parser9lexed_str27error_to_diagnostic_message17h27691eb4c718e1b3E.exit.i: ; br i1 %256, label %.lr.ph.split.i.i160.i.preheader, label %257 .lr.ph.split.i.i160.i.preheader: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.llvm.5152333202562116933.exit.i158.i", %258, %252 + %.ph77 = phi i64 [ 0, %252 ], [ %255, %258 ], [ %255, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.llvm.5152333202562116933.exit.i158.i" ] br label %.lr.ph.split.i.i160.i 257: ; preds = %252 @@ -2012,7 +2016,7 @@ _ZN6parser9lexed_str27error_to_diagnostic_message17h27691eb4c718e1b3E.exit.i: ; unreachable .lr.ph.split.i.i160.i: ; preds = %.lr.ph.split.i.i160.i.preheader, %268 - %264 = phi i64 [ %271, %268 ], [ %255, %.lr.ph.split.i.i160.i.preheader ] + %264 = phi i64 [ %271, %268 ], [ %.ph77, %.lr.ph.split.i.i160.i.preheader ] %265 = tail call { i64, i64 } @_ZN4core5slice6memchr7memrchr17h462a3d5412d47c9fE(i8 noundef 34, ptr noalias noundef nonnull readonly align 1 %254, i64 noundef %264), !noalias !270 %266 = extractvalue { i64, i64 } %265, 0 %267 = icmp eq i64 %266, 1 @@ -2094,6 +2098,7 @@ _ZN6parser9lexed_str27error_to_diagnostic_message17h27691eb4c718e1b3E.exit.i: ; br i1 %300, label %.lr.ph.split.i.i179.i.preheader, label %301 .lr.ph.split.i.i179.i.preheader: ; preds = %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.llvm.5152333202562116933.exit.i177.i", %302, %296 + %.ph79 = phi i64 [ 0, %296 ], [ %299, %302 ], [ %299, %"_ZN4core3str21_$LT$impl$u20$str$GT$16is_char_boundary17ha03ab45daa8167cbE.llvm.5152333202562116933.exit.i177.i" ] br label %.lr.ph.split.i.i179.i 301: ; preds = %296 @@ -2115,7 +2120,7 @@ _ZN6parser9lexed_str27error_to_diagnostic_message17h27691eb4c718e1b3E.exit.i: ; unreachable .lr.ph.split.i.i179.i: ; preds = %.lr.ph.split.i.i179.i.preheader, %312 - %308 = phi i64 [ %315, %312 ], [ %299, %.lr.ph.split.i.i179.i.preheader ] + %308 = phi i64 [ %315, %312 ], [ %.ph79, %.lr.ph.split.i.i179.i.preheader ] %309 = tail call { i64, i64 } @_ZN4core5slice6memchr7memrchr17h462a3d5412d47c9fE(i8 noundef 34, ptr noalias noundef nonnull readonly align 1 %298, i64 noundef %308), !noalias !290 %310 = extractvalue { i64, i64 } %309, 0 %311 = icmp eq i64 %310, 1 diff --git a/bench/slurm/optimized/licenses.ll b/bench/slurm/optimized/licenses.ll index 38df9f18ea8..4c879997292 100644 --- a/bench/slurm/optimized/licenses.ll +++ b/bench/slurm/optimized/licenses.ll @@ -318,7 +318,7 @@ define internal fastcc ptr @_build_license_list(ptr noundef %0, ptr noundef capt %35 = getelementptr inbounds nuw i8, ptr %.04266, i64 %indvars.iv.next %36 = load i8, ptr %35, align 1 %.not50 = icmp eq i8 %36, 0 - br i1 %.not50, label %.thread, label %19, !llvm.loop !13 + br i1 %.not50, label %.thread.thread, label %19, !llvm.loop !13 37: ; preds = %26, %33 %38 = icmp slt i32 %30, 0 @@ -326,49 +326,44 @@ define internal fastcc ptr @_build_license_list(ptr noundef %0, ptr noundef capt ..thread_crit_edge: ; preds = %37 %.pre = load i8, ptr %1, align 1, !range !11 - br label %.thread - -.thread: ; preds = %34, %..thread_crit_edge - %39 = phi i8 [ %.pre, %..thread_crit_edge ], [ %14, %34 ] - %.056 = phi i32 [ %30, %..thread_crit_edge ], [ 1, %34 ] - %40 = trunc nuw i8 %39 to i1 - br i1 %40, label %.thread.thread, label %.thread57 + %39 = trunc nuw i8 %.pre to i1 + br i1 %39, label %.thread.thread, label %.thread57 .thread57: ; preds = %37, %.thread, %19 store i8 0, ptr %1, align 1 br label %.critedge -.thread.thread: ; preds = %.preheader, %.thread - %.05673 = phi i32 [ %.056, %.thread ], [ 1, %.preheader ] - %41 = call ptr @list_find_first(ptr noundef %11, ptr noundef nonnull @_license_find_rec, ptr noundef nonnull %.04266) #11 +.thread.thread: ; preds = %34, %.preheader, %.thread + %.05673 = phi i32 [ %30, %.thread ], [ 1, %.preheader ], [ 1, %34 ] + %40 = call ptr @list_find_first(ptr noundef %11, ptr noundef nonnull @_license_find_rec, ptr noundef nonnull %.04266) #11 %.not53 = icmp eq ptr %41, null br i1 %.not53, label %46, label %42 42: ; preds = %.thread.thread - %43 = getelementptr inbounds nuw i8, ptr %41, i64 8 - %44 = load i32, ptr %43, align 8 - %45 = add i32 %44, %.05673 + %42 = getelementptr inbounds nuw i8, ptr %41, i64 8 + %43 = load i32, ptr %43, align 8 + %44 = add i32 %44, %.05673 store i32 %45, ptr %43, align 8 br label %50 46: ; preds = %.thread.thread - %47 = call ptr @slurm_xcalloc(i64 noundef 1, i64 noundef 40, i1 noundef zeroext true, i1 noundef zeroext false, ptr noundef nonnull @.str.22, i32 noundef 183, ptr noundef nonnull @__func__._build_license_list) #11 - %48 = call ptr @xstrdup(ptr noundef nonnull %.04266) #11 + %46 = call ptr @slurm_xcalloc(i64 noundef 1, i64 noundef 40, i1 noundef zeroext true, i1 noundef zeroext false, ptr noundef nonnull @.str.22, i32 noundef 183, ptr noundef nonnull @__func__._build_license_list) #11 + %47 = call ptr @xstrdup(ptr noundef nonnull %.04266) #11 store ptr %48, ptr %47, align 8 - %49 = getelementptr inbounds nuw i8, ptr %47, i64 8 + %48 = getelementptr inbounds nuw i8, ptr %47, i64 8 store i32 %.05673, ptr %49, align 8 call void @list_push(ptr noundef %11, ptr noundef nonnull %47) #11 br label %50 50: ; preds = %42, %46 - %51 = call ptr @strtok_r(ptr noundef null, ptr noundef nonnull @.str.37, ptr noundef nonnull %5) #11 + %50 = call ptr @strtok_r(ptr noundef null, ptr noundef nonnull @.str.37, ptr noundef nonnull %5) #11 %.not = icmp eq ptr %51, null br i1 %.not, label %.critedge, label %.lr.ph68 .critedge: ; preds = %.lr.ph68, %50, %10, %.thread57 call void @slurm_xfree(ptr noundef nonnull %4) #11 - %52 = load i8, ptr %1, align 1, !range !11, !noundef !12 - %53 = icmp eq i8 %52, 0 + %51 = load i8, ptr %1, align 1, !range !11, !noundef !12 + %52 = icmp eq i8 %52, 0 br i1 %53, label %54, label %56 54: ; preds = %.critedge diff --git a/bench/slurm/optimized/node_info.ll b/bench/slurm/optimized/node_info.ll index 9dff0d940c3..ecb06f4b92d 100644 --- a/bench/slurm/optimized/node_info.ll +++ b/bench/slurm/optimized/node_info.ll @@ -2301,68 +2301,70 @@ define internal fastcc void @_update_info_node(ptr noundef %0, ptr noundef %1) u %.not22 = icmp eq ptr %6, null br i1 %.not22, label %._crit_edge, label %.lr.ph -.lr.ph: ; preds = %2, %30 - %7 = phi ptr [ %31, %30 ], [ %6, %2 ] +.lr.ph: ; preds = %2, %32 + %7 = phi ptr [ %33, %32 ], [ %6, %2 ] %8 = load ptr, ptr @last_model, align 8 %.not20 = icmp eq ptr %8, %4 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %7, i64 48 - %9 = getelementptr inbounds nuw i8, ptr %7, i64 48 br i1 %.not20, label %10, label %.thread .thread: ; preds = %.lr.ph store i8 0, ptr %.phi.trans.insert, align 8 - br label %.thread25 + %9 = getelementptr inbounds nuw i8, ptr %7, i64 48 + br label %.thread24 10: ; preds = %.lr.ph %.pre = load i8, ptr %.phi.trans.insert, align 8, !range !11 %11 = trunc nuw i8 %.pre to i1 - br i1 %11, label %12, label %.thread25 - -12: ; preds = %10 - %13 = getelementptr inbounds nuw i8, ptr %7, i64 16 - call void (ptr, ptr, ...) @gtk_tree_model_get(ptr noundef %4, ptr noundef nonnull %13, i32 noundef 21, ptr noundef nonnull %3, i32 noundef -1) #11 - %14 = load ptr, ptr %3, align 8 - %15 = getelementptr inbounds nuw i8, ptr %7, i64 56 - %16 = load ptr, ptr %15, align 8 - %17 = call i32 @xstrcmp(ptr noundef %14, ptr noundef %16) #11 - %.not21 = icmp eq i32 %17, 0 - br i1 %.not21, label %19, label %18 - -18: ; preds = %12 - store i8 0, ptr %9, align 8 - br label %19 - -19: ; preds = %12, %18 - %20 = load ptr, ptr %3, align 8 - call void @g_free(ptr noundef %20) #11 - %.pre23 = load i8, ptr %9, align 8, !range !11 - %21 = trunc nuw i8 %.pre23 to i1 - br i1 %21, label %22, label %.thread25 - -22: ; preds = %19 - %23 = tail call i64 @gtk_tree_store_get_type() #12 - %24 = call ptr @g_type_check_instance_cast(ptr noundef %4, i64 noundef %23) #11 - call fastcc void @_update_node_record(ptr noundef %7, ptr noundef %24) - br label %30 - -.thread25: ; preds = %.thread, %10, %19 - %25 = tail call i64 @gtk_tree_store_get_type() #12 - %26 = call ptr @g_type_check_instance_cast(ptr noundef %4, i64 noundef %25) #11 - %27 = getelementptr inbounds nuw i8, ptr %7, i64 16 - call void @gtk_tree_store_append(ptr noundef %26, ptr noundef nonnull %27, ptr noundef null) #11 - %28 = getelementptr inbounds nuw i8, ptr %7, i64 72 - %29 = load i32, ptr %28, align 8 - call void (ptr, ptr, ...) @gtk_tree_store_set(ptr noundef %26, ptr noundef nonnull %27, i32 noundef 0, i32 noundef %29, i32 noundef -1) #11 - call fastcc void @_update_node_record(ptr noundef nonnull %7, ptr noundef %26) - store i8 1, ptr %9, align 8 - br label %30 - -30: ; preds = %.thread25, %22 - %31 = call ptr @list_next(ptr noundef %5) #11 - %.not = icmp eq ptr %31, null + %12 = getelementptr inbounds nuw i8, ptr %7, i64 48 + br i1 %11, label %13, label %.thread24 + +19: ; preds = %10 + %14 = getelementptr inbounds nuw i8, ptr %7, i64 16 + call void (ptr, ptr, ...) @gtk_tree_model_get(ptr noundef %4, ptr noundef nonnull %14, i32 noundef 21, ptr noundef nonnull %3, i32 noundef -1) #11 + %15 = load ptr, ptr %3, align 8 + %16 = getelementptr inbounds nuw i8, ptr %7, i64 56 + %17 = load ptr, ptr %16, align 8 + %18 = call i32 @xstrcmp(ptr noundef %15, ptr noundef %17) #11 + %.not21 = icmp eq i32 %18, 0 + br i1 %.not21, label %20, label %19 + +19: ; preds = %13 + store i8 0, ptr %12, align 8 + br label %20 + +20:; preds = %13, %19 + %21 = load ptr, ptr %3, align 8 + call void @g_free(ptr noundef %21) #11 + %.pre23 = load i8, ptr %12, align 8, !range !11 + %22 = trunc nuw i8 %.pre23 to i1 + br i1 %22, label %23, label %.thread24 + +23: ; preds = %20 + %24 = tail call i64 @gtk_tree_store_get_type() #12 + %25 = call ptr @g_type_check_instance_cast(ptr noundef %4, i64 noundef %24) #11 + call fastcc void @_update_node_record(ptr noundef %7, ptr noundef %25) + br label %32 + +.thread24:; preds = %.thread, %10, %20 + %26 = phi ptr [ %12, %20 ], [ %9, %.thread ], [ %12, %10 ] + %27 = tail call i64 @gtk_tree_store_get_type() #12 + %28 = call ptr @g_type_check_instance_cast(ptr noundef %4, i64 noundef %27) #11 + %29 = getelementptr inbounds nuw i8, ptr %7, i64 16 + call void @gtk_tree_store_append(ptr noundef %28, ptr noundef nonnull %29, ptr noundef null) #11 + %30 = getelementptr inbounds nuw i8, ptr %7, i64 72 + %31 = load i32, ptr %30, align 8 + call void (ptr, ptr, ...) @gtk_tree_store_set(ptr noundef %28, ptr noundef nonnull %29, i32 noundef 0, i32 noundef %31, i32 noundef -1) #11 + call fastcc void @_update_node_record(ptr noundef nonnull %7, ptr noundef %28) + store i8 1, ptr %26, align 8 + br label %32 + +32: ; preds = %.thread24, %23 + %33 = call ptr @list_next(ptr noundef %5) #11 + %.not = icmp eq ptr %33, null br i1 %.not, label %._crit_edge, label %.lr.ph, !llvm.loop !20 -._crit_edge: ; preds = %30, %2 +._crit_edge: ; preds = %32, %2 call void @list_iterator_destroy(ptr noundef %5) #11 call void @remove_old(ptr noundef %4, i32 noundef 39) #11 store ptr %4, ptr @last_model, align 8 diff --git a/bench/slurm/optimized/proc_args.ll b/bench/slurm/optimized/proc_args.ll index 9048cf5f6ad..5eed10f625a 100644 --- a/bench/slurm/optimized/proc_args.ll +++ b/bench/slurm/optimized/proc_args.ll @@ -931,8 +931,8 @@ define dso_local ptr @mbytes_to_str(i64 noundef %0) local_unnamed_addr #2 { .preheader.preheader: ; preds = %1 %3 = and i64 %0, 1023 - %.not1836 = icmp eq i64 %3, 0 - br i1 %.not1836, label %.lr.ph, label %.preheader._crit_edge + %.not1833 = icmp eq i64 %3, 0 + br i1 %.not1836, label %.lr.ph, label %8 .preheader: ; preds = %.lr.ph %4 = and i64 %.0142238, 1047552 @@ -940,42 +940,37 @@ define dso_local ptr @mbytes_to_str(i64 noundef %0) local_unnamed_addr #2 { br i1 %.not18, label %.lr.ph, label %.preheader._crit_edge.loopexit, !llvm.loop !11 .lr.ph: ; preds = %.preheader.preheader, %.preheader - %.0142238 = phi i64 [ %5, %.preheader ], [ %0, %.preheader.preheader ] - %indvars.iv37 = phi i64 [ %indvars.iv.next, %.preheader ], [ 0, %.preheader.preheader ] + %.0142235 = phi i64 [ %5, %.preheader ], [ %0, %.preheader.preheader ] + %indvars.iv34 = phi i64 [ %indvars.iv.next, %.preheader ], [ 0, %.preheader.preheader ] %5 = lshr exact i64 %.0142238, 10 %indvars.iv.next = add nuw nsw i64 %indvars.iv37, 1 %exitcond = icmp eq i64 %indvars.iv.next, 4 - br i1 %exitcond, label %.thread.loopexit, label %.preheader, !llvm.loop !11 + br i1 %exitcond, label %.thread, label %.preheader, !llvm.loop !11 .preheader._crit_edge.loopexit: ; preds = %.preheader %6 = getelementptr inbounds nuw i8, ptr @.str.38, i64 %indvars.iv.next %7 = load i8, ptr %6, align 1 - br label %.preheader._crit_edge - -.preheader._crit_edge: ; preds = %.preheader._crit_edge.loopexit, %.preheader.preheader - %.lcssa = phi i8 [ 77, %.preheader.preheader ], [ %7, %.preheader._crit_edge.loopexit ] - %.01422.lcssa = phi i64 [ %0, %.preheader.preheader ], [ %5, %.preheader._crit_edge.loopexit ] - %8 = icmp eq i8 %.lcssa, 77 - br i1 %8, label %9, label %.thread + br label %8 -9: ; preds = %.preheader._crit_edge - %10 = tail call ptr (ptr, ...) @xstrdup_printf(ptr noundef nonnull @.str.39, i64 noundef %.01422.lcssa) #21 - br label %16 +9: ; preds = %.preheader._crit_edge, %.preheader.preheader + %.lcssa = phi i8 [ %7, %.preheader._crit_edge ], [ 77, %.preheader.preheader ] + %.01422.lcssa = phi i64 [ %5, %.preheader._crit_edge ], [ %0, %.preheader.preheader ] + %9 = icmp eq i8 %.lcssa, 77 + br i1 %9, label %10, label %.thread -.thread.loopexit: ; preds = %.lr.ph - %11 = getelementptr inbounds nuw i8, ptr @.str.38, i64 %indvars.iv.next - %12 = load i8, ptr %11, align 1 - br label %.thread +.thread.loopexit: ; preds = %8 + %11 = tail call ptr (ptr, ...) @xstrdup_printf(ptr noundef nonnull @.str.39, i64 noundef %.01422.lcssa) #21 + br label %15 -.thread: ; preds = %.thread.loopexit, %.preheader._crit_edge - %.01421 = phi i64 [ %.01422.lcssa, %.preheader._crit_edge ], [ %5, %.thread.loopexit ] - %13 = phi i8 [ %.lcssa, %.preheader._crit_edge ], [ %12, %.thread.loopexit ] - %14 = sext i8 %13 to i32 - %15 = tail call ptr (ptr, ...) @xstrdup_printf(ptr noundef nonnull @.str.40, i64 noundef %.01421, i32 noundef %14) #21 +.thread: ; preds = %.lr.ph, %8 + %.01421 = phi i64 [ %.01422.lcssa, %8 ], [ %5, %.lr.ph ] + %12 = phi i8 [ %.lcssa, %8 ], [ 63, %.lr.ph ] + %13 = sext i8 %12 to i32 + %14 = tail call ptr (ptr, ...) @xstrdup_printf(ptr noundef nonnull @.str.40, i64 noundef %.01421, i32 noundef %14) #21 br label %16 -16: ; preds = %1, %.thread, %9 - %.0 = phi ptr [ %10, %9 ], [ %15, %.thread ], [ null, %1 ] +16: ; preds = %1, %.thread, %10 + %.0 = phi ptr [ %11, %10 ], [ %15, %.thread ], [ null, %1 ] ret ptr %.0 } diff --git a/bench/spike/optimized/s_mulAddF128.ll b/bench/spike/optimized/s_mulAddF128.ll index eb5d5377ef7..9e13336c1b9 100644 --- a/bench/spike/optimized/s_mulAddF128.ll +++ b/bench/spike/optimized/s_mulAddF128.ll @@ -74,7 +74,7 @@ define { i64, i64 } @softfloat_mulAddF128(i64 noundef %0, i64 noundef %1, i64 no 45: ; preds = %43 %46 = or i64 %24, %5 %.not295 = icmp eq i64 %46, 0 - br i1 %.not295, label %242, label %229 + br i1 %.not295, label %243, label %229 47: ; preds = %43 %.not = icmp eq i64 %14, 0 @@ -315,7 +315,7 @@ define { i64, i64 } @softfloat_mulAddF128(i64 noundef %0, i64 noundef %1, i64 no %143 = sub i64 %.sroa.073.1, %76 %144 = sub i64 %.sroa.37.1, %75 %145 = icmp ult i64 %.sroa.073.1, %76 - %.neg.i326 = sext i1 %145 to i64 + %.neg.i325 = sext i1 %145 to i64 %146 = add i64 %144, %.neg.i326 %147 = or i64 %146, %143 %148 = icmp ne i64 %147, 0 @@ -326,7 +326,7 @@ define { i64, i64 } @softfloat_mulAddF128(i64 noundef %0, i64 noundef %1, i64 no %152 = load i64, ptr %8, align 16 %153 = icmp ne i64 %152, 0 %or.cond7 = select i1 %or.cond4, i1 true, i1 %153 - br i1 %or.cond7, label %154, label %237 + br i1 %or.cond7, label %154, label %238 154: ; preds = %142 store i64 %146, ptr %63, align 8, !tbaa !3 @@ -362,10 +362,10 @@ thread-pre-split.sink.split: ; preds = %155, %138 thread-pre-split: ; preds = %thread-pre-split.sink.split, %157 %.1.ph = phi i1 [ %27, %157 ], [ %.1.ph.ph, %thread-pre-split.sink.split ] %.pr = load i64, ptr %63, align 8, !tbaa !3 - %.pr335 = load i64, ptr %65, align 16, !tbaa !3 + %.pr334 = load i64, ptr %65, align 16, !tbaa !3 %.phi.trans.insert = getelementptr inbounds nuw i8, ptr %8, i64 8 %.pre = load i64, ptr %.phi.trans.insert, align 8, !tbaa !3 - %.pre336 = load i64, ptr %8, align 16, !tbaa !3 + %.pre335 = load i64, ptr %8, align 16, !tbaa !3 br label %164 164: ; preds = %thread-pre-split, %154 @@ -469,7 +469,7 @@ thread-pre-split: ; preds = %thread-pre-split.si %.2 = phi i1 [ %.0244, %201 ], [ %.1, %184 ], [ %.1, %183 ] %215 = add nsw i64 %.5, -1 %216 = call { i64, i64 } @softfloat_roundPackToF128(i1 noundef zeroext %.2, i64 noundef %215, i64 noundef %.sroa.37.6, i64 noundef %.sroa.073.6, i64 noundef %.2254) #6 - br label %245 + br label %246 217: ; preds = %31, %38, %29 %218 = tail call { i64, i64 } @softfloat_propagateNaNF128UI(i64 noundef %0, i64 noundef %1, i64 noundef %2, i64 noundef %3) #6 @@ -485,7 +485,7 @@ thread-pre-split: ; preds = %thread-pre-split.si 222: ; preds = %221 %223 = select i1 %27, i64 -281474976710656, i64 9223090561878065152 %.not300 = icmp eq i64 %23, 32767 - br i1 %.not300, label %224, label %242 + br i1 %.not300, label %224, label %243 224: ; preds = %222 %225 = or i64 %24, %5 @@ -494,7 +494,7 @@ thread-pre-split: ; preds = %thread-pre-split.si 226: ; preds = %224 %227 = xor i1 %27, %21 - br i1 %227, label %228, label %242 + br i1 %227, label %228, label %243 228: ; preds = %226, %221 tail call void @softfloat_raiseFlags(i8 noundef zeroext 16) #6 @@ -506,32 +506,34 @@ thread-pre-split: ; preds = %thread-pre-split.si %230 = tail call { i64, i64 } @softfloat_propagateNaNF128UI(i64 noundef %.sroa.12.0, i64 noundef %.sroa.0128.0, i64 noundef %4, i64 noundef %5) #6 %231 = extractvalue { i64, i64 } %230, 0 %232 = extractvalue { i64, i64 } %230, 1 - br label %242 + br label %243 233: ; preds = %52, %48 %234 = or i64 %5, %24 %235 = or i64 %234, %23 %.not273 = icmp eq i64 %235, 0 - %236 = xor i1 %27, %21 - %or.cond310 = and i1 %.not273, %236 - br i1 %or.cond310, label %237, label %242 - -237: ; preds = %233, %142 - %238 = call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @softfloat_roundingMode) - %239 = load i8, ptr %238, align 1, !tbaa !7 - %240 = icmp eq i8 %239, 2 - %241 = select i1 %240, i64 -9223372036854775808, i64 0 - br label %242 - -242: ; preds = %45, %233, %237, %226, %222, %229 - %.sroa.0128.1 = phi i64 [ %231, %229 ], [ 0, %222 ], [ 0, %226 ], [ 0, %237 ], [ %5, %233 ], [ %5, %45 ] - %.sroa.12.1 = phi i64 [ %232, %229 ], [ %223, %222 ], [ %223, %226 ], [ %241, %237 ], [ %4, %233 ], [ %4, %45 ] - %243 = insertvalue { i64, i64 } poison, i64 %.sroa.0128.1, 0 - %244 = insertvalue { i64, i64 } %243, i64 %.sroa.12.1, 1 - br label %245 - -245: ; preds = %242, %214 - %.fca.1.insert.merged = phi { i64, i64 } [ %244, %242 ], [ %216, %214 ] + br i1 %.not273, label %236, label %243 + +236:; preds = %233 + %237 = xor i1 %27, %21 + br i1 %237, label %238, label %243 + +238:; preds = %236, %142 + %239 = call align 1 ptr @llvm.threadlocal.address.p0(ptr align 1 @softfloat_roundingMode) + %240 = load i8, ptr %239, align 1, !tbaa !7 + %241 = icmp eq i8 %240, 2 + %242 = select i1 %241, i64 -9223372036854775808, i64 0 + br label %243 + +243:; preds = %45, %233, %236, %238, %226, %222, %229 + %.sroa.0128.1 = phi i64 [ %231, %229 ], [ 0, %222 ], [ 0, %226 ], [ 0, %238 ], [ %5, %233 ], [ 0, %236 ], [ 0, %45 ] + %.sroa.12.1 = phi i64 [ %232, %229 ], [ %223, %222 ], [ %223, %226 ], [ %242, %238 ], [ %4, %233 ], [ %4, %236 ], [ %4, %45 ] + %244 = insertvalue { i64, i64 } poison, i64 %.sroa.0128.1, 0 + %245 = insertvalue { i64, i64 } %244, i64 %.sroa.12.1, 1 + br label %246 + +246: ; preds = %243, %214 + %.fca.1.insert.merged = phi { i64, i64 } [ %245, %243 ], [ %216, %214 ] call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #6 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #6 ret { i64, i64 } %.fca.1.insert.merged diff --git a/bench/spike/optimized/s_roundPackToF128.ll b/bench/spike/optimized/s_roundPackToF128.ll index 9c9f5a78526..430dbb44dc3 100644 --- a/bench/spike/optimized/s_roundPackToF128.ll +++ b/bench/spike/optimized/s_roundPackToF128.ll @@ -116,11 +116,11 @@ softfloat_lt128.exit: ; preds = %31, %24 57: ; preds = %53, %53, %54 %58 = select i1 %0, i64 -281474976710656, i64 9223090561878065152 - br label %88 + br label %89 59: ; preds = %54 %60 = select i1 %0, i64 -281474976710657, i64 9223090561878065151 - br label %88 + br label %89 61: ; preds = %41, %39, %48, %19 %.182 = phi i8 [ %45, %41 ], [ %40, %39 ], [ %.081, %48 ], [ %.081, %19 ] @@ -141,7 +141,7 @@ softfloat_lt128.exit: ; preds = %31, %24 67: ; preds = %62 %68 = or i64 %.078, 1 - br label %83 + br label %84 69: ; preds = %62, %61 %70 = trunc nuw i8 %.182 to i1 @@ -158,27 +158,29 @@ softfloat_lt128.exit: ; preds = %31, %24 %78 = zext i1 %77 to i64 %79 = xor i64 %78, -1 %80 = and i64 %72, %79 - br label %83 + br label %84 81: ; preds = %69 %82 = or i64 %.076, %.078 %.not91 = icmp eq i64 %82, 0 - %spec.select = select i1 %.not91, i64 0, i64 %.0 - br label %83 - -83: ; preds = %81, %71, %67 - %.179 = phi i64 [ %68, %67 ], [ %80, %71 ], [ %.078, %81 ] - %.177 = phi i64 [ %.076, %67 ], [ %75, %71 ], [ %.076, %81 ] - %.1 = phi i64 [ %.0, %67 ], [ %.0, %71 ], [ %spec.select, %81 ] - %84 = select i1 %0, i64 -9223372036854775808, i64 0 - %85 = shl i64 %.1, 48 - %86 = add i64 %.177, %84 - %87 = add i64 %86, %85 - br label %88 - -88: ; preds = %57, %59, %83 - %.084 = phi i64 [ %.179, %83 ], [ 0, %57 ], [ -1, %59 ] - %.083 = phi i64 [ %87, %83 ], [ %58, %57 ], [ %60, %59 ] + br i1 %.not91, label %83, label %84 + +83: ; preds = %81 + br label %84 + +84: ; preds = %71, %83, %81, %67 + %.179 = phi i64 [ %68, %67 ], [ %80, %71 ], [ %.078, %81 ], [ 0, %83 ] + %.177 = phi i64 [ %.076, %67 ], [ %75, %71 ], [ %.076, %81 ], [ 0, %83 ] + %.1 = phi i64 [ %.0, %67 ], [ %.0, %71 ], [ %.0, %81 ], [ 0, %83 ] + %85 = select i1 %0, i64 -9223372036854775808, i64 0 + %86 = shl i64 %.1, 48 + %87 = add i64 %.177, %85 + %88 = add i64 %87, %86 + br label %89 + +89: ; preds = %57, %59, %84 + %.084 = phi i64 [ %.179, %84 ], [ 0, %57 ], [ -1, %59 ] + %.083 = phi i64 [ %88, %84 ], [ %58, %57 ], [ %60, %59 ] %.fca.0.insert = insertvalue { i64, i64 } poison, i64 %.084, 0 %.fca.1.insert = insertvalue { i64, i64 } %.fca.0.insert, i64 %.083, 1 ret { i64, i64 } %.fca.1.insert diff --git a/bench/spike/optimized/wfi.ll b/bench/spike/optimized/wfi.ll index 7c6b09e9b3a..219ef44ac61 100644 --- a/bench/spike/optimized/wfi.ll +++ b/bench/spike/optimized/wfi.ll @@ -122,11 +122,11 @@ define noundef i64 @_Z14fast_rv32i_wfiP11processor_t6insn_tm(ptr noundef capture %23 = getelementptr inbounds nuw i8, ptr %0, i64 1080 %24 = load i64, ptr %23, align 8, !tbaa !20 %25 = icmp eq i64 %24, 0 - br i1 %25, label %.thread, label %26 + br i1 %25, label %.thread, label %26, !prof !101 26: ; preds = %22 %27 = getelementptr inbounds nuw i8, ptr %0, i64 2048 - %28 = load ptr, ptr %27, align 8, !tbaa !101 + %28 = load ptr, ptr %27, align 8, !tbaa !102 %29 = load ptr, ptr %28, align 8, !tbaa !96 %30 = getelementptr inbounds nuw i8, ptr %29, i64 8 %31 = load ptr, ptr %30, align 8 @@ -138,7 +138,7 @@ define noundef i64 @_Z14fast_rv32i_wfiP11processor_t6insn_tm(ptr noundef capture 34: ; preds = %26 %.pre = load i8, ptr %19, align 2, !tbaa !98, !range !99 %35 = trunc nuw i8 %.pre to i1 - br i1 %35, label %.thread, label %53, !prof !102 + br i1 %35, label %.thread, label %53, !prof !103 .thread: ; preds = %22, %34 %36 = tail call ptr @__cxa_allocate_exception(i64 32) #12 @@ -156,7 +156,7 @@ define noundef i64 @_Z14fast_rv32i_wfiP11processor_t6insn_tm(ptr noundef capture %41 = getelementptr inbounds nuw i8, ptr %0, i64 1104 %42 = load ptr, ptr %41, align 8 %43 = getelementptr inbounds nuw i8, ptr %42, i64 40 - %.sink.i.i = load i64, ptr %43, align 8, !tbaa !103 + %.sink.i.i = load i64, ptr %43, align 8, !tbaa !104 %44 = and i64 %.sink.i.i, 262144 %.0.i.i.not = icmp eq i64 %44, 0 br i1 %.0.i.i.not, label %53, label %45 @@ -185,12 +185,12 @@ define noundef i64 @_Z14fast_rv32i_wfiP11processor_t6insn_tm(ptr noundef capture %56 = add i64 %55, 17179869184 %57 = ashr exact i64 %56, 32 %58 = getelementptr inbounds nuw i8, ptr %0, i64 4312 - %.sink.i.i24 = load i64, ptr %58, align 8, !tbaa !103 + %.sink.i.i24 = load i64, ptr %58, align 8, !tbaa !104 %59 = and i64 %.sink.i.i24, 68719476736 %.0.i.not.i = icmp eq i64 %59, 0 %60 = select i1 %.0.i.not.i, i64 -3, i64 -1 %61 = and i64 %60, %57 - store i64 %61, ptr %54, align 8, !tbaa !104 + store i64 %61, ptr %54, align 8, !tbaa !105 %62 = tail call ptr @__cxa_allocate_exception(i64 1) #12 tail call void @__cxa_throw(ptr %62, ptr nonnull @_ZTI20wait_for_interrupt_t, ptr null) #13 unreachable @@ -249,11 +249,11 @@ define noundef i64 @_Z14fast_rv64i_wfiP11processor_t6insn_tm(ptr noundef capture %23 = getelementptr inbounds nuw i8, ptr %0, i64 1080 %24 = load i64, ptr %23, align 8, !tbaa !20 %25 = icmp eq i64 %24, 0 - br i1 %25, label %.thread, label %26 + br i1 %25, label %.thread, label %26, !prof !101 26: ; preds = %22 %27 = getelementptr inbounds nuw i8, ptr %0, i64 2048 - %28 = load ptr, ptr %27, align 8, !tbaa !101 + %28 = load ptr, ptr %27, align 8, !tbaa !102 %29 = load ptr, ptr %28, align 8, !tbaa !96 %30 = getelementptr inbounds nuw i8, ptr %29, i64 8 %31 = load ptr, ptr %30, align 8 @@ -265,7 +265,7 @@ define noundef i64 @_Z14fast_rv64i_wfiP11processor_t6insn_tm(ptr noundef capture 34: ; preds = %26 %.pre = load i8, ptr %19, align 2, !tbaa !98, !range !99 %35 = trunc nuw i8 %.pre to i1 - br i1 %35, label %.thread, label %53, !prof !102 + br i1 %35, label %.thread, label %53, !prof !103 .thread: ; preds = %22, %34 %36 = tail call ptr @__cxa_allocate_exception(i64 32) #12 @@ -283,7 +283,7 @@ define noundef i64 @_Z14fast_rv64i_wfiP11processor_t6insn_tm(ptr noundef capture %41 = getelementptr inbounds nuw i8, ptr %0, i64 1104 %42 = load ptr, ptr %41, align 8 %43 = getelementptr inbounds nuw i8, ptr %42, i64 40 - %.sink.i.i = load i64, ptr %43, align 8, !tbaa !103 + %.sink.i.i = load i64, ptr %43, align 8, !tbaa !104 %44 = and i64 %.sink.i.i, 262144 %.0.i.i.not = icmp eq i64 %44, 0 br i1 %.0.i.i.not, label %53, label %45 @@ -310,12 +310,12 @@ define noundef i64 @_Z14fast_rv64i_wfiP11processor_t6insn_tm(ptr noundef capture %54 = getelementptr inbounds nuw i8, ptr %0, i64 248 %55 = add i64 %2, 4 %56 = getelementptr inbounds nuw i8, ptr %0, i64 4312 - %.sink.i.i24 = load i64, ptr %56, align 8, !tbaa !103 + %.sink.i.i24 = load i64, ptr %56, align 8, !tbaa !104 %57 = and i64 %.sink.i.i24, 68719476736 %.0.i.not.i = icmp eq i64 %57, 0 %58 = select i1 %.0.i.not.i, i64 -3, i64 -1 %59 = and i64 %58, %55 - store i64 %59, ptr %54, align 8, !tbaa !104 + store i64 %59, ptr %54, align 8, !tbaa !105 %60 = tail call ptr @__cxa_allocate_exception(i64 1) #12 tail call void @__cxa_throw(ptr %60, ptr nonnull @_ZTI20wait_for_interrupt_t, ptr null) #13 unreachable @@ -359,11 +359,11 @@ define noundef i64 @_Z16logged_rv32i_wfiP11processor_t6insn_tm(ptr noundef captu %23 = getelementptr inbounds nuw i8, ptr %0, i64 1080 %24 = load i64, ptr %23, align 8, !tbaa !20 %25 = icmp eq i64 %24, 0 - br i1 %25, label %.thread, label %26 + br i1 %25, label %.thread, label %26, !prof !101 26: ; preds = %22 %27 = getelementptr inbounds nuw i8, ptr %0, i64 2048 - %28 = load ptr, ptr %27, align 8, !tbaa !101 + %28 = load ptr, ptr %27, align 8, !tbaa !102 %29 = load ptr, ptr %28, align 8, !tbaa !96 %30 = getelementptr inbounds nuw i8, ptr %29, i64 8 %31 = load ptr, ptr %30, align 8 @@ -375,7 +375,7 @@ define noundef i64 @_Z16logged_rv32i_wfiP11processor_t6insn_tm(ptr noundef captu 34: ; preds = %26 %.pre = load i8, ptr %19, align 2, !tbaa !98, !range !99 %35 = trunc nuw i8 %.pre to i1 - br i1 %35, label %.thread, label %53, !prof !102 + br i1 %35, label %.thread, label %53, !prof !103 .thread: ; preds = %22, %34 %36 = tail call ptr @__cxa_allocate_exception(i64 32) #12 @@ -393,7 +393,7 @@ define noundef i64 @_Z16logged_rv32i_wfiP11processor_t6insn_tm(ptr noundef captu %41 = getelementptr inbounds nuw i8, ptr %0, i64 1104 %42 = load ptr, ptr %41, align 8 %43 = getelementptr inbounds nuw i8, ptr %42, i64 40 - %.sink.i.i = load i64, ptr %43, align 8, !tbaa !103 + %.sink.i.i = load i64, ptr %43, align 8, !tbaa !104 %44 = and i64 %.sink.i.i, 262144 %.0.i.i.not = icmp eq i64 %44, 0 br i1 %.0.i.i.not, label %53, label %45 @@ -422,12 +422,12 @@ define noundef i64 @_Z16logged_rv32i_wfiP11processor_t6insn_tm(ptr noundef captu %56 = add i64 %55, 17179869184 %57 = ashr exact i64 %56, 32 %58 = getelementptr inbounds nuw i8, ptr %0, i64 4312 - %.sink.i.i24 = load i64, ptr %58, align 8, !tbaa !103 + %.sink.i.i24 = load i64, ptr %58, align 8, !tbaa !104 %59 = and i64 %.sink.i.i24, 68719476736 %.0.i.not.i = icmp eq i64 %59, 0 %60 = select i1 %.0.i.not.i, i64 -3, i64 -1 %61 = and i64 %60, %57 - store i64 %61, ptr %54, align 8, !tbaa !104 + store i64 %61, ptr %54, align 8, !tbaa !105 %62 = tail call ptr @__cxa_allocate_exception(i64 1) #12 tail call void @__cxa_throw(ptr %62, ptr nonnull @_ZTI20wait_for_interrupt_t, ptr null) #13 unreachable @@ -471,11 +471,11 @@ define noundef i64 @_Z16logged_rv64i_wfiP11processor_t6insn_tm(ptr noundef captu %23 = getelementptr inbounds nuw i8, ptr %0, i64 1080 %24 = load i64, ptr %23, align 8, !tbaa !20 %25 = icmp eq i64 %24, 0 - br i1 %25, label %.thread, label %26 + br i1 %25, label %.thread, label %26, !prof !101 26: ; preds = %22 %27 = getelementptr inbounds nuw i8, ptr %0, i64 2048 - %28 = load ptr, ptr %27, align 8, !tbaa !101 + %28 = load ptr, ptr %27, align 8, !tbaa !102 %29 = load ptr, ptr %28, align 8, !tbaa !96 %30 = getelementptr inbounds nuw i8, ptr %29, i64 8 %31 = load ptr, ptr %30, align 8 @@ -487,7 +487,7 @@ define noundef i64 @_Z16logged_rv64i_wfiP11processor_t6insn_tm(ptr noundef captu 34: ; preds = %26 %.pre = load i8, ptr %19, align 2, !tbaa !98, !range !99 %35 = trunc nuw i8 %.pre to i1 - br i1 %35, label %.thread, label %53, !prof !102 + br i1 %35, label %.thread, label %53, !prof !103 .thread: ; preds = %22, %34 %36 = tail call ptr @__cxa_allocate_exception(i64 32) #12 @@ -505,7 +505,7 @@ define noundef i64 @_Z16logged_rv64i_wfiP11processor_t6insn_tm(ptr noundef captu %41 = getelementptr inbounds nuw i8, ptr %0, i64 1104 %42 = load ptr, ptr %41, align 8 %43 = getelementptr inbounds nuw i8, ptr %42, i64 40 - %.sink.i.i = load i64, ptr %43, align 8, !tbaa !103 + %.sink.i.i = load i64, ptr %43, align 8, !tbaa !104 %44 = and i64 %.sink.i.i, 262144 %.0.i.i.not = icmp eq i64 %44, 0 br i1 %.0.i.i.not, label %53, label %45 @@ -532,12 +532,12 @@ define noundef i64 @_Z16logged_rv64i_wfiP11processor_t6insn_tm(ptr noundef captu %54 = getelementptr inbounds nuw i8, ptr %0, i64 248 %55 = add i64 %2, 4 %56 = getelementptr inbounds nuw i8, ptr %0, i64 4312 - %.sink.i.i24 = load i64, ptr %56, align 8, !tbaa !103 + %.sink.i.i24 = load i64, ptr %56, align 8, !tbaa !104 %57 = and i64 %.sink.i.i24, 68719476736 %.0.i.not.i = icmp eq i64 %57, 0 %58 = select i1 %.0.i.not.i, i64 -3, i64 -1 %59 = and i64 %58, %55 - store i64 %59, ptr %54, align 8, !tbaa !104 + store i64 %59, ptr %54, align 8, !tbaa !105 %60 = tail call ptr @__cxa_allocate_exception(i64 1) #12 tail call void @__cxa_throw(ptr %60, ptr nonnull @_ZTI20wait_for_interrupt_t, ptr null) #13 unreachable @@ -581,11 +581,11 @@ define noundef i64 @_Z14fast_rv32e_wfiP11processor_t6insn_tm(ptr noundef capture %23 = getelementptr inbounds nuw i8, ptr %0, i64 1080 %24 = load i64, ptr %23, align 8, !tbaa !20 %25 = icmp eq i64 %24, 0 - br i1 %25, label %.thread, label %26 + br i1 %25, label %.thread, label %26, !prof !101 26: ; preds = %22 %27 = getelementptr inbounds nuw i8, ptr %0, i64 2048 - %28 = load ptr, ptr %27, align 8, !tbaa !101 + %28 = load ptr, ptr %27, align 8, !tbaa !102 %29 = load ptr, ptr %28, align 8, !tbaa !96 %30 = getelementptr inbounds nuw i8, ptr %29, i64 8 %31 = load ptr, ptr %30, align 8 @@ -597,7 +597,7 @@ define noundef i64 @_Z14fast_rv32e_wfiP11processor_t6insn_tm(ptr noundef capture 34: ; preds = %26 %.pre = load i8, ptr %19, align 2, !tbaa !98, !range !99 %35 = trunc nuw i8 %.pre to i1 - br i1 %35, label %.thread, label %53, !prof !102 + br i1 %35, label %.thread, label %53, !prof !103 .thread: ; preds = %22, %34 %36 = tail call ptr @__cxa_allocate_exception(i64 32) #12 @@ -615,7 +615,7 @@ define noundef i64 @_Z14fast_rv32e_wfiP11processor_t6insn_tm(ptr noundef capture %41 = getelementptr inbounds nuw i8, ptr %0, i64 1104 %42 = load ptr, ptr %41, align 8 %43 = getelementptr inbounds nuw i8, ptr %42, i64 40 - %.sink.i.i = load i64, ptr %43, align 8, !tbaa !103 + %.sink.i.i = load i64, ptr %43, align 8, !tbaa !104 %44 = and i64 %.sink.i.i, 262144 %.0.i.i.not = icmp eq i64 %44, 0 br i1 %.0.i.i.not, label %53, label %45 @@ -644,12 +644,12 @@ define noundef i64 @_Z14fast_rv32e_wfiP11processor_t6insn_tm(ptr noundef capture %56 = add i64 %55, 17179869184 %57 = ashr exact i64 %56, 32 %58 = getelementptr inbounds nuw i8, ptr %0, i64 4312 - %.sink.i.i24 = load i64, ptr %58, align 8, !tbaa !103 + %.sink.i.i24 = load i64, ptr %58, align 8, !tbaa !104 %59 = and i64 %.sink.i.i24, 68719476736 %.0.i.not.i = icmp eq i64 %59, 0 %60 = select i1 %.0.i.not.i, i64 -3, i64 -1 %61 = and i64 %60, %57 - store i64 %61, ptr %54, align 8, !tbaa !104 + store i64 %61, ptr %54, align 8, !tbaa !105 %62 = tail call ptr @__cxa_allocate_exception(i64 1) #12 tail call void @__cxa_throw(ptr %62, ptr nonnull @_ZTI20wait_for_interrupt_t, ptr null) #13 unreachable @@ -693,11 +693,11 @@ define noundef i64 @_Z14fast_rv64e_wfiP11processor_t6insn_tm(ptr noundef capture %23 = getelementptr inbounds nuw i8, ptr %0, i64 1080 %24 = load i64, ptr %23, align 8, !tbaa !20 %25 = icmp eq i64 %24, 0 - br i1 %25, label %.thread, label %26 + br i1 %25, label %.thread, label %26, !prof !101 26: ; preds = %22 %27 = getelementptr inbounds nuw i8, ptr %0, i64 2048 - %28 = load ptr, ptr %27, align 8, !tbaa !101 + %28 = load ptr, ptr %27, align 8, !tbaa !102 %29 = load ptr, ptr %28, align 8, !tbaa !96 %30 = getelementptr inbounds nuw i8, ptr %29, i64 8 %31 = load ptr, ptr %30, align 8 @@ -709,7 +709,7 @@ define noundef i64 @_Z14fast_rv64e_wfiP11processor_t6insn_tm(ptr noundef capture 34: ; preds = %26 %.pre = load i8, ptr %19, align 2, !tbaa !98, !range !99 %35 = trunc nuw i8 %.pre to i1 - br i1 %35, label %.thread, label %53, !prof !102 + br i1 %35, label %.thread, label %53, !prof !103 .thread: ; preds = %22, %34 %36 = tail call ptr @__cxa_allocate_exception(i64 32) #12 @@ -727,7 +727,7 @@ define noundef i64 @_Z14fast_rv64e_wfiP11processor_t6insn_tm(ptr noundef capture %41 = getelementptr inbounds nuw i8, ptr %0, i64 1104 %42 = load ptr, ptr %41, align 8 %43 = getelementptr inbounds nuw i8, ptr %42, i64 40 - %.sink.i.i = load i64, ptr %43, align 8, !tbaa !103 + %.sink.i.i = load i64, ptr %43, align 8, !tbaa !104 %44 = and i64 %.sink.i.i, 262144 %.0.i.i.not = icmp eq i64 %44, 0 br i1 %.0.i.i.not, label %53, label %45 @@ -754,12 +754,12 @@ define noundef i64 @_Z14fast_rv64e_wfiP11processor_t6insn_tm(ptr noundef capture %54 = getelementptr inbounds nuw i8, ptr %0, i64 248 %55 = add i64 %2, 4 %56 = getelementptr inbounds nuw i8, ptr %0, i64 4312 - %.sink.i.i24 = load i64, ptr %56, align 8, !tbaa !103 + %.sink.i.i24 = load i64, ptr %56, align 8, !tbaa !104 %57 = and i64 %.sink.i.i24, 68719476736 %.0.i.not.i = icmp eq i64 %57, 0 %58 = select i1 %.0.i.not.i, i64 -3, i64 -1 %59 = and i64 %58, %55 - store i64 %59, ptr %54, align 8, !tbaa !104 + store i64 %59, ptr %54, align 8, !tbaa !105 %60 = tail call ptr @__cxa_allocate_exception(i64 1) #12 tail call void @__cxa_throw(ptr %60, ptr nonnull @_ZTI20wait_for_interrupt_t, ptr null) #13 unreachable @@ -803,11 +803,11 @@ define noundef i64 @_Z16logged_rv32e_wfiP11processor_t6insn_tm(ptr noundef captu %23 = getelementptr inbounds nuw i8, ptr %0, i64 1080 %24 = load i64, ptr %23, align 8, !tbaa !20 %25 = icmp eq i64 %24, 0 - br i1 %25, label %.thread, label %26 + br i1 %25, label %.thread, label %26, !prof !101 26: ; preds = %22 %27 = getelementptr inbounds nuw i8, ptr %0, i64 2048 - %28 = load ptr, ptr %27, align 8, !tbaa !101 + %28 = load ptr, ptr %27, align 8, !tbaa !102 %29 = load ptr, ptr %28, align 8, !tbaa !96 %30 = getelementptr inbounds nuw i8, ptr %29, i64 8 %31 = load ptr, ptr %30, align 8 @@ -819,7 +819,7 @@ define noundef i64 @_Z16logged_rv32e_wfiP11processor_t6insn_tm(ptr noundef captu 34: ; preds = %26 %.pre = load i8, ptr %19, align 2, !tbaa !98, !range !99 %35 = trunc nuw i8 %.pre to i1 - br i1 %35, label %.thread, label %53, !prof !102 + br i1 %35, label %.thread, label %53, !prof !103 .thread: ; preds = %22, %34 %36 = tail call ptr @__cxa_allocate_exception(i64 32) #12 @@ -837,7 +837,7 @@ define noundef i64 @_Z16logged_rv32e_wfiP11processor_t6insn_tm(ptr noundef captu %41 = getelementptr inbounds nuw i8, ptr %0, i64 1104 %42 = load ptr, ptr %41, align 8 %43 = getelementptr inbounds nuw i8, ptr %42, i64 40 - %.sink.i.i = load i64, ptr %43, align 8, !tbaa !103 + %.sink.i.i = load i64, ptr %43, align 8, !tbaa !104 %44 = and i64 %.sink.i.i, 262144 %.0.i.i.not = icmp eq i64 %44, 0 br i1 %.0.i.i.not, label %53, label %45 @@ -866,12 +866,12 @@ define noundef i64 @_Z16logged_rv32e_wfiP11processor_t6insn_tm(ptr noundef captu %56 = add i64 %55, 17179869184 %57 = ashr exact i64 %56, 32 %58 = getelementptr inbounds nuw i8, ptr %0, i64 4312 - %.sink.i.i24 = load i64, ptr %58, align 8, !tbaa !103 + %.sink.i.i24 = load i64, ptr %58, align 8, !tbaa !104 %59 = and i64 %.sink.i.i24, 68719476736 %.0.i.not.i = icmp eq i64 %59, 0 %60 = select i1 %.0.i.not.i, i64 -3, i64 -1 %61 = and i64 %60, %57 - store i64 %61, ptr %54, align 8, !tbaa !104 + store i64 %61, ptr %54, align 8, !tbaa !105 %62 = tail call ptr @__cxa_allocate_exception(i64 1) #12 tail call void @__cxa_throw(ptr %62, ptr nonnull @_ZTI20wait_for_interrupt_t, ptr null) #13 unreachable @@ -915,11 +915,11 @@ define noundef i64 @_Z16logged_rv64e_wfiP11processor_t6insn_tm(ptr noundef captu %23 = getelementptr inbounds nuw i8, ptr %0, i64 1080 %24 = load i64, ptr %23, align 8, !tbaa !20 %25 = icmp eq i64 %24, 0 - br i1 %25, label %.thread, label %26 + br i1 %25, label %.thread, label %26, !prof !101 26: ; preds = %22 %27 = getelementptr inbounds nuw i8, ptr %0, i64 2048 - %28 = load ptr, ptr %27, align 8, !tbaa !101 + %28 = load ptr, ptr %27, align 8, !tbaa !102 %29 = load ptr, ptr %28, align 8, !tbaa !96 %30 = getelementptr inbounds nuw i8, ptr %29, i64 8 %31 = load ptr, ptr %30, align 8 @@ -931,7 +931,7 @@ define noundef i64 @_Z16logged_rv64e_wfiP11processor_t6insn_tm(ptr noundef captu 34: ; preds = %26 %.pre = load i8, ptr %19, align 2, !tbaa !98, !range !99 %35 = trunc nuw i8 %.pre to i1 - br i1 %35, label %.thread, label %53, !prof !102 + br i1 %35, label %.thread, label %53, !prof !103 .thread: ; preds = %22, %34 %36 = tail call ptr @__cxa_allocate_exception(i64 32) #12 @@ -949,7 +949,7 @@ define noundef i64 @_Z16logged_rv64e_wfiP11processor_t6insn_tm(ptr noundef captu %41 = getelementptr inbounds nuw i8, ptr %0, i64 1104 %42 = load ptr, ptr %41, align 8 %43 = getelementptr inbounds nuw i8, ptr %42, i64 40 - %.sink.i.i = load i64, ptr %43, align 8, !tbaa !103 + %.sink.i.i = load i64, ptr %43, align 8, !tbaa !104 %44 = and i64 %.sink.i.i, 262144 %.0.i.i.not = icmp eq i64 %44, 0 br i1 %.0.i.i.not, label %53, label %45 @@ -976,12 +976,12 @@ define noundef i64 @_Z16logged_rv64e_wfiP11processor_t6insn_tm(ptr noundef captu %54 = getelementptr inbounds nuw i8, ptr %0, i64 248 %55 = add i64 %2, 4 %56 = getelementptr inbounds nuw i8, ptr %0, i64 4312 - %.sink.i.i24 = load i64, ptr %56, align 8, !tbaa !103 + %.sink.i.i24 = load i64, ptr %56, align 8, !tbaa !104 %57 = and i64 %.sink.i.i24, 68719476736 %.0.i.not.i = icmp eq i64 %57, 0 %58 = select i1 %.0.i.not.i, i64 -3, i64 -1 %59 = and i64 %58, %55 - store i64 %59, ptr %54, align 8, !tbaa !104 + store i64 %59, ptr %54, align 8, !tbaa !105 %60 = tail call ptr @__cxa_allocate_exception(i64 1) #12 tail call void @__cxa_throw(ptr %60, ptr nonnull @_ZTI20wait_for_interrupt_t, ptr null) #13 unreachable @@ -1032,13 +1032,13 @@ define linkonce_odr void @_ZN24trap_illegal_instruction4nameB5cxx11Ev(ptr dead_o _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i.i: %2 = getelementptr inbounds nuw i8, ptr %0, i64 16 %3 = tail call noalias noundef nonnull dereferenceable(25) ptr @_Znwm(i64 noundef 25) #14 - store ptr %3, ptr %0, align 8, !tbaa !105 - store i64 24, ptr %2, align 8, !tbaa !109 + store ptr %3, ptr %0, align 8, !tbaa !106 + store i64 24, ptr %2, align 8, !tbaa !110 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(24) %3, ptr noundef nonnull align 1 dereferenceable(24) @.str.6, i64 24, i1 false) %4 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 24, ptr %4, align 8, !tbaa !110 + store i64 24, ptr %4, align 8, !tbaa !111 %5 = getelementptr inbounds nuw i8, ptr %3, i64 24 - store i8 0, ptr %5, align 1, !tbaa !109 + store i8 0, ptr %5, align 1, !tbaa !110 ret void } @@ -1059,13 +1059,13 @@ define linkonce_odr void @_ZN24trap_virtual_instruction4nameB5cxx11Ev(ptr dead_o _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE9_M_createERmm.exit.i.i: %2 = getelementptr inbounds nuw i8, ptr %0, i64 16 %3 = tail call noalias noundef nonnull dereferenceable(25) ptr @_Znwm(i64 noundef 25) #14 - store ptr %3, ptr %0, align 8, !tbaa !105 - store i64 24, ptr %2, align 8, !tbaa !109 + store ptr %3, ptr %0, align 8, !tbaa !106 + store i64 24, ptr %2, align 8, !tbaa !110 tail call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(24) %3, ptr noundef nonnull align 1 dereferenceable(24) @.str.8, i64 24, i1 false) %4 = getelementptr inbounds nuw i8, ptr %0, i64 8 - store i64 24, ptr %4, align 8, !tbaa !110 + store i64 24, ptr %4, align 8, !tbaa !111 %5 = getelementptr inbounds nuw i8, ptr %3, i64 24 - store i8 0, ptr %5, align 1, !tbaa !109 + store i8 0, ptr %5, align 1, !tbaa !110 ret void } @@ -1203,13 +1203,14 @@ attributes #15 = { builtin nounwind } !98 = !{!21, !19, i64 850} !99 = !{i8 0, i8 2} !100 = !{} -!101 = !{!36, !37, i64 0} -!102 = !{!"branch_weights", !"expected", i32 0, i32 -2147483648} -!103 = !{!17, !17, i64 0} -!104 = !{!21, !17, i64 0} -!105 = !{!106, !108, i64 0} -!106 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !107, i64 0, !17, i64 8, !7, i64 16} -!107 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !108, i64 0} -!108 = !{!"p1 omnipotent char", !6, i64 0} -!109 = !{!7, !7, i64 0} -!110 = !{!106, !17, i64 8} +!101 = !{!"branch_weights", i32 1073205, i32 2146410443} +!102 = !{!36, !37, i64 0} +!103 = !{!"branch_weights", !"expected", i32 0, i32 -2147483648} +!104 = !{!17, !17, i64 0} +!105 = !{!21, !17, i64 0} +!106 = !{!107, !109, i64 0} +!107 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !108, i64 0, !17, i64 8, !7, i64 16} +!108 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !109, i64 0} +!109 = !{!"p1 omnipotent char", !6, i64 0} +!110 = !{!7, !7, i64 0} +!111 = !{!107, !17, i64 8} diff --git a/bench/stb/optimized/stb_sprintf.ll b/bench/stb/optimized/stb_sprintf.ll index 4fa00fb065c..dd46699a911 100644 --- a/bench/stb/optimized/stb_sprintf.ll +++ b/bench/stb/optimized/stb_sprintf.ll @@ -3251,26 +3251,31 @@ thread-pre-split121: ; preds = %thread-pre-split br label %94 94: ; preds = %._crit_edge165, %.loopexit - %storemerge169 = phi i64 [ %.1, %.loopexit ], [ %storemerge203, %._crit_edge165 ] - %.087 = phi i32 [ 0, %.loopexit ], [ %.491.lcssa, %._crit_edge165 ] - %.082 = phi ptr [ %93, %.loopexit ], [ %.4.ptr, %._crit_edge165 ] - %95 = icmp samesign ugt i64 %storemerge169, 99999999 - br i1 %95, label %96, label %.thread - -96: ; preds = %94 - %97 = urem i64 %storemerge169, 100000000 - %98 = udiv i64 %storemerge169, 100000000 - %.not115151 = icmp eq i64 %97, 0 + %indvar = phi i64 [ %indvar.next, %._crit_edge165 ], [ 0, %.loopexit ] + %storemerge169 = phi i64 [ %storemerge203, %._crit_edge165 ], [ %.1, %.loopexit ] + %.087 = phi i32 [ %.491.lcssa, %._crit_edge165 ], [ 0, %.loopexit ] + %.082 = phi ptr [ %.4.ptr, %._crit_edge165 ], [ %93, %.loopexit ] + %95 = shl i64 %storemerge169, 3 + %96 = sub i64 56, %95 + %scevgep = getelementptr i8, ptr %2, i64 %96 + %97 = icmp sgt i64 %storemerge169, 99999999 + br i1 %97, label %98, label %.thread + +98: ; preds = %94 + %99 = urem i64 %storemerge169, 100000000 + %100 = udiv i64 %storemerge169, 100000000 + %.080 = trunc nuw nsw i64 %99 to i32 + %.not115151 = icmp eq i64 %99, 0 br i1 %.not115151, label %.lr.ph164.preheader, label %.lr.ph156.preheader .thread: ; preds = %94 - %.not115151201 = icmp eq i64 %storemerge169, 0 + %.080200 = trunc i64 %storemerge169 to i32 + %.not115151201 = icmp eq i32 %.080200, 0 br i1 %.not115151201, label %._crit_edge157.thread.thread, label %.lr.ph156.preheader -.lr.ph156.preheader: ; preds = %.thread, %96 - %.080206.in = phi i64 [ %storemerge169, %.thread ], [ %97, %96 ] - %storemerge202 = phi i64 [ 0, %.thread ], [ %98, %96 ] - %.080206 = trunc nuw i64 %.080206.in to i32 +.lr.ph156.preheader: ; preds = %.thread, %98 + %.080206 = phi i32 [ %.080200, %.thread ], [ %.080, %98 ] + %storemerge202 = phi i64 [ 0, %.thread ], [ %100, %98 ] br label %.lr.ph156 .lr.ph156: ; preds = %.lr.ph156.preheader, %.lr.ph156 @@ -3279,35 +3284,34 @@ thread-pre-split121: ; preds = %thread-pre-split %.188152 = phi i32 [ %105, %.lr.ph156 ], [ %.087, %.lr.ph156.preheader ] %.183.add = add nsw i64 %.183.idx153, -2 %.ptr117 = getelementptr inbounds i8, ptr %.082, i64 %.183.add - %99 = urem i32 %.1154, 100 - %100 = shl nuw nsw i32 %99, 1 - %101 = zext nneg i32 %100 to i64 - %102 = getelementptr inbounds nuw [201 x i8], ptr getelementptr inbounds nuw (i8, ptr @stbsp__digitpair, i64 2), i64 0, i64 %101 - %103 = load i16, ptr %102, align 2, !tbaa !29 + %101 = urem i32 %.1154, 100 + %102 = shl nuw nsw i32 %99, 1 + %103 = zext nneg i32 %102 to i64 + %104 = getelementptr inbounds nuw [201 x i8], ptr getelementptr inbounds nuw (i8, ptr @stbsp__digitpair, i64 2), i64 0, i64 %101 + %105 = load i16, ptr %102, align 2, !tbaa !29 store i16 %103, ptr %.ptr117, align 2, !tbaa !29 - %104 = udiv i32 %.1154, 100 - %105 = add nsw i32 %.188152, 2 + %106 = udiv i32 %.1154, 100 + %107 = add nsw i32 %.188152, 2 %.not115 = icmp ult i32 %.1154, 100 br i1 %.not115, label %._crit_edge157, label %.lr.ph156, !llvm.loop !50 ._crit_edge157: ; preds = %.lr.ph156 - %106 = icmp eq i64 %storemerge202, 0 + %108 = icmp eq i64 %storemerge202, 0 br i1 %106, label %._crit_edge157.thread.thread, label %.preheader .preheader: ; preds = %._crit_edge157 %.not116161 = icmp eq i64 %.183.add, -8 br i1 %.not116161, label %._crit_edge165, label %.lr.ph164.preheader -.lr.ph164.preheader: ; preds = %96, %.preheader - %storemerge204 = phi i64 [ %storemerge202, %.preheader ], [ %98, %96 ] - %.183.idx.lcssa150189197 = phi i64 [ %.183.add, %.preheader ], [ 0, %96 ] - %.188.lcssa191196 = phi i32 [ %105, %.preheader ], [ %.087, %96 ] - %scevgep = getelementptr i8, ptr %.082, i64 -8 - %107 = add nsw i64 %.183.idx.lcssa150189197, 8 - tail call void @llvm.memset.p0.i64(ptr align 1 %scevgep, i8 48, i64 %107, i1 false), !tbaa !3 - %108 = trunc i64 %.183.idx.lcssa150189197 to i32 - %109 = add i32 %.188.lcssa191196, 8 - %110 = add i32 %109, %108 +.lr.ph164.preheader: ; preds = %98, %.preheader + %storemerge204 = phi i64 [ %storemerge202, %.preheader ], [ %100, %98 ] + %.183.idx.lcssa150189197 = phi i64 [ %.183.add, %.preheader ], [ 0, %98 ] + %.188.lcssa191196 = phi i32 [ %105, %.preheader ], [ %.087, %98 ] + %109 = add nsw i64 %.183.idx.lcssa150189197, 8 + tail call void @llvm.memset.p0.i64(ptr align 1 %scevgep, i8 48, i64 %109, i1 false), !tbaa !3 + %110 = trunc i64 %.183.idx.lcssa150189197 to i32 + %111 = add i32 %.188.lcssa191196, 8 + %112 = add i32 %111, %110 br label %._crit_edge165 ._crit_edge157.thread.thread: ; preds = %.thread, %._crit_edge157 @@ -3318,19 +3322,20 @@ thread-pre-split121: ; preds = %thread-pre-split br i1 %.not118, label %117, label %111 111: ; preds = %._crit_edge157.thread.thread - %112 = load i8, ptr %.183.ptr.le.le, align 1, !tbaa !3 - %113 = icmp eq i8 %112, 48 + %114 = load i8, ptr %.183.ptr.le.le, align 1, !tbaa !3 + %115 = icmp eq i8 %112, 48 br i1 %113, label %114, label %117 114: ; preds = %111 - %115 = getelementptr inbounds nuw i8, ptr %.183.ptr.le.le, i64 1 - %116 = add nsw i32 %.188.lcssa192, -1 + %117 = getelementptr inbounds nuw i8, ptr %.183.ptr.le.le, i64 1 + %118 = add nsw i32 %.188.lcssa192, -1 br label %117 ._crit_edge165: ; preds = %.lr.ph164.preheader, %.preheader %storemerge203 = phi i64 [ %storemerge202, %.preheader ], [ %storemerge204, %.lr.ph164.preheader ] - %.491.lcssa = phi i32 [ %105, %.preheader ], [ %110, %.lr.ph164.preheader ] + %.491.lcssa = phi i32 [ %105, %.preheader ], [ %112, %.lr.ph164.preheader ] %.4.ptr = getelementptr inbounds i8, ptr %.082, i64 -8 + %indvar.next = add i64 %indvar, 1 br label %94 117: ; preds = %114, %111, %._crit_edge157.thread.thread @@ -3343,8 +3348,8 @@ thread-pre-split121: ; preds = %thread-pre-split 118: ; preds = %117, %20, %13 %.390.ph.sink = phi i32 [ %.390.ph, %117 ], [ 1, %20 ], [ 3, %13 ] store i32 %.390.ph.sink, ptr %1, align 4, !tbaa !6 - %119 = lshr i64 %9, 63 - %120 = trunc nuw nsw i64 %119 to i32 + %121 = lshr i64 %9, 63 + %122 = trunc nuw nsw i64 %121 to i32 ret i32 %120 } diff --git a/bench/sundials/optimized/arkode_butcher.ll b/bench/sundials/optimized/arkode_butcher.ll index 57333e3db51..dab0406fb05 100644 --- a/bench/sundials/optimized/arkode_butcher.ll +++ b/bench/sundials/optimized/arkode_butcher.ll @@ -7742,12 +7742,13 @@ arkode_butcher_order3a.exit: ; preds = %145, %137, %arkode_ br label %.preheader2931.preheader .preheader2931.preheader: ; preds = %155, %153 + %.52992.ph = phi i32 [ %150, %153 ], [ 0, %155 ] br label %.preheader2931 .preheader2931: ; preds = %.preheader2931.preheader, %194 %157 = phi i1 [ false, %194 ], [ true, %.preheader2931.preheader ] %indvars.iv3842.sroa.phi = phi ptr [ %.sroa.38, %194 ], [ %.sroa.05502, %.preheader2931.preheader ] - %.52992 = phi i32 [ %192, %194 ], [ %150, %.preheader2931.preheader ] + %.52992 = phi i32 [ %192, %194 ], [ %.52992.ph, %.preheader2931.preheader ] br label %.preheader2930 .preheader2930: ; preds = %.preheader2931, %193 @@ -7992,12 +7993,13 @@ arkode_butcher_order4a.exit: ; preds = %238, %230, %arkode_ br label %.preheader2923.preheader .preheader2923.preheader: ; preds = %249, %247 + %.123008.ph = phi i32 [ %243, %247 ], [ 0, %249 ] br label %.preheader2923 .preheader2923: ; preds = %.preheader2923.preheader, %300 %251 = phi i1 [ false, %300 ], [ true, %.preheader2923.preheader ] %indvars.iv3866.sroa.phi = phi ptr [ %.sroa.38, %300 ], [ %.sroa.05502, %.preheader2923.preheader ] - %.123008 = phi i32 [ %297, %300 ], [ %243, %.preheader2923.preheader ] + %.123008 = phi i32 [ %297, %300 ], [ %.123008.ph, %.preheader2923.preheader ] br label %.preheader2922 .preheader2922: ; preds = %.preheader2923, %299 @@ -8134,12 +8136,13 @@ arkode_butcher_order4b.exit: ; preds = %292, %arkode_butche br label %.preheader2919.preheader .preheader2919.preheader: ; preds = %303, %301 + %.163016.ph = phi i32 [ %297, %301 ], [ 0, %303 ] br label %.preheader2919 .preheader2919: ; preds = %.preheader2919.preheader, %355 %305 = phi i1 [ false, %355 ], [ true, %.preheader2919.preheader ] %indvars.iv3878.sroa.phi = phi ptr [ %.sroa.38, %355 ], [ %.sroa.05502, %.preheader2919.preheader ] - %.163016 = phi i32 [ %352, %355 ], [ %297, %.preheader2919.preheader ] + %.163016 = phi i32 [ %352, %355 ], [ %.163016.ph, %.preheader2919.preheader ] br label %.preheader2918 .preheader2918: ; preds = %.preheader2919, %354 @@ -8278,12 +8281,13 @@ arkode_butcher_order4c.exit: ; preds = %347, %339, %arkode_ br label %.preheader2915.preheader .preheader2915.preheader: ; preds = %358, %356 + %.203024.ph = phi i32 [ %352, %356 ], [ 0, %358 ] br label %.preheader2915 .preheader2915: ; preds = %.preheader2915.preheader, %414 %360 = phi i1 [ false, %414 ], [ true, %.preheader2915.preheader ] %indvars.iv3890.sroa.phi = phi ptr [ %.sroa.38, %414 ], [ %.sroa.05502, %.preheader2915.preheader ] - %.203024 = phi i32 [ %411, %414 ], [ %352, %.preheader2915.preheader ] + %.203024 = phi i32 [ %411, %414 ], [ %.203024.ph, %.preheader2915.preheader ] br label %.preheader2914 .preheader2914: ; preds = %.preheader2915, %413 @@ -8519,12 +8523,13 @@ thread-pre-split2567: ; preds = %thread-pre-split256 br label %.preheader2906.preheader .preheader2906.preheader: ; preds = %441, %439 + %.293044.ph = phi i32 [ %434, %439 ], [ 0, %441 ] br label %.preheader2906 .preheader2906: ; preds = %.preheader2906.preheader, %461 %443 = phi i1 [ false, %461 ], [ true, %.preheader2906.preheader ] %indvars.iv3920.sroa.phi = phi ptr [ %.sroa.38, %461 ], [ %.sroa.05502, %.preheader2906.preheader ] - %.293044 = phi i32 [ %457, %461 ], [ %434, %.preheader2906.preheader ] + %.293044 = phi i32 [ %457, %461 ], [ %.293044.ph, %.preheader2906.preheader ] br label %.preheader2905 .preheader2905: ; preds = %.preheader2906, %460 @@ -8587,12 +8592,13 @@ thread-pre-split2567: ; preds = %thread-pre-split256 br label %.preheader2902.preheader .preheader2902.preheader: ; preds = %464, %462 + %.343054.ph = phi i32 [ %457, %462 ], [ 0, %464 ] br label %.preheader2902 .preheader2902: ; preds = %.preheader2902.preheader, %484 %466 = phi i1 [ false, %484 ], [ true, %.preheader2902.preheader ] %indvars.iv3935.sroa.phi = phi ptr [ %.sroa.38, %484 ], [ %.sroa.05502, %.preheader2902.preheader ] - %.343054 = phi i32 [ %480, %484 ], [ %457, %.preheader2902.preheader ] + %.343054 = phi i32 [ %480, %484 ], [ %.343054.ph, %.preheader2902.preheader ] br label %.preheader2901 .preheader2901: ; preds = %.preheader2902, %483 @@ -8655,12 +8661,13 @@ thread-pre-split2567: ; preds = %thread-pre-split256 br label %.preheader2898.preheader .preheader2898.preheader: ; preds = %487, %485 + %.393064.ph = phi i32 [ %480, %485 ], [ 0, %487 ] br label %.preheader2898 .preheader2898: ; preds = %.preheader2898.preheader, %507 %489 = phi i1 [ false, %507 ], [ true, %.preheader2898.preheader ] %indvars.iv3950.sroa.phi = phi ptr [ %.sroa.38, %507 ], [ %.sroa.05502, %.preheader2898.preheader ] - %.393064 = phi i32 [ %503, %507 ], [ %480, %.preheader2898.preheader ] + %.393064 = phi i32 [ %503, %507 ], [ %.393064.ph, %.preheader2898.preheader ] br label %.preheader2897 .preheader2897: ; preds = %.preheader2898, %506 @@ -8723,12 +8730,13 @@ thread-pre-split2567: ; preds = %thread-pre-split256 br label %.preheader2894.preheader .preheader2894.preheader: ; preds = %510, %508 + %.443074.ph = phi i32 [ %503, %508 ], [ 0, %510 ] br label %.preheader2894 .preheader2894: ; preds = %.preheader2894.preheader, %530 %512 = phi i1 [ false, %530 ], [ true, %.preheader2894.preheader ] %indvars.iv3965.sroa.phi = phi ptr [ %.sroa.38, %530 ], [ %.sroa.05502, %.preheader2894.preheader ] - %.443074 = phi i32 [ %526, %530 ], [ %503, %.preheader2894.preheader ] + %.443074 = phi i32 [ %526, %530 ], [ %.443074.ph, %.preheader2894.preheader ] br label %.preheader2893 .preheader2893: ; preds = %.preheader2894, %529 @@ -8791,12 +8799,13 @@ thread-pre-split2567: ; preds = %thread-pre-split256 br label %.preheader2890.preheader .preheader2890.preheader: ; preds = %533, %531 + %.493084.ph = phi i32 [ %526, %531 ], [ 0, %533 ] br label %.preheader2890 .preheader2890: ; preds = %.preheader2890.preheader, %553 %535 = phi i1 [ false, %553 ], [ true, %.preheader2890.preheader ] %indvars.iv3980.sroa.phi = phi ptr [ %.sroa.38, %553 ], [ %.sroa.05502, %.preheader2890.preheader ] - %.493084 = phi i32 [ %549, %553 ], [ %526, %.preheader2890.preheader ] + %.493084 = phi i32 [ %549, %553 ], [ %.493084.ph, %.preheader2890.preheader ] br label %.preheader2889 .preheader2889: ; preds = %.preheader2890, %552 @@ -8859,12 +8868,13 @@ thread-pre-split2567: ; preds = %thread-pre-split256 br label %.preheader2886.preheader .preheader2886.preheader: ; preds = %556, %554 + %.543094.ph = phi i32 [ %549, %554 ], [ 0, %556 ] br label %.preheader2886 .preheader2886: ; preds = %.preheader2886.preheader, %576 %558 = phi i1 [ false, %576 ], [ true, %.preheader2886.preheader ] %indvars.iv3995.sroa.phi = phi ptr [ %.sroa.38, %576 ], [ %.sroa.05502, %.preheader2886.preheader ] - %.543094 = phi i32 [ %572, %576 ], [ %549, %.preheader2886.preheader ] + %.543094 = phi i32 [ %572, %576 ], [ %.543094.ph, %.preheader2886.preheader ] br label %.preheader2885 .preheader2885: ; preds = %.preheader2886, %575 @@ -8927,12 +8937,13 @@ thread-pre-split2567: ; preds = %thread-pre-split256 br label %.preheader2882.preheader .preheader2882.preheader: ; preds = %579, %577 + %.593104.ph = phi i32 [ %572, %577 ], [ 0, %579 ] br label %.preheader2882 .preheader2882: ; preds = %.preheader2882.preheader, %599 %581 = phi i1 [ false, %599 ], [ true, %.preheader2882.preheader ] %indvars.iv4010.sroa.phi = phi ptr [ %.sroa.38, %599 ], [ %.sroa.05502, %.preheader2882.preheader ] - %.593104 = phi i32 [ %595, %599 ], [ %572, %.preheader2882.preheader ] + %.593104 = phi i32 [ %595, %599 ], [ %.593104.ph, %.preheader2882.preheader ] br label %.preheader2881 .preheader2881: ; preds = %.preheader2882, %598 @@ -8995,12 +9006,13 @@ thread-pre-split2567: ; preds = %thread-pre-split256 br label %.preheader2878.preheader .preheader2878.preheader: ; preds = %602, %600 + %.643114.ph = phi i32 [ %595, %600 ], [ 0, %602 ] br label %.preheader2878 .preheader2878: ; preds = %.preheader2878.preheader, %622 %604 = phi i1 [ false, %622 ], [ true, %.preheader2878.preheader ] %indvars.iv4025.sroa.phi = phi ptr [ %.sroa.38, %622 ], [ %.sroa.05502, %.preheader2878.preheader ] - %.643114 = phi i32 [ %618, %622 ], [ %595, %.preheader2878.preheader ] + %.643114 = phi i32 [ %618, %622 ], [ %.643114.ph, %.preheader2878.preheader ] br label %.preheader2877 .preheader2877: ; preds = %.preheader2878, %621 @@ -9153,12 +9165,13 @@ thread-pre-split2571: ; preds = %thread-pre-split256 br label %.preheader2868.preheader .preheader2868.preheader: ; preds = %652, %650 + %.753138.ph = phi i32 [ %644, %650 ], [ 0, %652 ] br label %.preheader2868 .preheader2868: ; preds = %.preheader2868.preheader, %675 %654 = phi i1 [ false, %675 ], [ true, %.preheader2868.preheader ] %indvars.iv4061.sroa.phi = phi ptr [ %.sroa.38, %675 ], [ %.sroa.05502, %.preheader2868.preheader ] - %.753138 = phi i32 [ %670, %675 ], [ %644, %.preheader2868.preheader ] + %.753138 = phi i32 [ %670, %675 ], [ %.753138.ph, %.preheader2868.preheader ] br label %.preheader2867 .preheader2867: ; preds = %.preheader2868, %674 @@ -9231,12 +9244,13 @@ thread-pre-split2571: ; preds = %thread-pre-split256 br label %.preheader2863.preheader .preheader2863.preheader: ; preds = %678, %676 + %.813150.ph = phi i32 [ %670, %676 ], [ 0, %678 ] br label %.preheader2863 .preheader2863: ; preds = %.preheader2863.preheader, %701 %680 = phi i1 [ false, %701 ], [ true, %.preheader2863.preheader ] %indvars.iv4079.sroa.phi = phi ptr [ %.sroa.38, %701 ], [ %.sroa.05502, %.preheader2863.preheader ] - %.813150 = phi i32 [ %696, %701 ], [ %670, %.preheader2863.preheader ] + %.813150 = phi i32 [ %696, %701 ], [ %.813150.ph, %.preheader2863.preheader ] br label %.preheader2862 .preheader2862: ; preds = %.preheader2863, %700 @@ -9309,12 +9323,13 @@ thread-pre-split2571: ; preds = %thread-pre-split256 br label %.preheader2858.preheader .preheader2858.preheader: ; preds = %704, %702 + %.873162.ph = phi i32 [ %696, %702 ], [ 0, %704 ] br label %.preheader2858 .preheader2858: ; preds = %.preheader2858.preheader, %727 %706 = phi i1 [ false, %727 ], [ true, %.preheader2858.preheader ] %indvars.iv4097.sroa.phi = phi ptr [ %.sroa.38, %727 ], [ %.sroa.05502, %.preheader2858.preheader ] - %.873162 = phi i32 [ %722, %727 ], [ %696, %.preheader2858.preheader ] + %.873162 = phi i32 [ %722, %727 ], [ %.873162.ph, %.preheader2858.preheader ] br label %.preheader2857 .preheader2857: ; preds = %.preheader2858, %726 @@ -9387,12 +9402,13 @@ thread-pre-split2571: ; preds = %thread-pre-split256 br label %.preheader2853.preheader .preheader2853.preheader: ; preds = %730, %728 + %.933174.ph = phi i32 [ %722, %728 ], [ 0, %730 ] br label %.preheader2853 .preheader2853: ; preds = %.preheader2853.preheader, %753 %732 = phi i1 [ false, %753 ], [ true, %.preheader2853.preheader ] %indvars.iv4115.sroa.phi = phi ptr [ %.sroa.38, %753 ], [ %.sroa.05502, %.preheader2853.preheader ] - %.933174 = phi i32 [ %748, %753 ], [ %722, %.preheader2853.preheader ] + %.933174 = phi i32 [ %748, %753 ], [ %.933174.ph, %.preheader2853.preheader ] br label %.preheader2852 .preheader2852: ; preds = %.preheader2853, %752 @@ -9465,12 +9481,13 @@ thread-pre-split2571: ; preds = %thread-pre-split256 br label %.preheader2848.preheader .preheader2848.preheader: ; preds = %756, %754 + %.993186.ph = phi i32 [ %748, %754 ], [ 0, %756 ] br label %.preheader2848 .preheader2848: ; preds = %.preheader2848.preheader, %779 %758 = phi i1 [ false, %779 ], [ true, %.preheader2848.preheader ] %indvars.iv4133.sroa.phi = phi ptr [ %.sroa.38, %779 ], [ %.sroa.05502, %.preheader2848.preheader ] - %.993186 = phi i32 [ %774, %779 ], [ %748, %.preheader2848.preheader ] + %.993186 = phi i32 [ %774, %779 ], [ %.993186.ph, %.preheader2848.preheader ] br label %.preheader2847 .preheader2847: ; preds = %.preheader2848, %778 @@ -9543,12 +9560,13 @@ thread-pre-split2571: ; preds = %thread-pre-split256 br label %.preheader2843.preheader .preheader2843.preheader: ; preds = %782, %780 + %.1053198.ph = phi i32 [ %774, %780 ], [ 0, %782 ] br label %.preheader2843 .preheader2843: ; preds = %.preheader2843.preheader, %805 %784 = phi i1 [ false, %805 ], [ true, %.preheader2843.preheader ] %indvars.iv4151.sroa.phi = phi ptr [ %.sroa.38, %805 ], [ %.sroa.05502, %.preheader2843.preheader ] - %.1053198 = phi i32 [ %800, %805 ], [ %774, %.preheader2843.preheader ] + %.1053198 = phi i32 [ %800, %805 ], [ %.1053198.ph, %.preheader2843.preheader ] br label %.preheader2842 .preheader2842: ; preds = %.preheader2843, %804 @@ -9621,12 +9639,13 @@ thread-pre-split2571: ; preds = %thread-pre-split256 br label %.preheader2838.preheader .preheader2838.preheader: ; preds = %808, %806 + %.1113210.ph = phi i32 [ %800, %806 ], [ 0, %808 ] br label %.preheader2838 .preheader2838: ; preds = %.preheader2838.preheader, %831 %810 = phi i1 [ false, %831 ], [ true, %.preheader2838.preheader ] %indvars.iv4169.sroa.phi = phi ptr [ %.sroa.38, %831 ], [ %.sroa.05502, %.preheader2838.preheader ] - %.1113210 = phi i32 [ %826, %831 ], [ %800, %.preheader2838.preheader ] + %.1113210 = phi i32 [ %826, %831 ], [ %.1113210.ph, %.preheader2838.preheader ] br label %.preheader2837 .preheader2837: ; preds = %.preheader2838, %830 @@ -9699,12 +9718,13 @@ thread-pre-split2571: ; preds = %thread-pre-split256 br label %.preheader2833.preheader .preheader2833.preheader: ; preds = %834, %832 + %.1173222.ph = phi i32 [ %826, %832 ], [ 0, %834 ] br label %.preheader2833 .preheader2833: ; preds = %.preheader2833.preheader, %857 %836 = phi i1 [ false, %857 ], [ true, %.preheader2833.preheader ] %indvars.iv4187.sroa.phi = phi ptr [ %.sroa.38, %857 ], [ %.sroa.05502, %.preheader2833.preheader ] - %.1173222 = phi i32 [ %852, %857 ], [ %826, %.preheader2833.preheader ] + %.1173222 = phi i32 [ %852, %857 ], [ %.1173222.ph, %.preheader2833.preheader ] br label %.preheader2832 .preheader2832: ; preds = %.preheader2833, %856 @@ -9777,12 +9797,13 @@ thread-pre-split2571: ; preds = %thread-pre-split256 br label %.preheader2828.preheader .preheader2828.preheader: ; preds = %860, %858 + %.1233234.ph = phi i32 [ %852, %858 ], [ 0, %860 ] br label %.preheader2828 .preheader2828: ; preds = %.preheader2828.preheader, %883 %862 = phi i1 [ false, %883 ], [ true, %.preheader2828.preheader ] %indvars.iv4205.sroa.phi = phi ptr [ %.sroa.38, %883 ], [ %.sroa.05502, %.preheader2828.preheader ] - %.1233234 = phi i32 [ %878, %883 ], [ %852, %.preheader2828.preheader ] + %.1233234 = phi i32 [ %878, %883 ], [ %.1233234.ph, %.preheader2828.preheader ] br label %.preheader2827 .preheader2827: ; preds = %.preheader2828, %882 @@ -9855,12 +9876,13 @@ thread-pre-split2571: ; preds = %thread-pre-split256 br label %.preheader2823.preheader .preheader2823.preheader: ; preds = %886, %884 + %.1293246.ph = phi i32 [ %878, %884 ], [ 0, %886 ] br label %.preheader2823 .preheader2823: ; preds = %.preheader2823.preheader, %909 %888 = phi i1 [ false, %909 ], [ true, %.preheader2823.preheader ] %indvars.iv4223.sroa.phi = phi ptr [ %.sroa.38, %909 ], [ %.sroa.05502, %.preheader2823.preheader ] - %.1293246 = phi i32 [ %904, %909 ], [ %878, %.preheader2823.preheader ] + %.1293246 = phi i32 [ %904, %909 ], [ %.1293246.ph, %.preheader2823.preheader ] br label %.preheader2822 .preheader2822: ; preds = %.preheader2823, %908 @@ -9933,12 +9955,13 @@ thread-pre-split2571: ; preds = %thread-pre-split256 br label %.preheader2818.preheader .preheader2818.preheader: ; preds = %912, %910 + %.1353258.ph = phi i32 [ %904, %910 ], [ 0, %912 ] br label %.preheader2818 .preheader2818: ; preds = %.preheader2818.preheader, %935 %914 = phi i1 [ false, %935 ], [ true, %.preheader2818.preheader ] %indvars.iv4241.sroa.phi = phi ptr [ %.sroa.38, %935 ], [ %.sroa.05502, %.preheader2818.preheader ] - %.1353258 = phi i32 [ %930, %935 ], [ %904, %.preheader2818.preheader ] + %.1353258 = phi i32 [ %930, %935 ], [ %.1353258.ph, %.preheader2818.preheader ] br label %.preheader2817 .preheader2817: ; preds = %.preheader2818, %934 @@ -10011,12 +10034,13 @@ thread-pre-split2571: ; preds = %thread-pre-split256 br label %.preheader2813.preheader .preheader2813.preheader: ; preds = %938, %936 + %.1413270.ph = phi i32 [ %930, %936 ], [ 0, %938 ] br label %.preheader2813 .preheader2813: ; preds = %.preheader2813.preheader, %961 %940 = phi i1 [ false, %961 ], [ true, %.preheader2813.preheader ] %indvars.iv4259.sroa.phi = phi ptr [ %.sroa.38, %961 ], [ %.sroa.05502, %.preheader2813.preheader ] - %.1413270 = phi i32 [ %956, %961 ], [ %930, %.preheader2813.preheader ] + %.1413270 = phi i32 [ %956, %961 ], [ %.1413270.ph, %.preheader2813.preheader ] br label %.preheader2812 .preheader2812: ; preds = %.preheader2813, %960 @@ -10089,12 +10113,13 @@ thread-pre-split2571: ; preds = %thread-pre-split256 br label %.preheader2808.preheader .preheader2808.preheader: ; preds = %964, %962 + %.1473282.ph = phi i32 [ %956, %962 ], [ 0, %964 ] br label %.preheader2808 .preheader2808: ; preds = %.preheader2808.preheader, %987 %966 = phi i1 [ false, %987 ], [ true, %.preheader2808.preheader ] %indvars.iv4277.sroa.phi = phi ptr [ %.sroa.38, %987 ], [ %.sroa.05502, %.preheader2808.preheader ] - %.1473282 = phi i32 [ %982, %987 ], [ %956, %.preheader2808.preheader ] + %.1473282 = phi i32 [ %982, %987 ], [ %.1473282.ph, %.preheader2808.preheader ] br label %.preheader2807 .preheader2807: ; preds = %.preheader2808, %986 @@ -10167,12 +10192,13 @@ thread-pre-split2571: ; preds = %thread-pre-split256 br label %.preheader2803.preheader .preheader2803.preheader: ; preds = %990, %988 + %.1533294.ph = phi i32 [ %982, %988 ], [ 0, %990 ] br label %.preheader2803 .preheader2803: ; preds = %.preheader2803.preheader, %1013 %992 = phi i1 [ false, %1013 ], [ true, %.preheader2803.preheader ] %indvars.iv4295.sroa.phi = phi ptr [ %.sroa.38, %1013 ], [ %.sroa.05502, %.preheader2803.preheader ] - %.1533294 = phi i32 [ %1008, %1013 ], [ %982, %.preheader2803.preheader ] + %.1533294 = phi i32 [ %1008, %1013 ], [ %.1533294.ph, %.preheader2803.preheader ] br label %.preheader2802 .preheader2802: ; preds = %.preheader2803, %1012 @@ -10245,12 +10271,13 @@ thread-pre-split2571: ; preds = %thread-pre-split256 br label %.preheader2798.preheader .preheader2798.preheader: ; preds = %1016, %1014 + %.1593306.ph = phi i32 [ %1008, %1014 ], [ 0, %1016 ] br label %.preheader2798 .preheader2798: ; preds = %.preheader2798.preheader, %1039 %1018 = phi i1 [ false, %1039 ], [ true, %.preheader2798.preheader ] %indvars.iv4313.sroa.phi = phi ptr [ %.sroa.38, %1039 ], [ %.sroa.05502, %.preheader2798.preheader ] - %.1593306 = phi i32 [ %1034, %1039 ], [ %1008, %.preheader2798.preheader ] + %.1593306 = phi i32 [ %1034, %1039 ], [ %.1593306.ph, %.preheader2798.preheader ] br label %.preheader2797 .preheader2797: ; preds = %.preheader2798, %1038 @@ -10323,12 +10350,13 @@ thread-pre-split2571: ; preds = %thread-pre-split256 br label %.preheader2793.preheader .preheader2793.preheader: ; preds = %1042, %1040 + %.1653318.ph = phi i32 [ %1034, %1040 ], [ 0, %1042 ] br label %.preheader2793 .preheader2793: ; preds = %.preheader2793.preheader, %1065 %1044 = phi i1 [ false, %1065 ], [ true, %.preheader2793.preheader ] %indvars.iv4331.sroa.phi = phi ptr [ %.sroa.38, %1065 ], [ %.sroa.05502, %.preheader2793.preheader ] - %.1653318 = phi i32 [ %1060, %1065 ], [ %1034, %.preheader2793.preheader ] + %.1653318 = phi i32 [ %1060, %1065 ], [ %.1653318.ph, %.preheader2793.preheader ] br label %.preheader2792 .preheader2792: ; preds = %.preheader2793, %1064 @@ -10401,12 +10429,13 @@ thread-pre-split2571: ; preds = %thread-pre-split256 br label %.preheader2788.preheader .preheader2788.preheader: ; preds = %1068, %1066 + %.1713330.ph = phi i32 [ %1060, %1066 ], [ 0, %1068 ] br label %.preheader2788 .preheader2788: ; preds = %.preheader2788.preheader, %1091 %1070 = phi i1 [ false, %1091 ], [ true, %.preheader2788.preheader ] %indvars.iv4349.sroa.phi = phi ptr [ %.sroa.38, %1091 ], [ %.sroa.05502, %.preheader2788.preheader ] - %.1713330 = phi i32 [ %1086, %1091 ], [ %1060, %.preheader2788.preheader ] + %.1713330 = phi i32 [ %1086, %1091 ], [ %.1713330.ph, %.preheader2788.preheader ] br label %.preheader2787 .preheader2787: ; preds = %.preheader2788, %1090 @@ -10479,12 +10508,13 @@ thread-pre-split2571: ; preds = %thread-pre-split256 br label %.preheader2783.preheader .preheader2783.preheader: ; preds = %1094, %1092 + %.1773342.ph = phi i32 [ %1086, %1092 ], [ 0, %1094 ] br label %.preheader2783 .preheader2783: ; preds = %.preheader2783.preheader, %1117 %1096 = phi i1 [ false, %1117 ], [ true, %.preheader2783.preheader ] %indvars.iv4367.sroa.phi = phi ptr [ %.sroa.38, %1117 ], [ %.sroa.05502, %.preheader2783.preheader ] - %.1773342 = phi i32 [ %1112, %1117 ], [ %1086, %.preheader2783.preheader ] + %.1773342 = phi i32 [ %1112, %1117 ], [ %.1773342.ph, %.preheader2783.preheader ] br label %.preheader2782 .preheader2782: ; preds = %.preheader2783, %1116 @@ -10886,12 +10916,13 @@ arkode_butcher_order3a.exit2424: ; preds = %1225, %1217, %arkod br label %.preheader2771.preheader .preheader2771.preheader: ; preds = %1235, %1233 + %.1883358.ph = phi i32 [ %1230, %1233 ], [ 0, %1235 ] br label %.preheader2771 .preheader2771: ; preds = %.preheader2771.preheader, %1274 %1237 = phi i1 [ false, %1274 ], [ true, %.preheader2771.preheader ] %indvars.iv4391.sroa.phi = phi ptr [ %.sroa.41, %1274 ], [ %.sroa.0, %.preheader2771.preheader ] - %.1883358 = phi i32 [ %1272, %1274 ], [ %1230, %.preheader2771.preheader ] + %.1883358 = phi i32 [ %1272, %1274 ], [ %.1883358.ph, %.preheader2771.preheader ] br label %.preheader2770 .preheader2770: ; preds = %.preheader2771, %1273 @@ -11136,12 +11167,13 @@ arkode_butcher_order4a.exit2464: ; preds = %1318, %1310, %arkod br label %.preheader2763.preheader .preheader2763.preheader: ; preds = %1329, %1327 + %.1953374.ph = phi i32 [ %1323, %1327 ], [ 0, %1329 ] br label %.preheader2763 .preheader2763: ; preds = %.preheader2763.preheader, %1380 %1331 = phi i1 [ false, %1380 ], [ true, %.preheader2763.preheader ] %indvars.iv4415.sroa.phi = phi ptr [ %.sroa.41, %1380 ], [ %.sroa.0, %.preheader2763.preheader ] - %.1953374 = phi i32 [ %1377, %1380 ], [ %1323, %.preheader2763.preheader ] + %.1953374 = phi i32 [ %1377, %1380 ], [ %.1953374.ph, %.preheader2763.preheader ] br label %.preheader2762 .preheader2762: ; preds = %.preheader2763, %1379 @@ -11278,12 +11310,13 @@ arkode_butcher_order4b.exit2491: ; preds = %1372, %arkode_butch br label %.preheader2759.preheader .preheader2759.preheader: ; preds = %1383, %1381 + %.1993382.ph = phi i32 [ %1377, %1381 ], [ 0, %1383 ] br label %.preheader2759 .preheader2759: ; preds = %.preheader2759.preheader, %1435 %1385 = phi i1 [ false, %1435 ], [ true, %.preheader2759.preheader ] %indvars.iv4427.sroa.phi = phi ptr [ %.sroa.41, %1435 ], [ %.sroa.0, %.preheader2759.preheader ] - %.1993382 = phi i32 [ %1432, %1435 ], [ %1377, %.preheader2759.preheader ] + %.1993382 = phi i32 [ %1432, %1435 ], [ %.1993382.ph, %.preheader2759.preheader ] br label %.preheader2758 .preheader2758: ; preds = %.preheader2759, %1434 @@ -11422,12 +11455,13 @@ arkode_butcher_order4c.exit2517: ; preds = %1427, %1419, %arkod br label %.preheader2755.preheader .preheader2755.preheader: ; preds = %1438, %1436 + %.2033390.ph = phi i32 [ %1432, %1436 ], [ 0, %1438 ] br label %.preheader2755 .preheader2755: ; preds = %.preheader2755.preheader, %1494 %1440 = phi i1 [ false, %1494 ], [ true, %.preheader2755.preheader ] %indvars.iv4439.sroa.phi = phi ptr [ %.sroa.41, %1494 ], [ %.sroa.0, %.preheader2755.preheader ] - %.2033390 = phi i32 [ %1491, %1494 ], [ %1432, %.preheader2755.preheader ] + %.2033390 = phi i32 [ %1491, %1494 ], [ %.2033390.ph, %.preheader2755.preheader ] br label %.preheader2754 .preheader2754: ; preds = %.preheader2755, %1493 @@ -11663,12 +11697,13 @@ thread-pre-split2596: ; preds = %thread-pre-split259 br label %.preheader2746.preheader .preheader2746.preheader: ; preds = %1521, %1519 + %.2123410.ph = phi i32 [ %1514, %1519 ], [ 0, %1521 ] br label %.preheader2746 .preheader2746: ; preds = %.preheader2746.preheader, %1541 %1523 = phi i1 [ false, %1541 ], [ true, %.preheader2746.preheader ] %indvars.iv4469.sroa.phi = phi ptr [ %.sroa.41, %1541 ], [ %.sroa.0, %.preheader2746.preheader ] - %.2123410 = phi i32 [ %1537, %1541 ], [ %1514, %.preheader2746.preheader ] + %.2123410 = phi i32 [ %1537, %1541 ], [ %.2123410.ph, %.preheader2746.preheader ] br label %.preheader2745 .preheader2745: ; preds = %.preheader2746, %1540 @@ -11731,12 +11766,13 @@ thread-pre-split2596: ; preds = %thread-pre-split259 br label %.preheader2742.preheader .preheader2742.preheader: ; preds = %1544, %1542 + %.2173420.ph = phi i32 [ %1537, %1542 ], [ 0, %1544 ] br label %.preheader2742 .preheader2742: ; preds = %.preheader2742.preheader, %1564 %1546 = phi i1 [ false, %1564 ], [ true, %.preheader2742.preheader ] %indvars.iv4484.sroa.phi = phi ptr [ %.sroa.41, %1564 ], [ %.sroa.0, %.preheader2742.preheader ] - %.2173420 = phi i32 [ %1560, %1564 ], [ %1537, %.preheader2742.preheader ] + %.2173420 = phi i32 [ %1560, %1564 ], [ %.2173420.ph, %.preheader2742.preheader ] br label %.preheader2741 .preheader2741: ; preds = %.preheader2742, %1563 @@ -11799,12 +11835,13 @@ thread-pre-split2596: ; preds = %thread-pre-split259 br label %.preheader2738.preheader .preheader2738.preheader: ; preds = %1567, %1565 + %.2223430.ph = phi i32 [ %1560, %1565 ], [ 0, %1567 ] br label %.preheader2738 .preheader2738: ; preds = %.preheader2738.preheader, %1587 %1569 = phi i1 [ false, %1587 ], [ true, %.preheader2738.preheader ] %indvars.iv4499.sroa.phi = phi ptr [ %.sroa.41, %1587 ], [ %.sroa.0, %.preheader2738.preheader ] - %.2223430 = phi i32 [ %1583, %1587 ], [ %1560, %.preheader2738.preheader ] + %.2223430 = phi i32 [ %1583, %1587 ], [ %.2223430.ph, %.preheader2738.preheader ] br label %.preheader2737 .preheader2737: ; preds = %.preheader2738, %1586 @@ -11867,12 +11904,13 @@ thread-pre-split2596: ; preds = %thread-pre-split259 br label %.preheader2734.preheader .preheader2734.preheader: ; preds = %1590, %1588 + %.2273440.ph = phi i32 [ %1583, %1588 ], [ 0, %1590 ] br label %.preheader2734 .preheader2734: ; preds = %.preheader2734.preheader, %1610 %1592 = phi i1 [ false, %1610 ], [ true, %.preheader2734.preheader ] %indvars.iv4514.sroa.phi = phi ptr [ %.sroa.41, %1610 ], [ %.sroa.0, %.preheader2734.preheader ] - %.2273440 = phi i32 [ %1606, %1610 ], [ %1583, %.preheader2734.preheader ] + %.2273440 = phi i32 [ %1606, %1610 ], [ %.2273440.ph, %.preheader2734.preheader ] br label %.preheader2733 .preheader2733: ; preds = %.preheader2734, %1609 @@ -11935,12 +11973,13 @@ thread-pre-split2596: ; preds = %thread-pre-split259 br label %.preheader2730.preheader .preheader2730.preheader: ; preds = %1613, %1611 + %.2323450.ph = phi i32 [ %1606, %1611 ], [ 0, %1613 ] br label %.preheader2730 .preheader2730: ; preds = %.preheader2730.preheader, %1633 %1615 = phi i1 [ false, %1633 ], [ true, %.preheader2730.preheader ] %indvars.iv4529.sroa.phi = phi ptr [ %.sroa.41, %1633 ], [ %.sroa.0, %.preheader2730.preheader ] - %.2323450 = phi i32 [ %1629, %1633 ], [ %1606, %.preheader2730.preheader ] + %.2323450 = phi i32 [ %1629, %1633 ], [ %.2323450.ph, %.preheader2730.preheader ] br label %.preheader2729 .preheader2729: ; preds = %.preheader2730, %1632 @@ -12003,12 +12042,13 @@ thread-pre-split2596: ; preds = %thread-pre-split259 br label %.preheader2726.preheader .preheader2726.preheader: ; preds = %1636, %1634 + %.2373460.ph = phi i32 [ %1629, %1634 ], [ 0, %1636 ] br label %.preheader2726 .preheader2726: ; preds = %.preheader2726.preheader, %1656 %1638 = phi i1 [ false, %1656 ], [ true, %.preheader2726.preheader ] %indvars.iv4544.sroa.phi = phi ptr [ %.sroa.41, %1656 ], [ %.sroa.0, %.preheader2726.preheader ] - %.2373460 = phi i32 [ %1652, %1656 ], [ %1629, %.preheader2726.preheader ] + %.2373460 = phi i32 [ %1652, %1656 ], [ %.2373460.ph, %.preheader2726.preheader ] br label %.preheader2725 .preheader2725: ; preds = %.preheader2726, %1655 @@ -12071,12 +12111,13 @@ thread-pre-split2596: ; preds = %thread-pre-split259 br label %.preheader2722.preheader .preheader2722.preheader: ; preds = %1659, %1657 + %.2423470.ph = phi i32 [ %1652, %1657 ], [ 0, %1659 ] br label %.preheader2722 .preheader2722: ; preds = %.preheader2722.preheader, %1679 %1661 = phi i1 [ false, %1679 ], [ true, %.preheader2722.preheader ] %indvars.iv4559.sroa.phi = phi ptr [ %.sroa.41, %1679 ], [ %.sroa.0, %.preheader2722.preheader ] - %.2423470 = phi i32 [ %1675, %1679 ], [ %1652, %.preheader2722.preheader ] + %.2423470 = phi i32 [ %1675, %1679 ], [ %.2423470.ph, %.preheader2722.preheader ] br label %.preheader2721 .preheader2721: ; preds = %.preheader2722, %1678 @@ -12139,12 +12180,13 @@ thread-pre-split2596: ; preds = %thread-pre-split259 br label %.preheader2718.preheader .preheader2718.preheader: ; preds = %1682, %1680 + %.2473480.ph = phi i32 [ %1675, %1680 ], [ 0, %1682 ] br label %.preheader2718 .preheader2718: ; preds = %.preheader2718.preheader, %1702 %1684 = phi i1 [ false, %1702 ], [ true, %.preheader2718.preheader ] %indvars.iv4574.sroa.phi = phi ptr [ %.sroa.41, %1702 ], [ %.sroa.0, %.preheader2718.preheader ] - %.2473480 = phi i32 [ %1698, %1702 ], [ %1675, %.preheader2718.preheader ] + %.2473480 = phi i32 [ %1698, %1702 ], [ %.2473480.ph, %.preheader2718.preheader ] br label %.preheader2717 .preheader2717: ; preds = %.preheader2718, %1701 @@ -12297,12 +12339,13 @@ thread-pre-split2600: ; preds = %thread-pre-split259 br label %.preheader2708.preheader .preheader2708.preheader: ; preds = %1732, %1730 + %.2583504.ph = phi i32 [ %1724, %1730 ], [ 0, %1732 ] br label %.preheader2708 .preheader2708: ; preds = %.preheader2708.preheader, %1755 %1734 = phi i1 [ false, %1755 ], [ true, %.preheader2708.preheader ] %indvars.iv4610.sroa.phi = phi ptr [ %.sroa.41, %1755 ], [ %.sroa.0, %.preheader2708.preheader ] - %.2583504 = phi i32 [ %1750, %1755 ], [ %1724, %.preheader2708.preheader ] + %.2583504 = phi i32 [ %1750, %1755 ], [ %.2583504.ph, %.preheader2708.preheader ] br label %.preheader2707 .preheader2707: ; preds = %.preheader2708, %1754 @@ -12375,12 +12418,13 @@ thread-pre-split2600: ; preds = %thread-pre-split259 br label %.preheader2703.preheader .preheader2703.preheader: ; preds = %1758, %1756 + %.2643516.ph = phi i32 [ %1750, %1756 ], [ 0, %1758 ] br label %.preheader2703 .preheader2703: ; preds = %.preheader2703.preheader, %1781 %1760 = phi i1 [ false, %1781 ], [ true, %.preheader2703.preheader ] %indvars.iv4628.sroa.phi = phi ptr [ %.sroa.41, %1781 ], [ %.sroa.0, %.preheader2703.preheader ] - %.2643516 = phi i32 [ %1776, %1781 ], [ %1750, %.preheader2703.preheader ] + %.2643516 = phi i32 [ %1776, %1781 ], [ %.2643516.ph, %.preheader2703.preheader ] br label %.preheader2702 .preheader2702: ; preds = %.preheader2703, %1780 @@ -12453,12 +12497,13 @@ thread-pre-split2600: ; preds = %thread-pre-split259 br label %.preheader2698.preheader .preheader2698.preheader: ; preds = %1784, %1782 + %.2703528.ph = phi i32 [ %1776, %1782 ], [ 0, %1784 ] br label %.preheader2698 .preheader2698: ; preds = %.preheader2698.preheader, %1807 %1786 = phi i1 [ false, %1807 ], [ true, %.preheader2698.preheader ] %indvars.iv4646.sroa.phi = phi ptr [ %.sroa.41, %1807 ], [ %.sroa.0, %.preheader2698.preheader ] - %.2703528 = phi i32 [ %1802, %1807 ], [ %1776, %.preheader2698.preheader ] + %.2703528 = phi i32 [ %1802, %1807 ], [ %.2703528.ph, %.preheader2698.preheader ] br label %.preheader2697 .preheader2697: ; preds = %.preheader2698, %1806 @@ -12531,12 +12576,13 @@ thread-pre-split2600: ; preds = %thread-pre-split259 br label %.preheader2693.preheader .preheader2693.preheader: ; preds = %1810, %1808 + %.2763540.ph = phi i32 [ %1802, %1808 ], [ 0, %1810 ] br label %.preheader2693 .preheader2693: ; preds = %.preheader2693.preheader, %1833 %1812 = phi i1 [ false, %1833 ], [ true, %.preheader2693.preheader ] %indvars.iv4664.sroa.phi = phi ptr [ %.sroa.41, %1833 ], [ %.sroa.0, %.preheader2693.preheader ] - %.2763540 = phi i32 [ %1828, %1833 ], [ %1802, %.preheader2693.preheader ] + %.2763540 = phi i32 [ %1828, %1833 ], [ %.2763540.ph, %.preheader2693.preheader ] br label %.preheader2692 .preheader2692: ; preds = %.preheader2693, %1832 @@ -12609,12 +12655,13 @@ thread-pre-split2600: ; preds = %thread-pre-split259 br label %.preheader2688.preheader .preheader2688.preheader: ; preds = %1836, %1834 + %.2823552.ph = phi i32 [ %1828, %1834 ], [ 0, %1836 ] br label %.preheader2688 .preheader2688: ; preds = %.preheader2688.preheader, %1859 %1838 = phi i1 [ false, %1859 ], [ true, %.preheader2688.preheader ] %indvars.iv4682.sroa.phi = phi ptr [ %.sroa.41, %1859 ], [ %.sroa.0, %.preheader2688.preheader ] - %.2823552 = phi i32 [ %1854, %1859 ], [ %1828, %.preheader2688.preheader ] + %.2823552 = phi i32 [ %1854, %1859 ], [ %.2823552.ph, %.preheader2688.preheader ] br label %.preheader2687 .preheader2687: ; preds = %.preheader2688, %1858 @@ -12687,12 +12734,13 @@ thread-pre-split2600: ; preds = %thread-pre-split259 br label %.preheader2683.preheader .preheader2683.preheader: ; preds = %1862, %1860 + %.2883564.ph = phi i32 [ %1854, %1860 ], [ 0, %1862 ] br label %.preheader2683 .preheader2683: ; preds = %.preheader2683.preheader, %1885 %1864 = phi i1 [ false, %1885 ], [ true, %.preheader2683.preheader ] %indvars.iv4700.sroa.phi = phi ptr [ %.sroa.41, %1885 ], [ %.sroa.0, %.preheader2683.preheader ] - %.2883564 = phi i32 [ %1880, %1885 ], [ %1854, %.preheader2683.preheader ] + %.2883564 = phi i32 [ %1880, %1885 ], [ %.2883564.ph, %.preheader2683.preheader ] br label %.preheader2682 .preheader2682: ; preds = %.preheader2683, %1884 @@ -12765,12 +12813,13 @@ thread-pre-split2600: ; preds = %thread-pre-split259 br label %.preheader2678.preheader .preheader2678.preheader: ; preds = %1888, %1886 + %.2943576.ph = phi i32 [ %1880, %1886 ], [ 0, %1888 ] br label %.preheader2678 .preheader2678: ; preds = %.preheader2678.preheader, %1911 %1890 = phi i1 [ false, %1911 ], [ true, %.preheader2678.preheader ] %indvars.iv4718.sroa.phi = phi ptr [ %.sroa.41, %1911 ], [ %.sroa.0, %.preheader2678.preheader ] - %.2943576 = phi i32 [ %1906, %1911 ], [ %1880, %.preheader2678.preheader ] + %.2943576 = phi i32 [ %1906, %1911 ], [ %.2943576.ph, %.preheader2678.preheader ] br label %.preheader2677 .preheader2677: ; preds = %.preheader2678, %1910 @@ -12843,12 +12892,13 @@ thread-pre-split2600: ; preds = %thread-pre-split259 br label %.preheader2673.preheader .preheader2673.preheader: ; preds = %1914, %1912 + %.3003588.ph = phi i32 [ %1906, %1912 ], [ 0, %1914 ] br label %.preheader2673 .preheader2673: ; preds = %.preheader2673.preheader, %1937 %1916 = phi i1 [ false, %1937 ], [ true, %.preheader2673.preheader ] %indvars.iv4736.sroa.phi = phi ptr [ %.sroa.41, %1937 ], [ %.sroa.0, %.preheader2673.preheader ] - %.3003588 = phi i32 [ %1932, %1937 ], [ %1906, %.preheader2673.preheader ] + %.3003588 = phi i32 [ %1932, %1937 ], [ %.3003588.ph, %.preheader2673.preheader ] br label %.preheader2672 .preheader2672: ; preds = %.preheader2673, %1936 @@ -12921,12 +12971,13 @@ thread-pre-split2600: ; preds = %thread-pre-split259 br label %.preheader2668.preheader .preheader2668.preheader: ; preds = %1940, %1938 + %.3063600.ph = phi i32 [ %1932, %1938 ], [ 0, %1940 ] br label %.preheader2668 .preheader2668: ; preds = %.preheader2668.preheader, %1963 %1942 = phi i1 [ false, %1963 ], [ true, %.preheader2668.preheader ] %indvars.iv4754.sroa.phi = phi ptr [ %.sroa.41, %1963 ], [ %.sroa.0, %.preheader2668.preheader ] - %.3063600 = phi i32 [ %1958, %1963 ], [ %1932, %.preheader2668.preheader ] + %.3063600 = phi i32 [ %1958, %1963 ], [ %.3063600.ph, %.preheader2668.preheader ] br label %.preheader2667 .preheader2667: ; preds = %.preheader2668, %1962 @@ -12999,12 +13050,13 @@ thread-pre-split2600: ; preds = %thread-pre-split259 br label %.preheader2663.preheader .preheader2663.preheader: ; preds = %1966, %1964 + %.3123612.ph = phi i32 [ %1958, %1964 ], [ 0, %1966 ] br label %.preheader2663 .preheader2663: ; preds = %.preheader2663.preheader, %1989 %1968 = phi i1 [ false, %1989 ], [ true, %.preheader2663.preheader ] %indvars.iv4772.sroa.phi = phi ptr [ %.sroa.41, %1989 ], [ %.sroa.0, %.preheader2663.preheader ] - %.3123612 = phi i32 [ %1984, %1989 ], [ %1958, %.preheader2663.preheader ] + %.3123612 = phi i32 [ %1984, %1989 ], [ %.3123612.ph, %.preheader2663.preheader ] br label %.preheader2662 .preheader2662: ; preds = %.preheader2663, %1988 @@ -13077,12 +13129,13 @@ thread-pre-split2600: ; preds = %thread-pre-split259 br label %.preheader2658.preheader .preheader2658.preheader: ; preds = %1992, %1990 + %.3183624.ph = phi i32 [ %1984, %1990 ], [ 0, %1992 ] br label %.preheader2658 .preheader2658: ; preds = %.preheader2658.preheader, %2015 %1994 = phi i1 [ false, %2015 ], [ true, %.preheader2658.preheader ] %indvars.iv4790.sroa.phi = phi ptr [ %.sroa.41, %2015 ], [ %.sroa.0, %.preheader2658.preheader ] - %.3183624 = phi i32 [ %2010, %2015 ], [ %1984, %.preheader2658.preheader ] + %.3183624 = phi i32 [ %2010, %2015 ], [ %.3183624.ph, %.preheader2658.preheader ] br label %.preheader2657 .preheader2657: ; preds = %.preheader2658, %2014 @@ -13155,12 +13208,13 @@ thread-pre-split2600: ; preds = %thread-pre-split259 br label %.preheader2653.preheader .preheader2653.preheader: ; preds = %2018, %2016 + %.3243636.ph = phi i32 [ %2010, %2016 ], [ 0, %2018 ] br label %.preheader2653 .preheader2653: ; preds = %.preheader2653.preheader, %2041 %2020 = phi i1 [ false, %2041 ], [ true, %.preheader2653.preheader ] %indvars.iv4808.sroa.phi = phi ptr [ %.sroa.41, %2041 ], [ %.sroa.0, %.preheader2653.preheader ] - %.3243636 = phi i32 [ %2036, %2041 ], [ %2010, %.preheader2653.preheader ] + %.3243636 = phi i32 [ %2036, %2041 ], [ %.3243636.ph, %.preheader2653.preheader ] br label %.preheader2652 .preheader2652: ; preds = %.preheader2653, %2040 @@ -13233,12 +13287,13 @@ thread-pre-split2600: ; preds = %thread-pre-split259 br label %.preheader2648.preheader .preheader2648.preheader: ; preds = %2044, %2042 + %.3303648.ph = phi i32 [ %2036, %2042 ], [ 0, %2044 ] br label %.preheader2648 .preheader2648: ; preds = %.preheader2648.preheader, %2067 %2046 = phi i1 [ false, %2067 ], [ true, %.preheader2648.preheader ] %indvars.iv4826.sroa.phi = phi ptr [ %.sroa.41, %2067 ], [ %.sroa.0, %.preheader2648.preheader ] - %.3303648 = phi i32 [ %2062, %2067 ], [ %2036, %.preheader2648.preheader ] + %.3303648 = phi i32 [ %2062, %2067 ], [ %.3303648.ph, %.preheader2648.preheader ] br label %.preheader2647 .preheader2647: ; preds = %.preheader2648, %2066 @@ -13311,12 +13366,13 @@ thread-pre-split2600: ; preds = %thread-pre-split259 br label %.preheader2643.preheader .preheader2643.preheader: ; preds = %2070, %2068 + %.3363660.ph = phi i32 [ %2062, %2068 ], [ 0, %2070 ] br label %.preheader2643 .preheader2643: ; preds = %.preheader2643.preheader, %2093 %2072 = phi i1 [ false, %2093 ], [ true, %.preheader2643.preheader ] %indvars.iv4844.sroa.phi = phi ptr [ %.sroa.41, %2093 ], [ %.sroa.0, %.preheader2643.preheader ] - %.3363660 = phi i32 [ %2088, %2093 ], [ %2062, %.preheader2643.preheader ] + %.3363660 = phi i32 [ %2088, %2093 ], [ %.3363660.ph, %.preheader2643.preheader ] br label %.preheader2642 .preheader2642: ; preds = %.preheader2643, %2092 @@ -13389,12 +13445,13 @@ thread-pre-split2600: ; preds = %thread-pre-split259 br label %.preheader2638.preheader .preheader2638.preheader: ; preds = %2096, %2094 + %.3423672.ph = phi i32 [ %2088, %2094 ], [ 0, %2096 ] br label %.preheader2638 .preheader2638: ; preds = %.preheader2638.preheader, %2119 %2098 = phi i1 [ false, %2119 ], [ true, %.preheader2638.preheader ] %indvars.iv4862.sroa.phi = phi ptr [ %.sroa.41, %2119 ], [ %.sroa.0, %.preheader2638.preheader ] - %.3423672 = phi i32 [ %2114, %2119 ], [ %2088, %.preheader2638.preheader ] + %.3423672 = phi i32 [ %2114, %2119 ], [ %.3423672.ph, %.preheader2638.preheader ] br label %.preheader2637 .preheader2637: ; preds = %.preheader2638, %2118 @@ -13467,12 +13524,13 @@ thread-pre-split2600: ; preds = %thread-pre-split259 br label %.preheader2633.preheader .preheader2633.preheader: ; preds = %2122, %2120 + %.3483684.ph = phi i32 [ %2114, %2120 ], [ 0, %2122 ] br label %.preheader2633 .preheader2633: ; preds = %.preheader2633.preheader, %2145 %2124 = phi i1 [ false, %2145 ], [ true, %.preheader2633.preheader ] %indvars.iv4880.sroa.phi = phi ptr [ %.sroa.41, %2145 ], [ %.sroa.0, %.preheader2633.preheader ] - %.3483684 = phi i32 [ %2140, %2145 ], [ %2114, %.preheader2633.preheader ] + %.3483684 = phi i32 [ %2140, %2145 ], [ %.3483684.ph, %.preheader2633.preheader ] br label %.preheader2632 .preheader2632: ; preds = %.preheader2633, %2144 @@ -13545,12 +13603,13 @@ thread-pre-split2600: ; preds = %thread-pre-split259 br label %.preheader2628.preheader .preheader2628.preheader: ; preds = %2148, %2146 + %.3543696.ph = phi i32 [ %2140, %2146 ], [ 0, %2148 ] br label %.preheader2628 .preheader2628: ; preds = %.preheader2628.preheader, %2171 %2150 = phi i1 [ false, %2171 ], [ true, %.preheader2628.preheader ] %indvars.iv4898.sroa.phi = phi ptr [ %.sroa.41, %2171 ], [ %.sroa.0, %.preheader2628.preheader ] - %.3543696 = phi i32 [ %2166, %2171 ], [ %2140, %.preheader2628.preheader ] + %.3543696 = phi i32 [ %2166, %2171 ], [ %.3543696.ph, %.preheader2628.preheader ] br label %.preheader2627 .preheader2627: ; preds = %.preheader2628, %2170 @@ -13623,12 +13682,13 @@ thread-pre-split2600: ; preds = %thread-pre-split259 br label %.preheader2623.preheader .preheader2623.preheader: ; preds = %2174, %2172 + %.3603708.ph = phi i32 [ %2166, %2172 ], [ 0, %2174 ] br label %.preheader2623 .preheader2623: ; preds = %.preheader2623.preheader, %2197 %2176 = phi i1 [ false, %2197 ], [ true, %.preheader2623.preheader ] %indvars.iv4916.sroa.phi = phi ptr [ %.sroa.41, %2197 ], [ %.sroa.0, %.preheader2623.preheader ] - %.3603708 = phi i32 [ %2192, %2197 ], [ %2166, %.preheader2623.preheader ] + %.3603708 = phi i32 [ %2192, %2197 ], [ %.3603708.ph, %.preheader2623.preheader ] br label %.preheader2622 .preheader2622: ; preds = %.preheader2623, %2196 diff --git a/bench/syn/optimized/2i67i8azb4r5b3mw.ll b/bench/syn/optimized/2i67i8azb4r5b3mw.ll index 6b56feeb05c..25e80df85f8 100644 --- a/bench/syn/optimized/2i67i8azb4r5b3mw.ll +++ b/bench/syn/optimized/2i67i8azb4r5b3mw.ll @@ -9532,7 +9532,7 @@ define hidden void @_ZN3syn10punctuated9do_extend17hf2c66732dabb437fE.llvm.14145 br label %14 14: ; preds = %58, %2 - %.0 = phi i8 [ 0, %2 ], [ %.1, %58 ] + %.0 = phi i1 [ false, %2 ], [ %.1, %58 ] call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %.sroa.9) tail call void @llvm.experimental.noalias.scope.decl(metadata !1816) tail call void @llvm.experimental.noalias.scope.decl(metadata !1819) @@ -9584,8 +9584,7 @@ define hidden void @_ZN3syn10punctuated9do_extend17hf2c66732dabb437fE.llvm.14145 store i64 %.sroa.7.8.copyload, ptr %.sroa.7.0..sroa_idx, align 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %.sroa.9.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(80) %.sroa.9, i64 80, i1 false) store i64 %.sroa.66.0.copyload.i, ptr %.sroa.10.0..sroa_idx, align 8 - %24 = trunc nuw i8 %.0 to i1 - br i1 %24, label %.split.loop.exit, label %30 + br i1 %.0, label %.split.loop.exit, label %28 .thread: ; preds = %.thread.i %.sroa.10.16.copyload = load i64, ptr %.sroa.10.16..sroa.5.0..0..sroa_idx.i.i.i.sroa_idx, align 8, !alias.scope !1839, !noalias !1840 @@ -9594,19 +9593,18 @@ define hidden void @_ZN3syn10punctuated9do_extend17hf2c66732dabb437fE.llvm.14145 store i64 %.sroa.0.0.copyload.i.i.i, ptr %.sroa.7.0..sroa_idx, align 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(80) %.sroa.9.0..sroa_idx, ptr noundef nonnull align 8 dereferenceable(80) %.sroa.5.0..0..sroa_idx.i.i.i, i64 80, i1 false) store i64 %.sroa.10.16.copyload, ptr %.sroa.10.0..sroa_idx, align 8 - %25 = trunc nuw i8 %.0 to i1 - br i1 %25, label %.split.loop.exit, label %39 + br i1 %.0, label %.split.loop.exit, label %37 .split.loop.exit: ; preds = %.thread, %23 call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %5) store ptr @anon.ea6e6428137adc40094fb791b2cb6dfd.34, ptr %5, align 8 - %26 = getelementptr inbounds nuw i8, ptr %5, i64 8 + %24 = getelementptr inbounds nuw i8, ptr %5, i64 8 store i64 1, ptr %26, align 8 - %27 = getelementptr inbounds nuw i8, ptr %5, i64 32 + %25 = getelementptr inbounds nuw i8, ptr %5, i64 32 store ptr null, ptr %27, align 8 - %28 = getelementptr inbounds nuw i8, ptr %5, i64 16 + %26 = getelementptr inbounds nuw i8, ptr %5, i64 16 store ptr @anon.ea6e6428137adc40094fb791b2cb6dfd.5.llvm.14145919710250835280, ptr %28, align 8 - %29 = getelementptr inbounds nuw i8, ptr %5, i64 24 + %27 = getelementptr inbounds nuw i8, ptr %5, i64 24 store i64 0, ptr %29, align 8 invoke void @_ZN4core9panicking9panic_fmt17h784f20a50eaab275E(ptr noalias noundef nonnull align 8 captures(none) dereferenceable(48) %5, ptr noalias noundef readonly align 8 dereferenceable(24) @anon.ea6e6428137adc40094fb791b2cb6dfd.35) #31 to label %65 unwind label %.body.thread74 @@ -9615,9 +9613,9 @@ define hidden void @_ZN3syn10punctuated9do_extend17hf2c66732dabb437fE.llvm.14145 call void @llvm.lifetime.start.p0(i64 104, ptr nonnull %4) call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(96) %4, ptr noundef nonnull align 8 dereferenceable(96) %6, i64 96, i1 false) store i64 %.sroa.66.0.copyload.i, ptr %10, align 8 - %31 = load i64, ptr %11, align 8, !alias.scope !1841, !noalias !1844, !noundef !64 - %32 = load i64, ptr %0, align 8, !alias.scope !1841, !noalias !1844, !noundef !64 - %33 = icmp eq i64 %31, %32 + %29 = load i64, ptr %11, align 8, !alias.scope !1841, !noalias !1844, !noundef !64 + %30 = load i64, ptr %0, align 8, !alias.scope !1841, !noalias !1844, !noundef !64 + %31 = icmp eq i64 %31, %32 br i1 %33, label %34, label %52 34: ; preds = %30 @@ -9629,22 +9627,22 @@ define hidden void @_ZN3syn10punctuated9do_extend17hf2c66732dabb437fE.llvm.14145 br label %52 35: ; preds = %34 - %36 = landingpad { ptr, i32 } + %34 = landingpad { ptr, i32 } cleanup invoke fastcc void @"_ZN4core3ptr73drop_in_place$LT$$LP$syn..path..PathSegment$C$syn..token..PathSep$RP$$GT$17h84d96edbed22f898E"(ptr noalias noundef nonnull align 8 dereferenceable(104) %4) #29 to label %.body.thread unwind label %37 37: ; preds = %35 - %38 = landingpad { ptr, i32 } + %36 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #28 unreachable 39: ; preds = %.thread call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(96) %3, ptr noundef nonnull align 8 dereferenceable(96) %.sroa.7.0..sroa_idx, i64 96, i1 false) - %40 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !1846 - %41 = tail call noundef align 8 dereferenceable_or_null(96) ptr @__rust_alloc(i64 noundef 96, i64 noundef 8) #26, !noalias !1846 - %42 = icmp eq ptr %41, null + %38 = load volatile i8, ptr @__rust_no_alloc_shim_is_unstable, align 1, !noalias !1846 + %39 = tail call noundef align 8 dereferenceable_or_null(96) ptr @__rust_alloc(i64 noundef 96, i64 noundef 8) #26, !noalias !1846 + %40 = icmp eq ptr %41, null br i1 %42, label %43, label %59 43: ; preds = %39 @@ -9655,56 +9653,56 @@ define hidden void @_ZN3syn10punctuated9do_extend17hf2c66732dabb437fE.llvm.14145 unreachable 44: ; preds = %43 - %45 = landingpad { ptr, i32 } + %43 = landingpad { ptr, i32 } cleanup invoke void @"_ZN4core3ptr43drop_in_place$LT$syn..path..PathSegment$GT$17h3ebf8b380a01b124E"(ptr noalias noundef nonnull align 8 dereferenceable(96) %3) #29 to label %.body unwind label %46 46: ; preds = %44 - %47 = landingpad { ptr, i32 } + %45 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #28 unreachable .body: ; preds = %44, %63 %.pn = phi { ptr, i32 } [ %64, %63 ], [ %45, %44 ] - %48 = load i64, ptr %6, align 8, !range !206, !noundef !64 + %46 = load i64, ptr %6, align 8, !range !206, !noundef !64 %.not = icmp eq i64 %48, -9223372036854775807 br i1 %.not, label %.thread58, label %66 .body.thread74: ; preds = %.split.loop.exit - %49 = landingpad { ptr, i32 } + %47 = landingpad { ptr, i32 } cleanup - %50 = load i64, ptr %6, align 8, !range !206, !noundef !64 + %48 = load i64, ptr %6, align 8, !range !206, !noundef !64 %.not77 = icmp eq i64 %50, -9223372036854775807 br i1 %.not77, label %.thread61, label %66 .body.thread: ; preds = %35 - %51 = load i64, ptr %6, align 8, !range !206, !noundef !64 + %49 = load i64, ptr %6, align 8, !range !206, !noundef !64 %.not52 = icmp eq i64 %51, -9223372036854775807 br i1 %.not52, label %.thread61, label %.thread58 52: ; preds = %._crit_edge.i, %30 - %53 = phi i64 [ %.pre.i, %._crit_edge.i ], [ %31, %30 ] - %54 = load ptr, ptr %12, align 8, !alias.scope !1841, !noalias !1844, !nonnull !64, !noundef !64 - %55 = getelementptr inbounds { { { { i64, [3 x i64] }, { {} } }, { i64, [7 x i64] } }, { [2 x i32] } }, ptr %54, i64 %53 + %51 = phi i64 [ %.pre.i, %._crit_edge.i ], [ %31, %30 ] + %52 = load ptr, ptr %12, align 8, !alias.scope !1841, !noalias !1844, !nonnull !64, !noundef !64 + %53 = getelementptr inbounds { { { { i64, [3 x i64] }, { {} } }, { i64, [7 x i64] } }, { [2 x i32] } }, ptr %54, i64 %53 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(104) %55, ptr noundef nonnull align 8 dereferenceable(104) %4, i64 104, i1 false) - %56 = load i64, ptr %11, align 8, !alias.scope !1841, !noalias !1844, !noundef !64 - %57 = add i64 %56, 1 + %54 = load i64, ptr %11, align 8, !alias.scope !1841, !noalias !1844, !noundef !64 + %55 = add i64 %56, 1 store i64 %57, ptr %11, align 8, !alias.scope !1841, !noalias !1844 call void @llvm.lifetime.end.p0(i64 104, ptr nonnull %4) br label %58 58: ; preds = %"_ZN4core3ptr96drop_in_place$LT$core..option..Option$LT$alloc..boxed..Box$LT$syn..path..PathSegment$GT$$GT$$GT$17h46fd2ed2688dee74E.llvm.14145919710250835280.exit", %52 - %.1 = phi i8 [ 1, %"_ZN4core3ptr96drop_in_place$LT$core..option..Option$LT$alloc..boxed..Box$LT$syn..path..PathSegment$GT$$GT$$GT$17h46fd2ed2688dee74E.llvm.14145919710250835280.exit" ], [ 0, %52 ] + %57 = phi i1 [ true, %"_ZN4core3ptr96drop_in_place$LT$core..option..Option$LT$alloc..boxed..Box$LT$syn..path..PathSegment$GT$$GT$$GT$17h46fd2ed2688dee74E.llvm.14145919710250835280.exit" ], [ false, %52 ] call void @llvm.lifetime.end.p0(i64 104, ptr nonnull %6) call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %.sroa.9) br label %14 59: ; preds = %39 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(96) %41, ptr noundef nonnull align 8 dereferenceable(96) %.sroa.7.0..sroa_idx, i64 96, i1 false) - %60 = load ptr, ptr %13, align 8, !alias.scope !1849, !noundef !64 - %61 = icmp eq ptr %60, null + %59 = load ptr, ptr %13, align 8, !alias.scope !1849, !noundef !64 + %60 = icmp eq ptr %60, null br i1 %61, label %"_ZN4core3ptr96drop_in_place$LT$core..option..Option$LT$alloc..boxed..Box$LT$syn..path..PathSegment$GT$$GT$$GT$17h46fd2ed2688dee74E.llvm.14145919710250835280.exit", label %62 62: ; preds = %59 @@ -9712,7 +9710,7 @@ define hidden void @_ZN3syn10punctuated9do_extend17hf2c66732dabb437fE.llvm.14145 to label %"_ZN4core3ptr96drop_in_place$LT$core..option..Option$LT$alloc..boxed..Box$LT$syn..path..PathSegment$GT$$GT$$GT$17h46fd2ed2688dee74E.llvm.14145919710250835280.exit" unwind label %63 63: ; preds = %62 - %64 = landingpad { ptr, i32 } + %63 = landingpad { ptr, i32 } cleanup store ptr %41, ptr %13, align 8 br label %.body @@ -9730,7 +9728,7 @@ define hidden void @_ZN3syn10punctuated9do_extend17hf2c66732dabb437fE.llvm.14145 to label %.thread58 unwind label %67 67: ; preds = %.thread61, %66, %.thread58 - %68 = landingpad { ptr, i32 } + %67 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #28 unreachable diff --git a/bench/tinyrenderer/optimized/tgaimage.ll b/bench/tinyrenderer/optimized/tgaimage.ll index 013be4d0fe6..67f93aa2154 100644 --- a/bench/tinyrenderer/optimized/tgaimage.ll +++ b/bench/tinyrenderer/optimized/tgaimage.ll @@ -1015,12 +1015,13 @@ define dso_local noundef zeroext i1 @_ZNK8TGAImage15unload_rle_dataERSt14basic_o br label %.split.us .split.us: ; preds = %.split.us.preheader, %21 - %indvars.iv87 = phi i64 [ 1, %.split.us.preheader ], [ %indvars.iv.next88, %21 ] + %indvars.iv86 = phi i64 [ 1, %.split.us.preheader ], [ %indvars.iv.next88, %21 ] %.049.us = phi i64 [ %13, %.split.us.preheader ], [ %22, %21 ] %.044.us = phi i8 [ 1, %.split.us.preheader ], [ %.2.us, %21 ] - %16 = add nuw i64 %.053, %indvars.iv87 + %.044.us.fr = freeze i8 %.044.us + %16 = add nuw i64 %.053, %indvars.iv86 %17 = icmp ult i64 %16, %7 - %18 = trunc nuw i64 %indvars.iv87 to i8 + %18 = trunc nuw i64 %indvars.iv86 to i8 %19 = icmp sgt i8 %18, -1 %20 = and i1 %19, %17 br i1 %20, label %.preheader.us, label %.thread.loopexit99 @@ -1028,7 +1029,7 @@ define dso_local noundef zeroext i1 @_ZNK8TGAImage15unload_rle_dataERSt14basic_o 21: ; preds = %..critedge_crit_edge.us %22 = add i64 %.049.us, %12 %or.cond3.us = or i1 %27, %32 - %indvars.iv.next88 = add nuw nsw i64 %indvars.iv87, 1 + %indvars.iv.next87 = add nuw nsw i64 %indvars.iv87, 1 br i1 %or.cond3.us, label %.split.us, label %.thread.loopexit99 .preheader.us: ; preds = %.split.us, %.preheader.us @@ -1048,7 +1049,7 @@ define dso_local noundef zeroext i1 @_ZNK8TGAImage15unload_rle_dataERSt14basic_o %29 = icmp eq i64 %indvars.iv87, 1 %30 = xor i1 %27, true %31 = zext i1 %30 to i8 - %.2.us = select i1 %29, i8 %31, i8 %.044.us + %.2.us = select i1 %29, i8 %31, i8 %.044.us.fr %32 = trunc nuw i8 %.2.us to i1 %or.cond.us = and i1 %27, %32 br i1 %or.cond.us, label %.split69.us, label %21 @@ -1059,14 +1060,14 @@ define dso_local noundef zeroext i1 @_ZNK8TGAImage15unload_rle_dataERSt14basic_o br i1 %34, label %.preheader, label %.thread .preheader: ; preds = %.split, %39 - %indvars.iv90 = phi i64 [ %indvars.iv.next91, %39 ], [ 1, %.split ] + %indvars.iv89 = phi i64 [ %indvars.iv.next91, %39 ], [ 1, %.split ] %.04473 = phi i1 [ false, %39 ], [ true, %.split ] %35 = icmp ne i64 %indvars.iv90, 1 %36 = and i1 %35, %.04473 br i1 %36, label %.split69.us.loopexit, label %39 .split69.us.loopexit: ; preds = %.preheader - %37 = trunc nuw nsw i64 %indvars.iv90 to i8 + %37 = trunc nuw nsw i64 %indvars.iv89 to i8 br label %.split69.us .split69.us: ; preds = %..critedge_crit_edge.us, %.split69.us.loopexit @@ -1075,49 +1076,49 @@ define dso_local noundef zeroext i1 @_ZNK8TGAImage15unload_rle_dataERSt14basic_o br label %.thread 39: ; preds = %.preheader - %indvars.iv.next91 = add nuw nsw i64 %indvars.iv90, 1 + %indvars.iv.next90 = add nuw nsw i64 %indvars.iv90, 1 %40 = add i64 %.053, %indvars.iv.next91 %41 = icmp ult i64 %40, %7 - %42 = trunc nuw i64 %indvars.iv.next91 to i8 + %42 = trunc nuw i64 %indvars.iv.next90 to i8 %43 = icmp sgt i8 %42, -1 %44 = and i1 %43, %41 br i1 %44, label %.preheader, label %.thread -.thread.loopexit99: ; preds = %.split.us, %21 - %.145.ph = phi i8 [ 0, %21 ], [ %.044.us, %.split.us ] - %45 = trunc nuw i8 %.145.ph to i1 +.thread.loopexit99: ; preds = %.split.us + %45 = trunc i8 %.044.us.fr to i1 + %spec.select = select i1 %45, i8 -1, i8 127 br label %.thread -.thread: ; preds = %39, %.thread.loopexit99, %.split, %.split69.us - %.147 = phi i8 [ %38, %.split69.us ], [ 1, %.split ], [ %18, %.thread.loopexit99 ], [ %42, %39 ] - %.145 = phi i1 [ true, %.split69.us ], [ true, %.split ], [ %45, %.thread.loopexit99 ], [ false, %39 ] - %.v = select i1 %.145, i8 -1, i8 127 - %46 = add i8 %.v, %.147 - %47 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSo3putEc(ptr noundef nonnull align 8 dereferenceable(8) %1, i8 noundef signext %46) - %48 = load ptr, ptr %1, align 8, !tbaa !25 - %49 = getelementptr i8, ptr %48, i64 -24 - %50 = load i64, ptr %49, align 8 +.thread: ; preds = %21, %39, %.thread.loopexit99, %.split, %.split69.us + %.14597 = phi i1 [ true, %.split69.us ], [ true, %.split ], [ %45, %.thread.loopexit99 ], [ false, %39 ], [ false, %21 ] + %.14795 = phi i8 [ %38, %.split69.us ], [ 1, %.split ], [ %18, %.thread.loopexit99 ], [ %42, %39 ], [ %18, %21 ] + %46 = phi i8 [ -1, %.split69.us ], [ -1, %.split ], [ %spec.select, %.thread ], [ 127, %39 ], [ 127, %21 ] + %47 = add i8 %46, %.14795 + %48 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSo3putEc(ptr noundef nonnull align 8 dereferenceable(8) %1, i8 noundef signext %46) + %49 = load ptr, ptr %1, align 8, !tbaa !25 + %50 = getelementptr i8, ptr %48, i64 -24 + %51 = load i64, ptr %49, align 8 %gep = getelementptr i8, ptr %invariant.gep75, i64 %50 - %51 = load i32, ptr %gep, align 8, !tbaa !27 - %52 = icmp eq i32 %51, 0 + %52 = load i32, ptr %gep, align 8, !tbaa !27 + %53 = icmp eq i32 %51, 0 br i1 %52, label %53, label %68, !llvm.loop !61 53: ; preds = %.thread - %54 = zext i8 %.147 to i64 - %55 = add i64 %.053, %54 - %56 = load ptr, ptr %9, align 8, !tbaa !18 - %57 = getelementptr inbounds nuw i8, ptr %56, i64 %13 - %58 = load i8, ptr %8, align 8 - %59 = zext i8 %58 to i64 - %60 = select i1 %.145, i64 %54, i64 1 - %61 = mul nuw nsw i64 %60, %59 - %62 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSo5writeEPKcl(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef %57, i64 noundef %61) - %63 = load ptr, ptr %1, align 8, !tbaa !25 - %64 = getelementptr i8, ptr %63, i64 -24 - %65 = load i64, ptr %64, align 8 + %55 = zext i8 %.14795 to i64 + %56 = add i64 %.053, %54 + %57 = load ptr, ptr %9, align 8, !tbaa !18 + %58 = getelementptr inbounds nuw i8, ptr %56, i64 %13 + %59 = load i8, ptr %8, align 8 + %60 = zext i8 %59 to i64 + %61 = select i1 %.14597, i64 %54, i64 1 + %62 = mul nuw nsw i64 %60, %59 + %63 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSo5writeEPKcl(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef %57, i64 noundef %61) + %64 = load ptr, ptr %1, align 8, !tbaa !25 + %65 = getelementptr i8, ptr %63, i64 -24 + %66 = load i64, ptr %64, align 8 %gep77 = getelementptr i8, ptr %invariant.gep75, i64 %65 - %66 = load i32, ptr %gep77, align 8, !tbaa !27 - %67 = icmp eq i32 %66, 0 + %67 = load i32, ptr %gep77, align 8, !tbaa !27 + %68 = icmp eq i32 %66, 0 br i1 %67, label %.critedge60, label %68, !llvm.loop !61 68: ; preds = %.critedge60, %.thread, %53 diff --git a/bench/tree-sitter-rs/optimized/2jber9b3bsvatks5.ll b/bench/tree-sitter-rs/optimized/2jber9b3bsvatks5.ll index 4729d41ec4f..e8af03b3ef5 100644 --- a/bench/tree-sitter-rs/optimized/2jber9b3bsvatks5.ll +++ b/bench/tree-sitter-rs/optimized/2jber9b3bsvatks5.ll @@ -11572,7 +11572,7 @@ define hidden noundef zeroext i1 @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$G %gep.us.i = getelementptr { { i64, [3 x i64] }, {} }, ptr %invariant.gep.us.i, i64 %43 %44 = load i64, ptr %gep.us.i, align 8, !range !950, !alias.scope !3192, !noalias !3201, !noundef !17 %45 = icmp eq i64 %44, -9223372036854775808 - br i1 %45, label %.split.us.loopexit18.i, label %.backedge.us.us.i + br i1 %45, label %"_ZN4core3ptr88drop_in_place$LT$core..option..Option$LT$tree_sitter_cli..generate..rules..Alias$GT$$GT$17hc8a497799ab12abcE.exit", label %.backedge.us.us.i .backedge.us.us.i: ; preds = %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$24find_or_find_insert_slot28_$u7b$$u7b$closure$u7d$$u7d$17h1a0298c25f0932daE.exit.us.us.i" %46 = add i16 %.039.i11.us.us.i, -1 @@ -11719,33 +11719,29 @@ define hidden noundef zeroext i1 @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$G call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %.sroa.08) br label %"_ZN4core3ptr88drop_in_place$LT$core..option..Option$LT$tree_sitter_cli..generate..rules..Alias$GT$$GT$17hc8a497799ab12abcE.exit" -"_ZN4core3ptr88drop_in_place$LT$core..option..Option$LT$tree_sitter_cli..generate..rules..Alias$GT$$GT$17hc8a497799ab12abcE.exit": ; preds = %"_ZN4core3ptr60drop_in_place$LT$tree_sitter_cli..generate..rules..Alias$GT$17h4272a451e12367d6E.exit.i", %.split.us.loopexit18.i, %.thread - %.0 = phi i1 [ false, %.thread ], [ true, %.split.us.loopexit18.i ], [ true, %"_ZN4core3ptr60drop_in_place$LT$tree_sitter_cli..generate..rules..Alias$GT$17h4272a451e12367d6E.exit.i" ] +"_ZN4core3ptr88drop_in_place$LT$core..option..Option$LT$tree_sitter_cli..generate..rules..Alias$GT$$GT$17hc8a497799ab12abcE.exit": ; preds = %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$24find_or_find_insert_slot28_$u7b$$u7b$closure$u7d$$u7d$17h1a0298c25f0932daE.exit.us.us.i", %"_ZN4core3ptr60drop_in_place$LT$tree_sitter_cli..generate..rules..Alias$GT$17h4272a451e12367d6E.exit.i", %.split.us.loopexit18.i, %.thread + %.0 = phi i1 [ false, %.thread ], [ true, %.split.us.loopexit18.i ], [ true, %"_ZN4core3ptr60drop_in_place$LT$tree_sitter_cli..generate..rules..Alias$GT$17h4272a451e12367d6E.exit.i" ], [ true, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$24find_or_find_insert_slot28_$u7b$$u7b$closure$u7d$$u7d$17h1a0298c25f0932daE.exit.us.us.i" ] ret i1 %.0 .split.us.loopexit18.i.loopexit20: ; preds = %"_ZN80_$LT$tree_sitter_cli..generate..rules..Alias$u20$as$u20$core..cmp..PartialEq$GT$2eq17hd00b42e6a1647e7aE.llvm.10393017446704266758.exit.i.i.i.i.i.i" %.pre = load i64, ptr %1, align 8, !range !950, !alias.scope !3230 - br label %.split.us.loopexit18.i - -.split.us.loopexit18.i: ; preds = %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$24find_or_find_insert_slot28_$u7b$$u7b$closure$u7d$$u7d$17h1a0298c25f0932daE.exit.us.us.i", %.split.us.loopexit18.i.loopexit20 - %115 = phi i64 [ %.pre, %.split.us.loopexit18.i.loopexit20 ], [ %.fr17.i, %"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$24find_or_find_insert_slot28_$u7b$$u7b$closure$u7d$$u7d$17h1a0298c25f0932daE.exit.us.us.i" ] + %115 = icmp eq i64 %.pre, -9223372036854775808 tail call void @llvm.experimental.noalias.scope.decl(metadata !3230) - %116 = icmp eq i64 %115, -9223372036854775808 - br i1 %116, label %"_ZN4core3ptr88drop_in_place$LT$core..option..Option$LT$tree_sitter_cli..generate..rules..Alias$GT$$GT$17hc8a497799ab12abcE.exit", label %117 + br i1 %115, label %"_ZN4core3ptr88drop_in_place$LT$core..option..Option$LT$tree_sitter_cli..generate..rules..Alias$GT$$GT$17hc8a497799ab12abcE.exit", label %116 117: ; preds = %.split.us.loopexit18.i call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3), !noalias !3233 call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$14current_memory17h843100ac3ff507c4E.llvm.15559585470061597875"(ptr noalias noundef nonnull sret({ [1 x i64], i64, [1 x i64] }) align 8 captures(none) dereferenceable(24) %3, ptr noalias noundef nonnull readonly align 8 dereferenceable(32) %1) - %118 = getelementptr inbounds nuw i8, ptr %3, i64 8 - %119 = load i64, ptr %118, align 8, !range !950, !noalias !3233, !noundef !17 + %117 = getelementptr inbounds nuw i8, ptr %3, i64 8 + %118 = load i64, ptr %118, align 8, !range !950, !noalias !3233, !noundef !17 %.not.i.i.i.i.i.i = icmp eq i64 %119, 0 br i1 %.not.i.i.i.i.i.i, label %"_ZN4core3ptr60drop_in_place$LT$tree_sitter_cli..generate..rules..Alias$GT$17h4272a451e12367d6E.exit.i", label %120 120: ; preds = %117 - %121 = load ptr, ptr %3, align 8, !noalias !3233, !nonnull !17, !noundef !17 - %122 = getelementptr inbounds nuw i8, ptr %3, i64 16 - %123 = load i64, ptr %122, align 8, !noalias !3233, !noundef !17 - %124 = getelementptr inbounds nuw i8, ptr %1, i64 16 + %120 = load ptr, ptr %3, align 8, !noalias !3233, !nonnull !17, !noundef !17 + %121 = getelementptr inbounds nuw i8, ptr %3, i64 16 + %122 = load i64, ptr %122, align 8, !noalias !3233, !noundef !17 + %123 = getelementptr inbounds nuw i8, ptr %1, i64 16 tail call void @"_ZN63_$LT$alloc..alloc..Global$u20$as$u20$core..alloc..Allocator$GT$10deallocate17hae8e459b587c5295E.llvm.15559585470061597875"(ptr noalias noundef nonnull readonly align 1 %124, ptr noundef nonnull %121, i64 noundef %119, i64 noundef %123) br label %"_ZN4core3ptr60drop_in_place$LT$tree_sitter_cli..generate..rules..Alias$GT$17h4272a451e12367d6E.exit.i" @@ -11772,7 +11768,7 @@ define hidden noundef zeroext i1 @"_ZN9hashbrown3map28HashMap$LT$K$C$V$C$S$C$A$G to label %125 unwind label %127 127: ; preds = %126 - %128 = landingpad { ptr, i32 } + %127 = landingpad { ptr, i32 } filter [0 x ptr] zeroinitializer tail call void @_ZN4core9panicking16panic_in_cleanup17h55eb1d85cadde1a1E() #43 unreachable diff --git a/bench/verilator/optimized/V3Options.ll b/bench/verilator/optimized/V3Options.ll index 19eceff1578..f6fa16a2ada 100644 --- a/bench/verilator/optimized/V3Options.ll +++ b/bench/verilator/optimized/V3Options.ll @@ -10273,6 +10273,8 @@ _ZNKSt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS5_ESaIS5 br i1 %134, label %_ZNKSt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS5_ESaIS5_EE4findERKS5_.exit.thread, label %.critedge _ZNKSt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS5_ESaIS5_EE4findERKS5_.exit.thread: ; preds = %_ZNSt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS5_ESaIS5_EE4findERKS5_.exit.thread, %_ZNKSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St9_IdentityIS5_ESt4lessIS5_ESaIS5_EE14_M_lower_boundEPKSt13_Rb_tree_nodeIS5_EPKSt18_Rb_tree_node_baseRKS5_.exit.i.i, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %_ZNKSt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS5_ESaIS5_EE4findERKS5_.exit + %.553 = phi i1 [ %79, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ false, %_ZNKSt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS5_ESaIS5_EE4findERKS5_.exit ], [ false, %_ZNKSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St9_IdentityIS5_ESt4lessIS5_ESaIS5_EE14_M_lower_boundEPKSt13_Rb_tree_nodeIS5_EPKSt18_Rb_tree_node_baseRKS5_.exit.i.i ], [ false, %_ZNSt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS5_ESaIS5_EE4findERKS5_.exit.thread ] + %.647 = phi i1 [ %80, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ false, %_ZNKSt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS5_ESaIS5_EE4findERKS5_.exit ], [ false, %_ZNKSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St9_IdentityIS5_ESt4lessIS5_ESaIS5_EE14_M_lower_boundEPKSt13_Rb_tree_nodeIS5_EPKSt18_Rb_tree_node_baseRKS5_.exit.i.i ], [ false, %_ZNSt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS5_ESaIS5_EE4findERKS5_.exit.thread ] %135 = call noundef i32 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE7compareEPKc(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull @.str.2) #41 %.not158 = icmp eq i32 %135, 0 br i1 %.not158, label %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc.exit, label %136 @@ -10457,8 +10459,8 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit119: ; preds = %_Z br label %.critedge .critedge: ; preds = %_ZNSt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS5_ESaIS5_EE4findERKS5_.exit, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit119, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit, %_ZNKSt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS5_ESaIS5_EE4findERKS5_.exit, %43, %40 - %.149 = phi i1 [ false, %40 ], [ false, %43 ], [ false, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit119 ], [ %79, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ false, %_ZNKSt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS5_ESaIS5_EE4findERKS5_.exit ], [ false, %_ZNSt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS5_ESaIS5_EE4findERKS5_.exit ] - %.142 = phi i1 [ %.041194, %40 ], [ false, %43 ], [ false, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit119 ], [ %80, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ false, %_ZNKSt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS5_ESaIS5_EE4findERKS5_.exit ], [ false, %_ZNSt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS5_ESaIS5_EE4findERKS5_.exit ] + %.149 = phi i1 [ false, %40 ], [ false, %43 ], [ %.553, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit119 ], [ %79, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ false, %_ZNKSt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS5_ESaIS5_EE4findERKS5_.exit ], [ false, %_ZNSt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS5_ESaIS5_EE4findERKS5_.exit ] + %.142 = phi i1 [ %.041194, %40 ], [ false, %43 ], [ %.647, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit119 ], [ %80, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit ], [ false, %_ZNKSt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS5_ESaIS5_EE4findERKS5_.exit ], [ false, %_ZNSt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS5_ESaIS5_EE4findERKS5_.exit ] %.sroa.0136.0 = load ptr, ptr %.sroa.0136.0195, align 8, !tbaa !188 %.not155 = icmp eq ptr %.sroa.0136.0, %21 br i1 %.not155, label %._crit_edge198, label %40 @@ -20242,9 +20244,9 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit174: ; preds = %_Z 129: ; preds = %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.i.i169, %_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE11_M_is_localEv.exit.thread.i.i170 call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #41 %.pre = load i8, ptr %99, align 2, !tbaa !261, !range !172 + %130 = trunc nuw i8 %.pre to i1 call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) #41 call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %7, i8 0, i64 24, i1 false) - %130 = trunc nuw i8 %.pre to i1 br i1 %130, label %131, label %169 131: ; preds = %.thread736, %129 diff --git a/bench/wasmtime-rs/optimized/3vdx8w41hjyzioqv.ll b/bench/wasmtime-rs/optimized/3vdx8w41hjyzioqv.ll index dbf7493763f..d2e0ed39254 100644 --- a/bench/wasmtime-rs/optimized/3vdx8w41hjyzioqv.ll +++ b/bench/wasmtime-rs/optimized/3vdx8w41hjyzioqv.ll @@ -11718,7 +11718,6 @@ define hidden void @_ZN4core4iter6traits8iterator8Iterator8try_fold17h4c2d634e3f ._crit_edge84: ; preds = %13, %.lr.ph %.sroa.6.040.lcssa = phi i32 [ undef, %.lr.ph ], [ %.sroa.4.0.copyload.i82, %13 ] %.sroa.8.039.lcssa = phi ptr [ undef, %.lr.ph ], [ %.sroa.5.0.copyload.i83, %13 ] - %.sroa.0.0.copyload.i.lcssa = phi i32 [ %.sroa.0.0.copyload.i78, %.lr.ph ], [ %.sroa.0.0.copyload.i, %13 ] %.sroa.5.0.copyload.i.lcssa = phi ptr [ %.sroa.5.0.copyload.i80, %.lr.ph ], [ %.sroa.5.0.copyload.i, %13 ] %17 = getelementptr inbounds nuw i8, ptr %2, i64 8 %.val.le = load ptr, ptr %17, align 8, !nonnull !4, !noundef !4 @@ -11759,7 +11758,7 @@ define hidden void @_ZN4core4iter6traits8iterator8Iterator8try_fold17h4c2d634e3f br i1 %27, label %._crit_edge, label %13 .loopexit: ; preds = %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hde9dfedafb058090E.exit", %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hde9dfedafb058090E.exit.thread" - %.sroa.0.0.copyload.i69 = phi i32 [ %.sroa.0.0.copyload.i.lcssa, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hde9dfedafb058090E.exit.thread" ], [ %.sroa.0.0.copyload.i81, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hde9dfedafb058090E.exit" ] + %.sroa.0.0.copyload.i69 = phi i32 [ 24, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hde9dfedafb058090E.exit.thread" ], [ %.sroa.0.0.copyload.i81, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hde9dfedafb058090E.exit" ] %.sroa.6.119 = phi i32 [ %.sroa.6.040.lcssa, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hde9dfedafb058090E.exit.thread" ], [ %.sroa.4.0.copyload.i82, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hde9dfedafb058090E.exit" ] %.sroa.8.117 = phi ptr [ %.sroa.8.039.lcssa, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hde9dfedafb058090E.exit.thread" ], [ %.sroa.5.0.copyload.i83, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17hde9dfedafb058090E.exit" ] call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %.sroa.4, ptr noundef nonnull align 16 dereferenceable(32) %.sroa.9, i64 32, i1 false) @@ -24004,7 +24003,7 @@ define internal fastcc { i64, ptr } @_ZN8wasmtime7runtime6module6Module14from_pa unreachable "_ZN4core3ptr80drop_in_place$LT$alloc..sync..Arc$LT$wasmtime..runtime..code..CodeObject$GT$$GT$17h69d3fadad9f81329E.exit55": ; preds = %58, %74, %78 - %.pn10 = phi { ptr, i32 } [ %.pn.ph, %74 ], [ %.pn.ph, %78 ], [ %59, %58 ] + %.pn9 = phi { ptr, i32 } [ %.pn.ph, %74 ], [ %.pn.ph, %78 ], [ %59, %58 ] resume { ptr, i32 } %.pn10 74: ; preds = %70, %13, %16 diff --git a/bench/wasmtime-rs/optimized/4kfbj1e4an3vjclp.ll b/bench/wasmtime-rs/optimized/4kfbj1e4an3vjclp.ll index 60792ee1e04..2d5515d5ae3 100644 --- a/bench/wasmtime-rs/optimized/4kfbj1e4an3vjclp.ll +++ b/bench/wasmtime-rs/optimized/4kfbj1e4an3vjclp.ll @@ -546,7 +546,6 @@ define hidden void @_ZN4core4iter6traits8iterator8Iterator8try_fold17hbec36a6d95 ._crit_edge76: ; preds = %10, %.lr.ph %.sroa.6.036.lcssa = phi i32 [ undef, %.lr.ph ], [ %.sroa.4.0.copyload.i74, %10 ] %.sroa.8.035.lcssa = phi ptr [ undef, %.lr.ph ], [ %.sroa.5.0.copyload.i75, %10 ] - %.sroa.0.0.copyload.i.lcssa = phi i32 [ %.sroa.0.0.copyload.i70, %.lr.ph ], [ %.sroa.0.0.copyload.i, %10 ] %.sroa.5.0.copyload.i.lcssa = phi ptr [ %.sroa.5.0.copyload.i72, %.lr.ph ], [ %.sroa.5.0.copyload.i, %10 ] %13 = icmp ne ptr %.sroa.5.0.copyload.i.lcssa, null tail call void @llvm.assume(i1 %13) @@ -589,7 +588,7 @@ define hidden void @_ZN4core4iter6traits8iterator8Iterator8try_fold17hbec36a6d95 br i1 %24, label %._crit_edge, label %10 .loopexit: ; preds = %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h06c7c8f16809f87cE.llvm.1719199495539182984.exit", %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h06c7c8f16809f87cE.llvm.1719199495539182984.exit.thread" - %.sroa.0.0.copyload.i65 = phi i32 [ %.sroa.0.0.copyload.i.lcssa, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h06c7c8f16809f87cE.llvm.1719199495539182984.exit.thread" ], [ %.sroa.0.0.copyload.i73, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h06c7c8f16809f87cE.llvm.1719199495539182984.exit" ] + %.sroa.0.0.copyload.i65 = phi i32 [ 24, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h06c7c8f16809f87cE.llvm.1719199495539182984.exit.thread" ], [ %.sroa.0.0.copyload.i73, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h06c7c8f16809f87cE.llvm.1719199495539182984.exit" ] %.sroa.6.116 = phi i32 [ %.sroa.6.036.lcssa, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h06c7c8f16809f87cE.llvm.1719199495539182984.exit.thread" ], [ %.sroa.4.0.copyload.i74, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h06c7c8f16809f87cE.llvm.1719199495539182984.exit" ] %.sroa.8.114 = phi ptr [ %.sroa.8.035.lcssa, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h06c7c8f16809f87cE.llvm.1719199495539182984.exit.thread" ], [ %.sroa.5.0.copyload.i75, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17h06c7c8f16809f87cE.llvm.1719199495539182984.exit" ] call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %.sroa.4, ptr noundef nonnull align 16 dereferenceable(32) %.sroa.9, i64 32, i1 false) @@ -655,7 +654,6 @@ define hidden void @_ZN4core4iter6traits8iterator8Iterator8try_fold17hebfbbf0a08 ._crit_edge76: ; preds = %10, %.lr.ph %.sroa.6.036.lcssa = phi i32 [ undef, %.lr.ph ], [ %.sroa.4.0.copyload.i74, %10 ] %.sroa.8.035.lcssa = phi ptr [ undef, %.lr.ph ], [ %.sroa.5.0.copyload.i75, %10 ] - %.sroa.0.0.copyload.i.lcssa = phi i32 [ %.sroa.0.0.copyload.i70, %.lr.ph ], [ %.sroa.0.0.copyload.i, %10 ] %.sroa.5.0.copyload.i.lcssa = phi ptr [ %.sroa.5.0.copyload.i72, %.lr.ph ], [ %.sroa.5.0.copyload.i, %10 ] %13 = icmp ne ptr %.sroa.5.0.copyload.i.lcssa, null tail call void @llvm.assume(i1 %13) @@ -698,7 +696,7 @@ define hidden void @_ZN4core4iter6traits8iterator8Iterator8try_fold17hebfbbf0a08 br i1 %24, label %._crit_edge, label %10 .loopexit: ; preds = %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17heed91d9a6cd56a89E.llvm.1719199495539182984.exit", %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17heed91d9a6cd56a89E.llvm.1719199495539182984.exit.thread" - %.sroa.0.0.copyload.i65 = phi i32 [ %.sroa.0.0.copyload.i.lcssa, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17heed91d9a6cd56a89E.llvm.1719199495539182984.exit.thread" ], [ %.sroa.0.0.copyload.i73, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17heed91d9a6cd56a89E.llvm.1719199495539182984.exit" ] + %.sroa.0.0.copyload.i65 = phi i32 [ 24, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17heed91d9a6cd56a89E.llvm.1719199495539182984.exit.thread" ], [ %.sroa.0.0.copyload.i73, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17heed91d9a6cd56a89E.llvm.1719199495539182984.exit" ] %.sroa.6.116 = phi i32 [ %.sroa.6.036.lcssa, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17heed91d9a6cd56a89E.llvm.1719199495539182984.exit.thread" ], [ %.sroa.4.0.copyload.i74, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17heed91d9a6cd56a89E.llvm.1719199495539182984.exit" ] %.sroa.8.114 = phi ptr [ %.sroa.8.035.lcssa, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17heed91d9a6cd56a89E.llvm.1719199495539182984.exit.thread" ], [ %.sroa.5.0.copyload.i75, %"_ZN4core4iter8adapters3map12map_try_fold28_$u7b$$u7b$closure$u7d$$u7d$17heed91d9a6cd56a89E.llvm.1719199495539182984.exit" ] call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(32) %.sroa.4, ptr noundef nonnull align 16 dereferenceable(32) %.sroa.9, i64 32, i1 false) diff --git a/bench/wireshark/optimized/commandline.ll b/bench/wireshark/optimized/commandline.ll index cd37b52389f..ff099139ce4 100644 --- a/bench/wireshark/optimized/commandline.ll +++ b/bench/wireshark/optimized/commandline.ll @@ -693,48 +693,44 @@ define hidden void @commandline_other_options(i32 noundef %0, ptr noundef %1, i1 %43 = sext i32 %41 to i64 %44 = getelementptr ptr, ptr %1, i64 %43 %45 = icmp sgt i32 %42, 0 - br i1 %45, label %46, label %.thread31 + br i1 %45, label %46, label %.thread 46: ; preds = %40 %47 = load ptr, ptr getelementptr inbounds nuw (i8, ptr @global_commandline_info, i64 24), align 8 %.not22.not = icmp eq ptr %47, null - br i1 %.not22.not, label %49, label %48 + br i1 %.not22.not, label %48, label %.thread38 48: ; preds = %46 - tail call void (ptr, ...) @cmdarg_err(ptr noundef nonnull @.str.19) - br label %52 - -49: ; preds = %46 - %50 = load ptr, ptr %44, align 8 - %51 = tail call noalias ptr @g_strdup(ptr noundef %50) - store ptr %51, ptr getelementptr inbounds nuw (i8, ptr @global_commandline_info, i64 24), align 8 - br label %52 - -52: ; preds = %48, %49 - %53 = getelementptr i8, ptr %44, i64 8 + %49 = load ptr, ptr %44, align 8 + %50 = tail call noalias ptr @g_strdup(ptr noundef %49) + store ptr %50, ptr getelementptr inbounds nuw (i8, ptr @global_commandline_info, i64 24), align 8 + %51 = getelementptr i8, ptr %44, i64 8 %.not23 = icmp eq i32 %42, 1 - br i1 %.not23, label %56, label %54 + br i1 %.not23, label %.thread30, label %53 -.thread31: ; preds = %40 - %.not2335 = icmp eq i32 %0, %41 - br i1 %.not2335, label %.thread38, label %54 +.thread31: ; preds = %46 + tail call void (ptr, ...) @cmdarg_err(ptr noundef nonnull @.str.19) + %52 = getelementptr i8, ptr %44, i64 8 + %.not2339 = icmp eq i32 %42, 1 + br i1 %.not2339, label %.critedge, label %53 -54: ; preds = %.thread31, %52 - %.01836 = phi ptr [ %44, %.thread31 ], [ %53, %52 ] - %55 = load ptr, ptr %.01836, align 8 - tail call void (ptr, ...) @cmdarg_err(ptr noundef nonnull @.str.20, ptr noundef %55) - br label %.thread +54: ; preds = %40 + %.not2327 = icmp eq i32 %0, %41 + br i1 %.not2327, label %.thread38, label %53 -56: ; preds = %52 - br i1 %.not22.not, label %.thread38, label %.thread +56: ; preds = %.thread38, %54, %48 + %.01828 = phi ptr [ %44, %.thread ], [ %51, %48 ], [ %52, %.thread38 ] + %54 = load ptr, ptr %.01828, align 8 + tail call void (ptr, ...) @cmdarg_err(ptr noundef nonnull @.str.20, ptr noundef %54) + br label %.critedge -.thread: ; preds = %54, %39, %56 +.thread: ; preds = %.thread38, %39, %56 tail call fastcc void @print_no_capture_support_error() tail call fastcc void @commandline_print_usage(i1 noundef zeroext false) tail call void @exit_application(i32 noundef 1) #13 unreachable -.thread38: ; preds = %.thread31, %56 +.thread38: ; preds = %48, %.thread ret void } diff --git a/bench/wireshark/optimized/dct3trace.ll b/bench/wireshark/optimized/dct3trace.ll index 5d5acf598fc..24493d8e568 100644 --- a/bench/wireshark/optimized/dct3trace.ll +++ b/bench/wireshark/optimized/dct3trace.ll @@ -184,35 +184,36 @@ define internal fastcc noundef zeroext i1 @dct3trace_get_packet(ptr noundef %0, .outer.outer: ; preds = %.outer.outer.outer, %112 %.084.ph.ph = phi i32 [ %.185, %112 ], [ %.084.ph.ph.ph, %.outer.outer.outer ] %.077.ph.ph = phi i8 [ %.178, %112 ], [ %.077.ph.ph.ph, %.outer.outer.outer ] - br label %.outer.outer272 + br label %.outer -.outer: ; preds = %41, %.outer.outer272 - br i1 %24, label %.outer.split.us, label %.outer.split +.outer: ; preds = %.outer.backedge, %.outer.outer + %.077.ph = phi i8 [ %.077.ph.ph, %.outer.outer ], [ %.077.ph.be, %.outer.outer272 ] + %18 = trunc nuw i8 %.077.ph to i1 + br i1 %18, label %.outer.split.us, label %.outer.split .outer.split.us: ; preds = %.outer - %18 = call ptr @file_gets(ptr noundef nonnull %5, i32 noundef 1024, ptr noundef %0) + %19 = call ptr @file_gets(ptr noundef nonnull %5, i32 noundef 1024, ptr noundef %0) %.not.us = icmp eq ptr %18, null br i1 %.not.us, label %.split.us, label %19 19: ; preds = %.outer.split.us %bcmp.us = call i32 @bcmp(ptr noundef nonnull dereferenceable(7) @dct3trace_magic_end, ptr noundef nonnull dereferenceable(7) %5, i64 7) - %20 = icmp eq i32 %bcmp.us, 0 + %21 = icmp eq i32 %bcmp.us, 0 br i1 %20, label %.split170.us, label %21 21: ; preds = %19 %bcmp95.us = call i32 @bcmp(ptr noundef nonnull dereferenceable(5) @dct3trace_magic_record_end, ptr noundef nonnull dereferenceable(5) %5, i64 5) - %22 = icmp eq i32 %bcmp95.us, 0 + %23 = icmp eq i32 %bcmp95.us, 0 br i1 %22, label %.split172.us.thread, label %23 23: ; preds = %21 %rhsv.us = load i32, ptr %5, align 16 %.not96.us = icmp eq i32 %rhsv.us, 540109884 - br i1 %.not96.us, label %.split175.us, label %.outer.outer272, !llvm.loop !6 + br i1 %.not96.us, label %.split175.us, label %.outer.outer272 -.outer.outer272: ; preds = %.outer.outer, %23 - %.077.ph.ph273 = phi i8 [ %.077.ph.ph, %.outer.outer ], [ 1, %23 ] - %24 = trunc nuw i8 %.077.ph.ph273 to i1 - br label %.outer +.outer.outer272: ; preds = %41, %23 + %.077.ph.be = phi i8 [ 1, %24 ], [ 0, %41 ] + br label %.outer, !llvm.loop !6 .outer.split: ; preds = %.outer, %113 %25 = call ptr @file_gets(ptr noundef nonnull %5, i32 noundef 1024, ptr noundef %0) @@ -263,7 +264,7 @@ define internal fastcc noundef zeroext i1 @dct3trace_get_packet(ptr noundef %0, 41: ; preds = %28 %rhsv = load i32, ptr %5, align 16 - switch i32 %rhsv, label %.outer [ + switch i32 %rhsv, label %.outer.backedge [ i32 540109884, label %.split175.us i32 540175420, label %113 ], !llvm.loop !6 @@ -432,7 +433,7 @@ hex2bin.exit.thread: ; preds = %hex2bin.exit, %91 112: ; preds = %68, %hex2bin.exit %.185 = phi i32 [ %107, %hex2bin.exit ], [ %.084.ph.ph, %68 ] - %.178 = phi i8 [ 1, %hex2bin.exit ], [ %.077.ph.ph273, %68 ] + %.178 = phi i8 [ 1, %hex2bin.exit ], [ %.077.ph, %68 ] call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #8 call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #8 br label %.outer.outer, !llvm.loop !6 diff --git a/bench/xgboost/optimized/config.ll b/bench/xgboost/optimized/config.ll index 88f3150f8c2..5637a35de98 100644 --- a/bench/xgboost/optimized/config.ll +++ b/bench/xgboost/optimized/config.ll @@ -2911,58 +2911,77 @@ define void @_ZN4dmlc6Config14ConfigIteratorC2EmPKS0_(ptr noundef nonnull align ; Function Attrs: mustprogress nofree norecurse nounwind memory(read, argmem: readwrite, inaccessiblemem: none) uwtable define void @_ZN4dmlc6Config14ConfigIterator13FindNextIndexEv(ptr noundef nonnull align 8 captures(none) dereferenceable(16) %0) local_unnamed_addr #13 align 2 personality ptr @__gxx_personality_v0 { - %.promoted = load i64, ptr %0, align 8 - %2 = getelementptr inbounds nuw i8, ptr %0, i64 8 - %3 = load ptr, ptr %2, align 8, !tbaa !122 - %4 = getelementptr inbounds nuw i8, ptr %3, i64 48 - %5 = getelementptr inbounds nuw i8, ptr %3, i64 56 - %6 = load ptr, ptr %5, align 8, !tbaa !30 - %7 = load ptr, ptr %4, align 8, !tbaa !29 +.critedge6: + %1 = getelementptr inbounds nuw i8, ptr %0, i64 8 + %2 = load ptr, ptr %2, align 8, !tbaa !122 + %3 = getelementptr inbounds nuw i8, ptr %3, i64 48 + %4 = getelementptr inbounds nuw i8, ptr %3, i64 56 + %5 = load ptr, ptr %5, align 8, !tbaa !30 + %6 = load ptr, ptr %4, align 8, !tbaa !29 + %7 = ptrtoint ptr %5 to i64 %8 = ptrtoint ptr %6 to i64 - %9 = ptrtoint ptr %7 to i64 - %10 = sub i64 %8, %9 - %11 = sdiv exact i64 %10, 40 - %12 = getelementptr inbounds nuw i8, ptr %3, i64 16 - %13 = getelementptr inbounds nuw i8, ptr %3, i64 8 - %14 = icmp ult i64 %.promoted, %11 - br i1 %14, label %.lr.ph.preheader, label %.critedge - -.lr.ph.preheader: ; preds = %1 - %15 = load ptr, ptr %12, align 8, !tbaa !12 - %.not10.i.i.i = icmp eq ptr %15, null - br label %.lr.ph - -.lr.ph: ; preds = %.lr.ph.preheader, %47 - %16 = phi i64 [ %48, %47 ], [ %.promoted, %.lr.ph.preheader ] - %17 = getelementptr inbounds nuw %"struct.std::pair.18", ptr %7, i64 %16 - %18 = getelementptr inbounds nuw i8, ptr %17, i64 32 - %19 = load i64, ptr %18, align 8, !tbaa !99 - br i1 %.not10.i.i.i, label %_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN4dmlc6Config11ConfigValueESt4lessIS5_ESaISt4pairIKS5_S8_EEE4findERSC_.exit, label %.lr.ph.i.i.i + %9 = sub i64 %7, %8 + %10 = sdiv exact i64 %9, 40 + %.promoted = load i64, ptr %0, align 8, !tbaa !109 + %11 = icmp ult i64 %.promoted, %10 + br i1 %11, label %.lr.ph, label %.critedge -.lr.ph.i.i.i: ; preds = %.lr.ph - %20 = getelementptr inbounds nuw i8, ptr %17, i64 8 - %21 = load i64, ptr %20, align 8, !tbaa !35 - %22 = load ptr, ptr %17, align 8 - br label %23 +.lr.ph.i.i.i: ; preds = %.critedge6 + %12 = getelementptr inbounds nuw i8, ptr %2, i64 16 + %13 = load ptr, ptr %20, align 8, !tbaa !12 + %14 = getelementptr inbounds nuw i8, ptr %2, i64 8 + %.not10.i.i.i = icmp eq ptr %21, null + br i1 %.not10.i.i.i, label %.lr.ph.split.us, label %.lr.ph.i.i.i + +.lr.ph.split.us: ; preds = %.lr.ph + %invariant.gep = getelementptr i8, ptr %6, i64 32 + %15 = getelementptr inbounds nuw i8, ptr %2, i64 96 + %16 = load ptr, ptr %15, align 8, !tbaa !83 + br label %_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN4dmlc6Config11ConfigValueESt4lessIS5_ESaISt4pairIKS5_S8_EEE4findERSC_.exit.us + +_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN4dmlc6Config11ConfigValueESt4lessIS5_ESaISt4pairIKS5_S8_EEE4findERSC_.exit.us: ; preds = %22, %.lr.ph.split.us + %17 = phi i64 [ %.promoted, %.lr.ph.split.us ], [ %23, %22 ] + %gep = getelementptr %"struct.std::pair.18", ptr %invariant.gep, i64 %17 + %18 = load i64, ptr %gep, align 8, !tbaa !99 + %19 = getelementptr inbounds nuw i64, ptr %16, i64 %18 + %20 = load i64, ptr %19, align 8, !tbaa !71 + %21 = icmp eq i64 %20, %17 + br i1 %21, label %.critedge, label %22 + +22: ; preds = %_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN4dmlc6Config11ConfigValueESt4lessIS5_ESaISt4pairIKS5_S8_EEE4findERSC_.exit.us + %23 = add nuw i64 %17, 1 + store i64 %23, ptr %0, align 8, !tbaa !109 + %exitcond9.not = icmp eq i64 %23, %10 + br i1 %exitcond9.not, label %.critedge, label %_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN4dmlc6Config11ConfigValueESt4lessIS5_ESaISt4pairIKS5_S8_EEE4findERSC_.exit.us + +.lr.ph.i.i.i: ; preds = %.lr.ph, %55 + %24 = phi i64 [ %56, %55 ], [ %.promoted, %.lr.ph ] + %25 = getelementptr inbounds nuw %"struct.std::pair.18", ptr %6, i64 %24 + %26 = getelementptr inbounds nuw i8, ptr %25, i64 32 + %27 = load i64, ptr %26, align 8, !tbaa !99 + %28 = getelementptr inbounds nuw i8, ptr %25, i64 8 + %29 = load i64, ptr %28, align 8, !tbaa !35 + %30 = load ptr, ptr %25, align 8 + br label %31 23: ; preds = %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i.i, %.lr.ph.i.i.i - %.012.i.i.i = phi ptr [ %15, %.lr.ph.i.i.i ], [ %.1.i.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i.i ] - %.0811.i.i.i = phi ptr [ %13, %.lr.ph.i.i.i ], [ %.19.i.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i.i ] - %24 = getelementptr inbounds nuw i8, ptr %.012.i.i.i, i64 40 - %25 = load i64, ptr %24, align 8, !tbaa !35 - %.sroa.speculated.i.i.i.i.i.i = tail call i64 @llvm.umin.i64(i64 %21, i64 %25) - %26 = icmp eq i64 %.sroa.speculated.i.i.i.i.i.i, 0 + %.012.i.i.i = phi ptr [ %13, %.lr.ph.i.i.i ], [ %.1.i.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i.i ] + %.0811.i.i.i = phi ptr [ %14, %.lr.ph.i.i.i ], [ %.19.i.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i.i ] + %32 = getelementptr inbounds nuw i8, ptr %.012.i.i.i, i64 40 + %33 = load i64, ptr %24, align 8, !tbaa !35 + %.sroa.speculated.i.i.i.i.i.i = tail call i64 @llvm.umin.i64(i64 %29, i64 %25) + %34 = icmp eq i64 %.sroa.speculated.i.i.i.i.i.i, 0 br i1 %26, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.thread.i.i.i.i.i.i, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i.i _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i.i: ; preds = %23 - %27 = getelementptr inbounds nuw i8, ptr %.012.i.i.i, i64 32 - %28 = load ptr, ptr %27, align 8, !tbaa !31 - %29 = tail call i32 @memcmp(ptr noundef %28, ptr noundef %22, i64 noundef %.sroa.speculated.i.i.i.i.i.i) #19 + %35 = getelementptr inbounds nuw i8, ptr %.012.i.i.i, i64 32 + %36 = load ptr, ptr %27, align 8, !tbaa !31 + %37 = tail call i32 @memcmp(ptr noundef %28, ptr noundef %30, i64 noundef %.sroa.speculated.i.i.i.i.i.i) #19 %.not.i.i.i.i.i.i = icmp eq i32 %29, 0 br i1 %.not.i.i.i.i.i.i, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.thread.i.i.i.i.i.i, label %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i.i _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.thread.i.i.i.i.i.i: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i.i, %23 - %30 = sub i64 %25, %21 + %38 = sub i64 %25, %29 %spec.select7.i.i.i.i.i.i.i = tail call i64 @llvm.smax.i64(i64 %30, i64 -2147483648) %.08.i.i.i.i.i.i.i = tail call i64 @llvm.smin.i64(i64 %spec.select7.i.i.i.i.i.i.i, i64 2147483647) %.0.i6.i.i.i.i.i.i = trunc nsw i64 %.08.i.i.i.i.i.i.i to i32 @@ -2970,7 +2989,7 @@ _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.thread.i.i.i.i.i.i: ; preds = %_ZNSt1 _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i.i: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.thread.i.i.i.i.i.i, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i.i %.0.i.i.i.i.i.i = phi i32 [ %29, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i.i ], [ %.0.i6.i.i.i.i.i.i, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.thread.i.i.i.i.i.i ] - %31 = icmp slt i32 %.0.i.i.i.i.i.i, 0 + %39 = icmp slt i32 %.0.i.i.i.i.i.i, 0 %.19.i.i.i = select i1 %31, ptr %.0811.i.i.i, ptr %.012.i.i.i %.1.in.v.i.i.i = select i1 %31, i64 24, i64 16 %.1.in.i.i.i = getelementptr inbounds nuw i8, ptr %.012.i.i.i, i64 %.1.in.v.i.i.i @@ -2979,25 +2998,25 @@ _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exi br i1 %.not.i.i.i, label %_ZNKSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N4dmlc6Config11ConfigValueEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE14_M_lower_boundEPKSt13_Rb_tree_nodeISB_EPKSt18_Rb_tree_node_baseRS7_.exit.i.i, label %23, !llvm.loop !102 _ZNKSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N4dmlc6Config11ConfigValueEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE14_M_lower_boundEPKSt13_Rb_tree_nodeISB_EPKSt18_Rb_tree_node_baseRS7_.exit.i.i: ; preds = %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i.i - %32 = icmp eq ptr %.19.i.i.i, %13 + %40 = icmp eq ptr %.19.i.i.i, %14 br i1 %32, label %_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN4dmlc6Config11ConfigValueESt4lessIS5_ESaISt4pairIKS5_S8_EEE4findERSC_.exit, label %33 33: ; preds = %_ZNKSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N4dmlc6Config11ConfigValueEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE14_M_lower_boundEPKSt13_Rb_tree_nodeISB_EPKSt18_Rb_tree_node_baseRS7_.exit.i.i - %34 = getelementptr inbounds nuw i8, ptr %.19.i.i.i, i64 40 - %35 = load i64, ptr %34, align 8, !tbaa !35 - %.sroa.speculated.i.i.i.i.i = tail call i64 @llvm.umin.i64(i64 %35, i64 %21) - %36 = icmp eq i64 %.sroa.speculated.i.i.i.i.i, 0 + %42 = getelementptr inbounds nuw i8, ptr %.19.i.i.i, i64 40 + %43 = load i64, ptr %34, align 8, !tbaa !35 + %.sroa.speculated.i.i.i.i.i = tail call i64 @llvm.umin.i64(i64 %35, i64 %29) + %44 = icmp eq i64 %.sroa.speculated.i.i.i.i.i, 0 br i1 %36, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.thread.i.i.i.i.i, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i: ; preds = %33 - %37 = getelementptr inbounds nuw i8, ptr %.19.i.i.i, i64 32 - %38 = load ptr, ptr %37, align 8, !tbaa !31 - %39 = tail call i32 @memcmp(ptr noundef %22, ptr noundef %38, i64 noundef %.sroa.speculated.i.i.i.i.i) #19 + %45 = getelementptr inbounds nuw i8, ptr %.19.i.i.i, i64 32 + %46 = load ptr, ptr %37, align 8, !tbaa !31 + %47 = tail call i32 @memcmp(ptr noundef %30, ptr noundef %38, i64 noundef %.sroa.speculated.i.i.i.i.i) #19 %.not.i.i.i.i.i = icmp eq i32 %39, 0 br i1 %.not.i.i.i.i.i, label %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.thread.i.i.i.i.i, label %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.thread.i.i.i.i.i: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i, %33 - %40 = sub i64 %21, %35 + %48 = sub i64 %29, %35 %spec.select7.i.i.i.i.i.i = tail call i64 @llvm.smax.i64(i64 %40, i64 -2147483648) %.08.i.i.i.i.i.i = tail call i64 @llvm.smin.i64(i64 %spec.select7.i.i.i.i.i.i, i64 2147483647) %.0.i6.i.i.i.i.i = trunc nsw i64 %.08.i.i.i.i.i.i to i32 @@ -3005,26 +3024,26 @@ _ZNSt11char_traitsIcE7compareEPKcS2_m.exit.thread.i.i.i.i.i: ; preds = %_ZNSt11c _ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i: ; preds = %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.thread.i.i.i.i.i, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i %.0.i.i.i.i.i = phi i32 [ %39, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.i.i.i.i.i ], [ %.0.i6.i.i.i.i.i, %_ZNSt11char_traitsIcE7compareEPKcS2_m.exit.thread.i.i.i.i.i ] - %41 = icmp slt i32 %.0.i.i.i.i.i, 0 - %spec.select.i.i = select i1 %41, ptr %13, ptr %.19.i.i.i + %49 = icmp slt i32 %.0.i.i.i.i.i, 0 + %spec.select.i.i = select i1 %41, ptr %14, ptr %.19.i.i.i br label %_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN4dmlc6Config11ConfigValueESt4lessIS5_ESaISt4pairIKS5_S8_EEE4findERSC_.exit -_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN4dmlc6Config11ConfigValueESt4lessIS5_ESaISt4pairIKS5_S8_EEE4findERSC_.exit: ; preds = %.lr.ph, %_ZNKSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N4dmlc6Config11ConfigValueEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE14_M_lower_boundEPKSt13_Rb_tree_nodeISB_EPKSt18_Rb_tree_node_baseRS7_.exit.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i - %.sroa.0.0.i.i = phi ptr [ %13, %_ZNKSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N4dmlc6Config11ConfigValueEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE14_M_lower_boundEPKSt13_Rb_tree_nodeISB_EPKSt18_Rb_tree_node_baseRS7_.exit.i.i ], [ %13, %.lr.ph ], [ %spec.select.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i ] - %42 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.i.i, i64 88 - %43 = load ptr, ptr %42, align 8, !tbaa !83 - %44 = getelementptr inbounds nuw i64, ptr %43, i64 %19 - %45 = load i64, ptr %44, align 8, !tbaa !71 - %46 = icmp eq i64 %45, %16 +_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN4dmlc6Config11ConfigValueESt4lessIS5_ESaISt4pairIKS5_S8_EEE4findERSC_.exit: ; preds = %_ZNKSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N4dmlc6Config11ConfigValueEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE14_M_lower_boundEPKSt13_Rb_tree_nodeISB_EPKSt18_Rb_tree_node_baseRS7_.exit.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i + %.sroa.0.0.i.i = phi ptr [ %14, %_ZNKSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N4dmlc6Config11ConfigValueEESt10_Select1stISB_ESt4lessIS5_ESaISB_EE14_M_lower_boundEPKSt13_Rb_tree_nodeISB_EPKSt18_Rb_tree_node_baseRS7_.exit.i.i ], [ %spec.select.i.i, %_ZNKSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEclERKS5_S8_.exit.i.i ] + %50 = getelementptr inbounds nuw i8, ptr %.sroa.0.0.i.i, i64 88 + %51 = load ptr, ptr %42, align 8, !tbaa !83 + %52 = getelementptr inbounds nuw i64, ptr %43, i64 %27 + %53 = load i64, ptr %44, align 8, !tbaa !71 + %54 = icmp eq i64 %45, %24 br i1 %46, label %.critedge, label %47 47: ; preds = %_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN4dmlc6Config11ConfigValueESt4lessIS5_ESaISt4pairIKS5_S8_EEE4findERSC_.exit - %48 = add i64 %16, 1 + %56 = add nuw i64 %24, 1 store i64 %48, ptr %0, align 8, !tbaa !109 - %49 = icmp ult i64 %48, %11 - br i1 %49, label %.lr.ph, label %.critedge + %exitcond.not = icmp eq i64 %48, %10 + br i1 %49, label %.critedge, label %.lr.ph.i.i.i -.critedge: ; preds = %47, %_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN4dmlc6Config11ConfigValueESt4lessIS5_ESaISt4pairIKS5_S8_EEE4findERSC_.exit, %1 +.critedge: ; preds = %47, %_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN4dmlc6Config11ConfigValueESt4lessIS5_ESaISt4pairIKS5_S8_EEE4findERSC_.exit, %22, %_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN4dmlc6Config11ConfigValueESt4lessIS5_ESaISt4pairIKS5_S8_EEE4findERSC_.exit.us, %.critedge6 ret void } diff --git a/bench/yalantinglibs/optimized/file_server.ll b/bench/yalantinglibs/optimized/file_server.ll index 4004ceb5667..0549f620cd1 100644 --- a/bench/yalantinglibs/optimized/file_server.ll +++ b/bench/yalantinglibs/optimized/file_server.ll @@ -16086,10 +16086,14 @@ if.then3.i: ; preds = %land.lhs.true.i invoke void %13(ptr noundef nonnull align 8 dereferenceable(8) %12) to label %if.end.i12 unwind label %lpad -if.end.i12: ; preds = %if.then3.i, %land.lhs.true.i, %if.then.i10 - %14 = load i8, ptr %enabled_.i, align 8 +if.end.i12: ; preds = %if.then3.i + %.pre = load i8, ptr %enabled_.i, align 8 + br label %if.end.i12 + +if.end.i12: ; preds = %if.then3.i.if.end.i12_crit_edge, %land.lhs.true.i, %if.then.i10 + %14 = phi i8 [ %.pre, %if.then3.i.if.end.i12_crit_edge ], [ %9, %land.lhs.true.i ], [ %9, %if.then.i10 ] %tobool.i.i.i = trunc i8 %14 to i1 - %or.cond39 = select i1 %tobool.i, i1 %tobool.i.i.i, i1 false + %or.cond36 = select i1 %tobool.i, i1 %tobool.i.i.i, i1 false br i1 %or.cond39, label %if.then.i.i4.i, label %return if.then.i.i4.i: ; preds = %if.end.i12 @@ -18093,7 +18097,7 @@ if.then.i8: ; preds = %if.end6 br label %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockC2ERS1_.exit _ZN4asio6detail27conditionally_enabled_mutex11scoped_lockC2ERS1_.exit: ; preds = %if.end6, %if.then.i8 - %8 = phi ptr [ %.pre, %if.then.i8 ], [ %0, %if.end6 ] + %8 = phi ptr [ %0, %if.end6 ], [ %.pre, %if.then.i8 ] %tobool.not.i9 = icmp eq ptr %8, null br i1 %tobool.not.i9, label %invoke.cont, label %if.then.i10 @@ -18156,8 +18160,12 @@ if.then3.i: ; preds = %land.lhs.true.i invoke void %15(ptr noundef nonnull align 8 dereferenceable(8) %14) to label %if.end.i19 unwind label %lpad -if.end.i19: ; preds = %if.then3.i, %land.lhs.true.i, %if.then.i16 - %16 = load i8, ptr %enabled_.i, align 8 +if.end.i19: ; preds = %if.then3.i + %.pre44 = load i8, ptr %enabled_.i, align 8 + br label %if.end.i19 + +if.end.i19: ; preds = %if.then3.i.if.end.i19_crit_edge, %land.lhs.true.i, %if.then.i16 + %16 = phi i8 [ %.pre44, %if.then3.i.if.end.i19_crit_edge ], [ %11, %land.lhs.true.i ], [ %11, %if.then.i16 ] %tobool.i.i.i = trunc i8 %16 to i1 %or.cond = select i1 %tobool.i, i1 %tobool.i.i.i, i1 false br i1 %or.cond, label %if.then.i.i4.i, label %if.end8 @@ -22499,67 +22507,74 @@ if.end: ; preds = %entry %enabled_.i = getelementptr inbounds nuw i8, ptr %0, i64 88 %1 = load i8, ptr %enabled_.i, align 8 %tobool.i = trunc i8 %1 to i1 - br i1 %tobool.i, label %if.then.i, label %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockC2ERS1_.exit + br i1 %tobool.i, label %if.then.i, label %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockC2ERS1_.exit.thread if.then.i: ; preds = %if.end %mutex_3.i = getelementptr inbounds nuw i8, ptr %0, i64 48 %call.i.i = tail call i32 @pthread_mutex_lock(ptr noundef nonnull align 8 dereferenceable(40) %mutex_3.i) #35 %.pre = load ptr, ptr %descriptor_data, align 8 - br label %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockC2ERS1_.exit - -_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockC2ERS1_.exit: ; preds = %if.end, %if.then.i - %2 = phi ptr [ %.pre, %if.then.i ], [ %0, %if.end ] - %shutdown_ = getelementptr inbounds nuw i8, ptr %2, i64 163 - %3 = load i8, ptr %shutdown_, align 1 - %tobool2 = trunc i8 %3 to i1 - br i1 %tobool2, label %if.else22, label %if.then3 + %shutdown_ = getelementptr inbounds nuw i8, ptr %14, i64 163 + %2 = load i8, ptr %shutdown_, align 1 + %tobool2 = trunc i8 %2 to i1 + br i1 %tobool2, label %if.then.i30, label %if.then3 + +_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockC2ERS1_.exit.thread:; preds = %if.end + %shutdown_45 = getelementptr inbounds nuw i8, ptr %0, i64 163 + %3 = load i8, ptr %shutdown_45, align 1 + %tobool246 = trunc i8 %3 to i1 + br i1 %tobool246, label %if.else22.thread, label %if.then3 + +if.else22.thread: ; preds = %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockC2ERS1_.exit.thread + store ptr null, ptr %descriptor_data, align 8 + br label %return -if.then3: ; preds = %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockC2ERS1_.exit +if.then3: ; preds = %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockC2ERS1_.exit.thread, %if.then.i + %4 = phi ptr [ %0, %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockC2ERS1_.exit.thread ], [ %.pre, %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockC2ERS1_.exit ] br i1 %closing, label %if.end8, label %if.else if.else: ; preds = %if.then3 - %registered_events_ = getelementptr inbounds nuw i8, ptr %2, i64 108 - %4 = load i32, ptr %registered_events_, align 4 + %registered_events_ = getelementptr inbounds nuw i8, ptr %4, i64 108 + %5 = load i32, ptr %registered_events_, align 4 %cmp.not = icmp eq i32 %4, 0 br i1 %cmp.not, label %if.end8, label %if.then6 if.then6: ; preds = %if.else call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(12) %ev, i8 0, i64 12, i1 false) %epoll_fd_ = getelementptr inbounds nuw i8, ptr %this, i64 120 - %5 = load i32, ptr %epoll_fd_, align 8 + %6 = load i32, ptr %epoll_fd_, align 8 %call = call i32 @epoll_ctl(i32 noundef %5, i32 noundef 2, i32 noundef %descriptor, ptr noundef nonnull %ev) #35 %.pre43.pre = load ptr, ptr %descriptor_data, align 8 br label %if.end8 if.end8: ; preds = %if.else, %if.then6, %if.then3 - %.pre43 = phi ptr [ %2, %if.else ], [ %.pre43.pre, %if.then6 ], [ %2, %if.then3 ] + %.pre43 = phi ptr [ %4, %if.else ], [ %.pre43.pre, %if.then6 ], [ %4, %if.then3 ] call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %ops, i8 0, i64 16, i1 false) %back_.i15 = getelementptr inbounds nuw i8, ptr %ops, i64 8 br label %while.cond.preheader while.cond.preheader: ; preds = %if.end8, %for.inc - %6 = phi ptr [ %.pre43, %if.end8 ], [ %19, %for.inc ] + %7 = phi ptr [ %.pre43, %if.end8 ], [ %19, %for.inc ] %indvars.iv = phi i64 [ 0, %if.end8 ], [ %indvars.iv.next, %for.inc ] %op_queue_38 = getelementptr inbounds nuw i8, ptr %6, i64 112 %arrayidx39 = getelementptr inbounds nuw [3 x %"class.asio::detail::op_queue.137"], ptr %op_queue_38, i64 0, i64 %indvars.iv - %7 = load ptr, ptr %arrayidx39, align 8 + %8 = load ptr, ptr %arrayidx39, align 8 %tobool13.not40 = icmp eq ptr %7, null br i1 %tobool13.not40, label %for.inc, label %while.body while.body: ; preds = %while.cond.preheader, %invoke.cont18 - %8 = phi ptr [ %17, %invoke.cont18 ], [ %7, %while.cond.preheader ] + %9 = phi ptr [ %17, %invoke.cont18 ], [ %7, %while.cond.preheader ] %ec_ = getelementptr inbounds nuw i8, ptr %8, i64 24 - %9 = load atomic i8, ptr @_ZGVZN4asio15system_categoryEvE8instance acquire, align 8 + %10 = load atomic i8, ptr @_ZGVZN4asio15system_categoryEvE8instance acquire, align 8 %guard.uninitialized.i.i.i.i = icmp eq i8 %9, 0 br i1 %guard.uninitialized.i.i.i.i, label %init.check.i.i.i.i, label %_ZNSt10error_codeaSIN4asio5error12basic_errorsEEENSt9enable_ifIXsr18is_error_code_enumIT_EE5valueERS_E4typeES5_.exit, !prof !5 init.check.i.i.i.i: ; preds = %while.body - %10 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN4asio15system_categoryEvE8instance) #35 + %11 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZN4asio15system_categoryEvE8instance) #35 %tobool.not.i.i.i.i = icmp eq i32 %10, 0 br i1 %tobool.not.i.i.i.i, label %_ZNSt10error_codeaSIN4asio5error12basic_errorsEEENSt9enable_ifIXsr18is_error_code_enumIT_EE5valueERS_E4typeES5_.exit, label %init.i.i.i.i init.i.i.i.i: ; preds = %init.check.i.i.i.i - %11 = call i32 @__cxa_atexit(ptr nonnull @_ZN4asio6detail15system_categoryD2Ev, ptr nonnull @_ZZN4asio15system_categoryEvE8instance, ptr nonnull @__dso_handle) #35 + %12 = call i32 @__cxa_atexit(ptr nonnull @_ZN4asio6detail15system_categoryD2Ev, ptr nonnull @_ZZN4asio15system_categoryEvE8instance, ptr nonnull @__dso_handle) #35 call void @__cxa_guard_release(ptr nonnull @_ZGVZN4asio15system_categoryEvE8instance) #35 br label %_ZNSt10error_codeaSIN4asio5error12basic_errorsEEENSt9enable_ifIXsr18is_error_code_enumIT_EE5valueERS_E4typeES5_.exit @@ -22567,15 +22582,15 @@ _ZNSt10error_codeaSIN4asio5error12basic_errorsEEENSt9enable_ifIXsr18is_error_cod store i32 125, ptr %ec_, align 8 %ref.tmp.sroa.21.0.this1.sroa_idx.i = getelementptr inbounds nuw i8, ptr %8, i64 32 store ptr @_ZZN4asio15system_categoryEvE8instance, ptr %ref.tmp.sroa.21.0.this1.sroa_idx.i, align 8 - %12 = load ptr, ptr %descriptor_data, align 8 + %13 = load ptr, ptr %descriptor_data, align 8 %op_queue_15 = getelementptr inbounds nuw i8, ptr %12, i64 112 %arrayidx17 = getelementptr inbounds nuw [3 x %"class.asio::detail::op_queue.137"], ptr %op_queue_15, i64 0, i64 %indvars.iv - %13 = load ptr, ptr %arrayidx17, align 8 + %14 = load ptr, ptr %arrayidx17, align 8 %tobool.not.i = icmp eq ptr %13, null br i1 %tobool.not.i, label %invoke.cont18, label %if.then.i14 if.then.i14: ; preds = %_ZNSt10error_codeaSIN4asio5error12basic_errorsEEENSt9enable_ifIXsr18is_error_code_enumIT_EE5valueERS_E4typeES5_.exit - %14 = load ptr, ptr %13, align 8 + %15 = load ptr, ptr %13, align 8 store ptr %14, ptr %arrayidx17, align 8 %cmp.i = icmp eq ptr %14, null br i1 %cmp.i, label %if.then6.i, label %if.end.i @@ -22591,26 +22606,26 @@ if.end.i: ; preds = %if.then6.i, %if.the invoke.cont18: ; preds = %if.end.i, %_ZNSt10error_codeaSIN4asio5error12basic_errorsEEENSt9enable_ifIXsr18is_error_code_enumIT_EE5valueERS_E4typeES5_.exit store ptr null, ptr %8, align 8 - %15 = load ptr, ptr %back_.i15, align 8 + %16 = load ptr, ptr %back_.i15, align 8 %tobool.not.i16 = icmp eq ptr %15, null %this..i = select i1 %tobool.not.i16, ptr %ops, ptr %15 store ptr %8, ptr %this..i, align 8 store ptr %8, ptr %back_.i15, align 8 - %16 = load ptr, ptr %descriptor_data, align 8 + %17 = load ptr, ptr %descriptor_data, align 8 %op_queue_ = getelementptr inbounds nuw i8, ptr %16, i64 112 %arrayidx = getelementptr inbounds nuw [3 x %"class.asio::detail::op_queue.137"], ptr %op_queue_, i64 0, i64 %indvars.iv - %17 = load ptr, ptr %arrayidx, align 8 + %18 = load ptr, ptr %arrayidx, align 8 %tobool13.not = icmp eq ptr %17, null br i1 %tobool13.not, label %for.inc, label %while.body, !llvm.loop !397 _ZN4asio6detail27conditionally_enabled_mutex11scoped_lockD2Ev.exit: ; preds = %invoke.cont20 - %18 = landingpad { ptr, i32 } + %19 = landingpad { ptr, i32 } cleanup call void @_ZN4asio6detail8op_queueINS0_19scheduler_operationEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %ops) #35 resume { ptr, i32 } %18 for.inc: ; preds = %invoke.cont18, %while.cond.preheader - %19 = phi ptr [ %6, %while.cond.preheader ], [ %16, %invoke.cont18 ] + %20 = phi ptr [ %6, %while.cond.preheader ], [ %16, %invoke.cont18 ] %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1 %exitcond.not = icmp eq i64 %indvars.iv.next, 3 br i1 %exitcond.not, label %for.end, label %while.cond.preheader, !llvm.loop !398 @@ -22618,14 +22633,14 @@ for.inc: ; preds = %invoke.cont18, %whi for.end: ; preds = %for.inc %descriptor_ = getelementptr inbounds nuw i8, ptr %19, i64 104 store i32 -1, ptr %descriptor_, align 8 - %20 = load ptr, ptr %descriptor_data, align 8 + %21 = load ptr, ptr %descriptor_data, align 8 %shutdown_19 = getelementptr inbounds nuw i8, ptr %20, i64 163 store i8 1, ptr %shutdown_19, align 1 br i1 %tobool.i, label %if.then.i24, label %invoke.cont20 if.then.i24: ; preds = %for.end - %21 = load i8, ptr %enabled_.i, align 8 - %tobool.i.i = trunc i8 %21 to i1 + %22 = load i8, ptr %enabled_.i, align 8 + %tobool.i.i = trunc i8 %22 to i1 br i1 %tobool.i.i, label %if.then.i.i, label %invoke.cont20 if.then.i.i: ; preds = %if.then.i24 @@ -22635,12 +22650,12 @@ if.then.i.i: ; preds = %if.then.i24 invoke.cont20: ; preds = %for.end, %if.then.i.i, %if.then.i24 %scheduler_ = getelementptr inbounds nuw i8, ptr %this, i64 48 - %22 = load ptr, ptr %scheduler_, align 8 + %23 = load ptr, ptr %scheduler_, align 8 invoke void @_ZN4asio6detail9scheduler25post_deferred_completionsERNS0_8op_queueINS0_19scheduler_operationEEE(ptr noundef nonnull align 8 dereferenceable(256) %22, ptr noundef nonnull align 8 dereferenceable(16) %ops) to label %invoke.cont21 unwind label %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockD2Ev.exit invoke.cont21: ; preds = %invoke.cont20 - %23 = load ptr, ptr %ops, align 8 + %24 = load ptr, ptr %ops, align 8 %tobool.not2.i = icmp eq ptr %23, null br i1 %tobool.not2.i, label %return, label %if.then.i.lr.ph.i @@ -22650,8 +22665,8 @@ if.then.i.lr.ph.i: ; preds = %invoke.cont21 br label %if.then.i.i25 if.then.i.i25: ; preds = %_ZN4asio6detail15op_queue_access7destroyINS0_19scheduler_operationEEEvPT_.exit.i, %if.then.i.lr.ph.i - %24 = phi ptr [ %23, %if.then.i.lr.ph.i ], [ %27, %_ZN4asio6detail15op_queue_access7destroyINS0_19scheduler_operationEEEvPT_.exit.i ] - %25 = load ptr, ptr %24, align 8 + %25 = phi ptr [ %23, %if.then.i.lr.ph.i ], [ %27, %_ZN4asio6detail15op_queue_access7destroyINS0_19scheduler_operationEEEvPT_.exit.i ] + %26 = load ptr, ptr %24, align 8 store ptr %25, ptr %ops, align 8 %cmp.i.i = icmp eq ptr %25, null br i1 %cmp.i.i, label %if.then6.i.i, label %invoke.cont.i @@ -22664,35 +22679,32 @@ invoke.cont.i: ; preds = %if.then6.i.i, %if.t store ptr null, ptr %24, align 8 call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ref.tmp.i.i.i) %func_.i.i.i = getelementptr inbounds nuw i8, ptr %24, i64 8 - %26 = load ptr, ptr %func_.i.i.i, align 8 + %27 = load ptr, ptr %func_.i.i.i, align 8 store i32 0, ptr %ref.tmp.i.i.i, align 8 store ptr %call.i.i.i.i, ptr %_M_cat.i.i.i.i, align 8 - invoke void %26(ptr noundef null, ptr noundef nonnull align 8 dereferenceable(20) %24, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i.i.i, i64 noundef 0) + invoke void %27(ptr noundef null, ptr noundef nonnull align 8 dereferenceable(20) %24, ptr noundef nonnull align 8 dereferenceable(16) %ref.tmp.i.i.i, i64 noundef 0) to label %_ZN4asio6detail15op_queue_access7destroyINS0_19scheduler_operationEEEvPT_.exit.i unwind label %terminate.lpad.i _ZN4asio6detail15op_queue_access7destroyINS0_19scheduler_operationEEEvPT_.exit.i: ; preds = %invoke.cont.i call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ref.tmp.i.i.i) - %27 = load ptr, ptr %ops, align 8 + %28 = load ptr, ptr %ops, align 8 %tobool.not.i26 = icmp eq ptr %27, null br i1 %tobool.not.i26, label %return, label %if.then.i.i25 terminate.lpad.i: ; preds = %invoke.cont.i - %28 = landingpad { ptr, i32 } + %29 = landingpad { ptr, i32 } catch ptr null - %29 = extractvalue { ptr, i32 } %28, 0 + %30 = extractvalue { ptr, i32 } %28, 0 call void @__clang_call_terminate(ptr %29) #36 unreachable if.else22: ; preds = %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockC2ERS1_.exit store ptr null, ptr %descriptor_data, align 8 - br i1 %tobool.i, label %if.then.i30, label %return - -if.then.i30: ; preds = %if.else22 %mutex_2.i31 = getelementptr inbounds nuw i8, ptr %0, i64 48 %call.i.i32 = tail call i32 @pthread_mutex_unlock(ptr noundef nonnull align 8 dereferenceable(40) %mutex_2.i31) #35 br label %return -return: ; preds = %_ZN4asio6detail15op_queue_access7destroyINS0_19scheduler_operationEEEvPT_.exit.i, %invoke.cont21, %if.then.i30, %if.else22, %entry +return: ; preds = %_ZN4asio6detail15op_queue_access7destroyINS0_19scheduler_operationEEEvPT_.exit.i, %if.else22.thread, %invoke.cont21, %if.then.i30, %entry ret void } @@ -27667,7 +27679,7 @@ if.then.i: ; preds = %if.end br label %_ZN4asio6detail27conditionally_enabled_mutex11scoped_lockC2ERS1_.exit _ZN4asio6detail27conditionally_enabled_mutex11scoped_lockC2ERS1_.exit: ; preds = %if.end, %if.then.i - %.pre = phi ptr [ %.pre.pre, %if.then.i ], [ %1, %if.end ] + %.pre = phi ptr [ %1, %if.end ], [ %.pre.pre, %if.then.i ] call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %ops, i8 0, i64 16, i1 false) %back_.i10 = getelementptr inbounds nuw i8, ptr %ops, i64 8 br label %while.cond.preheader diff --git a/bench/yosys/optimized/abc9_ops.ll b/bench/yosys/optimized/abc9_ops.ll index 871c60f5707..a1068362dea 100644 --- a/bench/yosys/optimized/abc9_ops.ll +++ b/bench/yosys/optimized/abc9_ops.ll @@ -64703,7 +64703,7 @@ _ZN5Yosys7GetSizeINS_5RTLIL5ConstEEEiRKT_.exit: ; preds = %.split cleanup br label %.loopexit4115 -.loopexit.split-lp.loopexit: ; preds = %8458, %_ZN5Yosys5RTLIL7SigSpecD2Ev.exit2481, %8467 +.loopexit.split-lp.loopexit: ; preds = %8459, %_ZN5Yosys5RTLIL7SigSpecD2Ev.exit2481, %8467 %lpad.loopexit4140 = landingpad { ptr, i32 } cleanup br label %.loopexit4115 @@ -64713,37 +64713,40 @@ _ZN5Yosys7GetSizeINS_5RTLIL5ConstEEEiRKT_.exit: ; preds = %.split cleanup br label %.loopexit4115 -.split6856.us: ; preds = %_ZN5Yosys7GetSizeINS_5RTLIL5ConstEEEiRKT_.exit.us, %_ZN5Yosys7GetSizeINS_5RTLIL5ConstEEEiRKT_.exit - %.0554.lcssa8934 = phi i32 [ %.0554.lcssa.ph, %_ZN5Yosys7GetSizeINS_5RTLIL5ConstEEEiRKT_.exit ], [ %.0554.lcssa8935, %_ZN5Yosys7GetSizeINS_5RTLIL5ConstEEEiRKT_.exit.us ] - %8455 = load ptr, ptr %8050, align 8, !tbaa !130 - %8456 = load ptr, ptr %8051, align 8, !tbaa !130 - %8457 = icmp eq ptr %8455, %8456 - br i1 %8457, label %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i2464, label %8458 +.split6856.us: ; preds = %_ZN5Yosys7GetSizeINS_5RTLIL5ConstEEEiRKT_.exit.us + %8455 = zext nneg i32 %.0554.lcssa8935 to i64 + br label %.split6856.us -8458: ; preds = %.split6856.us +8458: ; preds = %_ZN5Yosys7GetSizeINS_5RTLIL5ConstEEEiRKT_.exit, %.split6856.us + %.0554.lcssa8934 = phi i64 [ %8455, %.split6856.us.loopexit10505 ], [ 31, %_ZN5Yosys7GetSizeINS_5RTLIL5ConstEEEiRKT_.exit ] + %8456 = load ptr, ptr %8050, align 8, !tbaa !130 + %8457 = load ptr, ptr %8051, align 8, !tbaa !130 + %8458 = icmp eq ptr %8456, %8457 + br i1 %8458, label %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i2464, label %8459 + +8459: ; preds = %.split6856.us invoke void @_ZNK5Yosys5RTLIL7SigSpec6unpackEv(ptr noundef nonnull align 8 dereferenceable(56) %193) to label %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i2464 unwind label %.loopexit.split-lp.loopexit -_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i2464: ; preds = %8458, %.split6856.us - %8459 = zext nneg i32 %.0554.lcssa8934 to i64 +_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i2464: ; preds = %8459, %.split6856.us %8460 = load ptr, ptr %8053, align 8, !tbaa !225 %8461 = load ptr, ptr %8052, align 8, !tbaa !212 %8462 = ptrtoint ptr %8460 to i64 %8463 = ptrtoint ptr %8461 to i64 %8464 = sub i64 %8462, %8463 %8465 = ashr exact i64 %8464, 4 - %.not.i.i.i2465 = icmp ugt i64 %8465, %8459 + %.not.i.i.i2465 = icmp ugt i64 %8465, %.0554.lcssa8934 br i1 %.not.i.i.i2465, label %8467, label %8466 8466: ; preds = %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i2464 - invoke void (ptr, ...) @_ZSt24__throw_out_of_range_fmtPKcz(ptr noundef nonnull @.str.109, i64 noundef %8459, i64 noundef %8465) #31 + invoke void (ptr, ...) @_ZSt24__throw_out_of_range_fmtPKcz(ptr noundef nonnull @.str.109, i64 noundef %.0554.lcssa8934, i64 noundef %8465) #31 to label %.noexc2467 unwind label %.loopexit.split-lp.loopexit.split-lp .noexc2467: ; preds = %8466 unreachable 8467: ; preds = %_ZNK5Yosys5RTLIL7SigSpec13inline_unpackEv.exit.i2464 - %8468 = getelementptr inbounds nuw %"struct.Yosys::RTLIL::SigBit", ptr %8461, i64 %8459 + %8468 = getelementptr inbounds nuw %"struct.Yosys::RTLIL::SigBit", ptr %8461, i64 %.0554.lcssa8934 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(12) %8468, ptr noundef nonnull align 8 dereferenceable(12) %185, i64 12, i1 false), !tbaa.struct !227 invoke void @_ZN5Yosys5RTLIL7SigSpecC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(56) %195, ptr noundef nonnull align 8 dereferenceable(56) %193) to label %8469 unwind label %.loopexit.split-lp.loopexit diff --git a/bench/yosys/optimized/ffmerge.ll b/bench/yosys/optimized/ffmerge.ll index 18e29ddced2..bd44ce658eb 100644 --- a/bench/yosys/optimized/ffmerge.ll +++ b/bench/yosys/optimized/ffmerge.ll @@ -1011,7 +1011,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit135: ; preds = %_Z %87 = load ptr, ptr %0, align 8, !tbaa !6 call void @_ZNK5Yosys6SigMap5applyERNS_5RTLIL7SigSpecE(ptr noundef nonnull align 8 dereferenceable(80) %87, ptr noundef nonnull align 8 dereferenceable(56) %1) %88 = load i32, ptr %1, align 8, !tbaa !121 - %.not296455 = icmp eq i32 %88, 0 + %.not296454 = icmp eq i32 %88, 0 br i1 %.not296455, label %.loopexit, label %.lr.ph .lr.ph: ; preds = %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit135 @@ -1188,7 +1188,7 @@ _ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit143: ; preds = %_Z 219: ; preds = %.lr.ph, %_ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EE9push_backEOS2_.exit162.thread288 %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %_ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EE9push_backEOS2_.exit162.thread288 ] - %.098457 = phi i8 [ 0, %.lr.ph ], [ %.2100291, %_ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EE9push_backEOS2_.exit162.thread288 ] + %.098456 = phi i8 [ 0, %.lr.ph ], [ %.2100291, %_ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EE9push_backEOS2_.exit162.thread288 ] call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #25 %220 = load ptr, ptr %89, align 8, !tbaa !51 %221 = load ptr, ptr %90, align 8, !tbaa !51 @@ -1538,7 +1538,7 @@ _ZN5Yosys7hashlib4poolISt4pairIPNS_5RTLIL4CellEiENS0_8hash_opsIS6_EEE6insertEOS6 br i1 %379, label %380, label %_ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EE9push_backEOS2_.exit162.thread293 380: ; preds = %_ZN5Yosys7hashlib4poolISt4pairIPNS_5RTLIL4CellEiENS0_8hash_opsIS6_EEE6insertEOS6_.exit - %381 = trunc nuw i8 %.098457 to i1 + %381 = trunc nuw i8 %.098456 to i1 br i1 %381, label %412, label %382 382: ; preds = %380 @@ -2256,6 +2256,7 @@ _ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx br label %_ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EE9push_backEOS2_.exit162 _ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EE9push_backEOS2_.exit162.thread293: ; preds = %_ZN5Yosys7hashlib4poolISt4pairIPNS_5RTLIL4CellEiENS0_8hash_opsIS6_EEE6insertEOS6_.exit, %412, %415, %418, %421, %424, %427, %433, %434, %442, %443, %451, %452, %460, %461, %467, %475, %476, %482, %485 + %.4102.ph = phi i8 [ 1, %485 ], [ 1, %482 ], [ 1, %476 ], [ 1, %475 ], [ 1, %467 ], [ 1, %461 ], [ 1, %460 ], [ 1, %452 ], [ 1, %451 ], [ 1, %443 ], [ 1, %442 ], [ 1, %434 ], [ 1, %433 ], [ 1, %427 ], [ 1, %424 ], [ 1, %421 ], [ 1, %418 ], [ 1, %415 ], [ 1, %412 ], [ %.098456, %_ZN5Yosys7hashlib4poolISt4pairIPNS_5RTLIL4CellEiENS0_8hash_opsIS6_EEE6insertEOS6_.exit ] call void @_ZN5Yosys6FfDataD2Ev(ptr noundef nonnull align 8 dereferenceable(800) %17) #25 call void @llvm.lifetime.end.p0(i64 800, ptr nonnull %17) #25 br label %.loopexit.sink.split @@ -2355,13 +2356,14 @@ _ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EE9push_backEOS2_.exit162.thread288: ; pr br label %679 .loopexit.sink.split: ; preds = %325, %322, %_ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EE9push_backEOS2_.exit162.thread293 + %.199.ph = phi i8 [ %.4102.ph, %_ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EE9push_backEOS2_.exit162.thread293 ], [ %.098456, %322 ], [ %.098456, %325 ] call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #25 br label %.loopexit .loopexit: ; preds = %_ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EE9push_backEOS2_.exit162.thread288, %.loopexit.sink.split, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit135 - %.098412 = phi i8 [ 0, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit135 ], [ %.098457, %.loopexit.sink.split ], [ %.2100291, %_ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EE9push_backEOS2_.exit162.thread288 ] %.not296390 = phi i1 [ true, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit135 ], [ false, %.loopexit.sink.split ], [ true, %_ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EE9push_backEOS2_.exit162.thread288 ] - %678 = trunc nuw i8 %.098412 to i1 + %.199 = phi i8 [ 0, %_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev.exit135 ], [ %.199.ph, %.loopexit.sink.split ], [ %.2100291, %_ZNSt6vectorIN5Yosys5RTLIL5StateESaIS2_EE9push_backEOS2_.exit162.thread288 ] + %678 = trunc nuw i8 %.199 to i1 %.5 = select i1 %.not296390, i1 %678, i1 false ret i1 %.5 diff --git a/bench/z3/optimized/arith_rewriter.ll b/bench/z3/optimized/arith_rewriter.ll index 24c428b0936..66232adfc4c 100644 --- a/bench/z3/optimized/arith_rewriter.ll +++ b/bench/z3/optimized/arith_rewriter.ll @@ -51230,7 +51230,8 @@ _ZN8rationalpLERKS_.exit: ; preds = %41 _ZNK13poly_rewriterI19arith_rewriter_coreE6mon_ltclEP4exprS4_.exit: ; preds = %.noexc117, %61 %.0.i = phi i1 [ %66, %.noexc117 ], [ %62, %61 ] - %spec.select = select i1 %.0.i, i8 0, i8 %.087413 + %not..0.i = xor i1 %.0.i, true + %spec.select = zext i1 %not..0.i to i8 br label %67 67: ; preds = %_ZNK13poly_rewriterI19arith_rewriter_coreE6mon_ltclEP4exprS4_.exit, %55, %51, %_ZN8rationalpLERKS_.exit @@ -53610,7 +53611,8 @@ _ZN6bufferIP4exprLb0ELj16EE9push_backERKS1_.exit: ; preds = %._crit_edge.i.i102, .lr.ph237.preheader: ; preds = %_ZN6bufferIP4exprLb0ELj16EE9push_backERKS1_.exit.thread, %_ZN6bufferIP4exprLb0ELj16EE9push_backERKS1_.exit %.ph = phi i32 [ %140, %_ZN6bufferIP4exprLb0ELj16EE9push_backERKS1_.exit ], [ 1, %_ZN6bufferIP4exprLb0ELj16EE9push_backERKS1_.exit.thread ] - %.ph371 = phi ptr [ %130, %_ZN6bufferIP4exprLb0ELj16EE9push_backERKS1_.exit ], [ %.pre.i109, %_ZN6bufferIP4exprLb0ELj16EE9push_backERKS1_.exit.thread ] + %.ph371 = phi i32 [ 0, %_ZN6bufferIP4exprLb0ELj16EE9push_backERKS1_.exit ], [ %128, %_ZN6bufferIP4exprLb0ELj16EE9push_backERKS1_.exit.thread ] + %.ph372 = phi ptr [ %130, %_ZN6bufferIP4exprLb0ELj16EE9push_backERKS1_.exit ], [ %.pre.i109, %_ZN6bufferIP4exprLb0ELj16EE9push_backERKS1_.exit.thread ] br label %.lr.ph237 .preheader: ; preds = %.loopexit194 @@ -53631,9 +53633,9 @@ _ZN6bufferIP4exprLb0ELj16EE9push_backERKS1_.exit: ; preds = %._crit_edge.i.i102, .lr.ph237: ; preds = %.lr.ph237.preheader, %.loopexit194 %148 = phi i32 [ %203, %.loopexit194 ], [ %.ph, %.lr.ph237.preheader ] - %.pre.i128279 = phi ptr [ %.pre.i128280, %.loopexit194 ], [ %.ph371, %.lr.ph237.preheader ] - %149 = phi i32 [ %204, %.loopexit194 ], [ %128, %.lr.ph237.preheader ] - %150 = phi ptr [ %205, %.loopexit194 ], [ %.ph371, %.lr.ph237.preheader ] + %.pre.i128279 = phi ptr [ %.pre.i128280, %.loopexit194 ], [ %.ph372, %.lr.ph237.preheader ] + %149 = phi i32 [ %204, %.loopexit194 ], [ %.ph371, %.lr.ph237.preheader ] + %150 = phi ptr [ %205, %.loopexit194 ], [ %.ph372, %.lr.ph237.preheader ] %.037236 = phi i32 [ %.138, %.loopexit194 ], [ 0, %.lr.ph237.preheader ] %151 = zext i32 %.037236 to i64 %152 = getelementptr inbounds nuw ptr, ptr %150, i64 %151 @@ -58289,9 +58291,9 @@ _ZNK13poly_rewriterI19arith_rewriter_coreE6is_addEP4expr.exit31: ; preds = %35 _ZNK13poly_rewriterI19arith_rewriter_coreE6is_addEP4expr.exit31.thread: ; preds = %35, %30, %_ZNK13poly_rewriterI19arith_rewriter_coreE6is_addEP4expr.exit31, %46 %53 = phi i32 [ %.pre, %46 ], [ %32, %_ZNK13poly_rewriterI19arith_rewriter_coreE6is_addEP4expr.exit31 ], [ %32, %30 ], [ %32, %35 ] + %.1 = phi i1 [ false, %46 ], [ true, %_ZNK13poly_rewriterI19arith_rewriter_coreE6is_addEP4expr.exit31 ], [ true, %30 ], [ true, %35 ] %.044 = phi ptr [ %48, %46 ], [ %.02450, %_ZNK13poly_rewriterI19arith_rewriter_coreE6is_addEP4expr.exit31 ], [ %.02450, %30 ], [ %.02450, %35 ] %.125 = phi ptr [ %50, %46 ], [ %.02450, %_ZNK13poly_rewriterI19arith_rewriter_coreE6is_addEP4expr.exit31 ], [ %.02450, %30 ], [ %.02450, %35 ] - %.1 = phi i1 [ false, %46 ], [ true, %_ZNK13poly_rewriterI19arith_rewriter_coreE6is_addEP4expr.exit31 ], [ true, %30 ], [ true, %35 ] %trunc = trunc i32 %53 to i16 switch i16 %trunc, label %.critedge [ i16 0, label %_Z9is_groundPK4expr.exit32 diff --git a/bench/z3/optimized/dimacs.ll b/bench/z3/optimized/dimacs.ll index 09a5f507a30..d66b22bf178 100644 --- a/bench/z3/optimized/dimacs.ll +++ b/bench/z3/optimized/dimacs.ll @@ -1251,7 +1251,7 @@ _ZN6dimacs13stream_bufferppEv.exit4.i.preheader: ; preds = %_ZN6dimacs13stream_ br label %_ZN6dimacs13stream_bufferppEv.exit.i.backedge _ZN6dimacs13stream_bufferppEv.exit.i.backedge: ; preds = %_ZN6dimacs13stream_bufferppEv.exit4.i, %9, %.noexc, %.noexc11, %19 - %.be = phi i32 [ %7, %9 ], [ %7, %.noexc ], [ %17, %.noexc11 ], [ 10, %19 ], [ %14, %_ZN6dimacs13stream_bufferppEv.exit4.i ] + %.be = phi i32 [ 10, %9 ], [ %7, %.noexc ], [ %17, %.noexc11 ], [ 10, %19 ], [ %14, %_ZN6dimacs13stream_bufferppEv.exit4.i ] br label %_ZN6dimacs13stream_bufferppEv.exit.i, !llvm.loop !12 .loopexit: ; preds = %224, %_ZN6vectorIN3sat7literalELb0EjE9push_backEOS1_.exit.i84 @@ -1398,14 +1398,13 @@ _ZN6dimacs13stream_bufferppEv.exit4.i.backedge: ; preds = %26, %.noexc12 br i1 %32, label %_ZN6dimacs13stream_bufferppEv.exit.sink.split, label %_ZN6dimacs13stream_bufferppEv.exit.preheader _ZN6dimacs13stream_bufferppEv.exit.sink.split: ; preds = %.noexc13, %39 - %.val.i15.ph = phi i32 [ %37, %39 ], [ %31, %.noexc13 ] %33 = load i32, ptr %3, align 4, !tbaa !8 %34 = add i32 %33, 1 store i32 %34, ptr %3, align 4, !tbaa !8 br label %_ZN6dimacs13stream_bufferppEv.exit.preheader _ZN6dimacs13stream_bufferppEv.exit.preheader: ; preds = %.noexc13, %_ZN6dimacs13stream_bufferppEv.exit.sink.split - %.val.i15.ph165 = phi i32 [ %.val.i15.ph, %_ZN6dimacs13stream_bufferppEv.exit.sink.split ], [ %31, %.noexc13 ] + %.val.i15.ph165 = phi i32 [ 10, %_ZN6dimacs13stream_bufferppEv.exit.sink.split ], [ %31, %.noexc13 ] br label %_ZN6dimacs13stream_bufferppEv.exit _ZN6dimacs13stream_bufferppEv.exit: ; preds = %_ZN6dimacs13stream_bufferppEv.exit.preheader, %.noexc17 @@ -1513,14 +1512,13 @@ _ZN6vectorIN3sat7literalELb0EjE9push_backEOS1_.exit.i: ; preds = %.noexc20, %53 br i1 %73, label %_ZN6dimacs13stream_bufferppEv.exit23.sink.split, label %_ZN6dimacs13stream_bufferppEv.exit23.preheader _ZN6dimacs13stream_bufferppEv.exit23.sink.split: ; preds = %.noexc22, %80 - %.val.i25.ph = phi i32 [ %78, %80 ], [ %72, %.noexc22 ] %74 = load i32, ptr %3, align 4, !tbaa !8 %75 = add i32 %74, 1 store i32 %75, ptr %3, align 4, !tbaa !8 br label %_ZN6dimacs13stream_bufferppEv.exit23.preheader _ZN6dimacs13stream_bufferppEv.exit23.preheader: ; preds = %.noexc22, %_ZN6dimacs13stream_bufferppEv.exit23.sink.split - %.val.i25.ph166 = phi i32 [ %.val.i25.ph, %_ZN6dimacs13stream_bufferppEv.exit23.sink.split ], [ %72, %.noexc22 ] + %.val.i25.ph166 = phi i32 [ 10, %_ZN6dimacs13stream_bufferppEv.exit23.sink.split ], [ %72, %.noexc22 ] br label %_ZN6dimacs13stream_bufferppEv.exit23 _ZN6dimacs13stream_bufferppEv.exit23: ; preds = %_ZN6dimacs13stream_bufferppEv.exit23.preheader, %.noexc27 @@ -1666,14 +1664,13 @@ _ZN6vectorIN3sat7literalELb0EjE9push_backEOS1_.exit.i37: ; preds = %.noexc42, %1 br i1 %123, label %_ZN6dimacs13stream_bufferppEv.exit46.sink.split, label %_ZN6dimacs13stream_bufferppEv.exit46.preheader _ZN6dimacs13stream_bufferppEv.exit46.sink.split: ; preds = %.noexc45, %130 - %.val.i48.ph = phi i32 [ %128, %130 ], [ %122, %.noexc45 ] %124 = load i32, ptr %3, align 4, !tbaa !8 %125 = add i32 %124, 1 store i32 %125, ptr %3, align 4, !tbaa !8 br label %_ZN6dimacs13stream_bufferppEv.exit46.preheader _ZN6dimacs13stream_bufferppEv.exit46.preheader: ; preds = %.noexc45, %_ZN6dimacs13stream_bufferppEv.exit46.sink.split - %.val.i48.ph168 = phi i32 [ %.val.i48.ph, %_ZN6dimacs13stream_bufferppEv.exit46.sink.split ], [ %122, %.noexc45 ] + %.val.i48.ph168 = phi i32 [ 10, %_ZN6dimacs13stream_bufferppEv.exit46.sink.split ], [ %122, %.noexc45 ] br label %_ZN6dimacs13stream_bufferppEv.exit46 _ZN6dimacs13stream_bufferppEv.exit46: ; preds = %_ZN6dimacs13stream_bufferppEv.exit46.preheader, %.noexc50 @@ -1781,14 +1778,13 @@ _ZN6vectorIN3sat7literalELb0EjE9push_backEOS1_.exit.i55: ; preds = %.noexc60, %1 br i1 %164, label %_ZN6dimacs13stream_bufferppEv.exit64.sink.split, label %_ZN6dimacs13stream_bufferppEv.exit64.preheader _ZN6dimacs13stream_bufferppEv.exit64.sink.split: ; preds = %.noexc63, %171 - %.val.i66.ph = phi i32 [ %169, %171 ], [ %163, %.noexc63 ] %165 = load i32, ptr %3, align 4, !tbaa !8 %166 = add i32 %165, 1 store i32 %166, ptr %3, align 4, !tbaa !8 br label %_ZN6dimacs13stream_bufferppEv.exit64.preheader _ZN6dimacs13stream_bufferppEv.exit64.preheader: ; preds = %.noexc63, %_ZN6dimacs13stream_bufferppEv.exit64.sink.split - %.val.i66.ph170 = phi i32 [ %.val.i66.ph, %_ZN6dimacs13stream_bufferppEv.exit64.sink.split ], [ %163, %.noexc63 ] + %.val.i66.ph170 = phi i32 [ 10, %_ZN6dimacs13stream_bufferppEv.exit64.sink.split ], [ %163, %.noexc63 ] br label %_ZN6dimacs13stream_bufferppEv.exit64 _ZN6dimacs13stream_bufferppEv.exit64: ; preds = %_ZN6dimacs13stream_bufferppEv.exit64.preheader, %.noexc68 diff --git a/bench/zed-rs/optimized/5lgahps99tv0rsaolw3x59ow2.ll b/bench/zed-rs/optimized/5lgahps99tv0rsaolw3x59ow2.ll index c244a470741..fd9d08e9865 100644 --- a/bench/zed-rs/optimized/5lgahps99tv0rsaolw3x59ow2.ll +++ b/bench/zed-rs/optimized/5lgahps99tv0rsaolw3x59ow2.ll @@ -407,23 +407,26 @@ _ZN4core10intrinsics10typed_swap17h5d4f9f35dc9407bfE.exit.i22: ; preds = %103 %137 = urem i32 %136, %98 %138 = uitofp i32 %137 to float %139 = getelementptr inbounds nuw i8, ptr %0, i64 104 + br label %.outer + +.outer: ; preds = %.thread, %.lr.ph53 + %.sroa.0.151.ph = phi i1 [ true, %.thread ], [ false, %.lr.ph53 ] + %.sroa.8.150.ph = phi float [ %153, %.thread ], [ undef, %.lr.ph53 ] + %.sroa.14.049.ph = phi i64 [ 1, %.thread ], [ 0, %.lr.ph53 ] br label %142 140: ; preds = %.loopexit tail call void @_ZN4core9panicking11panic_const23panic_const_rem_by_zero17h1bfa65ef1309b877E(ptr noalias noundef readonly align 8 dereferenceable(24) @anon.f085cfcccbfba9c314a9b6d9e5f7a063.6) #14 unreachable -._crit_edge54: ; preds = %180 +._crit_edge54: ; preds = %177 %.pre = load i32, ptr %17, align 4 %141 = add i32 %.pre, 1 store i32 %141, ptr %17, align 4 - %trunc = trunc nuw i32 %.sroa.0.2 to i1 - br i1 %trunc, label %169, label %155 + br i1 %.sroa.0.151.ph, label %169, label %155 -142: ; preds = %.lr.ph53, %180 - %.sroa.0.151 = phi i32 [ 0, %.lr.ph53 ], [ %.sroa.0.2, %180 ] - %.sroa.8.150 = phi float [ undef, %.lr.ph53 ], [ %.sroa.8.2, %180 ] - %.sroa.14.049 = phi i64 [ 0, %.lr.ph53 ], [ %143, %180 ] +142: ; preds = %.outer, %177 + %.sroa.14.049 = phi i64 [ %143, %177 ], [ %.sroa.14.049.ph, %.outer ] %143 = add nuw i64 %.sroa.14.049, 1 %144 = getelementptr inbounds float, ptr %127, i64 %.sroa.14.049 %145 = getelementptr inbounds float, ptr %131, i64 %.sroa.14.049 @@ -436,10 +439,10 @@ _ZN4core10intrinsics10typed_swap17h5d4f9f35dc9407bfE.exit.i22: ; preds = %103 %152 = fdiv float %150, %151 %153 = fadd float %146, %152 %154 = icmp eq i64 %.sroa.14.049, 0 - br i1 %154, label %180, label %172 + br i1 %154, label %.thread, label %172 155: ; preds = %._crit_edge54.thread, %._crit_edge54 - %.sroa.8.1.lcssa61 = phi float [ undef, %._crit_edge54.thread ], [ %.sroa.8.2, %._crit_edge54 ] + %.sroa.8.1.lcssa60 = phi float [ undef, %._crit_edge54.thread ], [ %.sroa.8.150.ph, %._crit_edge54 ] %156 = load i64, ptr %128, align 8, !noundef !4 %157 = icmp eq i64 %156, 0 br i1 %157, label %169, label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6remove17h0f58527ee8f0cc7eE.exit31" @@ -471,9 +474,9 @@ _ZN4core10intrinsics10typed_swap17h5d4f9f35dc9407bfE.exit: ; preds = %163 store i64 0, ptr %128, align 8 br label %169 -169: ; preds = %155, %._crit_edge54, %_ZN4core10intrinsics10typed_swap17h5d4f9f35dc9407bfE.exit, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6remove17h0f58527ee8f0cc7eE.exit", %12 - %.sroa.8.0 = phi float [ %15, %12 ], [ %159, %_ZN4core10intrinsics10typed_swap17h5d4f9f35dc9407bfE.exit ], [ %.sroa.8.2, %._crit_edge54 ], [ %22, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6remove17h0f58527ee8f0cc7eE.exit" ], [ %.sroa.8.1.lcssa61, %155 ] - %.sroa.0.0 = phi i32 [ %14, %12 ], [ 1, %_ZN4core10intrinsics10typed_swap17h5d4f9f35dc9407bfE.exit ], [ 1, %._crit_edge54 ], [ 1, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6remove17h0f58527ee8f0cc7eE.exit" ], [ 0, %155 ] +169: ; preds = %._crit_edge54.thread66, %155, %._crit_edge54, %_ZN4core10intrinsics10typed_swap17h5d4f9f35dc9407bfE.exit, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6remove17h0f58527ee8f0cc7eE.exit", %12 + %.sroa.8.0 = phi float [ %15, %12 ], [ %159, %_ZN4core10intrinsics10typed_swap17h5d4f9f35dc9407bfE.exit ], [ %.sroa.8.150.ph, %._crit_edge54 ], [ %22, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6remove17h0f58527ee8f0cc7eE.exit" ], [ %.sroa.8.1.lcssa61, %155 ], [ %153, %._crit_edge54.thread66 ] + %.sroa.0.0 = phi i32 [ %14, %12 ], [ 1, %_ZN4core10intrinsics10typed_swap17h5d4f9f35dc9407bfE.exit ], [ 1, %._crit_edge54 ], [ 1, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$6remove17h0f58527ee8f0cc7eE.exit" ], [ 0, %155 ], [ 1, %._crit_edge54.thread66 ] %170 = insertvalue { i32, float } poison, i32 %.sroa.0.0, 0 %171 = insertvalue { i32, float } %170, float %.sroa.8.0, 1 ret { i32, float } %171 @@ -488,19 +491,24 @@ _ZN4core10intrinsics10typed_swap17h5d4f9f35dc9407bfE.exit: ; preds = %163 tail call void @"_ZN5alloc7raw_vec19RawVec$LT$T$C$A$GT$8grow_one17h813dde4289956433E"(ptr noalias noundef nonnull align 8 dereferenceable(24) %8) br label %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17hbb54981e4606499dE.exit" -"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17hbb54981e4606499dE.exit": ; preds = %172, %176 - %177 = load ptr, ptr %139, align 8, !alias.scope !36, !nonnull !4, !noundef !4 - %178 = getelementptr inbounds float, ptr %177, i64 %173 +"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17hbb54981e4606499dE.exit": ; preds = %176, %172 + %178 = load ptr, ptr %139, align 8, !alias.scope !36, !nonnull !4, !noundef !4 + %179 = getelementptr inbounds float, ptr %177, i64 %173 store float %153, ptr %178, align 4 - %179 = add i64 %173, 1 + %180 = add i64 %173, 1 store i64 %179, ptr %9, align 8, !alias.scope !36 - br label %180 - -180: ; preds = %142, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17hbb54981e4606499dE.exit" - %.sroa.8.2 = phi float [ %.sroa.8.150, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17hbb54981e4606499dE.exit" ], [ %153, %142 ] - %.sroa.0.2 = phi i32 [ %.sroa.0.151, %"_ZN5alloc3vec16Vec$LT$T$C$A$GT$4push17hbb54981e4606499dE.exit" ], [ 1, %142 ] %exitcond.not = icmp eq i64 %143, %.sroa.0.0.sroa.speculated.i.i.i br i1 %exitcond.not, label %._crit_edge54, label %142 + +.thread: ; preds = %142 + %exitcond.not63 = icmp eq i64 %143, %.sroa.0.0.sroa.speculated.i.i.i + br i1 %exitcond.not63, label %._crit_edge54.thread66, label %.outer + +._crit_edge54.thread66: ; preds = %.thread + %.pre69 = load i32, ptr %17, align 4 + %181 = add i32 %.pre69, 1 + store i32 %181, ptr %17, align 4 + br label %169 } ; Function Attrs: mustprogress nofree norecurse nosync nounwind nonlazybind willreturn memory(none) uwtable diff --git a/bench/zed-rs/optimized/7rpe3bril898mttdoib5hjrj5.ll b/bench/zed-rs/optimized/7rpe3bril898mttdoib5hjrj5.ll index 3605ee41134..040c5e5aea6 100644 --- a/bench/zed-rs/optimized/7rpe3bril898mttdoib5hjrj5.ll +++ b/bench/zed-rs/optimized/7rpe3bril898mttdoib5hjrj5.ll @@ -6553,7 +6553,11 @@ default.unreachable: ; preds = %"_ZN4core6option15O %128 = getelementptr inbounds nuw i8, ptr %4, i64 8 %129 = load i8, ptr %128, align 8, !range !419, !alias.scope !1379, !noalias !1376, !noundef !4 %130 = icmp eq i8 %127, %129 - br i1 %130, label %"_ZN65_$LT$serde_json..value..Value$u20$as$u20$core..cmp..PartialEq$GT$2eq17h80c278bf3ecfaa2bE.exit.thread", label %"_ZN4core6option15Option$LT$T$GT$6map_or17hc2d614bdedfa7b6bE.exit" + br i1 %130, label %"_ZN65_$LT$serde_json..value..Value$u20$as$u20$core..cmp..PartialEq$GT$2eq17h80c278bf3ecfaa2bE.exit.thread", label %"_ZN4core6option15Option$LT$T$GT$6map_or17hc2d614bdedfa7b6bE.exit.thread90" + +"_ZN4core6option15Option$LT$T$GT$6map_or17hc2d614bdedfa7b6bE.exit.thread90": ; preds = %125 + call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %12) + br label %181 131: ; preds = %119 %132 = getelementptr inbounds nuw i8, ptr %3, i64 8 @@ -6598,7 +6602,7 @@ default.unreachable: ; preds = %"_ZN4core6option15O %153 = getelementptr inbounds nuw i8, ptr %4, i64 24 %.val4.i = load i64, ptr %153, align 8, !alias.scope !1379, !noalias !1376, !noundef !4 %.not.i.i.i = icmp eq i64 %.val2.i, %.val4.i - br i1 %.not.i.i.i, label %154, label %"_ZN4core6option15Option$LT$T$GT$6map_or17hc2d614bdedfa7b6bE.exit" + br i1 %.not.i.i.i, label %154, label %"_ZN4core6option15Option$LT$T$GT$6map_or17hc2d614bdedfa7b6bE.exit.thread85" 154: ; preds = %151 %155 = getelementptr inbounds nuw i8, ptr %4, i64 16 @@ -6607,7 +6611,7 @@ default.unreachable: ; preds = %"_ZN4core6option15O %.val.i26 = load ptr, ptr %156, align 8, !alias.scope !1376, !noalias !1379, !nonnull !4, !noundef !4 %bcmp.i.i.i = tail call i32 @bcmp(ptr nonnull readonly align 1 %.val.i26, ptr nonnull readonly align 1 %.val3.i, i64 %.val2.i), !alias.scope !1389, !noalias !1393 %157 = icmp eq i32 %bcmp.i.i.i, 0 - br i1 %157, label %"_ZN65_$LT$serde_json..value..Value$u20$as$u20$core..cmp..PartialEq$GT$2eq17h80c278bf3ecfaa2bE.exit.thread", label %"_ZN4core6option15Option$LT$T$GT$6map_or17hc2d614bdedfa7b6bE.exit" + br i1 %157, label %"_ZN65_$LT$serde_json..value..Value$u20$as$u20$core..cmp..PartialEq$GT$2eq17h80c278bf3ecfaa2bE.exit.thread", label %"_ZN4core6option15Option$LT$T$GT$6map_or17hc2d614bdedfa7b6bE.exit.thread85" 158: ; preds = %123 %159 = getelementptr inbounds nuw i8, ptr %3, i64 16 @@ -6619,7 +6623,7 @@ default.unreachable: ; preds = %"_ZN4core6option15O %162 = getelementptr inbounds nuw i8, ptr %4, i64 24 %.val8.i = load i64, ptr %162, align 8, !alias.scope !1379, !noalias !1376, !noundef !4 %.not.i.i9.i = icmp eq i64 %.val6.i, %.val8.i - br i1 %.not.i.i9.i, label %.preheader.split.i.i.i, label %"_ZN4core6option15Option$LT$T$GT$6map_or17hc2d614bdedfa7b6bE.exit" + br i1 %.not.i.i9.i, label %.preheader.split.i.i.i, label %"_ZN4core6option15Option$LT$T$GT$6map_or17hc2d614bdedfa7b6bE.exit.thread88" .preheader.split.i.i.i: ; preds = %158, %163 %.sroa.01.0.i.i.i = phi i64 [ %164, %163 ], [ 0, %158 ] @@ -6631,7 +6635,7 @@ default.unreachable: ; preds = %"_ZN4core6option15O %165 = getelementptr inbounds [0 x { i64, [8 x i64] }], ptr %.val5.i25, i64 0, i64 %.sroa.01.0.i.i.i %166 = getelementptr inbounds [0 x { i64, [8 x i64] }], ptr %.val7.i, i64 0, i64 %.sroa.01.0.i.i.i %167 = tail call noundef zeroext i1 @"_ZN65_$LT$serde_json..value..Value$u20$as$u20$core..cmp..PartialEq$GT$2eq17h80c278bf3ecfaa2bE.llvm.7407093845808595376"(ptr noalias noundef nonnull readonly align 8 dereferenceable(72) %165, ptr noalias noundef nonnull readonly align 8 dereferenceable(72) %166), !noalias !1393 - br i1 %167, label %.preheader.split.i.i.i, label %"_ZN4core6option15Option$LT$T$GT$6map_or17hc2d614bdedfa7b6bE.exit" + br i1 %167, label %.preheader.split.i.i.i, label %"_ZN4core6option15Option$LT$T$GT$6map_or17hc2d614bdedfa7b6bE.exit.thread88" 168: ; preds = %116 tail call void @llvm.experimental.noalias.scope.decl(metadata !1394) @@ -6662,8 +6666,20 @@ default.unreachable: ; preds = %"_ZN4core6option15O %.pre81 = tail call i64 @llvm.umin.i64(i64 %.pre80, i64 5) br label %"_ZN4core6option15Option$LT$T$GT$6map_or17hc2d614bdedfa7b6bE.exit" -"_ZN4core6option15Option$LT$T$GT$6map_or17hc2d614bdedfa7b6bE.exit": ; preds = %163, %"_ZN4core6option15Option$LT$T$GT$6map_or17hc2d614bdedfa7b6bE.exit.loopexit73", %168, %158, %151, %131, %.loopexit, %154, %139, %143, %147, %125, %"_ZN65_$LT$serde_json..value..Value$u20$as$u20$core..cmp..PartialEq$GT$2eq17h80c278bf3ecfaa2bE.exit" - %.pre-phi82 = phi i64 [ %.pre81, %"_ZN4core6option15Option$LT$T$GT$6map_or17hc2d614bdedfa7b6bE.exit.loopexit73" ], [ %114, %168 ], [ %114, %158 ], [ %114, %151 ], [ %114, %131 ], [ %114, %.loopexit ], [ %114, %154 ], [ %114, %139 ], [ %114, %143 ], [ %114, %147 ], [ %114, %125 ], [ %114, %"_ZN65_$LT$serde_json..value..Value$u20$as$u20$core..cmp..PartialEq$GT$2eq17h80c278bf3ecfaa2bE.exit" ], [ %114, %163 ] +"_ZN4core6option15Option$LT$T$GT$6map_or17hc2d614bdedfa7b6bE.exit": ; preds = %131, %139, %143, %147 + call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %12) + br label %185 + +"_ZN4core6option15Option$LT$T$GT$6map_or17hc2d614bdedfa7b6bE.exit.thread85": ; preds = %151, %154 + call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %12) + br label %188 + +"_ZN4core6option15Option$LT$T$GT$6map_or17hc2d614bdedfa7b6bE.exit.thread88": ; preds = %163, %158 + call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %12) + br label %191 + +"_ZN4core6option15Option$LT$T$GT$6map_or17hc2d614bdedfa7b6bE.exit": ; preds = %"_ZN4core6option15Option$LT$T$GT$6map_or17hc2d614bdedfa7b6bE.exit.loopexit73", %168, %.loopexit, %"_ZN65_$LT$serde_json..value..Value$u20$as$u20$core..cmp..PartialEq$GT$2eq17h80c278bf3ecfaa2bE.exit" + %.pre-phi82 = phi i64 [ %.pre81, %"_ZN4core6option15Option$LT$T$GT$6map_or17hc2d614bdedfa7b6bE.exit.loopexit73" ], [ %114, %168 ], [ %114, %.loopexit ], [ %114, %"_ZN65_$LT$serde_json..value..Value$u20$as$u20$core..cmp..PartialEq$GT$2eq17h80c278bf3ecfaa2bE.exit" ] call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %12) call void @llvm.experimental.noalias.scope.decl(metadata !1402) call void @llvm.experimental.noalias.scope.decl(metadata !1405) @@ -6680,7 +6696,7 @@ default.unreachable: ; preds = %"_ZN4core6option15O store i64 -9223372036854775808, ptr %12, align 8, !alias.scope !1402, !noalias !1405 br label %"_ZN63_$LT$serde_json..value..Value$u20$as$u20$core..clone..Clone$GT$5clone17hf54ec36436643772E.exit.thread" -181: ; preds = %"_ZN4core6option15Option$LT$T$GT$6map_or17hc2d614bdedfa7b6bE.exit" +181: ; preds = %"_ZN4core6option15Option$LT$T$GT$6map_or17hc2d614bdedfa7b6bE.exit.thread90", %"_ZN4core6option15Option$LT$T$GT$6map_or17hc2d614bdedfa7b6bE.exit" %182 = getelementptr inbounds nuw i8, ptr %4, i64 8 %183 = load i8, ptr %182, align 8, !range !419, !alias.scope !1405, !noalias !1402, !noundef !4 %184 = getelementptr inbounds nuw i8, ptr %12, i64 8 @@ -6688,21 +6704,21 @@ default.unreachable: ; preds = %"_ZN4core6option15O store i64 -9223372036854775807, ptr %12, align 8, !alias.scope !1402, !noalias !1405 br label %"_ZN63_$LT$serde_json..value..Value$u20$as$u20$core..clone..Clone$GT$5clone17hf54ec36436643772E.exit.thread" -185: ; preds = %"_ZN4core6option15Option$LT$T$GT$6map_or17hc2d614bdedfa7b6bE.exit" +185: ; preds = %"_ZN4core6option15Option$LT$T$GT$6map_or17hc2d614bdedfa7b6bE.exit", %"_ZN4core6option15Option$LT$T$GT$6map_or17hc2d614bdedfa7b6bE.exit" %186 = getelementptr inbounds nuw i8, ptr %4, i64 8 %187 = getelementptr inbounds nuw i8, ptr %12, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %187, ptr noundef nonnull readonly align 8 dereferenceable(16) %186, i64 16, i1 false), !alias.scope !1407 store i64 -9223372036854775806, ptr %12, align 8, !alias.scope !1402, !noalias !1405 br label %"_ZN63_$LT$serde_json..value..Value$u20$as$u20$core..clone..Clone$GT$5clone17hf54ec36436643772E.exit.thread" -188: ; preds = %"_ZN4core6option15Option$LT$T$GT$6map_or17hc2d614bdedfa7b6bE.exit" +188: ; preds = %"_ZN4core6option15Option$LT$T$GT$6map_or17hc2d614bdedfa7b6bE.exit.thread85", %"_ZN4core6option15Option$LT$T$GT$6map_or17hc2d614bdedfa7b6bE.exit" %189 = getelementptr inbounds nuw i8, ptr %4, i64 8 %190 = getelementptr inbounds nuw i8, ptr %12, i64 8 call void @"_ZN60_$LT$alloc..string..String$u20$as$u20$core..clone..Clone$GT$5clone17h307f40ef8d5b52e5E"(ptr noalias noundef nonnull sret([24 x i8]) align 8 captures(none) dereferenceable(24) %190, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %189) store i64 -9223372036854775805, ptr %12, align 8, !alias.scope !1402, !noalias !1405 br label %"_ZN63_$LT$serde_json..value..Value$u20$as$u20$core..clone..Clone$GT$5clone17hf54ec36436643772E.exit.thread" -191: ; preds = %"_ZN4core6option15Option$LT$T$GT$6map_or17hc2d614bdedfa7b6bE.exit" +191: ; preds = %"_ZN4core6option15Option$LT$T$GT$6map_or17hc2d614bdedfa7b6bE.exit.thread88", %"_ZN4core6option15Option$LT$T$GT$6map_or17hc2d614bdedfa7b6bE.exit" %192 = getelementptr inbounds nuw i8, ptr %4, i64 24 %193 = getelementptr inbounds nuw i8, ptr %4, i64 16 %194 = load ptr, ptr %193, align 8, !alias.scope !1408, !noalias !1411, !nonnull !4, !noundef !4 diff --git a/bench/zed-rs/optimized/80403hw32s3ougvze8j2ycldj.ll b/bench/zed-rs/optimized/80403hw32s3ougvze8j2ycldj.ll index d6fe8c20121..213e70bdc90 100644 --- a/bench/zed-rs/optimized/80403hw32s3ougvze8j2ycldj.ll +++ b/bench/zed-rs/optimized/80403hw32s3ougvze8j2ycldj.ll @@ -6522,7 +6522,7 @@ define void @"_ZN85_$LT$go_to_line..cursor_position..CursorPosition$u20$as$u20$g %39 = invoke noundef align 8 dereferenceable(1176) ptr @"_ZN71_$LT$gpui..window..WindowContext$u20$as$u20$core..ops..deref..Deref$GT$5deref17hc63f9d594dbf0052E"(ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %2) to label %42 unwind label %40, !noalias !1034 -40: ; preds = %90, %.split.us.preheader.i._crit_edge.thread.i.i, %62, %.noexc.i, %.thread.i.i, %38 +40: ; preds = %90, %.split.us.preheader.i._crit_edge.i.i, %62, %.noexc.i, %.thread.i.i, %38 %41 = landingpad { ptr, i32 } cleanup br label %"_ZN4core3ptr163drop_in_place$LT$core..iter..adapters..flatten..Flatten$LT$core..array..iter..IntoIter$LT$core..option..Option$LT$$LP$usize$C$$RF$str$RP$$GT$$C$3_usize$GT$$GT$$GT$17h9c9900c268c6be38E.exit.i.i" @@ -6637,7 +6637,7 @@ define void @"_ZN85_$LT$go_to_line..cursor_position..CursorPosition$u20$as$u20$g %.sroa.040.0202.i.i = phi i1 [ false, %.split.us.preheader.i.lr.ph.i.i ], [ true, %125 ] %.promoted.i.i.i = load i64, ptr %.sroa.062.sroa.2.0..sroa_idx.i.i, align 8, !alias.scope !1059, !noalias !1062 %.not.i.i.i.us.not.i195.i.i = icmp eq i64 %73, %.promoted.i.i.i - br i1 %.not.i.i.i.us.not.i195.i.i, label %.split.us.preheader.i._crit_edge.thread.i.i, label %.lr.ph.i.i + br i1 %.not.i.i.i.us.not.i195.i.i, label %.split.us.preheader.i._crit_edge.i.i, label %.lr.ph.i.i .split.us.i.i.i: ; preds = %.lr.ph.i.i %.not.i.i.i.us.not.i.i.i = icmp eq i64 %73, %75 @@ -6681,15 +6681,12 @@ define void @"_ZN85_$LT$go_to_line..cursor_position..CursorPosition$u20$as$u20$g %85 = invoke { ptr, i64 } @"_ZN104_$LT$core..ops..index_range..IndexRange$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$17get_unchecked_mut17hae28251738d98aecE.llvm.12693905709654140652"(i64 noundef %83, i64 noundef %84, ptr noundef nonnull %.sroa.062.sroa.4.0..sroa_idx.i.i, i64 noundef 3) to label %"_ZN4core3ptr163drop_in_place$LT$core..iter..adapters..flatten..Flatten$LT$core..array..iter..IntoIter$LT$core..option..Option$LT$$LP$usize$C$$RF$str$RP$$GT$$C$3_usize$GT$$GT$$GT$17h9c9900c268c6be38E.exit.i.i" unwind label %128, !noalias !1044 -.split.us.preheader.i._crit_edge.i.i: ; preds = %.split.us.i.i.i +.split.us.preheader.i._crit_edge.i.i: ; preds = %.split.us.preheader.i.i.i, %.split.us.i.i.i store i64 %73, ptr %.sroa.062.sroa.2.0..sroa_idx.i.i, align 8, !noalias !1043 - br label %.split.us.preheader.i._crit_edge.thread.i.i - -.split.us.preheader.i._crit_edge.thread.i.i: ; preds = %.split.us.preheader.i.i.i, %.split.us.preheader.i._crit_edge.i.i %86 = invoke { ptr, i64 } @"_ZN104_$LT$core..ops..index_range..IndexRange$u20$as$u20$core..slice..index..SliceIndex$LT$$u5b$T$u5d$$GT$$GT$17get_unchecked_mut17hae28251738d98aecE.llvm.12693905709654140652"(i64 noundef %73, i64 noundef %73, ptr noundef nonnull %.sroa.062.sroa.4.0..sroa_idx.i.i, i64 noundef 3) to label %"_ZN4core3ptr163drop_in_place$LT$core..iter..adapters..flatten..Flatten$LT$core..array..iter..IntoIter$LT$core..option..Option$LT$$LP$usize$C$$RF$str$RP$$GT$$C$3_usize$GT$$GT$$GT$17h9c9900c268c6be38E.exit119.i.i" unwind label %40, !noalias !1034 -"_ZN4core3ptr163drop_in_place$LT$core..iter..adapters..flatten..Flatten$LT$core..array..iter..IntoIter$LT$core..option..Option$LT$$LP$usize$C$$RF$str$RP$$GT$$C$3_usize$GT$$GT$$GT$17h9c9900c268c6be38E.exit119.i.i": ; preds = %.split.us.preheader.i._crit_edge.thread.i.i, %.thread169.i.i +"_ZN4core3ptr163drop_in_place$LT$core..iter..adapters..flatten..Flatten$LT$core..array..iter..IntoIter$LT$core..option..Option$LT$$LP$usize$C$$RF$str$RP$$GT$$C$3_usize$GT$$GT$$GT$17h9c9900c268c6be38E.exit119.i.i": ; preds = %.split.us.preheader.i._crit_edge.i.i, %.thread169.i.i call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %12), !noalias !1043 %87 = load i64, ptr %57, align 8, !alias.scope !1086, !noalias !1091, !noundef !4 %88 = load i64, ptr %26, align 8, !alias.scope !1086, !noalias !1091, !noundef !4 @@ -6785,7 +6782,7 @@ _ZN5alloc6string6String4push17h41bd6cc148f6c106E.exit.i.i: ; preds = %90, %"_ZN4 br label %122 122: ; preds = %121, %107 - %storemerge231.i.i = phi ptr [ inttoptr (i64 1 to ptr), %121 ], [ @anon.48d4de1c4e720912e47f23e13aa75482.114, %107 ] + %storemerge225.i.i = phi ptr [ inttoptr (i64 1 to ptr), %121 ], [ @anon.48d4de1c4e720912e47f23e13aa75482.114, %107 ] %storemerge.i.i = phi i64 [ 0, %121 ], [ 1, %107 ] store ptr %storemerge231.i.i, ptr %9, align 8, !noalias !1043 store i64 %storemerge.i.i, ptr %70, align 8, !noalias !1043 diff --git a/scripts/setup_pre_commit_patch.sh b/scripts/setup_pre_commit_patch.sh index c5409e09ef4..7c44fa9b410 100755 --- a/scripts/setup_pre_commit_patch.sh +++ b/scripts/setup_pre_commit_patch.sh @@ -2,7 +2,7 @@ set -euo pipefail shopt -s inherit_errexit -export GITHUB_PATCH_ID="/llvm-project/commit/" +export GITHUB_PATCH_ID=llvm/llvm-project/pull/134712 export COMPTIME_MODE=0 # Please rebase manually